Bitcoin Forum
December 14, 2024, 10:06:50 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Matching public key with directory.io - why so difficult?  (Read 3707 times)
Agnosticus (OP)
Newbie
*
Offline Offline

Activity: 23
Merit: 1


View Profile
August 25, 2017, 07:55:19 AM
 #1

Hi everyone,

I've read up on the close-to-impossibility of randomly generating a private key which matches a given public address (e.g. grains of sand analogy). I'm still trying to answer a few of my own questions, however.

My current questions relate to this: http://directory.io/

- What's to stop someone simply using this website to look up a particular address and find the corresponding private key?
- Is the list simply so large that it would take an eternity to actually find the relevant address with a computer program?
- I'm assuming this list has code behind it and it generates each page as required - i.e. it's not a static list?
- Why did this database require such a huge amount of computing power if the list is dynamically populated?

I find this list totally fascinating! I might even send a donation at some point...

Thanks for any help.

Agnosticus
adaseb
Legendary
*
Offline Offline

Activity: 3878
Merit: 1733


View Profile
August 25, 2017, 08:10:39 AM
Merited by ABCbits (1)
 #2

Hi everyone,

I've read up on the close-to-impossibility of randomly generating a private key which matches a given public address (e.g. grains of sand analogy). I'm still trying to answer a few of my own questions, however.

My current questions relate to this: http://directory.io/

- What's to stop someone simply using this website to look up a particular address and find the corresponding private key?
- Is the list simply so large that it would take an eternity to actually find the relevant address with a computer program?
- I'm assuming this list has code behind it and it generates each page as required - i.e. it's not a static list?
- Why did this database require such a huge amount of computing power if the list is dynamically populated?

I find this list totally fascinating! I might even send a donation at some point...

Thanks for any help.

Agnosticus

The website is useless because it doesn't have one particular function, search.

All that website does is compute private keys starting from 0. The website isn't a database but more of like a active service, you put in a page number and then it calculates the private keys and generates them, its more of a parody than anything else.

pedrog
Legendary
*
Offline Offline

Activity: 2786
Merit: 1031



View Profile
August 25, 2017, 08:16:13 AM
 #3

It is required some kind of break through in computation for collisions to happen, people speculate it may be achieved with quantum computing.

Check out this article: https://www.miguelmoreno.net/bitcoin-address-collision/

DannyHamilton
Legendary
*
Offline Offline

Activity: 3514
Merit: 4894



View Profile
August 25, 2017, 12:24:27 PM
Merited by ABCbits (1)
 #4

- What's to stop someone simply using this website to look up a particular address and find the corresponding private key?

You can't look up an address without knowing it's private key.  If you know the private key already, then there is no need to look up the address.

- Is the list simply so large that it would take an eternity to actually find the relevant address with a computer program?

Correct. Also, it is in private key order.  Therefore, by knowing a private key you can jump directly to the correct location in the list and instantly find the associated address, but if all you know is the address then you don't know what page to look on.

- I'm assuming this list has code behind it and it generates each page as required - i.e. it's not a static list?

Correct.

- Why did this database require such a huge amount of computing power if the list is dynamically populated?

It is not a database, and it didn't require a huge amount of computing power.  That's a joke.
RentGPU
Sr. Member
****
Offline Offline

Activity: 661
Merit: 258


View Profile
August 26, 2017, 09:43:33 PM
 #5

lol, please donate it took alot of computational power to generate this list , this guy is smart , he got me at first .

2016 GPU Miner
Agnosticus (OP)
Newbie
*
Offline Offline

Activity: 23
Merit: 1


View Profile
August 27, 2017, 04:01:37 AM
Last edit: August 27, 2017, 04:12:32 AM by Agnosticus
 #6

Thanks heaps for all answers.

Haha, this is brilliant. I haven't done a lot of computer programming, but I'm guessing the code to create this page isn't terribly involved. I might even send some crypto to him/ her just because it's such a good joke.

Someone found an address on there that had some bitcoin on it at some stage - I think it's on page 1337. Is this just fluke, or did the owner find it and advertise the fact?

(Insert: It's the 17xy address. Why doesn't the compressed address show the same info?)

