Elliptic-Curves
為什麼 224 位 ecdsa 比 192 位 ecdsa 快?
我在 2 台不同的電腦上執行了幾個基準測試
openssl
,得到了令人驚訝的結果。對於 Nist 192 位曲線,基準測試結果為
>openssl speed ecdsap192 sign verify sign/s verify/s 192 bit ecdsa (nistp192) 0.0001s 0.0003s 11980.6 3481.6
對於 Nist 224 位曲線,基準測試結果為
>openssl speed ecdsap224 sign verify sign/s verify/s 224 bit ecdsa (nistp224) 0.0001s 0.0001s 13740.5 6948.8
因此驗證 nistp224 ecdsa 簽名比使用 nistp192 快兩倍。
我真的希望 nistp224 處理更大的數字時會更慢。為什麼不是這樣?
兩條曲線具有相似的形式並且素數接近於 2 的冪 ( $ 2^{192}-2^{64}-1 $ 和 $ 2^{224} - 2^{96} + 1 $ ),因此您不會期望在性能上有很大差異——在所有條件相同的情況下,由於曲線操作的計算縮放,P-224 可能會慢 30% 到 60%。
然而,在實踐中,不同的實現會有不同的性能,一些曲線會得到更好的優化。在這種情況下,看起來 P-192 可能只有 32 位可移植實現,而 P-224 可能只有優化的 64 位:
1.0.0h 和 1.0.1 之間的變化 $$ 14 Mar 2012 $$
$$ … $$ 添加橢圓曲線 NIST-P224、NIST-P256、NIST-P521 的可選 64 位優化實現,在典型輸入上具有恆定時間單點乘法。$$ … $$
(注意:我實際上並沒有檢查 P-192 是否未優化。如果您有興趣,請使用您的版本進行。)
至於為什麼他們會更好地優化 P-224,它是根據例如NIST 建議的最小可接受尺寸。花時間優化建議不要使用的東西沒有多大意義。