給定自定義 W 和 B 參數,如何確定 RC6 密碼所需的輪數?
RC6 對稱分組密碼使用三個參數進行參數化:
- W : 機器字中的位數 (8 , 16 , 32 , 64)
- B : 指定密鑰長度的字節數(0 到 255)
- R:要執行的輪數(1 到 255)
一個數據塊被指定為 ‘uint_t data
$$ 4 $$’ 其中 ‘uint_t’ 可以是 8、16、32 或 64 位,分別導致 32、64、128 或 256 位數據塊大小。 這些參數允許最終使用者選擇塊大小、密鑰大小,並以性能換取安全性。
我的問題是:給定參數 W 和 B,以及所需的安全強度(不確定如何準確指定,但這取決於 R),如何確定 R 的最小值以確保這個最小安全界限?
即:我希望為 256 位數據塊 (W = 64) 和 256 位密鑰 (B = 32) 參數化 RC6 的實例。我希望密碼具有 256 位安全性(密鑰 B 的安全性),這顯然取決於 R 的值。假設使用完整的 256 位密鑰,確保所需的最小輪數(R)是多少完全擴散和安全相當於對 256 密鑰的強力搜尋?
我研究了最初的 RC6 規範,我能找到的替代研究論文討論了對 RC6 的各種攻擊等,但我還沒有看到任何關於如何為定制的 RC6 實例選擇 R 值的總結、方程式或指南。
在我看來,如果沒有關於如何選擇 R 的等式或明確說明,規範就不是 100% 完整的,並且為實際應用實現密碼的外行將留下猜測,這將導致壞事發生。
注意:我不是專業的密碼學家,但我確實知道不要“自己動手”並遵循標準。這個標準雖然很棒,但似乎缺少一個字母…… :)
在AES 的情況下,他們在最高機率差異(和類似的線性外殼)上有一個下限,並且他們能夠使用該資訊來確定差異(和類似的線性)攻擊需要多少輪的具體費用。
理想情況下,這就是你將如何進行。
然而,Rijndael(後來的 AES)有一些特定的屬性可以進行這樣的計算。所有的組成操作都非常清晰和精確地定義,並且它們的操作大小足夠小,可以進行這樣的分析。
使用由按位和算術運算 ad-hoc ~~~~建構的密碼,特別是當這些運算在大字上起作用時,如果/如果可能的話,找到最壞情況的*微分機率更具挑戰性。
您可以找到平均最壞情況機率(實際上並不是最壞**情況)並使用它進行回合計算,但這並不能證明沒有攻擊成本低於所需數量,因為可能有一些你還不知道的更高的機率差異。
不過,這可能是您擁有的最佳策略。
筆記
您只能對您已經知道的攻擊執行這種類型的過程。您可以證明沒有任何基本差分攻擊的成本低於 $ \frac{1}{2^n} $ ,但這並不意味著沒有攻擊成本低於 $ \frac{1}{2^n} $ .
~~*~~從技術上講,Rijndael 中的操作是由按位和某種類型的算術運算建構的 - 但所有電路都由這些在電路級別供電。
我認為你在不知不覺中“自己動手”。你必須考慮:-
- RC6 的目的是贏得 AES 競爭,將塊大小設置為 128 位,密鑰大小設置為 128、192 和 256 位。Ron 的所有論文都暗示每次提到 RC6-w/r/b。
- 他說:“雖然送出 RC6 以作為即將到來的 AES 考慮是基於使用 32 位字(給出 128 位的塊大小),但未來的發展和市場需求可能會鼓勵將 RC6 擴展到其他塊大小。 "
- 他所有的安全分析都是基於 32/20/16 配置。見表 12,RC6 的差分密碼分析。它只考慮 8 到 24 的 rs。
- Ron 反复推薦 20 輪,顯然是著眼於競爭性能,但仍然保持安全。
必然的結論是,他是專門為參賽而努力的,擴展模式可能是未來的工作。考慮到他的情況,這是公平的。因此擴展到 64/?/32 會誤入未知領域。這解釋了您未能找到定製配置的詳細分析。
但也要考慮到 128 位塊寬度的 AES 可能是目前世界上最好的。它肯定已經被黑客入侵、解剖和分析到瀕臨死亡的邊緣,但仍然倖存下來。沒有人尖叫 AES 不安全。
然後,這導致了兩個最終建議:-
一,如果您接受 AES 在 128 位上的世界領先地位,請在 Ron 推薦的 32/20/16 配置中使用 RC6。顯然NSA 也使用它。
第二,Luby /Rackoff 證明了安全的 Feistel 函式只需要三輪,而無需提及塊寬。所以這個證明是塊獨立的。如果 RC6 被推薦為 20 輪,我個人會加倍,如果你想嘗試自定義工作,我個人會選擇 40 輪,塊寬為 256。我無法從數學上證明這是安全的,但我敢打賭,世界上很少有人能證明這一點。