Encryption

為什麼對稱加密和非對稱加密推薦的密鑰大小差別很大?

  • July 31, 2020

在各種文章中提到,對於安全通信,推薦的密鑰大小是對稱加密的 128 位密鑰大小(這使得它 $ 2^{128} $ 可能的密鑰?)和非對稱加密的 2048 位密鑰大小( $ 2^{2048} $ 可能的鑰匙?)。

為什麼它們差別如此之大?似乎我錯過了等式的很大一部分。

對稱加密和非對稱加密算法建立在截然不同的數學結構之上。

在典型的對稱加密算法中,密鑰實際上只是一個隨機數 $ \left[0 .. 2^n\right] $ , 在哪裡 $ n $ 是密鑰長度。密鑰的強度基於它對暴力攻擊的抵抗力,攻擊者需要執行複雜的攻擊 $ O\left(2^n\right) $ 正確猜出密鑰。

另一方面,非對稱算法使用不同類型的密鑰。例如,RSA 模數的形式為 $ m = pq $ , 在哪裡 $ m $ 是模數,並且 $ p $ 和 $ q $ 是兩個大的、不同的、隨機選擇的、大小大致相等的素數。鍵的強度基於模量對分解為其主要成分的抵抗力。使用通用欄位編號篩的攻擊者需要進行複雜的攻擊 $ O\left(\exp\left(\left(\left(\frac{64}{9} + o\left(1\right)\right) \cdot n\right)^\frac{1}{3}\left(\log n\right)^\frac{2}{3}\right)\right) $ 給定位長模數,分解模數(從而破壞私鑰) $ n $ .

非對稱密鑰必須比對稱密鑰大得多,因為 1) 給定位數(密鑰空間)的非對稱密鑰較少,2) 非對稱密鑰本身存在模式。

為了進行比較,請考慮ECRYPT II關於密鑰長度的建議表明 128 位對稱密鑰與 3,248 位非對稱密鑰一樣強,這些等同於 256 位橢圓曲線 Diffie-Hellman (ECDH) 密鑰。兩種密鑰長度(128 位和 3,248 位)通常被認為可以提供數據的長期保護(直到 2040 年),但非對稱密鑰要大得多。

為了進一步比較,NSA Suite B Cryptography(非機密算法)指定 128 位對稱密鑰空間(用於加密)和 256 位 ECDH 密鑰空間(用於簽名和密鑰交換)足以保護機密數據。

通常,常用的對稱密鑰算法被設計為****具有與其密鑰長度相等的安全性。但是,目前還沒有具有此屬性的非對稱密鑰算法。橢圓曲線密碼學最接近,其有效安全性約為其密鑰長度的一半。(來源:維基百科

在一個完美的世界中,這個想法是破解網路連接或使用對稱密碼保護的數據儲存的唯一方法是嘗試所有密鑰。128 位密鑰空間意味著只有340,282,366,920,938,463,463,374,607,431,768,211,456 個可能的密鑰可供使用

考慮嘗試使用添加到最新英特爾微處理器的特殊 AES 指令來測試所有這些密鑰的 128 位 AES 加密。這些指令的設計速度非常快,根據英特爾自己的數據,在具有 4 個核心的英特爾 i7 處理器上解密一個 AES 加密數據塊需要 5.6 個週期。換句話說,該處理器可以在大約 1.7 納秒內對一個數據塊嘗試一個鍵。以這樣的速度,檢查所有密鑰大約需要 1.3 * 10^12 * 宇宙的年齡(您可能只需要檢查一半才能找到正確的密鑰,因此將那令人難以置信的長時間除以 2)。

因此,通過蠻力破解 128 位密鑰並不是非常實用。(破解 256 位密鑰的可能性更小。)對於對稱密碼,這些長度的密鑰是有意義的。

現在,與對稱密碼系統不同的是,非對稱密碼學的工作原理是擁有兩個不同的密鑰(一個用於加密,一個用於解密),它們通過一些數學過程相關聯。

例如,在與 SSL/TLS 一起使用的流行 RSA 方案中,公鑰和私鑰由兩個大素數的乘積組成,因此製作 RSA 密鑰從選擇兩個隨機素數開始。RSA 的安全性(部分)依賴於這樣一個事實,即很容易選擇兩個隨機素數,但在剛給出他們的產品時很難發現它們是什麼。

假設有兩個質數隨機選擇,稱為 p0 和 p1。RSA 公鑰(和私鑰)的一部分稱為模數,它就是 p0 * p1。如果攻擊者可以將模數分解為 p0 和 p1,他們就可以破解 RSA,因為他們可以確定私鑰。數學家認為,很難分解出兩個素數的乘積,而網路交易的安全性部分依賴於這種信念。(整數分解的“硬度”尚未得到證明。它被認為很困難,但沒有真正的正式證明。)

典型的 RSA 密鑰大小為 1,024 或 2,048 或 4,096 位。那是模數中的位數。對於每個將有一對大約 512 位或 1,024 位或 2,048 位的素數,具體取決於所選的密鑰大小。這些素數是由一些隨機過程選擇的(強調加密安全隨機數生成器的重要性)。

就像對稱密鑰的情況一樣,對 2,048 位 RSA 的攻擊是基於嘗試一定大小的所有密鑰,但與對稱密鑰方案不同的是,並非每個 2,048 位數字都是 RSA 密鑰(因為它必須是兩個素數的乘積)。

因此,儘管密鑰空間更大,但對於任何給定位數的 RSA 密鑰實際上比相同對稱密鑰大小的可能的 RSA 密鑰要少。那是因為只有這麼多這個大小及以下的素數。RSA 方案只能使用素數對,而對稱方案可以使用任何相同大小的數。

任何時候密鑰中有一個模式,它就代表了密碼系統的一個弱點。例如,在一個完美的世界中,人們會創建並記住完全隨機的密碼。因為他們不這樣做,所以他們的密碼中有一些模式可以被猜測或破解,而無需嘗試所有可能的模式。

RSA 密鑰有一個獨特的模式:它們是兩個素數的乘積。這提供了弱點,它最好由通用數字欄位篩選器利用。在對稱密鑰情況下,沒有這樣的模式:密鑰只是隨機選擇的大數字。

資料來源:為什麼某些加密密鑰比其他密鑰小得多

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