21

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

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 ...


11

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 ...


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 ...


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

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

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

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

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)


4

A Bitcoin private key (ECC key) is an integer between one and about 10^77. This may not seem like much of a selection, but for practical purposes it's essentially infinite. If you could process one trillion private keys per second, it would take more than one million times the age of the universe to count them all. Even worse, just enumerating these keys ...


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 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

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 ...


4

Cryptography and Encryption In the wider world, cryptography is used for a variety of security related purposes: Authentication (proof of identity, or proof of ownership) Non-repudiation (author cannot later deny authorship of data) Confidentiality (secrecy - third parties can't see the data) Integrity (proof that data has not been changed or tampered with)...


4

Bitcoin uses cryptography to create digital signatures and cryptographic hash functions for various purposes such as transaction ids, block ids, and to commit to specific transactions in blocks. The Bitcoin protocol itself does not use encryption anywhere, but many wallets use encryption to secure private key material. There is also a Bitcoin Improvement ...


3

You can not use the bitcoin address directly, but if the funds in the address have ever been spent, then you can see the public key associated with it in the blockchain, and you can encrypt with that using this python implementation: https://github.com/ikndevs/jeeq bitcointalk discussion here: https://bitcointalk.org/index.php?topic=196378.5


3

I am planning on building a small e-wallet website to learn the basics of encryption and handling accounts, transactions, and balances in Bitcoin. This is really not the place to learn. Even the most hardened Bitcoin services get attacked on a regular basis. Using brainwallet, the process for account creation is this: "Brain wallets" are an incredibly ...


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