為什麼 NIST 需要 128 位密鑰大小的 112 位安全性來實現輕量級加密?
在 NIST 的*輕量級密碼標準化過程*文件的送出要求和評估標準中指出:
3.1 AEAD ( Authenticated Encryption with Associated Data ) 要求
AEAD 算法不應指定小於 128 位的密鑰長度。對 AEAD 算法的密碼分析攻擊至少需要 $ \mathbf{2^{112}} $ 在單鍵設置的經典電腦上進行計算。如果支持大於 128 位的密鑰大小,建議至少有一個推薦參數集的密鑰大小為 256 位,並且其對密碼分析攻擊的抵抗力至少為 $ \mathbf{2^{224}} $ 在單鍵設置的經典電腦上進行計算(粗體是我的!)
- 為什麼 NIST 需要 AEAD 上至少 128 位密鑰的 112 位安全性?
- 從安全形度來看,它們應該需要 128-security。任何降低 128 位安全性的攻擊都可能導致更多攻擊。這個要求背後的理由是什麼?
雜湊函式也是如此;
3.2 雜湊函式要求
對散列函式的密碼分析攻擊至少需要 $ \mathbf{2^{112}} $ 在經典電腦上進行計算。散列函式不應指定小於 256 位的輸出大小。(粗體字是我的!)
從這些值中,我們可以暗示他們考慮了碰撞阻力。類似的問題;
- 為什麼 NIST 需要 256 位雜湊函式的 112 位安全性?
- 這個要求背後的理由是什麼?
從安全形度來看,它們應該需要 128-security。
為什麼?
NIST 要求所有加密事物的最低安全強度為 112 位,至少目前如此。您在他們的文件中隨處可見。例如,在轉換加密算法和密鑰長度的使用中,它說
對於聯邦政府,此時需要至少 112 位的安全強度來應用密碼保護(例如,用於加密或簽署數據)。請注意,在 2014 年之前,應用這些保護需要至少 80 位的安全強度,並且本文件中的轉換反映了這一變化,要求至少 112 位的安全強度。
顯然,NIST 的密碼學家認為目前 112 位的安全性就足夠了。128 位即將到來。
SP 800-57,第 1 部分包括在 2030 年向 128 位安全強度的過渡;在某些情況下,過渡將通過增加密鑰大小來解決。
請注意,這是他們對美國聯邦政府的最低要求,您的要求可能會有所不同。
比特幣礦工的單一目標
我們可以通過比特幣礦工和 hashcat 的比較來近似推理。比特幣礦工可以達到 $ \approx 2^{92} $ 每年雙倍 SHA256。他們正在使用各種計算平台,包括 CPU、GPU、ASIC。
為了粗略比較,假設使用 Nvidia RTX 2080 和
- KeePass 1 使用 6000 次迭代的 AES,並且可以達到 $ k = 152.1 $ 千小時/秒。
- Hasmode 1410使用SHA256,可以實現 $ t = 5380.8 $ 兆赫/秒。
$ ratio = t/k = 35376.7 \approx 2^{15} $ 並使用雙 SHA256 $ 2^{16} $
總結一下; 像集體比特幣礦工這樣的力量可以達到 $ 2^{118} $ 每年。這超出了安全要求。人們可以爭辯說,普通人不是破壞的目標。一個反駁的論點是為什麼根本安全。
真正的威脅仍然來自多目標攻擊。與多目標攻擊相比,使用具有不同加密密鑰的已知明文,您可以更快地找到一些密鑰。
為了 $ t $ 使用Oechslin 的彩虹表來定位目標,以及 $ p\geq n^2 $ 方式並行化機器,回收第一個的預期成本 $ t $ 鍵是 $ 2^{112}/t $ , 預期時間是 $ 2^{112}/np $ 算法的順序評估。打破所有的預期總成本 $ t $ 鑰匙還在附近 $ 2^{112} $ .
如果 $ t $ 是十億個目標,一個人可以跑 $ p =2^{16} $ 並行機器比找到第一個密鑰的成本是 $ 2^{73} $ 時間是 $ 2^{64} $ 這是可以實現的。視情況而定,損害其中一個網路使用者可能會損害所有使用者。
這就是為什麼我們說使用 AES256,而不是 AES128。
注意,寫這個答案是為了看112離3字機構不遠。好像是DES,有錢就可以查到key
請記住,搜尋 122 位和從 128 位獲得 112 位安全性是有區別的。上述搜尋攻擊可能不會執行純 112 位,而是需要在 128 位內進行搜尋。無論如何,多目標攻擊仍然是問題!
或者,歷史翻倍$$ 112 = 56 \cdot 2 $$