bitlogik / lattice-attack

Lattice ECDSA attack
GNU General Public License v3.0
120 stars 36 forks source link

Creating Signatures #18

Closed KrashKrash closed 2 years ago

KrashKrash commented 2 years ago

Hi. I have successfully run the lattice attack program by manually inputting the datas needed in the 100 signatures that It requires to break into SEPCK1.

however, how I started is by creating 100 signature via this https://www.github.com/BreakingECDSAWithLLL

I was just wondering I might have given bad data somehow.. I'm sure at least 10 of it could be mistakenly done by manually inputting the data before running lattice attack.

I know that lattice attack does create random data via gen_data.py

What if... I wanna create a 100 signature via a certain R value... Meaning, I'm targeting a wallet and I wanna create a 100 signature/values.. How do I adjust this gen_data.py or if I need to write a new script.. What should it be?

I'm just trying to make the process easier. As the problem in manually inputting the data does create chances of mistakes happening and then..

have the output as data.json

So it's easier running this attack.

Im not sure if I'm explaining this right.

Anyways, thank you for answering. And thank u for this program. It works...just that.. I'm not sure after going through a 100 set of signatures... I might have made a mistake or not..

And so I'm trying to minimise the mistakes. Please help. I have been at this for days.. And finally I get it to run... Just the result is not tenable.

Thank you again. 😊

bitlogik commented 2 years ago

Yes you need to develop your own software to make the right conversion efficiently from the original data to the input compatible with this software. This is out of scope of the free support we can provide here. Still, if you have budget, you can reach our engineer team and share your use case at contact@bitlogik.fr.

For data generation, there's not really documentation about the gen_data script. Looking at the code one can see there a couple of options for gen_data : "-m" : the "Message string "-c", Elliptic curve name, default to "secp256k1", See the keys there for the compatible list of curves string "-b", Number of known bits (at least 4), default to 6 "-t", bits type : MSB or LSB, default to "LSB" "-n", Number of signatures to generate, default to 1000

So using : python3 gen_data.py -m "Hello" -b 8 -t MSB -n 100 can produce a set of signatures with the partial nonce internal information, in the format expected by LatticeAttack.

Anyway gen_data is only provided for demo purpose, and you probably start from a specific data format or extraction for the input data, which needs to be converted in the input format of LatticeAttack.