This is a bit of a xpost from
here As a
physical wallet manufacturer I've been asking a few times if "Can you make electrum wallet backups on wood?".
So far the answer was : "Yes, provided that you encrypt the seed on your side before sending it to me and that the final key actually fits into our physical wallets" .
Now,
there is an app for that
Together with the creator of
inuit wallet, we are now exploring this possibility with
Bippy . Bippy is a multi-currency userfriendly python implementation of the BIP38 encryption protocol.
Sam just tweaked the program to let users enter an Electrum seed and encrypt it with a passphrase. The resulting string starts with
SeedE and is short enough to fit our woodwallets. i.e :->
SeedER4sSM6VLmmDB6Ftu3wNSt483iXw17bJxu3nvQ6qTNsrx2bo7Nnw4zdDWe would love to hear what you think about it.
Step 1:
Install
Kivy (required for the UI), clone and run from github :
Disconnect from the internet and make sure you are using a clean machine (better a Live DVD) and execute the tool
Then to
encrypt your electrum seed :
- Type your seed into the "private key" field. Observe how Bippy detects that a seed has been entered
- Choose a passphrase
- Press "Encrypt"
To
decrypt your encrypted electrum seed :
- Type the encrypted seed into the "private key" field.
- Enter your encryption a passphrase
- Press "Decrypt"
For technical details I quote his answer on the other post :
Hi Everyone.
I'm Sam, the developer of
Bippy. I'm happy to answer any question about the code or implementations of encryption that anyone may have
I've added the ability to encrypt Electrum Mnemonic seeds using a customised encryption method based on BIP0038. Bippy will recognise an Electrum seed based on the fact that it is twelve separate words. You add a password and the encryption takes place. Bippy can also decrypt the encrypted string back to the 12 word seed but only with the correct passphrase.
The code is available on github here:
http://github.com/inuitwallet/bippy The Electrum specific code is in this file:
https://github.com/inuitwallet/bippy/blob/master/encrypt/electrum.pyAs Nico has said, we are adding functionality to bippy as requests come in so the UI is in need of a bit of work.
I'll be working on making it easier to use over the next few days as well as attempting to get some compiled binaries up and working too.
If you have any questions or suggestions feel free to get in contact or post here.
A quick overview of the method for those who are interested (sorry for anyone who isn't interested. I'm quite pleased with this and want to talk about it
):
- Use the Electrum method to convert the mnemonic into the seed number
- Take a hash of the last 4 digits to act as a checksum
- Use that hash and the passphrase to generate an encryption key using scrypt
- Use that key to AES 256 encrypt the original seed in two halves (as in BIP0038)
- The encrypted string is a Base58_Check encoded concatenation of some magic bytes (to make the start of the string 'SeedE'), the checksum hash and the two encrypted halves
The decryption is the reverse of this but using the various checksums to ensure that the string is correct and the password works.
Any thoughts?