Bitcoin Forum
June 20, 2024, 10:09:54 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 »
221  Bitcoin / Development & Technical Discussion / Re: Pollard's kangaroo ECDLP solver on: May 01, 2020, 07:14:20 AM
Thanks for the readings Smiley
I will try to see if this can be implemented on ECDLP.
222  Bitcoin / Development & Technical Discussion / Re: Pollard's kangaroo ECDLP solver on: May 01, 2020, 06:06:40 AM
OK i will try this.
But if you don't have a translation of -(k2-k1)/2 on the wilds (or (k2-k1)/2 on the tames), you get a worst case when the private key of P is at the end of the range.
223  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: May 01, 2020, 05:45:47 AM
I opened a new thread.
https://bitcointalk.org/index.php?topic=5244940.0
224  Bitcoin / Development & Technical Discussion / Re: Pollard's kangaroo ECDLP solver on: May 01, 2020, 05:44:43 AM
It is enough to modify slightly the way we generate the next jump:

+ jP[tamePosi.x % n]*G if y > p/2,  - jP[tamePosi.x % n]*G is y <p/2

(then I will indicate 'y' if y > p/2, '-y' if y < p/2)


in this way when a tame T reaches a point Q = (x,y) and a wild W reaches a point Q' = -Q = (x,-y), this become a collision

The tame and the wild will go on with 2 specular paths:

Q -> Q + k*G -> Q + k*G -r*G ->  ... -> DP
(x,y)    (x1,-y1)          (x2,y2)              (x0, y0)

-Q -> -Q -k*G -> -Q - k*G +r*G -> ... -> DP
(x,-y)   (x1,y1)         (x2, -y2)              (x0, -y0)

until they reach 2 symetric DP, for both of which we know the private key.


May be a brownian motion can be interesting (having positive and negative jump).

I have created a sort of "brownian motion", my kangaroos keep jumping back and forth.


I'm not sure to fully understand your idea.
You want to add a condition on the y parity to determine the jump ?
You let the starting positions as they are or you translate them ?

225  Bitcoin / Development & Technical Discussion / Pollard's kangaroo ECDLP solver on: May 01, 2020, 05:22:44 AM
Hello,

I would like to present an interval ECDLP solver based on the Pollard's kangaroo method.
This program is fully open source and available on GitHub: https://github.com/JeanLucPons/Kangaroo
It has GPU support (CUDA Only) and works on both Linux and Windows.
This program is currently under development.

Thanks to test it and to share ideas of improvements here Wink
226  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 30, 2020, 04:35:06 PM
Another idea:
do you use the symetrie?
If you shift the range from [a,b] to [-(b-a)/2, (b-a)/2] and you generate tame in this range, for each point you create actually a couple of opposite points in the same interval (same x), in this way you probably should have more collisions.

The tame points starting from the negative part of the interval create a couple of points that move towards the center of the interval, while the tame points starting from the positive part create a couple of points that move towards the extreme of the interval. In this way, each tame walks across the double of the points in the interval (with the same computational cost). Same for the wild ones.

Yes i have to investigate, I already tested several things without improving things.
Translating tame is like translating wild in the opposite direction.
May be a brownian motion can be interesting (having positive and negative jump).

Why it was faster with 32 jumps for him? Do you have the exaplanation?

Probably cache usage.

Also nice things you added:
Expected operations: 2^37.15
Expected RAM: 1419.0MB


Edit:
Formula exposed above and for the memory , expected operation*sizeof(hash entry)/2^dp
227  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 30, 2020, 03:14:33 PM
Thanks Smiley
So it seems a bit faster with 32 jumps.
I will make tests to see if affects the average number of operation.
228  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 30, 2020, 01:53:09 PM

While using your 72-bit test range on an RTX 2070, out of the box, v1.4beta appears to be slightly slower than v1.3 in terms of group operations per second 770M vs 848M for v1.3. But the average time to solve the 20 ECDLPs was about the same, 1h:23m vs 1h:13m for v1.4beta vs v1.3 respectively


As you compile by yourself, could you try to change

In GPU/GPUEngine.h:24

#define NB_JUMP 64

to

#define NB_JUMP 32

