Public-Key

為什麼檢查兩個 ECDSA 簽名時公式不起作用?

  • February 27, 2019

有兩個生成的 ECDSA 簽名

X - 私鑰

S  = ((Z  + (X * R)) / K) mod n

S` = ((Z` + (X * R`)) / K`) mod n

G——n階基點;

R  = K  * G
R` = K` * G

為什麼這個公式不起作用?

C = K - K`

R = R` + (C * G)

我究竟在哪裡犯了錯誤?

ECDSAR中,簽名中的值不是橢圓曲線點 $ kG $ ,但只是它的 x 座標,即整數。

那麼,你是什麼意思R' + (C*G)?特別是,您所說的操作員是什麼意思+

如果你的意思是“+是一個整數模加法,也就是說,我們取點的x座標 $ CG $ ,然後添加它(模 $ n $ ) 至 $ R’ $ “,好吧,這會給你一個與 $ R $ (作為 $ R $ 和 $ R’ $ 與橢圓曲線點相關而不是整數,整數加法和橢圓曲線運算相互關係不大)

如果您的意思是“+是橢圓曲線加法,即我們找到x座標的點之一 $ R’ $ , 並將其(使用橢圓曲線加法運算)添加到該點 $ C\cdot G $ ),好吧,這將工作一半的時間;(通常)有兩個帶有 x 座標的橢圓曲線點 $ R’ $ ,如果您選擇的恰好是原始版本,它將起作用 $ R’ $ 觀點。

您確定您了解 ECDSA 或 ECC 在操作方面的工作原理嗎?和運算實際上不是乘法和加法(在最後兩個等式中)*+它們是 ECC 活板門功能。你可以在這裡看到這樣一個函式的動畫(應該是gif):

圖片

*and操作只是意味著應用陷門+函式 x 次。

在您的範例中:

R  = K  * G

取點 G 並對其應用陷門函式 K 次。

在 ECC 和 ECDSA 中,-在大多數情況下,操作(當指反轉陷門函式時)是不可能的,因為這意味著反轉陷門函式,解決橢圓曲線離散對數問題,使密碼系統過時(在大多數情況下它不是可能,但存在一些對弱曲線的攻擊)。

你可以找到一堆 python 庫來做這些函式乘法,比如ECPy

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