ECDH-ECDSA組合
我正在研究基本的密碼學原語,我遇到了一個關於加密方法的問題。我知道 ECDH 是一種在加密過程開始之前在兩方之間進行安全密鑰交換的方法。它在使用相同密鑰進行加密和解密的對稱方法中非常有用。但我無法理解密鑰交換方案在 ECDSA 等公鑰加密方法中的應用,因為只有公鑰在不需要安全交換的兩方之間共享。但是這種組合(ECDSA/ECDH)似乎發生在 SSL 等協議中。像 ECDH 這樣的安全密鑰交換方法在什麼方面代表了公鑰加密方法,特別是 ECDSA?
ECDH 和 ECDSA 是兩種不同的加密原語。一個不是直接建立在另一個之上。當然,ECDH 和 ECDSA 都依賴於橢圓曲線密碼學的相同計算難題。
ECDH 是一種執行密鑰協商的方法。雙方可以通過僅將其臨時或靜態密鑰對的公鑰發送給對方來建立秘密值。如果一方的密鑰對被另一方信任,那麼該密鑰對也可以用於認證。然而,這並不常見。ECDH 是 Diffie-Hellman 協議的橢圓曲線形式(首字母縮略詞中的 DH)。
顧名思義,ECDSA 是一種數字簽名算法 (DSA)。它是DSA的橢圓曲線形式。它可用於驗證 TLS 協議的握手。此身份驗證包括用於派生主密鑰的密鑰協議參數。因此,認證包括會話密鑰的正確性。
正如您在上面看到的,實際的 ECDH 和 ECDSA 可能會在 TLS 協議的握手中一起使用。然而,它們在操作方面彼此獨立。這也是 ECDH 和 RSA 組合可以存在的原因。ECDH 和 ECDSA 恰好共享相同的加密原理。
您的問題不是很容易理解,但我將對您的問題進行以下解釋:
ECDH 如何在 ECDSA 中使用?或不同的表述:如何從 ECDH 建構 ECDSA 簽名者和驗證者?
我將在此處遵循Wikipedia的文件(並剝離)文件。
首先,計算公鑰 $ Q=d_A\times G $ . 顯然,這與 ECDH 相同,您也可以在其中交換 $ Q $ 與另一方進行後續密鑰派生。
二、簽署消息,計算 $ R=k\times G $ (和 $ k $ 隨機均勻選擇並且小於組順序)。此外,巧妙地推導出 $ s $ 從你的私鑰 $ d_A $ , 臨時公鑰 $ R_x $ , 臨時密鑰 $ k $ 和消息(雜湊) $ z $ .
最後,要驗證消息,您首先巧妙地使用 $ R_x $ , $ z $ 和第二個簽名部分 $ s $ 要得到 $ u_1 $ 和 $ u_2 $ 併計算 $ R’=u_1\times G + u_2 \times Q $ ,其中第一個和是標準的“公鑰生成”,第二個是標準的 ECDH 交換。
遺憾的是(據我所知)不可能僅基於 ECDH 創建 ECDSA 簽名者(例如,如果您有支持 ECDH 的智能卡),因為 $ s $ 以非冪運算的方式生成,並且需要了解 $ d_A $ .