and tell me what is your key rate, thanks Smiley
229  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 30, 2020, 01:01:41 PM
While using your 72-bit test range on an RTX 2070, out of the box, v1.4beta appears to be slightly slower than v1.3 in terms of group operations per second 770M vs 848M for v1.3. But the average time to solve the 20 ECDLPs was about the same, 1h:23m vs 1h:13m for v1.4beta vs v1.3 respectively

Manu thanks for the test Wink
Bad news for the lower speed Sad. On my low cost GPU it is 10% faster. Will try to understand why ?

I think that it would be faster if you used a hashtable with precomputed distinguished points (the tame points).

I don't think it will change something (at least on single key search). You can may be win memory.

In the above readings, a guy announced a speed slightly lower than 1.77sqrt(n) [1.73qrt(n)] but I must say that it is hard to believe his method can beat the birthday paradox. I didn't enter in details in its analysis and it is done on DLP not ECDLP.
In any case, to beat the birthday paradox, you have to find a way to maximize the probability of natural random collision.
230  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 30, 2020, 09:29:30 AM
I published a pre-release with the new calculation for expected operation.
I also changed the jump Table size to make it multiple of power of 2 in order to avoid the modulo, this should brings little improvement on GPU.
Thanks to test it Wink
https://github.com/JeanLucPons/Kangaroo/releases/tag/1.4beta

@COBRAS: do not use a Tesla on small range and if you don't know where is the private key (in a range) you have to specify the full range:
0
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
but in that case, your tesla will end its calculation when the earth will collapse on the sun Wink
231  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 30, 2020, 05:04:43 AM
Yes the random walk with kangaroo is particular as the path cannot be truncated easily modulo n (n=range size). So the kangaroos can go outside of the range. This is not a problem as the 2 herds travel at the same average speed. The jumpDistane table has an average of sqrt(n) so after sqrt(n) jumps the kangaroos reach the end of the range. The points in the hastable 'older' than ~2.sqrt(n) jumps can be cleared (this is not done, but the collision should happen more or less at the same time).

As we don't know where is the private key, there is a worst case when this key is near the begining or the end of the range.

The worst case correspond to 3sqrt(PI)/2.sqrt(n) and the best case to sqrt(pi).sqrt(n), so the average is 5.sqrt(pi)/4 which give an average time complexity of ~2.21.sqrt(n) (green curve) but the difficulty is to find the complexity according to the number of kangaroo and DP. I found an approximation of the asymptote when nbKangaroo goes to infinity which is ~ cubicroot( nbKangaroo.16.n.2^dp ) (blue curves)
Red curve are experimental points each averaged on 1000 40bits searches with key uniformly distributed in the range.




Edit: A zoom near the average:


232  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 29, 2020, 12:04:04 PM
Yes I agree to open an other topic, I'm still fighting to get the average running time in function of dp and nbKangaroo, this is quite complex and I got unexpected results but interesting Wink
I'll open the new thread when I ends my statistics.
233  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 27, 2020, 08:39:20 PM

warning: #warning "GCC lass than 7.3 detected, upgrade gcc to get best perfromance" [-Wcpp]
   #warning "GCC lass than 7.3 detected, upgrade gcc to get best perfromance"


Yes, do you remenber this ?
We have fighting with a f.ck.ng bug when you have implemented the ModSqr function, i had to add a volatile to prevent gcc to perform optimization !
This volatile is not necessary for gcc > 7.3
234  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 27, 2020, 06:37:16 PM
I presume the main differences between your ModMul function (if it is still the same you give me) and mine are in:
imm_umul() where I use intrinsic functions and where you have used inline assembly.
On windows it is not possible to do inline assembly, gcc support intrinsic functions so it should generate a good code.
I really don't want to fight with inline assembly on Linux and this horrible AT&T syntax, i did few ones where no intrinsic exists, this was a nightmare...
235  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 27, 2020, 06:01:44 PM
Hi arulbero Smiley

The key you tested are
  ...7F2F1A1DDF3E9FF8 so near the worst case if you run with 8 thread.
or ...BB3EF3883C1866D4 idem