I wonder why people go to such lengths with Nano devices when a public-private key pair generated by an offline, air-gapped computer is for all intents and purposes unhackable.

Cheers.

Quote

It is not a database, and it didn't require a huge amount of computing power.  That's a joke.


lol, please donate it took alot of computational power to generate this list , this guy is smart , he got me at first .


aleksej996
Sr. Member
****
Offline Offline

Activity: 490
Merit: 389


Do not trust the government


View Profile
August 27, 2017, 07:58:41 AM
 #7

People might use some of those addresses for fun. Probably fist one was used as well. But since everyone knows the private keys for those addresses, there aren't any coins left there for long. There also might be some buggy wallets that generate addresses with no randomness and use small values for private keys.

Some people have a lot of money in bitcoin, so they want to be as secure as reasonably possible. Computers often have malware, antiviruses or even secure operating systems aren't enough in practice to keep you safe for more then few years. Security is pretty hard.
Agnosticus (OP)
Newbie
*
Offline Offline

Activity: 23
Merit: 1


View Profile
September 16, 2017, 06:38:54 AM
 #8

I've been thinking a bit and to me this site could be the perfect cold wallet generator. It gives you a means of choosing an address to store your bitcoin which would be very easy to look up. You remember by page number and location on the page, rather than by address. It means you CHOOSE your address rather than in the case of those other sites which choose one for you at random.

I would like to be able to use this page offline on an air-gapped computer, but the code has been hidden and it's only possible to use online. Is there a way of getting it offline?

Thanks,

Ag
Kogs
Member
**
Offline Offline

Activity: 86
Merit: 26


View Profile
September 16, 2017, 07:40:07 AM
 #9

I wrote an answer in another topic where someone tried to find private keys with balance on it.

I did simple math to show that such a brute force attack on private keys is more or less useless.


If I didn't made any mistake, this is what you can expect if you are able to check addresses with the current Bitcoin Hashrate.

Current Hashrate: 7,935,318,596 GH/s

Possible private Keys: 2^256 = 115792089237316000000000000000000000000000000000000000000000000000000000000000

To try all possible keys with the speed of the current hashrate it would take you 14591990138226200000000000000000000000000000000000000000000 seconds or 462708971912298000000000000000000000000000000000000 years.

And by the way, the age of the universe is around 13000000000 years.
So it would take 35592997839407500000000000000000000000000 times the age of the universe to check all addresses.

As I saw a comment before, that this program is able to test unbelievable 2-3 keys/second.... well, good luck then  Grin
aplistir
Full Member
***
Offline Offline

Activity: 378
Merit: 197



View Profile
September 16, 2017, 08:52:21 AM
 #10

I did simple math to show that such a brute force attack on private keys is more or less useless.
Possible private Keys: 2^256 = 115792089237316000000000000000000000000000000000000000000000000000000000000000

Some corrections:
Address is a ripemod160 hash, so there are "only"
2^160 =
1461501637330902918203684832716283019655932542976
different addresses, that you need to check.
not the 2^256=
115792089237316195423570985008687907853269984665640564039457584007913129639936

And if you are not looking for one specific private key for the one address you want to find, but just try to find ANY address, that has bitcoins in it. (about 2000000 addresses) then you have to check only:
(2^160)/2000000=
730750818665451426033988086967063606722560
addresses.

A lot easier, but the result is still the same. It is not possible with the computers in existence now.

My Address: 121f7zb2U4g9iM4MiJTDhEzqeZGHzq5wLh
aplistir
Full Member
***
Offline Offline

Activity: 378
Merit: 197



View Profile
September 16, 2017, 09:06:58 AM
 #11

It is required some kind of break through in computation for collisions to happen, people speculate it may be achieved with quantum computing.

No.
With a quantum computer it is possible to calculate the private key from the public key.
BUT,
if you use bitcoin "correctly" and you do not reuse the same bitcoin address, your public key is not visible to the attacker. So he would not be able to get your private key even with the help of a quantum computer.

The sha256 hash algorithm used in bitcoin, to generate address from public key, is quantum computer resistant.

But there are many bitcoin addresses, which are reused, and which do have sent actions in them, and those are vulnerable to quantum computers as the public key is visible.
There are more than 1000 000 bitcoins in such addresses.

My Address: 121f7zb2U4g9iM4MiJTDhEzqeZGHzq5wLh
Kogs
Member
**
Offline Offline

Activity: 86
Merit: 26


View Profile
September 16, 2017, 10:36:43 AM
 #12

Some corrections:
Address is a ripemod160 hash, so there are "only"
2^160 =
1461501637330902918203684832716283019655932542976
different addresses, that you need to check.
not the 2^256=
115792089237316195423570985008687907853269984665640564039457584007913129639936

You are right. Thanks for the correction.
ranochigo
Legendary
*
Offline Offline

Activity: 3052
Merit: 4443


Crypto Swap Exchange


View Profile
September 16, 2017, 01:08:58 PM
 #13

I've been thinking a bit and to me this site could be the perfect cold wallet generator. It gives you a means of choosing an address to store your bitcoin which would be very easy to look up. You remember by page number and location on the page, rather than by address. It means you CHOOSE your address rather than in the case of those other sites which choose one for you at random.

I would like to be able to use this page offline on an air-gapped computer, but the code has been hidden and it's only possible to use online. Is there a way of getting it offline?

Thanks,

Ag
Its an absolutely terrible idea. Humans SHOULD NOT be allowed to choose their own private key from a pool of addresses. The level of security you can expect from an address in directory.io should be considered as insecure as brainwallet generated from key phrase "correct battery horse staple". The problem with you picking an address that is already generated means that anyone else would have a decent chance (higher chance than someone generating a conflicting address) of finding your address and the corresponding private key. Needless to say, the database can be modified or removed at any time. Most clients generates addresses securely and it is never an issue.

Tl;Dr: It is an extremely bad idea and its stupid for anyone to use an address listed there.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
BurtW
Legendary
*
Offline Offline

Activity: 2646
Merit: 1138

All paid signature campaigns should be banned.


View Profile WWW
September 16, 2017, 04:20:55 PM
 #14

FYI:  The first 54970.38 billion pages on directory.io have already been searched for active Bitcoins and a few were found.  Most if not all of the bitcoins found in these first 54970.38 billion pages were placed there on purpose as a sort of "canary in a coal mine" test of the security of the network.

See the search project (started at private key 0 and searching the private key space linearly, currently running about 21.10 trillion keys per day): 

https://lbc.cryptoguru.org/stats

And the "puzzle transaction" security test is discussed here: 

https://bitcointalk.org/index.php?topic=1306983.0

Our family was terrorized by Homeland Security.  Read all about it here:  http://www.jmwagner.com/ and http://www.burtw.com/  Any donations to help us recover from the $300,000 in legal fees and forced donations to the Federal Asset Forfeiture slush fund are greatly appreciated!
Agnosticus (OP)
Newbie
*
Offline Offline

Activity: 23
Merit: 1


View Profile
September 16, 2017, 09:50:23 PM
 #15

I actually don't see why it's so terrible if I do it offline, air-gapped? Doesn't this directory list ALL potential private keys? It's not as if I'd use page 235 key 15 as my address...my choice would be far more sophisticated than that.


I've been thinking a bit and to me this site could be the perfect cold wallet generator. It gives you a means of choosing an address to store your bitcoin which would be very easy to look up. You remember by page number and location on the page, rather than by address. It means you CHOOSE your address rather than in the case of those other sites which choose one for you at random.

I would like to be able to use this page offline on an air-gapped computer, but the code has been hidden and it's only possible to use online. Is there a way of getting it offline?

Thanks,

Ag
Its an absolutely terrible idea. Humans SHOULD NOT be allowed to choose their own private key from a pool of addresses. The level of security you can expect from an address in directory.io should be considered as insecure as brainwallet generated from key phrase "correct battery horse staple". The problem with you picking an address that is already generated means that anyone else would have a decent chance (higher chance than someone generating a conflicting address) of finding your address and the corresponding private key. Needless to say, the database can be modified or removed at any time. Most clients generates addresses securely and it is never an issue.

Tl;Dr: It is an extremely bad idea and its stupid for anyone to use an address listed there.
Agnosticus (OP)
Newbie
*
Offline Offline

