如果 nonce 和私鑰未知,即 k2 - k1 = n,是否可以確定兩個 nonce k1、k2 之間的差異,它們具有線性關係?
我的問題與弱簽名漏洞測試有關,假設攻擊者不知道隨機數或私鑰本身的值,但可以確定隨機數“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”。