為什麼在 ECDSA 簽名中使用 r 而在 Schnorr 簽名中使用 R?
在 Schnorr 簽名 (R, s) 中,使用了 R。但是在ECDSA簽名(r,s)中,使用了r,即R的x座標。為什麼不同?
在 Schnorr 簽名中 $ (R,s) $ , $ R $ 用來。但在 ECDSA 簽名中 $ (r,s) $ , $ r $ 使用,它是 x 座標 $ R $ .
該斷言在技術上是不正確的:
- 在最初定義的Schnorr 簽名( alt. ) 中,簽名的第一個組成部分是散列,而不是組元素,更不用說橢圓曲線組上的“點”了,這在密碼學中並不常見。
- 在ECDSA 簽名的定義中,第一個組件 $ r $ 簽名的 x 座標 $ x_R $ 橢圓曲線上的一點,變成一個整數,然後以群階為模減少 $ n $ (然後轉向字節串,但我們將把它放在一邊);這不僅僅是 $ x_R $ .
然而,該斷言的實質有一些改編:
現代教科書 Schnorr 簽名是為離散對數問題困難的任意組定義的,根據簽名的第一個組件是否為
- (至少)消息和組元素的散列 $ R $ ,就像在原始的 Schnorr 簽名中一樣。
- A(a的唯一位表示)組元素 $ R $ ,例如在EdDSA中。這就是斷言適用的變體。
所述組通常是素數階的橢圓曲線子組 $ n $ 場上的橢圓曲線 $ \mathbb F_{p^m} $ , 並且通常 $ m=1 $ ,因此 x 座標 $ x_R $ 的 $ R $ 是一個整數 $ [0,p) $ .
對於常見的此類曲線 $ n\approx p $ ,因此與 $ r:=x_R\bmod n $ 它擁有 $ r=x_R $ 即使當 $ n<p $ (例如secp256k1,secp256r1),或者我們可以選擇橢圓曲線 $ n>p $ .
現在我們有了一個真實的斷言,我們可以問:
為什麼有區別?
因為ECDSA是對DSA的橢圓曲線群的改編,其中籤名的第一個分量是一個群元素,該群元素以群的素數為模減少。在 DSA 中,這種減少是為了縮短簽名的第一部分。DSA 使用該技術而不是像原始 Schnorr 簽名中那樣使用散列的原因可能是
DSA 更接近於已經得到充分研究的ElGamal 簽名。
原始的Schnorr 簽名,由於其狹窄 $ k $ -bit 散列(在上述兩種變體中,與現代 Schnorr 簽名相反,具有更廣泛的散列):
- 不能安全地用作已簽名消息的承諾:私鑰持有者簽署消息並能夠部分選擇它(例如,最後更改幾個字節)可以故意這樣做,以便另一條消息與他們選擇的另一個含義具有相同的簽名。該攻擊是一種選擇前綴碰撞攻擊 $ k $ -位雜湊,預期成本低於 $ 2^{k/2+1.4} $ 雜湊。這增加了簽名被拒絕的風險,並且合法地可能導致恐懼、不確定性和懷疑。
- 將容易受到對散列的消息輸入的假設(第一次或第二次)原像攻擊,包括對於一個薄子集的散列 $ {0,1}^k $ , 預期成本 $ 2^k $ 雜湊;當 DSA(由於它的散列範圍更廣)在這方面有很大的餘地時。
DSA 使用Schnorr 群,即乘法群模素數的循環子群 $ p $ . ECDSA 本質上將其更改為Galois 域上的橢圓曲線組,這允許更小的公鑰和更快的計算。DSA 的減少簽名的第一個組件以組順序為模的原則保持不變。從欄位元素到整數的必要預轉換由 x 座標進行 $ x_R $ , 忽略 $ y_R $ . 順便說一句,這會導致安全屬性的失去: ECDSA 不是sEUF-CMA,而 DSA 是,因為 $ R $ 和相反的 $ R $ 在橢圓曲線組中共享相同的 $ x_R $ ,允許通過更改將有效的 ECDSA 簽名轉換為同一消息的不同有效簽名 $ s $ 至 $ -s $ 以組順序為模。
¹ Claus-Peter Schnorr 聲稱 DSA 的方法屬於他的專利。那從未經過法庭的考驗。雖然可以在專利描述中閱讀大部分 DSA,但對於權利要求而言,索賠侵權是不可能的,並且與重寫的權利要求進行一場艱苦的戰鬥。特別是,當在 DSA 中僅對消息進行散列時,它描述了在消息旁邊帶有輸入的散列。