Public-Key
為什麼檢查兩個 ECDSA 簽名時公式不起作用?
有兩個生成的 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)
我究竟在哪裡犯了錯誤?
ECDSA
R
中,簽名中的值不是橢圓曲線點 $ 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