I’m in the following situation :
- I’ve a portion/first bytes of a private secp256k1 security key such as it would take minutes to fully recover it through Pollard’s Kangaroo if I had the public key.
- While I don’t have the public key, I do have the first 20 bytes of it’s sha256 (and nothing else as the key was never used so I don’t even know if it’s the compressed or the uncompressed key).
So currently either I have to brute force all possible 260 keys which looks economically infeasible or I have to brute force sha256 through an asic in order to find a preimage of the public key’s.
This means either the private key portion or either the partial sha256 is useless to restrict the search space…
Given using sat solvers for Bitcoin mining (so finding pre‑images in a specific case) showed mixed results, my idea would be to use smt/sat solving for restricting the search space using both the partial hash along with the first private key’s bytes. Currently, I’m not looking at making it more efficient than bruteforcing, but just to get it working.
There’re 2 ways to do it : either to search for the private key directly or search for the public key which then can be reversed quickly using Pollard’s kangaroo.
- Incrementing a private key by 1 leads to incrementing the public key by
0xBAAEDCE6AF48A03BBFD25E8CD0364141($G$ ofsecp256k1). This means there’s a range of public keys, but unless the Koblitz curve can be converted to a more useful curve, I fail to see how to use this type of information for formalizing into a useful way for at least a smt solver. - As retrieving a private key from a public key is the same as solving the discrete logarithm, I fail to see how to express a formula that would allow a smt/sat solver to restrict the sha256 search space using the restricted private key search space (since the first private key bytes are known).
Any thoughts on how to mathematically link the 2 informations for a smt/sat solver for shrinking the brute force search space ?