0% found this document useful (0 votes)
331 views

Math Task

The document describes a math task involving finding the private key (X) given a public key (Y) using an elliptic curve. It provides sample elliptic curve parameters and Python code examples to generate Y values from X values. The task is to improve the "Po-Pollard algorithm" used in the Recovery_X code to more efficiently find the corresponding X value for a given Y. Faster algorithms like "Montgomery curves" or "Semaev polynomials" are suggested. The goal is to solve the discrete logarithm problem for the large numbers involved more quickly than current methods allow.

Uploaded by

Asher Manangan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
331 views

Math Task

The document describes a math task involving finding the private key (X) given a public key (Y) using an elliptic curve. It provides sample elliptic curve parameters and Python code examples to generate Y values from X values. The task is to improve the "Po-Pollard algorithm" used in the Recovery_X code to more efficiently find the corresponding X value for a given Y. Faster algorithms like "Montgomery curves" or "Semaev polynomials" are suggested. The goal is to solve the discrete logarithm problem for the large numbers involved more quickly than current methods allow.

Uploaded by

Asher Manangan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Math Task

https://github.com/BirminghamUK/Math_Task/

According to the source: https://en.wikipedia.org/wiki/Elliptic_curve

There is an "Elliptic Curve", with options ('P, A, B, Gx, Gy, N, H'):

P = 115792089237316195423570985008687907853269984665640564039457584007908834671663

A=0

B=7

Gx = 55066263022277343669578718895168534326250603453777594175500187360389116729240

Gy = 32670510020758816978083085130507043184471273380659243275938904335757337482424

N = 115792089237316195423570985008687907852837564279074904382605163141518161494337

H=1

Х = Value ( Private key )

Y = Value ( Public key )

Using "X" you can get the value "Y"

According to the Python code: "Receive_Y.py" we set these parameters and get the value "Y"
As shown in the example on GitHub:

https://github.com/BirminghamUK/Math_Task/blob/master/Receive_Y1.py
https://github.com/BirminghamUK/Math_Task/blob/master/Receive_Y2.py
https://github.com/BirminghamUK/Math_Task/blob/master/Receive_Y3.py

For recovery, we can use the Python code: "Recovery_X.py" and get "X" from the value "Y"

What is the requirement for this task? You need to find "X" by changing the code in
"Recovery_X.py". This code runs on the Po-Pollard algorithm and can only process small,
numerical values of "X".
As shown in the example on GitHub:

https://github.com/BirminghamUK/Math_Task/blob/master/Recovery_X1.py
https://github.com/BirminghamUK/Math_Task/blob/master/Recovery_X2.py
https://github.com/BirminghamUK/Math_Task/blob/master/Recovery_X3.py

Pay attention to the line (168 and 170), it is limited to the set [16, 24, 32]

The code solves a certain problem in this set, but to solve this problem, it is necessary to improve
the "Po-Pollard algorithm"
(Or it is possible to apply something new: "Montgomery curves" or "Semaev polynomials"
described in PDF)
As for the "Recovery_X.py" code, you can speed up the calculations by about 15 times. To do
this, install the gmpy2 module, and then remove # in lines 3, 44 and enter # 45 (At the moment,
the module is disabled, because the task is not solved to check the power , but to improve the
"Ro-Pollard_ algorithm")

This "Po-Pollard algorithm" stretches the time period of finding the value "X".
Applying mathematical knowledge can reduce this time period.
As we know, in order to optimize the answer we need to sort out the values with a huge number
of numbers from 2 ^ 256, this is a lot. Not one powerful computer in the world can not cope with
such a task.
To do this, you can apply all the tricks in the field of mathematics.
Discrete logarithms are not fully disclosed or studied by many.
Having solved this problem, you can radically change the current idea of numbers.

For a complete solution to this problem, you must find the "X"

You can select any one value from the list:

---------------------------------------------------------------------------------

X=?
Y = c9f051042467433b2199526db1ba327154d2bcd7c90c40070ba06869c5512194

---------------------------------------------------------------------------------

X=?
Y = 5706a053d30e90def1e863b2c8ec0f0c462e565cc19090c4926f105664d1bdf0

---------------------------------------------------------------------------------

X=?
Y = 43784344e1e0cb498c1d73b4cee970fb0f9adf38b7891d0b1310fdb9cbc23929

---------------------------------------------------------------------------------

X=?
Y = fc5e2ab560be4649b85511940daf8302cf2e2e06bfd60a75c8bae5f832da289c

---------------------------------------------------------------------------------

You might also like