Elliptic-Curves

為什麼 224 位 ecdsa 比 192 位 ecdsa 快?

  • September 20, 2014

我在 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 建議的最小可接受尺寸。花時間優化建議不要使用的東西沒有多大意義。

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