secp256r1 是否比 secp256k1 更安全?
曲線 secp256r1 和 secp256k1 都是用於各種非對稱密碼學的兩條橢圓曲線的範例。
Google搜尋這些顯示大多數頂級結果與比特幣相關。我聽說過這樣的說法……
中本聰選擇了傳統觀點認為將在 5 到 10 年內破解的非標準加密貨幣。
有這個關於比特幣談話的討論,爭論雙方都有不同的意見(也可以看看這篇文章)。我想把它從比特幣帶走,進入一般的密碼學問題:在某種意義上,secp256r1 確實比 secp256k1 更安全嗎?
主要區別在於 secp256k1 是 Koblitz 曲線,而 secp256r1 不是。眾所周知,Koblitz 曲線比其他曲線弱幾位,但由於我們談論的是 256 位曲線,因此除非有突破,否則“5-10 年”都不會被打破。
另一個區別是如何選擇參數。在 secp256r1 中,它們應該來自隨機數,但是,無法證明確實如此。例如,請參閱Bernstein 和 Lange 的這些幻燈片,以獲得易於理解的處理方法。
另一方面,Koblitz 曲線的參數選擇相對嚴格。評論中連結的文章符文解釋了為什麼選擇它們。
因此,與其說一個更安全,我會說風險是不同的。如果兩條曲線都沒有後門或意外弱點,那麼兩者都是安全的。secp256r1 的幾個額外的安全位無關緊要,除非你碰巧擁有一台中等大小的量子電腦,它只能管理一個但不能管理另一個。對 secp256r1 曲線進行後門會更容易,但另一方面,作為一個類別的 Koblitz 曲線可能以某種目前未知的方式完全弱化。
即更喜歡哪個有點主觀。如果您不喜歡 Koblitz 曲線但擔心 secp256r1 被後門,則始終可以選擇使用根據您喜歡的標准設計的其他曲線。(當然,你不能改變 BTC 的用途。)
曲線 secp256r1 和 secp256k1 具有相當的安全性。
如果我們只考慮當今最知名的攻擊,它們的安全性非常高。兩條曲線都是在素數域上定義的,並且沒有已知的弱點,因此適用的最佳攻擊是Pollard 的 Rho。它的複雜性是: $ \sqrt{\frac{{\pi}n}{2m}} $ 在哪裡 $ n $ 是曲線的階數(如果它是素數,例如在我們的例子中)和 $ m $ 是自同構的階數(下文詳述見本文)。
現在,所有橢圓曲線都具有 2 階自同構,這是由點反演圖提供的,即,對於 $ P=(x,y); -P=(x,-y) $ .
secp256k1 有一個額外的自同構,因為它屬於一類特殊的橢圓曲線,有時稱為 Koblitz(雖然這導致了一些混淆,有些人錯誤地稱它為二元曲線),它有一個額外的自同構。這允許映射點 $ P=(x,y) $ 要麼 $ \lambda P=(\beta x,y) $ 或者 $ \lambda^2 P=(\beta^2 x,y) $ 在哪裡 $ \beta = \sqrt[3]{1} \pmod{p},\lambda = \sqrt[3]{1} \pmod{n} $ . 這可以與反演圖結合併實現 6 階。給定階數的兩個數值,使用以 2 為底的對數,我們得到:
安全 secp256r1 = $ \log_2\sqrt{\frac{{\pi}n_{secp256r1}}{4}}=127.83 $
安全 secp256k1 = $ \log_2\sqrt{\frac{{\pi}n_{secp256k1}}{12}}=127.03 $
哪些是可比的。
然後,考慮剛性,secp256k1 比 secp256r1 更剛性。所以理論上有可能選擇 secp256r1 屬於一個秘密的橢圓曲線類,它不像我們想像的那麼安全。
然後,考慮到橢圓曲線的特殊類,secp256k1 屬於特殊類,因為它的參數不是隨機選擇的,而 secp256r1 的參數看起來是隨機的(但由於 secp256r1 的剛性問題,我們無法確定)。因此,理論上可能會發現 secp256k1 的類不像我們目前認為的那樣安全。但是這個類是眾所周知的,到目前為止唯一的問題是額外的否定映射,順便說一下,它允許比例如 secp256r1 更快的標量乘法計算。
很難判斷剛性和特殊等級考慮如何影響曲線的整體安全性。一方面 NSA 使用人們不完全信任的過程生成 secp256r1,另一方面 secp256k1 已被選擇屬於特殊類別的橢圓曲線。
在我個人看來,這兩個事實相互抵消。因此,在這種情況下,我選擇堅持目前最知名的攻擊作為安全措施,並得出結論認為它們具有相當的安全性。