I did go thru a lot of articles which say's It's highly impossible to break the bitcoin public-key and get a private key from it. I understand that the public key does hold some info of it's corresponding private key. Can anyone suggest me some steps for manual calculation and reversing the scalar multiplication from the public key so I obtain the private key? I'm not looking for any scripts for doing this but I'm looking for mathematical steps in-order to reverse the public key to private key.
4 Answers
First, you can see on this forum how to calculate the public key from the private key using Elliptic Curve (EC) maths: How do you get a Bitcoin Public Key from a Private Key
The G point stated there is the "base point" in EC and it is a known parameter. You can see all the parameters used by the EC used in bitcoin here: https://en.bitcoin.it/wiki/Secp256k1
In brief, the EC for bitcoin is known as secp256k1: y^2 = x^3 + 7, and the public key is formed by repetitive point doubling and scalar point multiplications.
So as you see, the problem is trying to reverse a series of modular multiplications, or what in EC maths is called the discrete logarithm problem (in analogy to the real discrete logarithm problem in other cryptosystems such as DSA and DH): given two points P and Q (which belong to a subgroup of an EC) find out the integer x that satisfies the equation Q = x·P
So now you can use different algorithms to try to reverse the operation: the most well known are the baby-step, giant-step algorithm, and Pollard's rho method.
You can find a step-by-step description of them here: http://andrea.corbellini.name/2015/06/08/elliptic-curve-cryptography-breaking-security-and-a-comparison-with-rsa/
I think this can serve as a start point.
-
How to find at least one private key from a large list of compressed public keys secp256k1 I assume that there are new methods and ways to do this. Please describe how this can be done? crypto.stackexchange.com/questions/70006/…– RozwrcdCommented May 22, 2019 at 9:18
-
This is simply practically not possible; it's one of the basic premises of public-key cryptography:
The strength of a public key cryptography system relies on the computational effort (work factor in cryptography) required to find the private key from its paired public key. If so, effective security only requires keeping the private key private; the public key can be openly distributed without compromising security.
Unless somebody breaks the cryptographic algorithm used to generate the keys, your best bet is to simply generate random keys and check whether the corresponding public key matches the one you already have. (Well, that's a slight exaggeration but you get the point.)
-
Yes, brute force the private key and check if generated public keys match is about the only conceivable method presently.– WilltechCommented Jan 29, 2018 at 12:10
I think its not possible to get back the public key, someone would have applied supercomputing power to get back all the bitcoins and become super rich.
A public key is derived from a private key. To derive the public key you need an Elliptic Curve, Bitcoin chose to use secp256k1. Your public key is your private key multiplied by the generator point (which is a constant set in the secp256k1 standard), so it's a point on the curve
math
stack, there's LaTeX support there instead of code highlighting... From what I've read if you can get the owner of a given address to sign things improperly, see the Wiki Signature generation algorithm (jump to ...it is also crucial to select different k for different signatures
... specifically), it's then possible to solve for the private key without an exhaustive search. Side note, this could be used for burning data via private keys intentionally revealed as a final transaction.