Transactions

如果 nonce 和私鑰未知,即 k2 - k1 = n,是否可以確定兩個 nonce k1、k2 之間的差異,它們具有線性關係?

  • June 11, 2022

我的問題與弱簽名漏洞測試有關,假設攻擊者不知道隨機數或私鑰本身的值,但可以確定隨機數“k1”被私鑰“d”增加以創建 k2,例如: k2 = k1+d。

我搜尋了堆棧交換和各種文章和研究論文,但沒有找到解決這個問題的可行方法。我自己的線性代數沒有我想要的那麼強(已經好幾年了),我的嘗試也沒有成功。我使用了 k2 = k1+1 方程,但它們並沒有專門產生 k2-k1 = d 的必要解。解決 k 的其他解決方案也不起作用。

有沒有辦法找到 k2-k1 = d 的差異,其中 k1、k2 和 d 是未知的,其中 k2 = k1+d,但所有其他值(r、s、z)都是已知的?

(我提供了 d、k1 和 k2 的值來驗證可能的解決方案,但出於問題的目的,假設攻擊者不知道這些值但可以發現關係)。

讓:

N:secp256k1 的有限域

d:私鑰

B(x,y):公鑰座標

k:ECDSA 隨機數的私鑰

R(x,y):nonce的公鑰座標

r:接收整數

s:簽名整數

z:消息的雜湊值

N = 0xffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141

Bx= 0x7697a1f8d952c373285bd441b1716344a61748b48279be15b03538d80e60f901

通過= 0x431aed8857c99064b316a0c9fb6e7cba3eeade88f44d2c31dee4fa8965740f54

d=0x8b5069be43c35cbc6530d473a9f102dc57f8f5771982eba3988a7588c6e284a7

k1=0x248548dcbf7ff4b25134ee12f78fadaa8283025734b905640b8c400580b869e

s1 = 0xec585a4b0317e38b75008930607a32224b3d11a8a373ed15da32723b1418f852

z1= 0x12dd3658e48a15016dc1f5af7725ad3a5e7b2d6a52112dbd4a0d6df8772a141a

R1x=0xb2dcf2acc6fdd003e65e8d9d77ee4d84a9c0cccbac8eb43bdeeecb69a35bab4b

R1y=0x4a8774fd7ac69caf2d92154324c2280b5f29652b7f458baa28545f1b38d969b8

############################

k2= 0x8d98be4c0fbb5c078a442354d969fdb70021259c8cce7bf9d94339891eee0b

s2= 0x2df1c9e8b3984088ec521c92e9f001b836841e8a14cda6977072d5b23bed171e

z2= 0xdae540b9f50337b2dab2f226a687084e8a1758dbc73505b7ff288b01cc4dae3f

R2x=0x37df00ccef04bfcf0f2b0da82a685125ddd67b9f66320a9619e6e4df7bd57439

R2y = 0x5ff78c4ef0caf4eff68f938ee475e2e99a7b9be31642eb0e5cb68b30a843b46b

基本簽名方程:

d= (k * s - z) * r^-1 mod N

k= (d * r + z) * s^-1 mod N - 或- (d * a + b) mod N

s= (d * r + z) * k^-1 mod N

r= (k * s - z) * d^-1 mod N

z= (k * s) - (d * r) mod N

a= r * s^-1 mod N

b= z * s^-1 mod N

有沒有辦法解決這個問題,在給定上述方程的情況下獲得 k2-k1=d (k1+d-k1=d) 的值,或者解決 k1 或 k2,或者 k 生成方案相對安全地免受攻擊?

這是微不足道的。

鑑於:

  • (1) s 1 = (z 1 + r 1 d) / k 1
  • (2) s 2 = (z 2 + r 2 d) / k 2
  • (3) k 2 = k 1 + d

將 (3) 代入 (2),消除k 2

  • (4) s 2 = (z 2 + r 2 d) / (k 1 + d)

求解 (1) 為k 1

  • (5) k 1 = (z 1 + r 1 d) / s 1

將 (5) 代入 (4),消除k 1

  • (6) s 2 = (z 2 + r 2 d) / ((z 1 + r 1 d) / s 1 + d)

求解 (6) 為d

  • (7) d = (z 2 s 1 - z 1 s 2 ) / (s 2 (r 1 + s 1 ) - r 2 s1)

其中右側僅包含公共資訊。

請注意,所有這些變數都是F的元素,因此上面的除法符號是指與分母模N的模逆的乘法。

k2= 0x8d98be4c0fbb5c078a442354d969fdb70021259c8cce7bf9d94339891eee0b

我相信您在這些數字之後缺少“45”。

引用自:https://bitcoin.stackexchange.com/questions/114014