Hi everyone,
I appreciate the feedback on the Python code shared in my GitHub repository. It's important to note that this code represents a collection of methods used during my research, rather than a fully functional program. Let me take a moment to explain the purpose behind it.
Understanding the Reverse of 'Double and Add' Method
In ECC, converting a Private Key to a Public Key typically involves the 'Double and Add' method. For instance, with a scalar of 10, represented in binary as "1010", the process on an elliptic curve would be:
1 (Double and Add) ➡ G
0 (Just Double) ➡ 2G
1 (Double and Add) ➡ 5G
0 (Just Double) ➡ 10G
What my code aims to achieve is the reverse of this process, which I term "Subtract and Halve."
Implementing 'Subtract and Halve'
To execute this, it's essential to determine if a point is odd or even, for which we need a modulo 2 operation. The formula "(P * (P^m-2 % m)) % m" is used here, where 'm' is the maximum value of the curve, a very large number in ECC.
When we apply this operation to a public key point 'P' on an elliptic curve, we obtain either point 1 or infinity (zero). If it returns point 1, this implies our last binary digit is 1, indicating we should set one and apply 'Subtract and Halve'. If it returns infinity, the point is even, and we apply just 'Halve'.
For example:
10G (Even) ➡ Just Halve ➡ 10G / 2 ➡ 0
5G (Odd) ➡ Subtract and Halve ➡ (5G - G) / 2 ➡ 1
2G (Even) ➡ Just Halve ➡ 2G / 2 ➡ 0
G (Odd) ➡ Subtract and Halve ➡ G - G ➡ 1
This process ultimately leads us back to the original private key, in this case, 1010.
The Core Challenge:
The main issue in my research is the accurate implementation of "point_exponent" and "point_multiplication." If these could be properly executed, it would have groundbreaking implications for ECC and internet security as a whole. My initial question, which sparked this exhaustive research, was inspired by the distribution of Satoshi's public keys on the elliptic curve. The hypothesis is that Satoshi might have already implemented this back in 2009.