Encryption

比較:複雜性度量與安全性

  • May 6, 2022

假設您要比較幾個加密原語(例如,加密方案),然後選擇一個。您需要考慮幾個複雜性度量,例如密鑰長度、加密時間、解密時間等。為了使比較公平,所有有問題的原語必須提供相同級別的安全性。

例如,讓我們考慮 RSA、ECC 和 NTRU。假設我們希望密碼系統對被動對手是安全的,其計算能力最多限制在 $ 2^{100} $ 操作。通過“被動對手”,我們的意思是對手僅限於選擇明文攻擊(因為我們正在比較公鑰加密方案)。現在,我們想知道為每個方案選擇的密鑰長度。

為了回答這個問題,我們考慮了針對 RSA、ECC 和 NTRU 的最有效攻擊的複雜性,這反過來又需要大量的文獻知識。

是否有任何資源/調查(網站、論文、工具等)有助於進行此類比較?

**注意:**網站keylength.com雖然本身就是一個有用的工具,但不能回答這個問題。原因是 keylength.com 僅推薦了在不同場景中使用的最小密鑰長度(例如對稱或非對稱加密),而忽略了大多數具體方案(例如 NTRU、twofish、serpent 等)。

Shoup 在 2004 年發表了一篇關於處理遊戲序列的論文,該論文針對密碼學假設組合的機率/難度:

“遊戲序列:在安全證明中馴服複雜性的工具”

有了這些結論,您可以計算自己算法中的機率並相應地設置參數。

然而,實際的實現在精確數字方面存在一個問題:它們通常是未知的。例如,在強密碼學意義上,AES 被“破壞”了,因為存在一種複雜性低於暴力破解的攻擊。這只是簡單了幾位,這仍然遠遠超出了當今攻擊者的可能性。但也許有人很快就會想出一個更低的數字。

一般來說,分別從 keylength.com 或NIST 建議開始:第 5.6.1 章(第 62 頁)概述了對稱和非對稱方案的複雜性比較。有時這些級別也被命名為“超短”、“短”等。

對於多方計算,Henecka 等人的“TASTY:自動化安全兩方計算的工具” 。也是一篇有趣的論文(2010 年),它描述了一種用於自動分析的工具

不確定您要做什麼,但您沒有以錯誤的方式接近它嗎?

NIST 已經推薦在他們的環境中使用算法/密碼。這意味著他們已經審查了這些並被認為是安全的。現在你也想要性能。所以使用 openssl 看看哪些算法的性能對你來說是可以接受的。就像您說的那樣,在比較不同的算法時選擇提供相同級別安全性的密鑰長度。這樣,您的性能數據將具有可比性。

此外,我不會嘗試超越 NIST 推薦的任何算法。例如,AES 適用於任何應用程序。沒有理由使用或嘗試雙魚。僅使用 AES 本身,就有足夠多的方法讓自己一槍斃命。堅持一種方式,即使您正在為您的使用者/員工創建一些建議,它也不那麼複雜。

希望有幫助。

引用自:https://crypto.stackexchange.com/questions/2491