Post
Topic
Board Development & Technical Discussion
Re: Pollard's kangaroo ECDLP solver
by
HardwareCollector
on 12/05/2020, 17:01:51 UTC
Multiple search is possible but I won't work on it first.
I will work on a distributed client/server version.
The #110 will be likely solved soon.
With the distributed version, I'm almost sure the #115 will also be solved.

N = Interval size, number of group elements.
Then, with current implementation, most instances will be solved between ~(1/2)(sqrt(N)) and ~(7)(sqrt(N)) number of group operations, with the average case being ~(2)(sqrt(N)).

If we set the distinguished points (DP) mask to 23-bit, then the number of DPs needed to solve the #110 challenge will fall within ~1.519G (very lucky) to 21.259G (very unlucky). Obviously, for each additional bit that we add to the DP mask, we reduce the storage requirements by a factor of two, but may also increase the solution time.

We need ~16-bytes for each DP: 8-btyes for x-coordinate, 1-byte for herd type, 5-bytes for slow storage lookup index, and 2-bytes for hash table overhead. So we only need ~22.64GiB (very lucky) to ~333.68GiB (very unlucky) of RAM with DP=23.

If increasing DP mask doesn’t adversely affect the solution time by much, then I can see the following challenges falling before the end of this year: #110, #115, and #120.


I've solved several instances of the DLP where the solution's number of expected operations were on the very lucky side. The frequency increased as DP mask was lowered:
Code:
./dlpserver in80.txt
ECDLP Server Started and Listening on Port 8090...
ECDLP File Merger Process Started...
Exiting File Merger Process...
Receiving savefile_1589254133 (11458340 bytes)
Loading: savefile_1589254133
MergeWork: [HashTalbe 2.0/4.0MB] [00s]
Appending...
Range width: 2^80
Dead kangaroo: 0
DP[16-bit]: count 2^18.16 [12s] Calculated Operations:[2^34.16]
Receiving savefile_1589254163 (19464260 bytes)
Loading: savefile_1589254163
MergeWork: [HashTalbe 10.9/34.4MB] [00s]
Appending...
Range width: 2^80
Dead kangaroo: 0
DP[16-bit]: count 2^19.67 [42s] Calculated Operations:[2^35.67]
.
.
.
Receiving savefile_1589254864 (19403588 bytes)
Loading: savefile_1589254864
MergeWork: [HashTalbe 389.8/493.7MB] [00s]
Appending...
Range width: 2^80
Dead kangaroo: 0
DP[16-bit]: count 2^23.66 [12:22] Calculated Operations:[2^39.66]
Receiving savefile_1589254894 (19371428 bytes)
Loading: savefile_1589254894
MergeWork: [HashTalbe 406.3/514.4MB] [00s]
Appending...
Range width: 2^80

Start:80000000000000000000
Stop :17FFFFFFFFFFFFFFFFFFF
Key# 0 [1S]Pub:  0x037E1238F7B1CE757DF94FAA9A2EB261BF0AEB9F84DBF81212104E78931C2A19DC
       Priv: 0xEA1A5C66DCC11B5AD180

Done: Total time 12:22

Code:
./dlpserver in79.txt
ECDLP Server Started and Listening on Port 8090...
ECDLP File Merger Process Started...
Exiting File Merger Process...
Receiving savefile_1589205241 (39837508 bytes)
Loading: savefile_1589205241
MergeWork: [HashTalbe 2.0/4.0MB] [00s]
Appending...
Range width: 2^79
Dead kangaroo: 0
DP[14-bit]: count 2^20.17 [12s] Calculated Operations:[2^34.17]
.
.
.
Receiving savefile_1589205739 (71532132 bytes)
Loading: savefile_1589205739
MergeWork: [HashTalbe 1033.3/1298.1MB] [00s]
Appending...
Range width: 2^79
Dead kangaroo: 0
DP[14-bit]: count 2^25.10 [08:30] Calculated Operations:[2^39.10]
Receiving savefile_1589205770 (71452420 bytes)
Loading: savefile_1589205770
MergeWork: [HashTalbe 1099.5/1380.9MB] [00s]
Appending...
Range width: 2^79

Start:80000000000000000000
Stop :FFFFFFFFFFFFFFFFFFFF
Key# 0 [1S]Pub:  0x037E1238F7B1CE757DF94FAA9A2EB261BF0AEB9F84DBF81212104E78931C2A19DC
       Priv: 0xEA1A5C66DCC11B5AD180

Done: Total time 08:30

Code:
./Kangaroos -t 0 -d 14 -gpu -gpuId 0,1 in80.txt
Kangaroo v1.5alpha
Start:100000000000000000000
Stop :1FFFFFFFFFFFFFFFFFFFF
Keys :1
Number of CPU thread: 0
Range width: 2^80
Jump Avg distance: 2^40.03
Number of kangaroos: 2^21.52
Suggested DP: 18
Expected operations: 2^41.09
Expected RAM: 5443.0MB
DP size: 14 [0xfffc000000000000]
GPU: GPU #0 GeForce RTX 2070 (36x64 cores) Grid(72x128) (117.0 MB used)
SolveKeyGPU Thread GPU#0: creating kangaroos...
GPU: GPU #1 GeForce GTX 1080 Ti (28x128 cores) Grid(56x256) (177.0 MB used)
SolveKeyGPU Thread GPU#1: creating kangaroos...
SolveKeyGPU Thread GPU#0: 2^20.17 kangaroos [10.3s]
SolveKeyGPU Thread GPU#1: 2^20.81 kangaroos [16.1s]
[1346.70 MK/s][GPU 1346.70 MK/s][Count 2^40.55][Dead 0][22:42 (Avg 28:52)][2995.6/3751.0MB]
Key# 0 [1S]Pub:  0x035E9F3C5AA41562E796041B0AA65EAE3E1ECD6E9000C246E617F9E8580634DBE1
       Priv: 0x1FFFFFFFFFFFFFFFFFFFE

Done: Total time 23:32