Bitcoin Forum
November 10, 2024, 03:43:59 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: My Setup for Cold Storage. Looking for advice.  (Read 974 times)
omarabid (OP)
Full Member
***
Offline Offline

Activity: 133
Merit: 100


View Profile
November 06, 2015, 07:03:05 PM
 #1

I'm planning to store some bitcoins in cold storage. I'm doing a very simple setup, no complicated algorithms, no wallets...

Here is my plan

1. Create an air-gapped machine with a Linux distro. The machine won't have access to Internet and I'll disable wifi/mobile connection on purpose to be sure that no Internet is available.

2. Copy 4 files to the air-gapped machine using a microSD card. The first archive has a version of "coinb.in" which will help me create transactions. The second archive has a "bitcoin.sh" file which a set of bash functions to create bitcoins addresses. The third archive, is a small HTML/JS qrcode generator. The forth file is the diceware words list.

3. On the air-gapped machine, create the mighty bitcoin address. I'm going to use a brainwallet the following format (or a variation of it)

Quote
SALT (5 char) + 10 Diceware words + My Password (10 char) + SALT (5 char)

4. The passphrase will be hashed one time with SHA-256. The resulting Hex. will be used as the private key. Generate the address/public-key with the bitcoin utility.

5. With the Qr-Code generator, create a qrcode of the bitcoin address. Now I use my mobile phone to scan the QrCode and send a few millibits to that address.

6. Using my connected laptop, I retrieve the Transaction id and Script of the transaction that I made. I write those down on paper. I then go to my air-gapped machine and I enter these information to create the transaction and sign it.

7. Once signed, I use my qrcode utility again to create a qrcode of the transaction raw HEX code. I then use my mobile phone to scan that QrCode and send it to my pc.

8. I check that the transaction is valid and I broadcast the transaction.

Some precaution I'll be taking:

1. Make sure that the Wifi is not running when the air-gapped machine is not running.

2. When scanning the QrCode, make sure that the private key is not visible somewhere in the screen.

So this is the setup that I implemented. I'm wondering if I missed something or something is possibly at risk. Since the setup is tested, I'm here referring to the problem of funds being stolen by cracking my passphrase or infecting my air-gapped machine.

Ideas and critics welcome!
BitcoinNewsMagazine
Legendary
*
Offline Offline

Activity: 1806
Merit: 1164



View Profile WWW
November 06, 2015, 07:36:44 PM
 #2

Why not just use Armory or Electrum? Both wallets provide for a watching only copy for the online computer.

shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1540


No I dont escrow anymore.


View Profile
November 06, 2015, 08:34:20 PM
 #3

-snip-
So this is the setup that I implemented. I'm wondering if I missed something or something is possibly at risk. Since the setup is tested, I'm here referring to the problem of funds being stolen by cracking my passphrase or infecting my air-gapped machine.

Ideas and critics welcome!

I see only a few minor flaws.

#1 you are - from my understaind - reusing the same address, which might be a privacy issue. It is commonly endorsed to use a new address for every time you receive coins. If you wanted to do this, your brain wallet setup would quickly fall apart.

#2 Why use a brainwallet at all? Its an offline system you store the prviate keys on, as long as the system has enough sources for entropy e.g. keyboard + mouse + mechanical disk it should be fine. If you use dice there is no need for that anyway. I dont know why you want to add the password at all. Even without dice a fresh installed linux on a mechincal disk should have enough entropy for a seed or several addresses. If you use an SSD you might run into problems though.

#3 The whole writing things on paper will possibly be a source of error and frustration, I would consider other means to transfer the data. I can understand you dont want to use a USB stick, but there are other solutions, e.g. sound[1].



[1] https://bitcointalk.org/index.php?topic=735111.0

Im not really here, its just your imagination.
UserVVIP
Sr. Member
****
Offline Offline

Activity: 294
Merit: 250


View Profile
November 06, 2015, 08:42:16 PM
 #4

You should shove all of this onto a raspi.

Would help alot.
omarabid (OP)
Full Member
***
Offline Offline

Activity: 133
Merit: 100


View Profile
November 06, 2015, 09:33:22 PM
 #5

-snip-
So this is the setup that I implemented. I'm wondering if I missed something or something is possibly at risk. Since the setup is tested, I'm here referring to the problem of funds being stolen by cracking my passphrase or infecting my air-gapped machine.

Ideas and critics welcome!

I see only a few minor flaws.

