我最近尝试了不同的磁盘随机化方法来找出最快完成工作的方法。 在计数器模式下AES的openssl随机数发生器被认为是相当快的 ,所以我试着将输出pipe道输出到dd (限制输出字节的总数并优化磁盘扇区大小)。 请参阅这里的调用。 使用这种技术,我能够以30MB / s左右的持续速率写入原始磁盘。
单独使用shred实用程序(以单通模式,使用/dev/urandom作为RNG),持续写入速率远远低于10 MB / s。
但是,使用openssl生成器的shred ,我能够支持大约1.5 GB / s的写入速度:
mkfifo rand openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt </dev/zero >rand & shred --verbose --random-source=rand -n1 /dev/sda rm rand
在这之前,我没有观察到接近这个速率的任何速度(无论是随机数字stream还是原始IO速度),所以我想知道这是否意味着shred是以某种方式采取(不安全的)快捷方式。 我意识到, shred本身可能只是使用给定的随机数生成器来种植自己的,更快的PRNG,但是AES 实际上比/dev/urandom快得多? 还是其他的事情发生在引擎盖下?
答案是“这取决于你有多关心”。 有很多关于encryption的“好”随机数生成的研究,因为糟糕的PRNG会使一些密码易受攻击。
不过,我build议对于磁盘擦除,这是一个有争议的问题。 如果你用随机的方式覆盖 – 即使它不是随机的“encryption等级” – 那么你就很难回读磁盘的内容 – 这将花费大量的精力和电子显微镜,在这一点上重build你的“随机'algorithm可能是你最担心的问题。
如果你特别关心这个威胁,那么唯一真正的答案就是破坏你的硬盘。 硬盘碎纸机是相当有趣的,但通常被认为是一个极端的一般使用。