Elliptic-Curves

初始密鑰交換階段的種子來自哪裡?

  • June 25, 2021

我知道標準 DH 和 ECDH 密鑰交換算法要求客戶端和伺服器就大素數和生成器(在 DH 算法中)或曲線和點(在 ECDH 算法中)達成一致,但如果我檢查SSH 數據包沒有這些共享種子的跡象。那他們怎麼得到呢?

我檢查了數據包,在**“Key Exchange Init”之後和“New Keys”**消息之前,唯一的消息是:

  • “客戶端:橢圓曲線 Diffie-Hellman 密鑰交換初始化”

其中只有客戶端的臨時公鑰(即,由於選擇的曲線而生成的公鑰)

  • “伺服器:橢圓曲線 Diffie-Hellman 密鑰交換回放”

其中有伺服器的公共主機密鑰、伺服器的臨時公共密鑰(總是隨曲線生成的)和交換雜湊(在 rfc4253 中稱為)。

我認為使用哪條曲線在算法的名稱中是明確的(例如 nistp256)。但是他們如何在程序點 n 上達成一致呢?

如果我強制使用 DH 算法(通過鍵入ssh -oKexAlgorithms=diffie-hellman-group14-sha256),則沒有模組和生成器交換的痕跡。

謝謝

ECDH 的順序和 DH 的模數和生成器都是用於 (EC)DH 的域參數的一部分,因此它們由商定的組指示。

例如,對於 P-256,您將在 FIPS 186-4 的 D.1.2.3(或指定相同參數但名稱為 secp256r1 的 Sec v2)中找到規範,未來將在 NIST SP 800-186-5 中找到規範. 2048 位 DH 的第 14 組在 RFC 3526中定義。

要執行 ephemeral-static 或 ephemeral-ephemeral ECDH,您只需要就組(即域參數)達成一致並交換雙方的公鑰。公鑰已經從提供隨機性的臨時私鑰生成。

僅當您執行靜態靜態 DH(即您使用受信任的 DH 公鑰對雙方進行身份驗證並使用靜態私鑰)時,您才需要一個額外的隨機值,否則每個會話將使用相同的派生主/會話密鑰。

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