Encryption

與 PKCS #1 標準相比,其他非 RSA 算法如何?

  • October 10, 2011

可以說,PKCS 標準套件具有以利潤為導向的偏見,因為它們由 RSA 推廣,並以 RFC 和其他方式的形式將它們的算法推廣到其他人之上。

我正在考慮這種資訊偏差可能包括關於替代算法的虛假資訊或遺漏,這些替代算法可能同樣好,甚至更好。

還有哪些其他算法可以填補 PKCS#1 RSA 算法目前持有的空間?

RSA 是兩種算法,一種用於非對稱加密,另一種用於數字簽名。

對於非對稱加密,RSA 的主要競爭對手是:

對於簽名,有上述的變體;對於類似 ElGamal 的簽名,最著名的變體是DSA

與幾乎所有其他競爭算法相比,RSA 的最大優勢在於它有一個標準( PKCS#1 ),它明確規定了每個字節應該去哪裡。為了獲得廣泛的工業認可,這樣的標準是必不可少的——它甚至是一個免費的標準。僅此一點就可以解釋 RSA 目前的主導地位。在這一點上,唯一可以與 RSA 抗衡的算法是DSA、其橢圓曲線變體ECDSADiffie-Hellman及其橢圓曲線體。只有 DSA 標準本身是免費的。

就性能而言,RSA公鑰運算非常快,比離散對數的公鑰運算快得多。另一方面,對於私鑰操作,DSA 和 DH 的橢圓曲線變體比 RSA 快得多。這可以通過使用帶有命令行工具的OpenSSL來看到。openssl speed在便宜且不那麼新的 1.6 GHz AMD CPU(在 64 位模式下)上,我得到了這個:

$ openssl speed rsa2048 dsa2048 ecdsap224 ecdhp224
Doing 2048 bit private rsa's for 10s: 1996 2048 bit private RSA's in 9.99s
Doing 2048 bit public rsa's for 10s: 70600 2048 bit public RSA's in 9.99s
Doing 2048 bit sign dsa's for 10s: 7311 2048 bit DSA signs in 9.99s
Doing 2048 bit verify dsa's for 10s: 6218 2048 bit DSA verify in 9.99s
Doing 224 bit sign ecdsa's for 10s: 43073 224 bit ECDSA signs in 10.00s 
Doing 224 bit verify ecdsa's for 10s: 9760 224 bit ECDSA verify in 9.99s
Doing 224 bit  ecdh's for 10s: 11474 224-bit ECDH ops in 9.99s
OpenSSL 0.9.8k 25 Mar 2009
built on: Thu Feb 10 01:45:33 UTC 2011
options:bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) blowfish(ptr2) 
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT
-DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack
-g -Wall -DMD32_REG_T=int -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM
-DSHA512_ASM -DMD5_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
                             sign    verify    sign/s verify/s
rsa 2048 bits             0.005005s 0.000142s    199.8   7067.1
                             sign    verify    sign/s verify/s
dsa 2048 bits             0.001366s 0.001607s    731.8    622.4
                             sign    verify    sign/s verify/s
224 bit ecdsa (nistp224)  0.0002s   0.0010s     4307.3    977.0
                             op                 op/s
224 bit ecdh (nistp224)   0.0009s               1148.5

(我稍微編輯了輸出,使數字以圖形方式對齊。)

這在 224 位曲線上測試了 2048 位 RSA 與 2048 位 DSA,以及 ECDSA 和 ECDH,據說應該提供類似的安全性。RSA 在私鑰性能方面被打敗了,但在公鑰操作方面確實大放異彩。

此外(這在此基準測試中並不明顯),DSA 和 ECDSA 提供比 RSA 更短的簽名(ECDSA 比 P-224 為 56 字節,而 RSA-2048 為 256 字節)。

DSA 和 Diffie-Hellman 在上個世紀得到了美國聯邦政府的大力推動,因為當時 RSA 還在申請專利。否則,FIPS 186-3 將不會作為免費標準存在。如今,許多政府組織都在推動採用橢圓曲線密碼學,因為依賴單一原語“感覺不安全”:萬一 RSA 被嚴重破壞,應該已經開發了一組替代算法。

從上圖可以看出,ECDSA 和 ECDH 是 RSA 的不錯競爭對手,並且在某些特定情況下具有優勢。然而,對 RSA 的支持並不像對 RSA 那樣廣泛,因為相關標準要更新得多,並且涉及更高級別的數學(在某些時候,實現者——編寫實際程式碼的人——必須了解正在發生的事情,而 RSA更容易理解)。

未來,NTRU 可能是一個更快的替代方案,但現在它已獲得專利,而且仍然很新(這是專利的好處之一:它迫使世界其他地區在部署算法之前稍等片刻,並且這為密碼分析員留下了時間來完成他們的工作)。

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