一次性墊的 HRNG
我剛剛升入高中的最後一年(在丹麥)。今年,我們都要做一個大項目,在那裡我們可以建造/發明/創造任何我們想“解決問題”的東西。當我學習數學、IT 和電子學時,我想建構一個包含所有這 3 個科目的東西。一個項目我想了很久,但我真的不知道在公司中應用了多少密碼學,所以在我開始工作將近一年之前,我希望得到你的指導。
許多大公司使用加密算法來保護任何第三方公司/黑客訪問敏感數據,但是,並非所有算法都是安全且易於使用的。我一直在思考這個問題,特別是因為我喜歡 C#、密碼學和電子學,製作一個與這個主題相關的產品會很有趣。(這個學校項目“只是”一個學校項目。無論如何,當我們完成產品時,我們並沒有真正出售我們的產品,但如果它真的有用,它會獲得更高的評價)。
我有關於製作一個與程序連接的硬體隨機數生成器,它將文件和密鑰文件異或在一起。我曾想過製作一個像這樣的簡單電路,使用來自 NPN 晶體管和/或調諧到未使用頻率的 FM 無線電天線的白雜訊。然後我會收集這些隨機輸出位並將它們發送到Arduino(一個開源電子平台),它可以幫助我們通過 USB 將其發送到電腦。然後,我將編寫一個 C# 應用程序,該應用程序將從 ARDUINO 中提取隨機位,並將其與我們要加密的文件(One Time Pad)進行異或。
我的問題是(如果您假設我創辦了一家銷售我們產品的公司):
- 它對需要保護數據安全的公司有用嗎?
- 用我們的“產品”加密的文件安全嗎?
- 我知道許多其他攜帶式 HRNG(可以在此處找到列表),但是它們似乎都沒有附帶可以使用它們的程序。他們中的大多數人播種 linux dev/random。我們能“超越”他們的產品嗎?(假設大小和傳輸速度相同,我計算價格大約為 65 美元)。
- 知道如何改進我的產品嗎?我應該怎麼做?
我希望你能回答我的問題並回饋我的項目計劃。提前感謝您提供的任何幫助!
- 它對需要保護數據安全的公司有用嗎?
不,一次性便箋本僅在極少數情況下有用。
主要問題是密鑰管理。您只能使用每個 pad 一次,它與您要加密的數據一樣大,並且您需要以安全的方式將其發送給所有各方。
一次性密碼的直接競爭是流密碼。它們沒有安全證明,但更容易使用,因為它們只有一個小密鑰(32 字節左右)而不是一個巨大的鍵盤。多虧了 IV,密鑰重用問題也小得多,您只需要在本地生成大約 16 個字節的隨機值。 2. 用我們的“產品”加密的文件安全嗎?
如果您設法正確地做所有事情,是的。但是密鑰管理太煩人了,很可能會出現重複使用pad等錯誤,而且解決不了實際問題。所以沒有人會使用它。 3. 我們能“超越”他們的產品嗎?
硬體 PRNG 在桌面系統上不是很有用,因為這些系統往往有足夠的熵源來播種 PRNG。另一方面,經常遭受熵問題的嵌入式系統通常負擔不起專門的 HRNG 模組。
英特爾還在努力將 HRNG 放入他們的 CPU 中,使其實際上是免費的。你無法與之抗衡。
One-Time Pads 只保護機密
使用一次性Pad 加密只能保護消息的機密性。它不保護消息的完整性。攻擊者可以翻轉密文中的位,這將翻轉明文中的位。為了保護消息的完整性,您需要某種消息驗證碼(MAC)。這可以使用通用散列以完美的安全性來完成,但您至少會燒掉兩倍的襯墊材料。
考慮到所有因素,在 GCM 模式下使用 AES 之類的東西是一個更好的選擇。OTP + 通用雜湊在理論上聽起來很棒,但實際上它們很難正確使用,以至於由於墊重用等原因,它實際上可能會變得不那麼安全。