Transactions
如何偽造具有固定 Z 值的簽名
我想偽造一個具有固定 z 值的簽名,這樣做的公式是什麼
嘗試應用奧卡姆剃刀。人們在比特幣網路上儲存著巨大的財富。如果可以在不知道私鑰的情況下為給定消息創建一個有效的簽名,那麼任何使用這種技術的攻擊者都可以隨意竊取比特幣中的任何資金。
更可能的解釋是:a) ECDSA 不易受到您提出的攻擊,或 b) 存在此類攻擊,知識足夠廣泛,您可以在問答平台上詢問以了解它,但人們仍在不斷堆積比特幣的價值越來越高,但沒有任何符合該特徵的盜竊報告?
要添加到其他答案…
很明顯,在您不擁有的公鑰下,您實際上無法在您選擇的消息上偽造簽名。否則簽名方案將被破壞且無用。
但是,您可以使用 ECDSA 做一些事情。
Y
首先,給定一個您不知道其秘密的公鑰,您可以選擇兩個隨機數a,b
併計算R = [a]G + [b]Y
。我將 x 座標表示R
為R.x
。然後讓s = R.x/b
,你在一個值的公鑰(R.x, s)
下有一個有效的簽名。但是,顯然,您將無法找到SHA-256 下的原像或使用的任何散列函式,因此您並沒有真正找到消息本身,只是找到了它的散列。這就是為什麼散列函式是該方案的重要組成部分,以及為什麼您不能信任隨機散列上的簽名。這是 Pieter Wuille在這裡描述的。Y``z``z = R.x * a/b``z
其次,給定公鑰
(R.x, s)
下的消息上的有效簽名Y
,您可以通過某些方式對該簽名進行處理,使其仍然有效,但與原始簽名不同。最明顯的方法是簡單地s
對 的順序取模G
,因為(R.x, -s)
這也是一個有效的簽名。BIP-66和BIP-141都討論了比特幣交易簽名的延展性。