因此,自從Debian維護者臭名昭着地導致RNG種子變得可預測commenting out a usage of uninitialized data以來已經過去了11年。爲什麼在OpenSSL的隨機數生成器中使用未初始化的內存安全?
這個問題在網絡圈子裏引起了很多熱烈的討論,大部分的重點似乎都在批評審查過程或攻擊有問題的開發者。
但是,我一直無法找到任何有關該部門背後的實際思維過程的信息。許多用戶認爲「最壞的情況下,它不會受到傷害」 - 但是,這對我來說似乎完全違反了直覺。
畢竟,從未初始化的內存讀取調用未定義的行爲,臭名昭着的,可能會導致鼻惡魔,運行nethack或格式化您的硬盤驅動器。因此,在我看來,將這種邏輯引入任何程序 - 更let論加密庫 - 讓您從一場徹底的災難中進行一次積極的編譯優化。
因此,我的問題(S):
- 我誤解的東西嗎?有沒有理由爲什麼這實際上不是調用UB,而是在標準下明確定義的?
- 如果它實際上調用UB,爲什麼最初包含在OpenSSL中?
我沒有介入,所以把它當作適度充分知情的猜測。理論上的UB(鼻子惡魔是一種可能的後果)和實用的UB(你會得到某種不可預知的結果)。 UB的使用並不是很好,但使用它的實際結果是事情在修復之前比隨機更加隨機。這是一個破損的代碼被「固定」的代碼,代碼更多但破壞程度不同 - 乍看之下第二批代碼也被破壞並不明顯。 –
另請參閱[nasal demons](https://stackoverflow.com/a/45395334/15168)。 –