JeanLucPons / Kangaroo

Pollard's kangaroo for SECPK1
GNU General Public License v3.0
231 stars 171 forks source link

Using Convolutional Neural Networks to Improve Kangaroo Algorithm #16

Closed zhanshen360 closed 4 years ago

zhanshen360 commented 4 years ago

have a very bold idea, Kangaroo algorithm plus Convolutional Neural Networks. Because with the current computing power, we can't crack the high-level keys. The range is too large, and the process of tame kangaroos is like a needle in the sea. But if we can accurately locate, we still have hope. Let's make an analogy: Our key search process is like a kangaroo looking for a mother on a very high floor. This floor is 904625697166532776746648320380374280100293470930272690489102837043110636675 so high. We asked kangaroos to search one floor at a time or to jump a few floors, but it still takes a long time, and it is difficult to find in the life of kangaroos. But if we can reduce the range to the minimum through the locator Convolutional Neural Networks, the probability that the kangaroo finds its mother will be higher. This is a bold idea, I am not a programmer but I think this idea must be great. This is a new cracking idea. Kangaroo algorithm plus Convolutional Neural Networks. Convolutional Neural Networks can provide kangaroo solution accuracy.

RB61 commented 4 years ago

A Neural Netwok starts with a learning step followed by a generalisation step. Generally the solution space is smooth. The problem we are dealing with here is not an optimisation problem. There is no cost function. Roughly speaking, our problem is simple: we want to solve P = k.G , where P and G are known, k is to be determined and is unique. Of course, the dot (.) product has no inverse. The brute force method is to try every possible k until we find the right one that checks P = k.G . There is no way to estimate how close you can get to the solution. The is no notion of accuracy so metaheuristic methods are useless here. As for kangaroo algorithm, Jean-Luc gives a nice overview in the Readme text.

zhanshen360 commented 4 years ago

I understand what you mean. What I'm talking about here is to use Convolutional Neural Networks to narrow down the range of K values to improve the collision probability of kangaroos. Here is a bold idea. Here is to train Convolutional Neural Networks through some known data to optimize the kangaroo's jump point table. For example: when the K value is odd and even, we pass some existing data. To train Convolutional Neural Networks to make sure that the K value is odd and even, you have to know that the essence of the private key is 904625697166532776746648320380374280100293470930272690489102837043110636675. If you can determine the odd and even numbers, you can also reduce the calculation by half. Maybe the meaning is not very good. What I want to say is that we crack SECPK1 is nothing more than believe that the Kangaroo algorithm can do it, the key is that you have to improve the efficiency of the Kangaroo algorithm, not brute force!

zhanshen360 commented 4 years ago

I am only talking about ideas and thoughts, if something is wrong, please understand my ignorance, thank you

JeanLucPons commented 4 years ago

If you have an oracle that can give according the public key the parity (odd or even) of the private key than you can solve a key in polynomial time. In fact, predicting only 1 bit of the private key according to the public key would be enough to solve ecdlp.