I didn't optimized this program up to the ninja level, I spend time on the Kangaroo one Wink
236  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 27, 2020, 12:35:28 PM
Your empirical tests actually showed the results very closed to benchmark for Kangaroo known algorithm.
Yes, the 2*sqrt(n) was for simple Kangaroo method.

The test i did was a simple calculation on a classical birthday paradox on 2 tables instead of one. I draw alternatively a random number in [0..N[ in each table and look for collision between the 2 tables. This converges to sqrt(PI.N). sqrt(PI/2.N) on a single table.

Now, I'm doing tests a in real situation, 1024 kangaroos, 10000 40 bit keys informally distributed, for the moment it seems to converge to 2.sqrt(N) + nbKangaroo.2^dp as expected, with dp=7 on 40bit search. In this situation (1024 << sqrt(N) - 2^dp), the approximation using the asymptote is good.

How do you tink, will it be faster?

Thanks for the reading.
No I don't think it will be faster

Example for Np=2, you have 2 ranges of w/2 so you perform a total of operation:

2.sqrt(w/2) + 2.sqrt(w/2) = 4/sqrt(2).sqrt(w) which is more than 2.sqrt(w)



237  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 27, 2020, 07:26:14 AM
I did a test, wanting to know the average time of the birthday paradox when searching collision between 2 tables (like the kangaroo problem).

The kangaroo method is announced to be 2.sqrt(n) but this is for a simple 2 stages algorithm where:
 - you first travel a single tame kangaroo sqrt(n) steps to setup a trap
 - then you make steps with the wild until a collision occurs (it falls in the trap), this second stage is expected to end in sqrt(n) steps.
The factor 2 comes from that. There no need of a hashtable there.


I did a test on 1.000.000 searches (24bits) using a table:

[ 999999] (2^12.825836) (Theoretical 2^12.825748)

It ends in sqrt(PI).sqrt(n) ~= 1.772.sqrt(n)

Note that the precision afer 1.000.000 trials is about 1/sqrt(1.000.000)=0.001 so 3 digits are expected to be good.

2^0.825836 = 1.77256  , sqrt(PI) = 1.77245
238  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 26, 2020, 05:16:00 PM
Jean luc when do you add multi pub key search and how would it be work?

I would like first to finalize the calculation of estimated memory and operation (important to tune the dp) and the save/load/merge work.
Then I will implement multiple key. The basic idea for multiple keys is to start wild kangaroos with different keys.
239  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 26, 2020, 03:20:42 PM
Yes you're right but I have no conversion routine from int256 to double.
And the precision should be enough for the floor function, it is important that the program runs with the good range as it is use for the jump table. I will try to improve things. Still fighting with the memory and operation estimation...
240  Bitcoin / Development & Technical Discussion / Re: brute-forcing public keys at amazing speed 2.2 PH/s on CPU [malware warning] on: April 26, 2020, 12:49:05 PM
May thanks again for all these tests Wink

I think these are good results. The main thing here is the Count value for every key.
All my keys were within the range 2^75 width, so the direct brutforce needed 2^75 operations. The expected average for pollard kangaroo method is (1.818 + o(1))SquareRoot(2^75) = 2^38.36
/* Why 1.818 square root? - see here https://arxiv.org/pdf/1501.07019.pdf */

This result is for a "3 kangaroos non parallel method". 2 Wilds, one starting at (k2+k1)/2 and one starting at k1 - (k2-k1)/2 and a Tame stating at k1 + 3(k2-k1)/10, 10 divide k2-k1.
Here we have a large number of Tames and Wilds, Tames start between k1 and k2 and wild starts between  k1 - (k2-k1)/2 and  (k2+k1)/2.
I must says that I don't know the exact factor of sqrt(N), I assume it was 2 but it may be a bit less.

PS. The program says Range width: 2^76 for my range Start:0 - Stop :8000000000000000000, however it is exactly 2^75. The same shows for the 1st tests - 2^76 howver the range width is 2^75 only. I mention for the pruposes of direct brute force determination. For my ranges it is 2^75, and not 2^76.

Yes, the range is [Start,Stop] , so Start and Stop included, 2^75 + 1 will be rounded to 2^76.
So for 0..8000000000000000000, you should specify 0..7FFFFFFFFFFFFFFFFFF
Pages: « 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!