20

Another way to look at it is to take a look at a recent block that was mined, for example, block 388368. Looking at this block on blockchain.info, you can see that the hash for this block is: 0000000000000000021ff110a589e44f56979254a204557311204f803910fdfa It took roughly 10 minutes for all of the miners (doing a combined 700,000,000 giga-hashes per ...


19

It gets it from the keypool, which has 100 pre-generated addresses by default. The next time you enter your passphrase, it will refill the pool with new addresses. Here's an example that shows the pool running out, and refilling when the password is supplied. The following commands were performed by a trained professional. Please don't try this at home (...


19

Yes, this is possible. However, I want to upfront state that this is not advisable for multiple reasons: Bitcoin keys are intended to be single use for privacy reasons, and leveraging them for encryption unnecessarily encourages treating them as a long-lived identity. There may be ugly and dangerous interactions when keys are used for multiple protocols ...


10

Private keys are 256 bit numbers Public keys are a pair of X,Y coordinates. Each coordinate is a 256 bit number. BUT for every X coordinate there are only two possible Y coordinates (one positive, one negative) so you can store a public key as just the X coordinate (256 bits) and the sign of the Y coordinate (1 bit) and the proper Y coordinate can be ...


10

No, there is not one private key. There is one Master private key. The master private key is then used to generate more private keys in a deterministic fashion, i.e. using the same master private key, you will generate the same private keys. Those private keys are what are actually used in your wallet. Their public keys are generated and the addressees ...


9

All of Bitcoin's public-key cryptography is done with secp256k1. Every sane transaction has at least one secp256k1 signature and at least one secp256k1 public key or public key hash (address). A complete overnight failure of ECDSA/secp256k1 is the only technical failure I can think of which could destroy Bitcoin. This is very unlikely, though. Bitcoin is ...


8

Looks like only the private keys are encrypted. Your addresses are stored unencrypted, so the software can show your balance without requiring a password.


8

asymmetric ciphers Ones based on specific primitives, like RSA and ECDSA specifically. Symmetric algorithms are supposed to be safe. With approximately half the number of bits of security due to Grover's algorithm. Which components of the bitcoin blockchain would be exposed to quantum attacks? The security of SHA256 would be halved, ECDSA would be ...


6

Below extract should answer your question. public class ECKeyPair implements Key { private static final SecureRandom secureRandom = new SecureRandom (); private static final X9ECParameters curve = SECNamedCurves.getByName ("secp256k1"); private static final ECDomainParameters domain = new ECDomainParameters (curve.getCurve (), curve.getG (), ...


6

Besides storing your current private keys, bitcoin wallet file also contains some pool of unused private keys. When encrypting wallet, this pool is flushed. If you make some transaction using new (encrypted) wallet then change is sent to one of addresses from the pool, which is not present in old (unencrypted) wallet. For example, you had 1BTC incoming ...


6

Yes. Yes. No. Note that that the software's encryption encrypts only the private keys, not transaction and address book information, so to protect your privacy you may want to add encrypting the file itself.


6

See the following links for an overview and for details. Note: In short, if you do not have a strong understanding of the BIP38 encryption and decryption workflow, do not BIP38-encrypt your paper wallet. Just print your paper wallet out without encryption, and keep it safe the same way you would jewels or cash. Just encrypting with AES provides excellent ...


6

Problems: 1) Sybil attack (this is actually a huge one and has been for decades and decades in all kinds of applications). Other answers already mentioned this too. What is a majority if one attacker can easily pretend to be 10 million nodes? Bitcoin makes (mining) nodes do Proof of Work and it's the amount of (unfakeable) work done that counts, not the ...


6

The traditional answer for Bitcoin to this question is "pseudonymity, not anonymity". All the data published on the blockchain is necessary for the world to validate that transactions are valid, no theft occurs, no money is being printed, ... but not more. In particular, there are no identities on the chain, and reuse of (otherwise visible) addresses is ...


5

Another alternative is btcrecover, available on GitHub here. From the Tutorial: btcrecover is a free and open source multithreaded wallet password recovery tool with support for Armory, Bitcoin Core (a.k.a. Bitcoin-Qt), MultiBit (Classic and HD), Electrum (1.x and 2.x), mSIGNA (CoinVault), Hive for OS X, Blockchain.info (v1 and v2 wallet formats, both ...


5

You should try walletrecoveryservices.com since that appears to do just what you want. (brute forces bitcoin wallet recovery if you forget your password, without being able to steal your bitcoins)


5

Electrum uses AES-256-CBC to encrypt wallets. The key is sha256(sha256("your password")). Electrum wallet source: https://github.com/spesmilo/electrum/blob/master/lib/wallet.py slowaes library: https://code.google.com/p/slowaes/source/browse/trunk/python/aes.py


5

The requirement for a one time pad to be secure is that it consists of uniformly random data, only known to the participants that should be able to encrypt/decrypt. The blockchain is not random (it's created by miners and users creating transactions), certainly not uniformly random (blocks and transactions have a very strict syntactic structure), and worst ...


5

If you want to encrypt messages, you should use a proper message/file encryption tool like PGP/GPG. Homebrewed cryptography using bitcoin things is prone to having poor security properties.


4

The password must be at least 1 character long. I've not been able to find a maximum length. I set the passphrase to be a 100,000 character string, and that worked fine. Missing the last character off the end of the long string didn't work, so the 100,000th character is significant. When first setting a passphrase the satoshi client requests that your ...


4

There is a script provided by a forum user Revalin which can be used to attempt variations. There is a forum user Rix who may be available for hire to provide assistance with this type of problem. You can also try out this script: https://bitcointalk.org/index.php?topic=170694.0


4

The cryptography Bitcoin uses for wallet private keys is ECDSA, using curve secp256k1: http://en.bitcoin.it/wiki/Elliptic_Curve_Digital_Signature_Algorithm It is for signing messages, and does not useful for any method of encryption. There are other methods of encrypting and communicating a message, ... Gli.ph, BitMessage, GPG/OpenPGP, and more. If you ...


4

You only need the passphrase to do certain things like send bitcoins or change the passphrase. The encryption itself is attached to the wallet.dat file which contains keypairs for each of your addresses transactions done from/to your addresses user preferences default key reserve keys accounts a version number Key pool and if you ever want to switch ...


4

It will take significant resources (probably more electricity than can be generated by all fossil fuels on Earth) and time (orders of magnitude greater than the age of the universe) to generate a complete Bitcoin address "rainbow table". See these answers for more details.


4

The files with the .cipher suffix are the regular wallets encrypted with 256 bit AES. The password used is the one you use to first encrypt your wallet. MultiBit goes through all the unencrypted wallets, creates an encrypted copy and secure deletes the unencrypted one. You can open the .cipher wallets using File | Open wallet and it asks you for the ...


4

BIP38 wallets are significantly more secure and are resistant to brute-force attacks when a decent passphrase is used. Generally the term "Brain Wallet" refers to one in which the private key is derived from a phrase you make up. These have been shown to be insecure because humans are bad at entropy and generally anything easy enough to remember is not ...


4

So there are attacks where if you sign enough times with the same private key, the attacker, with access to a side-channel can figure out your key. So if you were signing with your private key a lot of times, this would make your private key slightly less secure. If you're receiving bitcoins to your address, you're not signing with your private key, so ...


4

Found out that pywallet has recovery feature, and it worked: Created 1GB FAT32 partition on flash drive(/dev/sdb1 in my case), copied corrupted wallet.dat on it and run: nyaa@ubuntu:~/github/pywallet$ sudo ./pywallet.py --recover --recov_device /dev/sdb1 --recov_size 1Gio --recov_outputdir /home/nyaa/ ... All the found encrypted private keys have been ...


4

Yes you should convert your first output before feeding it back in: A hash function is typically a function which takes in an array of bytes (of arbitrary size) and spits out an array of bytes (of fixed size). When making the first call first = sha256('myfirstSHA'), it is likely that the string argument is implicitly converted to an array of bytes, whereby ...


4

Using words to back up wallets is a process described in BIP 39. Basically, the mnemonic is converted into a seed. This seed is then used as the seed to a Heirarchical Deterministic (HD) wallet, as laid out in BIP 32. The seed is used to generate a Master Extended Private Key, from which all other private keys can be generated. The child key generation ...


Only top voted, non community-wiki answers of a minimum length are eligible