在退役之前安全擦除硬碟時,我注意到這dd if=/dev/urandom of=/dev/sda
需要幾乎一整天的時間,而shred -vf -n 1 /dev/sda
使用同一台電腦和同一磁碟機只需要幾個小時。
這怎麼可能?我猜瓶頸是輸出有限/dev/urandom
。 shred 是否使用某些偽隨機產生器,產生器的隨機性較低,且僅足以滿足其單一目的(即更有效)urandom
?
答案1
預設情況下,這些命令使用由少量熵初始化的內部偽隨機產生器,但可以透過 --random-source=file 選項指示使用外部來源。如果文件未包含足夠的字節,則會報告錯誤。
例如,設備文件/dev/urandom可以用作隨機資料的來源。通常,該設備將來自設備驅動程式和其他來源的環境雜訊收集到熵池中,並使用該池產生隨機位元。如果池中資料不足,裝置會使用加密安全性偽隨機數產生器重複使用內部池來產生更多位元。但請注意,該設備不是為批量隨機數據生成而設計的,並且 相對較慢。
我不相信隨機數據比隨機數據更有效單次通過的零點(或任何其他位元組值)模糊先前的內容。
為了安全地停用驅動器,我使用了一塊大磁鐵和一把大錘子。
答案2
我想這可能是由於dd
使用較小的區塊來寫入資料所引起的。試著dd if=... of=... bs=(1<<20)
看看它是否表現得更好。