我最近尝试了不同的磁盘随机化方法,以找到最快完成任务的方法。openssl
计数器模式下的 AES 随机数生成器据说相当快,所以我尝试将其输出通过管道传输到dd
(以限制输出字节的总数并优化磁盘扇区大小)。请参阅此处以了解调用。使用这种技术,我能够以大约 30 MB/s 的持续速率写入原始磁盘。
单独使用该shred
实用程序(单程模式,用作/dev/urandom
RNG),持续写入速率远低于 10 MB/s。
但是,使用shred
生成openssl
器,我能够维持约 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
在此之前,我从未观察到任何接近此速率的速度(无论是随机数流还是原始 IO 速度),所以我想知道这是否意味着它以shred
某种方式采取了(不安全的)捷径。我意识到它shred
本身可能只是使用给定的随机数生成器来播种自己的更快的 PRNG,但 AES实际上比 快那么多/dev/urandom
?还是幕后另有其他事情发生?
答案1
答案是“这取决于你有多在意”。有很多研究针对加密目的对“良好”随机数生成进行研究,因为较差的 PRNG 可能会使某些密码变得脆弱。
不过,我认为对于磁盘擦除来说,这是一个没有实际意义的问题。如果你用随机数覆盖 - 即使它不是“加密级”随机数 - 那么你就很难读回磁盘的内容 - 这将需要大量的精力和电子显微镜,此时重建你的“随机”算法可能是你最不关心的事情。
如果您特别担心这种威胁,那么唯一真正的答案就是物理销毁您的驱动器。硬盘粉碎机相当有趣,但一般认为对于一般用途来说有点极端。