Public-Key

為什麼 ECDSA 有它的形式?

  • December 13, 2018

根據Wikipedia,如果 Alice 想要簽署一些消息,她會計算 $ s = k^{-1} (z + r d_A) $ 然後發送 $ (r, s) $ 給鮑勃。

我不明白他們為什麼使用這個特殊的公式 $ s = k^{-1} (z + r d_A) $ 簽署消息?他們為什麼不採取 $ s = r d_A + z $ (IE $ k = 1 $ ) 或者 $ s = d_A + z $ 或其他形式?

主要原因是歷史性的(有點悲傷)。

ECDSA 可以被視為一種重新利用的身份驗證機制。私鑰所有者想要證明私鑰的知識 $ x $ 匹配給定的公鑰 $ Q = xG $ ,但沒有透露該私鑰。因此,這被組織為一個三步協議:

  1. 證明者對新生成的隨機值做出承諾 $ k $ ; 承諾是重點 $ kG $ (價值 $ r $ 基本上是該點的 X 座標)。
  2. 驗證者發出挑戰(我們稱之為 $ e $ ).
  3. 證明者以價值回應挑戰 $ s $ ,這樣驗證者可以檢查證明者是否知道從 $ k $ 和 $ x $ ,但實際上沒有透露 $ x $ .

然後,通過讓簽名者對自己執行協議,這個認證方案變成了一個簽名方案:挑戰是從承諾中確定性地計算出來的,使得驗證者的物理存在變得不必要。簽名者可以自己玩協議,協議的抄本(對 $ (r,s) $ ) 之後可以以非互動方式驗證。

現在,在 1980 年代,有一個很好的協議適合該機制,稱為Schnorr 簽名。在 Schnorr 簽名中,挑戰 $ e $ 計算為簽名消息和承諾的雜湊值,響應計算為 $ s = k - xe $ (一些變種使它 $ s = k + xe $ )。然而,Schnorr 已經為該算法申請了專利。當美國聯邦政府為所有美國聯邦組織尋找一種算法來標準化時,他們希望盡可能避免專利(否則他們會使用同樣獲得專利的 RSA)。因此,他們尋找了一種或多或少類似於 Schnorr 的協議,該協議仍然足夠不同,以免侵犯專利。他們因此取消了沒有專利的ElGamal 簽名方案(當時!Certicom 之後申請了專利,因為 ElGamal 適應了橢圓曲線)。是 ElGamal 引入了 $ k $ ,實現起來很麻煩。ElGamal 改編為美國標準的結果稱為 DSA。ECDSA 後來被定義為應用於橢圓曲線的 DSA。

因此,您可以說 DSA 和 ECDSA 的具體公式,與 $ k^{-1} $ , 被選擇是出於避免專利的原因,而不是出於任何加密優勢。確實,這個公式很糟糕:它使實現變得更加複雜,它阻止了一些安全證明,它使簽名有些可塑性(如果 $ (r,s) $ 是一個有效的 ECDSA 簽名,那麼 $ (r,-s) $ 也是具有相同密鑰的同一消息上的有效 ECDSA 簽名),該屬性會引起一些偶然的麻煩(即比特幣中的交易重放攻擊)。

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