Pages:
Author

Topic: Pollard's kangaroo ECDLP solver - page 70. (Read 60189 times)

jr. member
Activity: 56
Merit: 26
March 15, 2021, 08:38:02 AM

Quote
To solve #120 you need about 2^60.5 group operations.
If GPU speed is 4 billion op/s (~2^32), then it will takes 2^28.5 seconds to solve.
2^28.5 seconds is ~4393 days
4393 days / 8 GPUs = ~549 days to solve.

There calculations on Kangaroo Github, that #120 will require ~2 months with 256x V100 (~2 billion op/s each)

Ok thanks for the correction so the average cost will be

549/7 *1000 about 78000 $ (not profitable ;( )

Quote
ASIC == Application Specific Integrated Circuit.

It's baked specifically for one task (SHA256) and can not be easily made to do something else.

Yes I know that but i want to know if it feasible to develop such of "specific circuit" by a man or in team in is garage ( Wink )for a relative low cost  ?

this study gives diagrams for implementing SECP256K1 addition/multiplication/modular inversion on 256bits integers on a FPGA.

https://cse.iitkgp.ac.in/~debdeep/osscrypto/psec/downloads/PSEC-KEM_prime.pdf

But i dont know what sort of performance it can have on FPGA (op/s) ?
If it is fast for relative low cost parrellised FPGA chips can may be an alternative to GPU??
Maybe is it possible to "convert" this diagram to develop an ASIC.?

member
Activity: 110
Merit: 61
March 15, 2021, 07:39:44 AM
Are my calculation are correct?

To solve #120 you need about 2^60.5 group operations.
If GPU speed is 4 billion op/s (~2^32), then it will takes 2^28.5 seconds to solve.
2^28.5 seconds is ~4393 days
4393 days / 8 GPUs = ~549 days to solve.

There calculations on Kangaroo Github, that #120 will require ~2 months with 256x V100 (~2 billion op/s each)




member
Activity: 180
Merit: 38
March 15, 2021, 05:25:27 AM

Have u heard of an implementation of SEC256K1 addition on FPGA or ASIC (ASIC miner have only optimised implementation for sha256)?

Regards

Fanch


ASIC == Application Specific Integrated Circuit.

It's baked specifically for one task (SHA256) and can not be easily made to do something else.


Ok thanks, so lets say i wanted to attempt to solve/crack a private key for a 128bit key, or 256bit key, is there a setting, or how  do i program it to crack that, or is it just automatic?

By using

0
FFFFFFFFFFFFFFFFFFFFFFFFF

will that check the entire keyspace of a standard 128bit key?

You can do zero padding like this: 000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFF

But realize that it's a large number: 1267650600228229401496703205375

jr. member
Activity: 56
Merit: 26
March 15, 2021, 04:52:24 AM
Hello everybody,

I am newly interested in the resolution of puzzle # 120 (119 bits private key)
pubkey : 02CEB6CBBCDBDF5EF7150682150F4CE2C6F4807B349827DCDBDD1F2EFA885A2630 (hash 160: 17s2b9ksz5y7abUm92PCTzK8jEl5y7abUm92PCTzK8jEl5y7abUm92cHZK8jElc).
a short calculation shows the difficulty of it with the excellent (probably the most optimised) GPU  solver from Jean-Luc Pons.


n=2*sqrt(0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFF-0x40000000000000000000000000000)

best_GPU_card_speed=4*10**9 #(I read that RTX3090 can achieve around 4Giga Keys /s with Kangaroo ECDLP SOLVER)
excepted_days=n/best_GPU_card_power/86400

so ... around 833 excepted days! 

if u consider a rent of gpu cloud at the minimal price (around 1000$ per week for 8x3090) u can expected to resolve it in 100 days (about 15 weeks)
15*1000=15000$ (very rentable in comparison of 60000$/BTC market price) (1.2*60000 72000$ on wallet) 

But u forget that
-that someone else can be faster than u,
-u can be unlucky because the Kangaroo Lambda algorithm is a probabilistic algorithm.
-Bitcoin price can dip while u are in!

Are my calculation are correct?

Have u heard of an implementation of SEC256K1 addition on FPGA or ASIC (ASIC miner have only optimised implementation for sha256)?

Regards

Fanch
member
Activity: 406
Merit: 47
March 12, 2021, 08:42:48 AM
So what did original 2009 - 2012 bitcoin wallets generate? 64bit keys?

I am not aware of any wallet software (Bitcoin Core or otherwise) that used anything other than 256-bit keys.

At one point in time, people made private keys out of so called "brain wallets" which are just random strings SHA256'ed into a hash that generated public and private keys. [Some people even used public base58 addresses as input to SHA256.]

Right
and I try already  bitcoin original  from alpha version  bitcoin-nov08.tgz bitcoin-0.1.0.rar bitcoin-0.1.3.rar

all are 256 bits from 2009  (2008 develop) everything 256 bits

very good for over thinking bitcoin address

if develop fit use, may be bitcoin are hack done already

all real money bitcoin use 256 bit

have only Brainwallet have problem for human crack

full member
Activity: 1232
Merit: 242
Shooters Shoot...
March 12, 2021, 08:13:53 AM
Question, i have say 1000 keys in my config, does it crack them all simultaneously?

Also if i wanted to check the entire keyspace for 128bit keys (yes i know this makes it astronomically harder and likely impossible) what would the first two lines of config file look like?

Its currently

0
FFFFFFFFFFFFFFFFFFFFFFFFF




Sorry for the newbie questions, this is for a school project, so help would be appreciated.
If you have 1000 keys in your input file, and you don't know if they exist in the range or not, you will have to use the -m option or the program will search for the first key from now until infinity times infinity...
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
March 12, 2021, 08:05:25 AM
So what did original 2009 - 2012 bitcoin wallets generate? 64bit keys?

I am not aware of any wallet software (Bitcoin Core or otherwise) that used anything other than 256-bit keys.

At one point in time, people made private keys out of so called "brain wallets" which are just random strings SHA256'ed into a hash that generated public and private keys. [Some people even used public base58 addresses as input to SHA256.]
newbie
Activity: 3
Merit: 0
March 12, 2021, 06:54:46 AM
Ok thanks, so lets say i wanted to attempt to solve/crack a private key for a 128bit key, or 256bit key, is there a setting, or how  do i program it to crack that, or is it just automatic?

By using

0
FFFFFFFFFFFFFFFFFFFFFFFFF

will that check the entire keyspace of a standard 128bit key?

The size to search in (and the keys which can be cracked) is determined by (end range - start range), second - first line.

Any range bigger than 125 bits currently isn't possible. The range variable itself has 126 bits free but there is some operation I can't recall right now that's done on it which limits the range to 125 bits.

I'm working on a patch to fix this. I have no ETA for it though, but I would like to get it ready within a week or two.

Excellent! i look forward to this, i would donate for this.


So what did original 2009 - 2012 bitcoin wallets generate? 64bit keys?
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
March 12, 2021, 06:24:56 AM
Ok thanks, so lets say i wanted to attempt to solve/crack a private key for a 128bit key, or 256bit key, is there a setting, or how  do i program it to crack that, or is it just automatic?

By using

0
FFFFFFFFFFFFFFFFFFFFFFFFF

will that check the entire keyspace of a standard 128bit key?

The size to search in (and the keys which can be cracked) is determined by (end range - start range), second - first line.

Any range bigger than 125 bits currently isn't possible. The range variable itself has 126 bits free but there is some operation I can't recall right now that's done on it which limits the range to 125 bits.

I'm working on a patch to fix this. I have no ETA for it though, but I would like to get it ready within a week or two.


EDIT: Wheee, I have to play GPU availability roulette again, this sucks  Angry
member
Activity: 406
Merit: 47
March 12, 2021, 05:37:19 AM

Ok thanks, so lets say i wanted to attempt to solve/crack a private key for a 128bit key, or 256bit key, is there a setting, or how  do i program it to crack that, or is it just automatic?

By using

0
FFFFFFFFFFFFFFFFFFFFFFFFF

will that check the entire keyspace of a standard 128bit key?

Can you code?

for very high 128bit key, or 256bit key you need to upgrade or find the way works better and smart than current kangaroo for reduce time use find key

now puzzle 120 bits keys still un solve
newbie
Activity: 3
Merit: 0
March 12, 2021, 03:52:45 AM
Question, i have say 1000 keys in my config, does it crack them all simultaneously?

Yes (if for loop iteration counts as simultaneous Grin Only the GPU truly cracks the keys simultaneously up to a certain number at once)

Also if i wanted to check the entire keyspace for 128bit keys (yes i know this makes it astronomically harder and likely impossible) what would the first two lines of config file look like?

Its currently

0
FFFFFFFFFFFFFFFFFFFFFFFFF

Yeah that looks about right, if it doesn't work, pad them with zeros on the left until they are 64 characters long each.


Sorry for the newbie questions, this is for a school project, so help would be appreciated.

 Shocked That's very cool, first time I saw one interested in discrete log solvers.

Ok thanks, so lets say i wanted to attempt to solve/crack a private key for a 128bit key, or 256bit key, is there a setting, or how  do i program it to crack that, or is it just automatic?

By using

0
FFFFFFFFFFFFFFFFFFFFFFFFF

will that check the entire keyspace of a standard 128bit key?
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
March 12, 2021, 03:47:47 AM
Question, i have say 1000 keys in my config, does it crack them all simultaneously?

Yes (if for loop iteration counts as simultaneous Grin Only the GPU truly cracks the keys simultaneously up to a certain number at once)

Also if i wanted to check the entire keyspace for 128bit keys (yes i know this makes it astronomically harder and likely impossible) what would the first two lines of config file look like?

Its currently

0
FFFFFFFFFFFFFFFFFFFFFFFFF

Yeah that looks about right, if it doesn't work, pad them with zeros on the left until they are 64 characters long each.


Sorry for the newbie questions, this is for a school project, so help would be appreciated.

 Shocked That's very cool, first time I saw one interested in discrete log solvers.
member
Activity: 406
Merit: 47
March 12, 2021, 02:40:44 AM

recommend use sample file   puzzle32.txt

https://github.com/JeanLucPons/Kangaroo/blob/master/puzzle32.txt


more testing file

for longer test

puzzle #65  = 3-10 minute up to you CPU or GPU

command  puzzle65.bat
Code:
Kangaroo.exe -ws  -o result65.txt -w puzzle65.work -wi 300 puzzle65.txt

GPU
Code:
Kangaroo.exe -ws -gpu -o result65.txt -w puzzle65.work -wi 300 puzzle65.txt

puzzle65.txt
Code:
10000000000000000
1ffffffffffffffff
0230210c23b1a047bc9bdbb13448e67deddc108946de6de639bcc75d47c0216b1b

capital same
Code:
10000000000000000
1FFFFFFFFFFFFFFFF
0230210C23B1A047BC9BDBB13448E67DEDDC108946DE6DE639BCC75D47C0216B1B
member
Activity: 406
Merit: 47
March 12, 2021, 02:32:40 AM
Question, i have say 1000 keys in my config, does it crack them all simultaneously?

Also if i wanted to check the entire keyspace for 128bit keys (yes i know this makes it astronomically harder and likely impossible) what would the first two lines of config file look like?

Its currently

0
FFFFFFFFFFFFFFFFFFFFFFFFF




Sorry for the newbie questions, this is for a school project, so help would be appreciated.

try this

example puzzle #40


puzzle40.txt
Code:
8000000000
FFFFFFFFFF
03A2EFA402FD5268400C77C20E574BA86409EDEDEE7C4020E4B9F0EDBEE53DE0D4



command  puzzle40.bat
Code:
Kangaroo.exe -ws  -o result40.txt -w puzzle40.work -wi 300 puzzle40.txt


then check fiel   result40.txt
newbie
Activity: 3
Merit: 0
March 12, 2021, 02:08:01 AM
Question, i have say 1000 keys in my config, does it crack them all simultaneously?

Also if i wanted to check the entire keyspace for 128bit keys (yes i know this makes it astronomically harder and likely impossible) what would the first two lines of config file look like?

Its currently

0
FFFFFFFFFFFFFFFFFFFFFFFFF




Sorry for the newbie questions, this is for a school project, so help would be appreciated.
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
March 11, 2021, 11:12:29 PM
That format code looks just about right.

~snip

into:

union int256_s {

  uint8_t  i8[32];
  uint16_t i16[16];
  uint32_t i32[8];
  uint64_t i64[4];
}

This is basically what I have in my local copy along with replacing all int128_t with int256_t.

In other news I installed CUDA toolkit on the T4 after I installed Ubuntu Nvidia drivers, and now the drivers aren't working (D'oh!!!) so now I have to reinstall the OS on that to wipe NVIDIA's mess off of it.

