Bitcoin Forum
April 02, 2026, 08:44:28 AM *
News: Latest Bitcoin Core release: 30.2 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: ECDSA Signature Case 3 Shared Nonces  (Read 186 times)
mr.jeanfrancois (OP)
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
August 04, 2025, 11:56:00 PM
 #1

Here’s a realistic theoretical case involving valid ECDSA signatures over the secp256k1 curve, and RFC6979 was not used (nonces were random).

Context:
   •   There are 7 private keys: d₁ through d₇
   •   3 nonces (k₁, k₂, k₃) are reused across several keys (can also be their negative: -k)
   •   A total of 9 valid ECDSA signatures are available in the form (r, s, z)

Nonce Usage:
   •   d₁ signed using k₁, k₂, k₃ (or -k₁, -k₂, -k₃)
   •   d₂ and d₃ signed using k₁ (or -k₁)
   •   d₄ and d₅ used k₂ (or -k₂)
   •   d₆ and d₇ used k₃ (or -k₃)

We do not know any private key or nonce in advance.

My question is:

Is this system of 9 ECDSA equations in 10 unknowns guaranteed to be solvable with mathematical certainty?
Considering that d₁ links all three nonce-sharing groups, acting as a bridge across the system?

Here’s a simplified example using small, fictitious numbers, not real secp256k1 values, just to illustrate how the equations link together.

All calculations are modulo a small fake order n = 101 for clarity.

Sample Signatures (toy values):
   •   Sig 1 (d₁, k₁): (r=17, s=64, z=35)
   •   Sig 2 (d₁, k₂): (r=22, s=15, z=40)
   •   Sig 3 (d₁, k₃): (r=30, s=45, z=50)
   •   Sig 4 (d₂, k₁): (r=17, s=72, z=20)
   •   Sig 5 (d₃, k₁): (r=17, s=33, z=55)
   •   Sig 6 (d₄, k₂): (r=22, s=12, z=30)
   •   Sig 7 (d₅, k₂): (r=22, s=90, z=70)
   •   Sig 8 (d₆, k₃): (r=30, s=22, z=25)
   •   Sig 9 (d₇, k₃): (r=30, s=18, z=90)

Unknowns:
   •   Private keys: d₁ to d₇
   •   Nonces: k₁ to k₃

Thanks
gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4690
Merit: 10514



View Profile WWW
August 05, 2025, 12:21:54 AM
Merited by vapourminer (1), ABCbits (1), vjudeu (1)
 #2

You've got more unknowns than equations, so I would assume it is not solvable.

Of course, if there are a small set of nonces being used perhaps that's a sign that there are more known values than you might suspect. ... depending on what kind of profound brain damage produced this situation.

MarangoZ
Member
**
Offline Offline

Activity: 105
Merit: 20

Check out my Guides Learn about Bitcoin


View Profile
August 05, 2025, 09:22:58 AM
 #3

Here’s a realistic theoretical case involving valid ECDSA signatures over the secp256k1 curve, and RFC6979 was not used (nonces were random).

Context:
   •   There are 7 private keys: d₁ through d₇
   •   3 nonces (k₁, k₂, k₃) are reused across several keys (can also be their negative: -k)
   •   A total of 9 valid ECDSA signatures are available in the form (r, s, z)

Nonce Usage:
   •   d₁ signed using k₁, k₂, k₃ (or -k₁, -k₂, -k₃)
   •   d₂ and d₃ signed using k₁ (or -k₁)
   •   d₄ and d₅ used k₂ (or -k₂)
   •   d₆ and d₇ used k₃ (or -k₃)

We do not know any private key or nonce in advance.

My question is:

Is this system of 9 ECDSA equations in 10 unknowns guaranteed to be solvable with mathematical certainty?
Considering that d₁ links all three nonce-sharing groups, acting as a bridge across the system?

Here’s a simplified example using small, fictitious numbers, not real secp256k1 values, just to illustrate how the equations link together.

All calculations are modulo a small fake order n = 101 for clarity.

Sample Signatures (toy values):
   •   Sig 1 (d₁, k₁): (r=17, s=64, z=35)
   •   Sig 2 (d₁, k₂): (r=22, s=15, z=40)
   •   Sig 3 (d₁, k₃): (r=30, s=45, z=50)
   •   Sig 4 (d₂, k₁): (r=17, s=72, z=20)
   •   Sig 5 (d₃, k₁): (r=17, s=33, z=55)
   •   Sig 6 (d₄, k₂): (r=22, s=12, z=30)
   •   Sig 7 (d₅, k₂): (r=22, s=90, z=70)
   •   Sig 8 (d₆, k₃): (r=30, s=22, z=25)
   •   Sig 9 (d₇, k₃): (r=30, s=18, z=90)

Unknowns:
   •   Private keys: d₁ to d₇
   •   Nonces: k₁ to k₃

Thanks

you can easy solve the puzzle
if you do have r value same that it has been repeated on 2 output transaction
and if you can extract r, s1, s2, z1, z2  you can get the privat key
with a simple math on python

If the same r is used in two different transactions signed by the same private key
s1 = (z1 + r*d) / k mod n 
s2 = (z2 + r*d) / k mod n

you can isolate k and solve for d (the private key)
k = (z1 - z2) / (s1 - s2) mod n
d = ((s1 * k - z1) / r) mod n

There are also tools that you can use to see if your address has reused r value
https://github.com/CryptoApex23/reused_r_scanner
stanner.austin
Member
**
Offline Offline

Activity: 75
Merit: 55


View Profile
August 05, 2025, 09:27:41 AM
 #4

@mr.jeanfrancois
Hello
Explained before.
https://bitcointalk.org/index.php?topic=5526592.msg64958849#msg64958849

Need to know one of K1 to K3 or need to know one of D1 to D7 else impossible currently.
mr.jeanfrancois (OP)
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
August 26, 2025, 10:37:17 PM
 #5

Ok, thank you for your feedback, but this case is quite different. Here, we have d1 as the pivot and some information about the k values. These nonces k1, k2, k3 follow one of the following specific patterns :

A total entropy per byte of 4.875/8, corresponding to a total entropy of 156 bits with 100 bits of leakage distributed, with 1 byte repeating.

A total entropy per byte of 4.9375/8, corresponding to a total entropy of 158 bits with 98 bits of leakage distributed, with 2 bytes repeating.

there are a few dormant BTC involved in wallets that have been fully compromised. It is certain that one of k1, k2, k3 follows exactly one of the models above
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!