Encryption

如何計算安全算法的密鑰大小?

  • February 11, 2016

有很多安全算法。衡量密碼算法安全性的方法之一是找出它的密鑰大小。單個算法有許多密鑰大小。

ECC(橢圓曲線密碼學)有 163、256、384、512 等。

RSA 有 1024、3072、7680、15360。我從這裡找到了這個

但是如何計算算法的密鑰大小?單個算法如何具有不同的密鑰大小?

我正在建構一個簡單的加密算法,但我不知道如何計算我的算法的密鑰大小。

我的算法是通過程式碼更改純文字的字母假設

a=2H, b=3C, c=8S ......, z=6D

如果明文是“cb”,那麼密文就是“8S3C”。那麼這個算法的密鑰大小是多少呢?我該如何計算呢?

有很多安全算法。衡量密碼算法安全性的方法之一是找出其密鑰大小。單個算法有許多密鑰大小。但是如何計算算法的密鑰大小?單個算法如何具有不同的密鑰大小?

沒有標準化的方法可以幫助您。找出適用的密鑰大小的最佳方法是查找算法應遵守的標準。此外,實施可能會進一步限制這些大小。如果您不走運,他們甚至可能會擴展輸入/輸出參數的可能大小(包括密鑰大小)。

讓我們來看看:

  • RSA:任何密鑰大小都可以(從一個非常低的最小值開始),但通常密鑰大小應該是 8 位的倍數,並且可能是特定大小或更高(例如 > 1024 位);
  • DH:密鑰大小由兩個數字組成,其中組的大小對安全性最重要 - 指定密鑰大小是困難的;
  • AES:AES 具有 128、192 和 256 位的密鑰大小,並且輪數會因不同的密鑰大小而變化。AES 是 Rijndael 的子集,其密鑰大小為 128、160、192、224 和 256。實現 Rijndael 的 .NET 類僅支持 AES 密鑰大小(但更多塊大小);
  • Blowfish 具有 32 位到 448 位的可配置密鑰大小,步長為 8 個;
  • 3DES 的密鑰大小總共為 128 位或 192 位,但沒有奇偶校驗位的實際密鑰大小分別為 112 位和 168 位。實際有效的安全性分別約為 63-80 和 112 位。

這清楚地向您展示了密鑰大小是一個棘手的主題。

我的算法是通過程式碼更改純文字的字母假設a=2H, b=3C, c=8S ......, z=6D

密鑰大小是您定義的密鑰大小。您可以將字元串定義為您的鍵,給定您的2H3C8S ...... 6D鍵空間 $ 10^{26} $ (對於程式碼中的數字)次 $ 26^{26} $ (對於程式碼中的字母)。然後以位為單位的密鑰大小是 $ \log^2({10^{26} \times 26^{26}}) $ 或 20902 位 (!)。顯然,實際的密鑰大小要小一些,因為您不應該重複程式碼(就像不計算 DES 的奇偶校驗位一樣)。

有效密鑰大小當然大約為零,因為這不是安全的現代密碼。

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