Bitcoin: como crear un cold storage

Que es esto de cold storage? En el mundo/contexto de Bitcoin, un cold storage no es mas que una wallet en donde su clave privada se encuentra offline. Idealmente dicha clave privada fue generada con algún procedimiento offline y nunca fue utilizada.

Algunas preguntas típicas de este tipo de billetera:

  • Para qué? Para tener un porcentaje de nuestras bitcoins con mayor seguridad
  • Cuantas bitcoins debo tener en esta wallet? En general este tipo de billetera se relaciona mas con lo que seria un cofre fort o similar. La cantidad depende de cada persona, pero deberíamos tener en este tipo de billeteras, aquellas bitcoin de las cuales no queremos transaccionar diariamente, es decir que no queremos utilizar asiduamente. La analogía es comparable a lo que hacemos de forma natural con el dinero fiat. Nosotros naturalmente no guardamos todo nuestro dinero en la billetera que llevamos en el bolsillo, y si lo hicieramos y perdieramos (o nos robaran) la billetera, perderíamos todo nuestro dinero. Es por esto que optamos, generalmente, llevar de forma corriente una pequeña cantidad de dinero y el resto lo guardamos en lugares mas seguros. Con bitcoin ocurre lo mismo. No tiene sentido tener todo en una única billetera, y tiene más lógica tener una billetera (o varias) para transaccionar y otra (o varias otras) para almacenar la mayor parte de nuestros fondos.
  • Tengo mis bitcoins en un exchange online, es lo mismo? No, cuando tenemos nuestras bitcoins en un exchange no somos dueños de las claves de nuestra billetera. Es por esto que estamos a la merced de que el exchange sea ético y maneje honestamente nuestros fondos. Si algo ocurre con el exchange (un hackeo, cierre del sitio, etc.), corremos riesgo de perder todas nuestras bitcoins.
  • Una vez que transferí fondos desde mi cold storage hacia otra billetera debo crear un nuevo cold storage? No necesariamente, aunque la forma mas segura es que las claves privadas de los cold storage nunca hayan sido utilizadas.
  • También debo guardar mi clave pública en un lugar seguro? Para nada! Lo único que debemos proteger a capa y espada es nuestra clave privada.
  • Y en donde guardo mi clave privada para se mantenga segura? En cualquier lado donde nos de mas confianza, ya sea impresa en un papel, encriptada dentro de un pendrive, almacenada en un cofre de seguridad, o incluso una mezcla de estas.

Como crear una wallet para cold storage

  • Instalar VirtualBox (https://www.virtualbox.org/wiki/Downloads)
  • Bajar la imagen de Bitkey (https://bitkey.io/)
  • Una vez que tenemos instalado VirtualBox y obtuvimos la ultima versión de la imagen de Bitkey, debemos crear una maquina virtual utilizando la imagen de Bitkey (ver sección: “Como instanciar imagen de Bitkey en VirtualBox” en este mismo post).
  • Iniciar la máquina virtual.
  • Al iniciar Bitkey nos da 3 opciones de booteo: cold-offline, cold-online y hot-online
Opciones de booteo de Bitkey
  • Seleccionar cold-offline.
  • Una vez que Bitkey termine de iniciar, se nos mostrara el desktop, el cual debe tener un fondo de tonos verdes indicando que nos encontramos en un modo offline seguro, y además varias aplicaciones que nos permitirán crear nuestra wallet
Desktop de Bitkey con el fondo en tonos verdes indicando que estamos en modo offline
  • En este punto podemos utilizar cualquier programa de los que se encuentran en la barra para generar nuestra wallet (Electron, WarpWallet, BitAddress, etc.). En nuestro caso vamos a utilizar WarpWallet, por lo que iniciamos WarpWallet.
WarpWallet
  • Lo primero que debemos colocar es la passphrase que generará las claves de nuestra wallet. En nuestro caso utilizamos “bitcoin rocks!” en un caso real deberíamos utilizar al menos 12 palabras en un orden completamente aleatorio. La razón de esto es que una frase como la que utilizamos de ejemplo (con solo dos palabras) se podría romper en pocas horas o días, una frase de al menos 12 palabras se requerirían siglos para poder romperla. Por lo que cuanto mas palabras utilicemos (en un orden NO natural) mejor será para la seguridad de nuestra wallet.
  • Presionar en “GENERATE”
WarpWallet generando wallet
  • Una vez terminado WarpWallet nos mostrara la dirección y clave privada de nuestra nueva wallet.
Wallet generada
  • Para finalizar es la clave privada (QR de la derecha) que debemos proteger ya sea almacenándolo en un pendrive y en una caja de seguridad, o en cualquier otro lugar que creamos nadie pueda tener acceso a excepción de nosotros. La dirección pública (QR de la izquierda) es la dirección de nuestra billetera y es la que debemos utilizar para agregar fondos (o recibirlos) en nuestra billetera. Esta última dirección no es necesario protegerla.

Como instanciar imagen de Bitkey en VirtualBox

Primero crear una nueva maquina virtual con los siguientes datos:

  • Name: Bitkey
  • Type: Linux
  • Version: 64 bits
Creación de una nueva maquina virtual

En el siguiente paso se nos permitirá configurar cuanta memoria RAM deseamos que tenga nuestra máquina virtual. Realmente no se necesita mucha RAM para que Bitkey corra correctamente, 2048 MB es mas que suficiente.

Asignación de memoria RAM

Una vez seleccionada la cantidad de memoria RAM a utilizar debemos asignar un disco duro virtual a nuestra nueva máquina virtual, se nos presentan 3 opciones:

  • “Do not add a virtual hard disk”: Lo cual no asigna ningún disco duro virtual a nuestra máquina virtual.
  • “Create a virtual hard disk now”: Crea un nuevo disco duro virtual.
  • “Use an existing virtual disk file”: Permite seleccionar un disco duro virtual existente.

En nuestro caso Bitkey no necesita de un disco duro para funcionar correctamente, el sistema operativo puede funcionar de forma completa utilizando la RAM. Por lo que seleccionamos la primer opción.

Selección de disco duro virtual

Una vez seleccionada esta opción nuestra máquina virtual ya queda lista. Hasta el momento tenemos lo siguiente:

  • Una máquina virtual que soporta un Linux de 64 bits.
  • Una máquina virtual que posee 2048 MB de RAM.
  • Una máquina virtual que no tiene asignado ningún disco duro virtual.

Lo único que resta sería asignarle la imagen de Bitkey que bajamos en pasos anteriores. Para eso vamos a “Settings” -> “Storage”. Dentro de Storage:

  1. Seleccionamos el controlador IDE
  2. Al tocar el icono de CD a la derecha de “Optical Drive” se desplegará una lista de opciones
  3. Seleccionar: “Choose Virtual Optical Disk File…”
  4. Se mostrará un dialogo que permite buscar un archivo en disco
  5. Ir al lugar donde hayamos descargado la imagen ISO de Bitkey y seleccionarla
  6. Dar Ok a todo
Selección de imagen Bitkey

En este punto nuestra máquina virtual esta lista para ser utilizada con Bitkey.