Activity: 23
Merit: 1


View Profile
September 16, 2017, 10:09:05 PM
 #16

https://lbc.cryptoguru.org/stats

I love this stuff! Thanks. I've seen the puzzle transaction - that's cool.

FYI:  The first 54970.38 billion pages on directory.io have already been searched for active Bitcoins and a few were found.  Most if not all of the bitcoins found in these first 54970.38 billion pages were placed there on purpose as a sort of "canary in a coal mine" test of the security of the network.

See the search project (started at private key 0 and searching the private key space linearly, currently running about 21.10 trillion keys per day): 

https://lbc.cryptoguru.org/stats

And the "puzzle transaction" security test is discussed here: 

https://bitcointalk.org/index.php?topic=1306983.0
achow101
Moderator
Legendary
*
expert
Offline Offline

Activity: 3570
Merit: 6927


Just writing some code


View Profile WWW
September 16, 2017, 11:10:07 PM
 #17

I actually don't see why it's so terrible if I do it offline, air-gapped? Doesn't this directory list ALL potential private keys? It's not as if I'd use page 235 key 15 as my address...my choice would be far more sophisticated than that.
Using directory.io to choose your private key is a horrible idea, regardless of whether you are online or offline. Private keys are only secure if they are randomly generated using a cryptographically secure random number generator. By using directory.io (or any other list of private keys) to select your private keys manually, you are significantly reducing your security because humans are notoriously bad at securely generating random numbers. You as a human do not provide enough entropy to actually choose a random number randomly, which means that whatever private key you choose will be insecure and more likely to be easily brute forced.

Agnosticus (OP)
Newbie
*
Offline Offline

Activity: 23
Merit: 1


View Profile
September 16, 2017, 11:47:50 PM
 #18

OK, this makes a bit more sense now. My "algorithm" for determining the key to use would make it more vulnerable to attack than a randomly generated key. But I still have an issue with this and it would be a really interesting study.

What's the greater risk?:

1) Using my method where it's a simple algorithm for me to remember the page number and location via a HUGE (and I mean HUGE) string of numbers - i.e. not your typical internet password. This wallet would exist in my head. Despite this, it's more vulnerable to attack because it doesn't have the entropy of a purely randomly generated number.

2) Using a randomly generated key which is less prone to attack, but is more easily forgotten or the details of which more easily lost. (This key would have to be stored somewhere physical, opening it up to being attacked in a way the first option wouldn't.)

I wonder what the figures are in terms of dollar value lost due to i) hacking ii) simply losing your private key.

I've already spoken to one guy who lost over 1000 bitcoin on a hard drive somewhere, and I bet most of you have heard similar stories. I would almost hazard that simple user clumsiness (i.e. option ii) is a greater threat to your wealth than being hacked.

I actually don't see why it's so terrible if I do it offline, air-gapped? Doesn't this directory list ALL potential private keys? It's not as if I'd use page 235 key 15 as my address...my choice would be far more sophisticated than that.
Using directory.io to choose your private key is a horrible idea, regardless of whether you are online or offline. Private keys are only secure if they are randomly generated using a cryptographically secure random number generator. By using directory.io (or any other list of private keys) to select your private keys manually, you are significantly reducing your security because humans are notoriously bad at securely generating random numbers. You as a human do not provide enough entropy to actually choose a random number randomly, which means that whatever private key you choose will be insecure and more likely to be easily brute forced.
aleksej996
Sr. Member
****
Offline Offline

Activity: 490
Merit: 389


Do not trust the government


View Profile
September 17, 2017, 01:04:29 AM
Merited by ABCbits (1)
 #19

OK, this makes a bit more sense now. My "algorithm" for determining the key to use would make it more vulnerable to attack than a randomly generated key. But I still have an issue with this and it would be a really interesting study.

What's the greater risk?:

1) Using my method where it's a simple algorithm for me to remember the page number and location via a HUGE (and I mean HUGE) string of numbers - i.e. not your typical internet password. This wallet would exist in my head. Despite this, it's more vulnerable to attack because it doesn't have the entropy of a purely randomly generated number.