Why does driver installation have to be so complicated? Distros aren't helping by having their own versions of nvidia-drivers in their repos  Undecided
full member
Activity: 1232
Merit: 242
Shooters Shoot...
March 11, 2021, 09:02:50 PM
Quote
I better find the correct format code sequence on Win32 to chain 4 64-bit hex numbers though, I want to get that right the first time since I only have Linux machines handy to test with.

Int.CPP file:

Code:
std::string Int::GetC64Str(int nbDigit) {

  char tmp[256];
  char bStr[256];
  tmp[0] = '{';
  tmp[1] = 0;
  for (int i = 0; i< nbDigit; i++) {
    if (bits64[i] != 0) {
#ifdef WIN64
      sprintf(bStr, "0x%016I64XULL", bits64[i]);
#else
      sprintf(bStr, "0x%" PRIx64  "ULL", bits64[i]);

I was thinking to create a new union:
Code:
union int128_s {

  uint8_t  i8[16];
  uint16_t i16[8];
  uint32_t i32[4];
  uint64_t i64[2];

};


typedef union int128_s int128_t;

#define safe_free(x) if(x) {free(x);x=NULL;}

// We store only 128 (+18) bit a the x value which give a probabilty a wrong collision after 2^73 entries

typedef struct {

  int128_t  x;    // Poisition of kangaroo (128bit LSB)
  int128_t  d;    // Travelled distance (b127=sign b126=kangaroo type, b125..b0 distance


into:

union int256_s {

  uint8_t  i8[32];
  uint16_t i16[16];
  uint32_t i32[8];
  uint64_t i64[4];

I have seen something in another code that allows 256...I'll keep looking.
full member
Activity: 1232
Merit: 242
Shooters Shoot...
March 11, 2021, 08:21:57 PM
I think he trying is doing that now

Yeah it's at the closing stages.



For what it's worth, I did find the occurrence of where PRIx64 is defined, it was in   and it's value is a format code "llx". That file also has several other format code definitions for printf().

The file itself can be viewed at http://www.qnx.com/developers/docs/6.5.0/index.jsp?topic=%2Fcom.qnx.doc.dinkum_en_c99%2Finttypes.html

I better find the correct format code sequence on Win32 to chain 4 64-bit hex numbers though, I want to get that right the first time since I only have Linux machines handy to test with.
I remember having an export issue and one of these solved it:

%0I64x or %016llx

May or may not be what you are looking for though with the chaining...
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
March 11, 2021, 06:55:49 PM
I think he trying is doing that now

Yeah it's at the closing stages.



For what it's worth, I did find the occurrence of where PRIx64 is defined, it was in   and it's value is a format code "llx". That file also has several other format code definitions for printf().

The file itself can be viewed at http://www.qnx.com/developers/docs/6.5.0/index.jsp?topic=%2Fcom.qnx.doc.dinkum_en_c99%2Finttypes.html

I better find the correct format code sequence on Win32 to chain 4 64-bit hex numbers though, I want to get that right the first time since I only have Linux machines handy to test with.
full member
Activity: 706
Merit: 111
March 11, 2021, 08:30:29 AM
Where in the warping cyberspace is "PRIx64" defined?  Huh

Kangaroo.cpp, line 169, function SetDP(int size) [I think that's the name of it off the top of my head]

Code:
::printf("DP size: %d [0x%" PRIx64 "]\n",dpSize,dMask);

This is ostensibly supposed to be the Unix format code for a 64-bit hex number, but it's not defined anywhere in the program. Could it be in a standard header file?

I have to change it to 256-bit (4 64-bit format codes strung together) because I wound up having to increase the DP size to 256 bits as well because I didn't feel like having ANOTHER field just for a truncated lowest-64 bits of the kangaroo position, especially when said field is shoved inside Int.bits64[3] of a 128-bit kangaroo and all the code references that.

There are 2 more occurrences of this which you can see with https://github.com/JeanLucPons/Kangaroo/search?q=PRIx64&type=

Could you help to fork update to version 256bit (for use up to #160 puzzle)?
may be work better than limited to fit 120 bits

JeanLucPons still on forum, Can possible to update? or may be limited because of have some problem technic when use work with high bits or not?

How can we know what happen with higher bits or large range ?

I'm currently working on increasing the maximum range - when that's done I'll release the code so you guys can test this for yourselves.

I think he is trying to do that now
Pages:
Jump to: