題:
ECDSA對比ECDH對比Ed25519對比Curve25519
Omar
2014-02-04 15:53:50 UTC
view on stackexchange narkive permalink

openSSH中可用的ECC算法(ECDH,ECDSA,Ed25519,Curve25519)提供了最佳的安全級別,以及(理想情況下)為什麼?

這是一種很奇怪的說法。 Curve25519是您可以在其上執行Diffie-Hellman(ECDH)的一條特定曲線。 Diffie-Hellman用於交換密鑰。 Ed25519和ECDSA是簽名算法。
相關:[SSH密鑰:Ed25519與RSA](http://security.stackexchange.com/questions/90077/ssh-key-ed25519-vs-rsa)
另請參閱伯恩斯坦的[Curve25519:新的Diffe-Hellman速度記錄](https://cr.yp.to/ecdh/curve25519-20060209.pdf)。他似乎做得很好,並回答了您很多問題。
五 答案:
Tom Leek
2014-02-04 18:32:23 UTC
view on stackexchange narkive permalink

在SSH中,使用了兩種算法:密鑰交換算法(Diffie-Hellman或稱為ECDH的橢圓曲線變體)和簽名算法。密鑰交換產生密鑰,該密鑰將用於對該會話的數據進行加密。簽名使客戶端可以確保與正確的服務器進行對話(如果服務器強制執行基於密鑰的客戶端身份驗證,則可以使用由客戶端計算出的另一個簽名)。

ECDH使用一個曲線;大多數軟件使用標準NIST曲線P-256。 Curve25519是另一條曲線,其“銷售音調”是,它比P-256更快而不是更強。從人的角度來看,性能差異非常小:我們談論的是在小型PC上進行不到一毫秒的計算,並且每個SSH會話僅發生一次。您不會注意到它。哪一條曲線都不能說比另一條曲線“更強”,實際上(在“無法打破它”的領域中都相距甚遠)或在學術上(都處於“ 128位安全級別”)都可以說。

即使使用ECDH進行密鑰交換,大多數SSH服務器和客戶端也將使用DSA或RSA密鑰進行簽名。如果要基於橢圓曲線的簽名算法,則為ECDSA或Ed25519;由於曲線方程的精確定義,出於某些技術原因,P-256為ECDSA,Curve25519為Ed25519。再者,兩者都不比另一個更強大,並且速度差異太小而無法被人類用戶察覺。但是,大多數瀏覽器(包括Firefox和Chrome)不再支持ECDH(dh也是如此)。

現在使用P-256應該會產生更好的互操作性,因為Ed25519較新且不那麼廣泛。但是,對於配置的給定服務器以及要從自己的計算機訪問的服務器,互操作性並不重要:您可以控制客戶端和服務器軟件。

因此,基本上,選擇取決於美學,即完全由您決定,沒有合理的理由。無論如何,安全問題不會由這種選擇引起。密碼算法是整個系統中最強大的部分,而不是最弱的部分。

25519的“銷售建議”更多:不是NIST,所以不是NSA。沒有速度。
實際上,速度也非常快。精心構造的Edwards / Montgomery曲線可以比已建立的NIST曲線快幾倍。https://www.imperialviolet.org/2010/12/21/eccspeed.html
實際上,如果您真的想在最新的PC上提高速度,那麼NIST批准的二進制Koblitz曲線甚至會更快(這要歸功於x86 AES指令附帶的“無進位乘法”操作碼)。對於K-233中的通用點乘法,它可以減少到40000個週期,比Curve25519快兩倍以上-但要找到一個這樣的速度實際上產生顯著差異的方案是一項挑戰。
更多“銷售推銷”來自[此IETF草案](https://tools.ietf.org/html/draft-ietf-ipsecme-safecurves-03#section-4): _雖然NIST曲線的廣告宣傳是隨機驗證的,但沒有解釋用於生成NIST曲線的種子。相反,用於拾取這些曲線的過程已得到充分記錄,並且足夠嚴格,因此可以進行獨立的驗證。人們普遍認為這是安全優勢,因為它可以防止生成方惡意操縱參數。
根據DJB的http://safecurves.cr.yp.to/網站,NIST曲線可能不如Curve25519安全或可靠。
實際上有三種算法。主機(和客戶端)密鑰算法(身份驗證),密鑰交換(kex)算法和密碼。
@MartinSchröder,Enigma也不是美國人發明的。
我感謝ed25519的公鑰比用於SSH的4096位RSA短得多。
Brian Minton
2014-03-14 20:53:08 UTC
view on stackexchange narkive permalink

Ed25519簡介開始,有一些速度上的好處和一些安全上的好處。更有趣的安全性好處之一是,它不受多種邊信道攻擊的影響:

  • 沒有秘密數組索引。該軟件從不從RAM中的秘密地址讀取或寫入數據。地址模式是完全可以預測的。因此,該軟件不受高速緩存定時攻擊,超線程攻擊和其他依賴於通過CPU高速緩存的地址洩漏的旁通道攻擊的影響。
  • 沒有秘密分支條件。該軟件永遠不會根據秘密數據執行條件轉移;跳躍的模式是完全可以預測的。因此,該軟件不受側通道攻擊的影響,側通道攻擊依賴於通過分支預測單元的信息洩漏。

為了進行比較,已經在各種算法上演示了幾種現實中的緩存定時攻擊。 http://en.wikipedia.org/wiki/Timing_attack

*“更有趣的安全性好處之一是它不受多次側通道攻擊的影響” *-顯而易見,這取決於實現方式。Bernstein團隊的代碼,Adam Langley的代碼,Andrew Moon的代碼(等等)應該可以。但我認為您不能對任意實現說相同的話。
我想可以更準確地說,該算法的設計使其可以在不使用秘密數組索引或分支條件的情況下實現它。當然,您是正確的,仍然有可能實施不佳。
一個時間片並不安全,因為它取決於實現方式。
lxgr
2014-12-01 17:53:29 UTC
view on stackexchange narkive permalink

與(EC)DSA相比,Ed25519有一個重要的實踐優勢:後一種算法完全破解與簽名隨機數生成器一起用於簽名時。這種RNG失敗發生過,並且很可能會再次發生。

從理論上講,實現可以保護以解決此特定問題,但這要困難得多。驗證兩端是否使用正確的實現,而不是僅僅(根據您的兼容性需求)偏愛或強制執行一種明確指定安全行為的算法(Ed25519)。

zenith
2014-02-08 03:27:41 UTC
view on stackexchange narkive permalink

我的印像是,Curve25519實際上比NIST曲線更安全,這是因為該曲線的形狀使其更不易受到各種側通道攻擊和實現失敗的影響。請參閱: http://safecurves.cr.yp.to

Ed25519的優點是能夠使用相同的密鑰來簽署密鑰協議(通常您不會做這個)。我對數學並不十分了解,可以說這是否是愛德華茲曲線的一個特性,儘管我確實知道它已轉換為蒙哥馬利坐標系(有效地轉換為Curve25519)以達成關鍵協議... Ed25519還是更多除了曲線外,它還指定了確定性的密鑰生成(例如,哈希),值得牢記。碰巧,這對於DJB實現是一個令人沮喪的事情,因為必須區別對待它們以保持互操作性。

Mecki
2019-06-07 18:04:24 UTC
view on stackexchange narkive permalink

到目前為止,還沒有直接解決的問題是,您的問題將或多或少的不相關名稱混在一起,好像它們是彼此等效的替代品,實際上並非如此。

ECDH和ECDSA只是加密方法的名稱。

ECDH 是密鑰交換方法,供雙方用來就不安全的密鑰協商安全密鑰溝通渠道。這是 DH (Diffie-Hellman)密鑰交換方法的變體。 ECDH代表橢圓曲線Diffie–Hellman 。然而ECDH只是一種方法,這意味著您不能僅將其與一條特定的橢圓曲線一起使用,而可以將其與許多不同的橢圓曲線一起使用。

ECDSA 是一種簽名算法,可以用這樣的方式對數據進行簽名,即對數據的任何更改都將導致簽名驗證失敗,但是攻擊者在更改後將無法正確地重新簽名數據。它是 DSA (數字簽名算法)的一種變體。 ECDSA代表橢圓曲線數字簽名算法。 ECDSA也僅描述了可用於不同橢圓曲線的方法。

因此,ECDH和ECDSA的安全性取決於兩個因素:

  1. 方法本身的安全性?如果該方法不安全,那麼單詞中的最佳曲線不會改變。
  2. 所使用的曲線的安全性如何?如果曲線不安全,則從理論上講該方法將不起作用。
  3. ol>

    Curve25519 是特定橢圓曲線的名稱。其他曲線分別命名為Curve448,P-256,P-384和P-521。

    Ed25519 EdDSA 具體變體的名稱。 。使用 SHA-512 Curve25519 執行EdDSA時,此變體稱為Ed25519。就像ECDSA一樣,EdDSA是一種簽名算法。

    因此,如果某個實現只是說它使用ECDH進行密鑰交換或使用ECDSA簽署數據,而沒有提及任何特定曲線,則通常可以假定它將使用NIST曲線(P-256,P-384或P- 512),但該實現實際上應該始終明確命名所使用的曲線。

    要回答有關安全性的問題:ECDH和ECDSA已被證明是概念上的安全密鑰交換和簽名方法,因此是安全性ECDH和ECDSA的差異很大程度上取決於以下事實:有人找到一種方法來打破一般的橢圓密碼術(可能性很小但並非不可能),或者找到正在使用的曲線內的缺陷(可能性更大)。

    之所以有人選擇Curve25519而不是NIST標準曲線,是因為事實,即NIST尚未明確記錄為什麼它選擇這些曲線來替代現有曲線。通用聲明“ 表面上選擇曲線是為了獲得最佳的安全性和實現效率”,這聽起來很像是營銷禿頭,並且不會說服密碼專家。

    2006年,NIST還標準化了基於隨機數生成器的橢圓曲線加密技術(Dual_EC_DRB),並且《紐約時報》聲稱(在審查了Edward Snowden洩露的備忘錄後),它是NSA影響NIST進行標準化的這個特定的隨機數生成器。在該生成器中發現了一個巨大的弱點,並且據信這是NSA故意創建的後門程序,它能夠破壞基於該生成器的TLS加密。當首次向Dual_EC_DRB提交ANSI時,ANSI顯然發現了該缺陷,但是儘管知道如何避免,但他們並沒有改進算法,也沒有公開這些缺陷,因此認為不允許它們(gag order)。 )。當薄弱環節廣為人知時,該標準於2014年撤消。

    當然,有了這些背景知識,人們開始懷疑,也許神秘的NIST曲線參數的來源實際上也是NSA,因為這些曲線還隱藏了尚未公開的弱點,但NSA可能知道關於它們的信息,因此能夠根據這些曲線破解密碼。沒有任何證據可以證明這一主張,甚至沒有推定證據,但它肯定比童話故事更可行和更現實。這就是為什麼人們對這些曲線失去信任,而轉向那些極不可能的,受全球任何秘密服務影響的替代方案的原因。

    Curve25519由德裔美籍數學家和密碼學家Daniel J發表伯恩斯坦在2005年,還設計了著名的Salsa20流密碼及其現在廣泛使用的ChaCha20變體。他還發明了Poly1305消息身份驗證。 Google決定將ChaCha20與Poly1305結合使用是一種安全的替代方法,因為該算法已被破壞,因此必須刪除RC4後才能在TLS中使用。與使用AES塊削片機相比,它所需的計算能力要低得多(對移動設備非常有用,因為它可以節省電池運行時間),但據信可提供相當的安全性。 ChaCha20 / Poly1305在RFC 7905中進行了標準化,並從今天開始廣泛用於TLS客戶端-服務器通信中。因此,如果伯恩斯坦是NSA的間諜,這不太可能發生,那麼我們所有人都將注定要失敗,因為TLS(因為如今經常使用TLS)可能無法保護數據免受秘密服務的侵害。

儘管ECDSA可以與多條曲線一起使用,但實際上並未與Bernstein一起使用。Ed25519和Ed448是EdDSA的實例,它是一種不同的算法,具有一些技術優勢。在OpenSSH中(按要求),命令選項`ssh-keygen -t ecdsa`和默認文件名`id_ecdsa *`沒有指定曲線,但是實際的鍵(內容)包括線路上和`known_hosts`中的_do_;參見rfc5656。包括nistP-521,不包括不存在的P-512。
-1
我只想指出,您在修訂說明中有一個錯字,其中拼寫了“煩人的nitpickers”。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...