pull down to refresh

In the 0.1.x releases of Bitcoin (which were Windows-only), Satoshi didn't implement an RNG himself. Key generation leaned entirely on OpenSSL's PRNG.

OpenSSL's RAND_poll(), when run on Windows, gathered a snapshot of every process/thread/module/heap, cursor position, foreground window, timing functions, etc. to use as entropy for key generation.

Is there a reason that's not "good enough"? Or is it good enough, but that cold wallets want to stay isolated from the OS so they don't draw entropy from those data?

reply
333 sats \ 0 replies \ @adlai 3 Aug

In general operating systems do not deliberately shuffle processes to produce hard randomness; they're aiming for scheduling that lets all processes advance with some reasonable fairness. Libraries that consume this data for harvesting entropy are already at a disadvantage, relative to an operating system component for harvesting entropy.

Newer operating systems incorporate blocks of entropy derived from peripheral signals [e.g. mouse trajectories], although again, the distribution of typical data from any given peripheral is characteristic of that peripheral [and for a specific user, also a sort of cyber-biometric, in a manner similar to gait analysis], so you're still looking at biased samples.

reply

I suppose OpenSSL's RNG is good enough since Satoshi seems to still have his coins :)

At the time, there were no alternate wallets, no alternate nodes implementations, or dedicated mining software. If you found a place to send bitcoins to, they were also running the official Bitcoin client. Bitcoin was an all-or-nothing package until Satoshi left.

Satoshi said: "I don't believe a second, compatible implementation of Bitcoin will ever be a good idea."

https://satoshi.nakamotoinstitute.org/posts/bitcointalk/69/

He probably also imagined wallets, nodes, and miner firmwares, RNG algorithms, etc. just that those concepts really didn't exist as interchangable software choices in Bitcoin yet.

reply

That is one of the motives of my question. So, he used nothing but entropy on a windows (not lynux?) OpenSSL and never got hacked. I don´t know if BIP-39 words existed back then, or passphrases, or other stuff. The UI of the first ¨wallet¨ was as simple as send or recieve, and the access to it was secured by a password or what? I guess his whole PC was the hardware wallet, never mixed with nothing else.

reply
I don´t know if BIP-39 words existed

No, not even a passphrase for entropy or encrypting the wallet file. Nothing Satoshi ever shipped had a password. The client created a wallet.dat plaintext Berkeley DB records of serialized keys for every address you created.

I guess his whole PC was the hardware wallet

"Hardware wallet" is a marketing term. Nothing about creating a bitcoin key is "hard" (in that it requires special hardware). Hardware wallets are just expensive low-power computers.

There was also much fewer attacks. Bitcoin wasn't worth much of anything. There wasn't much incentive to try cracking keys. Besides, you could mine on your laptop for a few days and earn 50BTC. Even still, people would stop mining because their laptops got too hot.

Of course, the incentive to crack satoshi's keys is higher than ever so the fact they remain safe is evidence that hardware wallets are not necessary.

reply
Bitcoin was an all-or-nothing package until Satoshi left.

Technically wrong; I believe the first GPU miner had appeared before he left.

It's definitely correct for the code that he published, and I think he was not a fan of GPU mining, although recognized its inevitability.


edit: apparently I remember the timeline wrong

reply
Is there a reason that's not "good enough"?

Same kind of error can happen on your OS as what happened with coldcard. Most notably, discovered a few months before Bitcoin launched, while sitting in the field for 2 years: The Debian Fuckup

reply