Encryption

AES 和 ECDH 密鑰

  • March 27, 2022

我正在嘗試了解公鑰加密。我在網上的一篇論文中找到了下表。我正在努力理解這句話的含義。從閱讀的點點滴滴來看,我很想認為第一列只是在安全通道上完成的加密,密鑰長度為一行。前提是我和收件人已經設法安全地彼此共享密鑰。現在,如果我要進行相同的加密並在不安全的通道上與接收者共享密鑰,我必須使用 RSA 將密鑰加強到第二列中的數字作為隱藏密鑰的方法。EC 密鑰類似。

現在AES是一種對稱密鑰算法。那麼這是否意味著 AES-128 需要 256 位的 ECDH 密鑰?我正在嘗試在 STM32F 晶片上實現這一點。對於更好地理解這一點的任何幫助,我將不勝感激。

在此處輸入圖像描述

不,您沒有正確理解這一點。該表顯示了不同加密原語所需的有效密鑰大小。

例如,加密原語可以是 AES,它是一種對稱分組密碼。因此,AES 密鑰的有效密鑰大小應為 128 位,以實現大約 128 位的安全性。如果使用得當,攻擊 AES 的最佳方法是接近暴力破解密鑰。因此,AES 密鑰的有效大小和強度大致相同。對於任何完整的對稱密碼都是如此:有效密鑰大小與密鑰強度相同。

RSA - 一種非對稱算法 - 需要更大的密鑰大小,因為數字計算是針對大數字的。對於 RSA,攻擊者可以嘗試重構模數以嘗試找到私鑰組件。因此,攻擊 RSA 比嘗試攻擊要容易得多 $ 2^X $ 一個值 $ X $ 位密鑰。在表格中,您可以看到大約需要 $ 2^{128} $ 測試破解 3072 位密鑰。因此 128 位的 AES 密鑰和 3072 位的 RSA 密鑰都具有 128 位的強度

橢圓曲線加密允許比 RSA 更小的密鑰大小來提供相同強度的非對稱密鑰對。通常,密鑰對的有效密鑰大小需要兩倍於大小才能達到與對稱密鑰相同的強度。因此,我們在同一行中看到 ECC 的值 256。列出的曲線大小是由 Certicom 創建的命名曲線,後來由 NIST 標準化為 P-160、P-224、P-256、P-384 和 P-521(這不是錯字,不是512)。

請注意,對於 RSA,密鑰大小與模數的大小相同;對 RSA 密鑰的所有部分進行編碼將導緻密鑰大於模數,從而導緻密鑰大小。ECC 密鑰也是如此:大小是曲線順序的大小,而不是編碼密鑰的大小。


密鑰的使用方式以及您是否需要對稱或非對稱(RSA、DH 或 ECC)取決於您的協議。使用RSA 是因為 RSA 密鑰更大,這是因為 RSA 密鑰是不對稱的,例如,它允許您創建公共密鑰基礎結構。AES、RSA 和 DH 密鑰都用於不同的目的

在創建協議或配置軟體時,使用相關的密鑰大小確實有意義。因此,您將使用 128 位或以上的對稱密鑰、3072 位或以上的 RSA 密鑰和 256 位或以上的 ECC 密鑰(和散列)來實現 128 位的整體強度。這就是您可以使用該表的目的。

使用混合加密 AES-256(強度:256 位)和 1024 位(強度 80 位)的 RSA 密鑰沒有太大意義;對手會嘗試分解 RSA 密鑰,因為它比暴力破解 AES 容易得多。因此協議的強度將被限制為 80 位。


您可能想知道對稱密鑰的 80 位強度。很少有對稱密碼使用 80 位密鑰。然而,對於三重 DES,存在已知的中間相遇攻擊。(兩個密鑰)三重 DES 的編碼 128 位密鑰包含在算法中使用的 112 位,但該密鑰僅包含大約 80 位的安全性。

建議使用三鍵三重 DES 密鑰或繼續使用 AES。不出所料,三鍵三重 DES 的密鑰強度為 112 位,解釋了第二行。


您的表格可在 keylength.com 上的 2016 年 NIST 建議第二個表格中找到。Keylength.com 還包含指向源材料的指針(可能更難閱讀)。

請注意,該表中的最後一個橢圓曲線大小為 512 位。如前所述,NIST 僅指定了 521 位素數曲線,因此您的表可能引用了 P-521 曲線。

如果您包含指向該表源的連結,這將很有幫助,以便了解該表應該幫助什麼。

我的猜測是這張表比較了算法的安全性。對於每種算法,您都可以有一定的密鑰長度,可以將其與不同算法的不同密鑰長度的安全性進行比較。

來自維基百科上的橢圓曲線密碼學:

256 位橢圓曲線公鑰應提供與 3072 位 RSA 公鑰相當的安全性。

並查看對稱密鑰上的相應值 - 它們的大小是橢圓曲線的一半。這是由於所謂的生日悖論。讓我們在這裡不深入討論 - 只是記下表格的含義。如果您想要一定級別的安全性,則密鑰中所需的位數取決於算法。

現在退後一步。這可能不是您了解公鑰加密基礎知識的角度。從你寫的我認為你需要從概念開始。為此 - 只需用“非對稱加密簡介”或“..公鑰加密”搜尋您的方式。確保您了解對稱與非對稱的區別。

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