给定一个好的随机数生成器,shred 实用程序是否总是安全的?

给定一个好的随机数生成器,shred 实用程序是否总是安全的?

我最近尝试了不同的磁盘随机化方法,以找到最快完成任务的方法。openssl计数器模式下的 AES 随机数生成器据说相当快,所以我尝试将其输出通过管道传输到dd(以限制输出字节的总数并优化磁盘扇区大小)。请参阅此处以了解调用。使用这种技术,我能够以大约 30 MB/s 的持续速率写入原始磁盘。

单独使用该shred实用程序(单程模式,用作/dev/urandomRNG),持续写入速率远低于 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 可能会使某些密码变得脆弱。

不过,我认为对于磁盘擦除来说,这是一个没有实际意义的问题。如果你用随机数覆盖 - 即使它不是“加密级”随机数 - 那么你就很难读回磁盘的内容 - 这将需要大量的精力和电子显微镜,此时重建你的“随机”算法可能是你最不关心的事情。

如果您特别担心这种威胁,那么唯一真正的答案就是物理销毁您的驱动器。硬盘粉碎机相当有趣,但一般认为对于一般用途来说有点极端。

相关内容