#1 you are - from my understaind - reusing the same address, which might be a privacy issue. It is commonly endorsed to use a new address for every time you receive coins. If you wanted to do this, your brain wallet setup would quickly fall apart.

Not really. This won't be a "receiving wallet". It'll just have a fixed amount of BTC stored into it.

#2 Why use a brainwallet at all? Its an offline system you store the prviate keys on, as long as the system has enough sources for entropy e.g. keyboard + mouse + mechanical disk it should be fine. If you use dice there is no need for that anyway. I dont know why you want to add the password at all. Even without dice a fresh installed linux on a mechincal disk should have enough entropy for a seed or several addresses. If you use an SSD you might run into problems though.

The case of brain/paperwallet is that I can re-create the funds in two cases: My computer and magnetic support fails and if I'm abroad and my cold storage is not available.

#3 The whole writing things on paper will possibly be a source of error and frustration, I would consider other means to transfer the data. I can understand you dont want to use a USB stick, but there are other solutions, e.g. sound[1].

This is not an issue for me as I'd verify these values. It sounds like a lot of work but I did it a couple of times and it's doable. I'm thinking about a device that can read barcode and transfer the content to the computer. That sounds easier than sound!



[1] https://bitcointalk.org/index.php?topic=735111.0

Thanks! great contribution.
omarabid (OP)
Full Member
***
Offline Offline

Activity: 133
Merit: 100


View Profile
November 06, 2015, 09:34:25 PM
 #6

Why not just use Armory or Electrum? Both wallets provide for a watching only copy for the online computer.

Two reasons:

1. I don't need it.

2. This only increases the attack surface in case my air-gapped computer was compromised.
omarabid (OP)
Full Member
***
Offline Offline

Activity: 133
Merit: 100


View Profile
November 06, 2015, 09:35:19 PM
 #7

You should shove all of this onto a raspi.

Would help alot.

I have a pc around that I don't use. But yes, I should automate this process into a raspi.
HSBC
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
November 06, 2015, 09:38:34 PM
 #8

How random is the address generation of Coinb.in ?
omarabid (OP)
Full Member
***
Offline Offline

Activity: 133
Merit: 100


View Profile
November 06, 2015, 09:39:50 PM
 #9

How random is the address generation of Coinb.in ?

I really have no idea but it is using JavaScript for crypto. So I'd guess the entropy is not good enough.
DiamondCardz
Legendary
*
Offline Offline

Activity: 1134
Merit: 1118



View Profile WWW
November 06, 2015, 09:41:38 PM
 #10

Why not just use Armory or Electrum? Both wallets provide for a watching only copy for the online computer.

2. This only increases the attack surface in case my air-gapped computer was compromised.

I think he was just suggesting it to make a watch-only copy in which case I don't think there would be anything that would make you more susceptible to an attack.

I highly doubt your brainwallet will ever be cracked and I don't see any possibilities for your air-gapped machine to be infected. Seems like a perfect cold storage solution to me, if a bit cumbersome due to all the writing.

BA Computer Science, University of Oxford
Dissertation was about threat modelling on distributed ledgers.
omarabid (OP)
Full Member
***
Offline Offline

Activity: 133
Merit: 100


View Profile
November 06, 2015, 09:45:24 PM
 #11

Why not just use Armory or Electrum? Both wallets provide for a watching only copy for the online computer.

2. This only increases the attack surface in case my air-gapped computer was compromised.

I think he was just suggesting it to make a watch-only copy in which case I don't think there would be anything that would make you more susceptible to an attack.

I highly doubt your brainwallet will ever be cracked and I don't see any possibilities for your air-gapped machine to be infected. Seems like a perfect cold storage solution to me, if a bit cumbersome due to all the writing.

Seems like a good idea for a SaaS. A Service to alert you if your balance changes. Otherwise, I'm not bothered by the writing since it is a one time job.
shorena
Copper Member
Legendary
*
Offline Offline

Activity: 1498
Merit: 1540


No I dont escrow anymore.


View Profile
November 06, 2015, 10:53:16 PM
 #12

-snip-
Seems like a good idea for a SaaS. A Service to alert you if your balance changes. Otherwise, I'm not bothered by the writing since it is a one time job.

Yeah I had a regular use wallet in mind. I like the barcode scanner idea though I should have one somewhere and creating the code seems easy enough.[1]

[1] https://pypi.python.org/pypi/pyBarcode/0.7

Im not really here, its just your imagination.
Pages: [1]
  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!