2) Using a randomly generated key which is less prone to attack, but is more easily forgotten or the details of which more easily lost. (This key would have to be stored somewhere physical, opening it up to being attacked in a way the first option wouldn't.)

I wonder what the figures are in terms of dollar value lost due to i) hacking ii) simply losing your private key.

I've already spoken to one guy who lost over 1000 bitcoin on a hard drive somewhere, and I bet most of you have heard similar stories. I would almost hazard that simple user clumsiness (i.e. option ii) is a greater threat to your wealth than being hacked.


Questions about security vs. accessibility have been plaguing the computer security industry for decades. In the end it is simply up to you to determine such risks for yourself, there is no formula that will answer it for you.

Although humans are notoriously bad at randomness, human minds are really good at seeing patterns, even when they are not there (like shapes in the clouds). You can use that to your advantage to generate a random password using a machine and then remember it by imagining patterns in the keys, pretending that the characters actually have some meaning. This will help you remember it.

Another way you could exploit a human mind is by obtaining muscle memory of your keys. All you need to do is type them regularly, even if it is on a detached keyboard, so it will stay in your "muscles". All my passwords exist only in my subconscious, they were randomly generated and they are long as hell, I have no idea what they are. This resulted in some loses of accounts and inability to type them on a phone keyboard, but as long as you have a physical copy as well, you should be fine. It is unlikely you would lose both at the same time.
achow101
Moderator
Legendary
*
expert
Offline Offline

Activity: 3570
Merit: 6927


Just writing some code


View Profile WWW
September 17, 2017, 01:35:28 AM
 #20

1) Using my method where it's a simple algorithm for me to remember the page number and location via a HUGE (and I mean HUGE) string of numbers - i.e. not your typical internet password. This wallet would exist in my head. Despite this, it's more vulnerable to attack because it doesn't have the entropy of a purely randomly generated number.
The page number and location that you find memorable, even if a "huge" string of numbers, is probably something that many other people would find memorable. Regardless of what number you choose, it will not be as secure as randomly generating a private key. What you are doing is similar to brain wallets which are notoriously insecure. Except your method is less secure as it does not include any key stretching or additional things to possible add randomness (e.g. hashing) that brain wallets do.

2) Using a randomly generated key which is less prone to attack, but is more easily forgotten or the details of which more easily lost. (This key would have to be stored somewhere physical, opening it up to being attacked in a way the first option wouldn't.)
There's nothing stopping you from randomly generating a private key and then figuring out its location on directory.io. Or randomly generating the page number and randomly generating the key index on directory.io so that you can memorize them for your key. That would be more secure than you choosing the location manually. You can even keep generating random numbers until you find one that is memorable to you. That is much more secure than you choosing your own private key.

Furthermore you are still vulnerable to many attacks (even the same ones that you thought you weren't vulnerable to) with your scheme.

First of all, you are essentially sending your private key to a remote web server (directory.io). The owner of that website can see that your browser would be visiting the same page over and over again. It would not be hard for them to just search through the private keys on that page and see which ones have coins and then steal them. In fact, any man in the middle could do this. The site doesn't even use https so anyone sniffing traffic on your internet connection (e.g. shared wifi) would be able to see exactly what page you are on and then just scan those private keys.

Secondly, you still need to load that private key into a wallet software in order to spend from it. You will probably have the private key on your clipboard, and the private key will be held in insecure places and in insecure memory. With a proper wallet software that generated your private key, the private key will remain in that software's memory (unless you export it). Your private key would then be able to be stolen by keyloggers and clipboard loggers which constitutes far more viruses than coin stealing viruses as coin stealing viruses much find specific files to steal your coins. This means that your key is much more vulnerable to viruses on your computer. Additionally you would still be vulnerable to traditional coin stealing viruses because most wallet software will write imported keys to a wallet file so normal coin stealing viruses can go steal those wallet files.

Thirdly, because the private key is in an unencrypted form, if the private key is stolen, then the thief can spend your coins immediately. With wallet encryption, if your coins are stolen, you still have time to move them as strong encryption and a strong password will protect your private keys.

Lastly, you would be reusing the exact same address over and over again which will lead to significant privacy loss. There's a reason that nearly all wallet software gives you a new address every time you want to receive coins and every time it makes a change output.

Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!