Openssl

如何驗證隨機性是否寫入設備以及究竟寫入了什麼?

  • February 27, 2015

我正在準備一個帶有 shred 的設備,以便稍後使用 dm-crypt/cryptsetup/luks 加密。

我如何在使用 shred 或例如 openssl/dd 和 /dev/urandom 之前和之後檢查設備,以確保完成了什麼?有沒有可能?

在 POSIX 系統上,磁碟設備是一個文件,因此任何支持從文件讀取的工具都可以從它讀取它catdd甚至是 LibreOffice Writer(好吧,開個玩笑)。

所以基本上你有兩個問題需要解決:

  • 如何解釋將要閱讀的內容。
  • 確定您將觀察到的任何內容是否意味著您的測試已通過或未通過。

由於您的磁碟驅動器通常包含非人類可讀的數據,因此通過肉眼查看它的最簡單方法是使用類似od(應該立即可用)或xxd(更方便但在最小系統上可能不可用)之類的東西. 所以,有點像

# od </dev/sda3 | less

應該可以查看磁碟驅動器上的內容。

第二個問題更棘手,因為它比技術更哲學(@sebix 試圖指出的)。問題是不清楚你的真正意思是什麼。如果你想以某種方式測量openssl/dev/urandomencantation 之後數據的隨機性,你必須 1) 想出一種方法來定義一種方法來測量隨機性;2)執行它。

我懷疑您是否真的是這樣的意思,並且會做出一個瘋狂的猜測:您可能只是想看看磁碟驅動器上的數據是否只是看起來隨機的。

如果是,那麼最簡單的方法是首先dd if=/dev/zero of=/dev/sda3 ...用零字節填充驅動器,然後使用您的“隨機咒語”重新寫入它,然後使用od或類似的工具來驗證驅動器上是否真的存在隨機數據。

相反,如果您確實打算測量數據的隨機性,那麼這只是一個不合適的地方:嘗試詢問math.stackexchange.com並將您的問題標記為與統計數據相關。換句話說,讀取數據的方法是一個技術問題,而對其進行統計分析的方法則不是。

引用自:https://serverfault.com/questions/671687