Many people are familiar with the PS3 exploit discovered in 2010 by the fail0Overflow group. This exploit was the result of Sony reusing the value in their implementation of the Elliptic Curve Digital Signature Algorithm. By reusing the value for , the private key can be directly calculated (the details of which can be seen here)

But the answer to “how do you detect being reused” isn’t as prevalent. In order to detect that is being used, we can take advantage of the nature of elliptic curves in for some prime .

We know that the value signature can be expressed as:

where:

  • is the x value of the scalar multiplication of and the generator point on the elliptic curve of order .
  • is the hash of the message.
  • is such that is the public key and is the private key.
  • is the prime for which .

Notice that does not change if is kept the same 👀. This isn’t enough to conclude that the same is being used, but it is the first indicator. If we see the same value three separate times, we can guarantee that at least two of those signatures used the same value for .

We can do this because there are at most two points which have the same x-value in an elliptic curve in for some prime . Note that taking doesn’t increase the possible number of values.

Then, the steps used in actual break can be done with three pairs to determine three possible private keys.

Then, using knowledge about the components of each , you can try each guess for until you are reduced to only one that works for all . In the worst case, you would be left with three guesses for a while 🤷.