Cómo asegurar su monedero

De Bitcoin Wiki
Revisión del 20:57 4 dic 2012 de Nubarius (discusión | contribuciones) (Añado categoría)
Saltar a: navegación, buscar

Introducción

La seguridad de un monedero Bitcoin abarca dos cuestiones independientes:

  1. La protección del monedero frente a pérdidas.
  2. La protección del monedero frente a robos.

Además, en el caso de que su monedero actual no haya estado protegido adecuadamente (p. ej. tras haber estado en la red protegido con una contraseña débil) también es importante:

  1. La creación de un nuevo monedero seguro, utilizando una protección robusta a largo plazo.

Para una introducción breve véase también: Qué se puede y qué no se puede hacer en la seguridad del monedero

Monederos de papel

Los monederos de papel son una manera bastante sencilla de guardar sus bitcoins sin ordenador. Al generarse de manera segura y almacenarse en papel (o en otro medio desconectado de cualquier red), un monedero de papel evita las posibilidades de que sus bitcoins puedan ser robados por hackers o por virus informáticos.

Un monedero de papel consiste en guardar en papel las claves privadas que permiten hacer pagos desde nuestras direcciones Bitcoin. Toda dirección Bitcoin está basada en una clave privada criptográfica, que es el número secreto que da acceso a los bitcoins, y una clave pública, número más pequeño que se puede calcular a partir de la clave privada. La dirección pública Bitcoin se calcula a partir de la clave pública. Así pues, el elemento de información único que permite utilizar una dirección Bitcoin es la clave privada, un valor binario que se puede representar mediante varios formatos de cifras y letras. El formato más habitual consiste en una secuencia de 51 caracteres alfanuméricos que comienzan por "5". Por lo tanto, si escribimos estos 51 caracteres en un pedazo de papel, podremos recuperar el acceso a nuestros bitcoins en cualquier momento futuro introduciendo estos 51 caracteres en una aplicación que sepa importar claves privadas Bitcoin.

Una herramienta muy popular para generar un monedero de papel es el sitio web bitaddress.org. Este sitio web ofrece un generador de direcciones bitcoin imprimibles escrito en JavaScript. Todo el código JavaScript está integrado en la página web principal, con lo que se puede guardar el archivo HTML de la página web y copiarlo a un ordenador desconectado de cualquier red. El uso con conexión a Internet es más peligroso debido a la posibilidad de que haya software malicioso de tipo spyware que pueda espiar las direcciones y claves privadas generadas. Otra opción alternativa es la proporcionada por el sitio web Blockchain.info, que dispone de un tutorial para generar un monedero de papel y un módulo para poder consultar en línea el saldo de las direcciones en el monedero de papel.

Debido a los riesgos de que un ordenador contenga software malicioso, la mejor manera de generar un monedero de papel consiste en iniciar un ordenador desde un disco externo de arranque, como por ejemplo un CD o USB Linux Live, manteniendo el ordenador desconectado de cualquier red. Una vez arrancado el sistema operativo desde el disco de arranque, habrá que copiar la herramienta de generación de direcciones Bitcoin que vayamos a utilizar. Por ejemplo, en el caso de usar Bitaddress.org, desde un ordenador conectado a Internet habríamos guardado el archivo HTML en un dispositivo de almacenamiento, como un CD o un USB, que luego utilizaríamos para copiar el documento HTML al ordenador que hemos arrancado desde disco y sin conexión a Internet, y abriremos el documento HTML en un navegador web. La desconexión de Internet garantiza que la herramienta de generación de claves privadas Bitcoin es realmente autoconteniday no requiere ningún tipo de transmisión de datos por la red. Al utilizar la herramienta de generación de direcciones, habrá que imprimir la información de claves privadas. Para ello habrá que conectar una impresora, sin ningún tipo de conexión a redes externas.

La información de un monedero de papel consistirá en una o más claves privadas. Normalmente, se enumerarán junto a las direcciones públicas correspondientes. Las direcciones públicas se pueden guardar sin problemas en archivos compartidos por red, ya que solamente pueden usarse como destinatarias de pagos o para comprobar el saldo asociado a traves de herramientas como Blockexplorer.com o Blockchain.info. Cuando se hace un pago a una de esas direcciones, el pago y el saldo resultante podrán consultarse con cualquiera de esas herramientas de consulta. Solamente cuando se quieran mover los bitcoins desde la dirección guardada en el monedero de papel será necesario importar la clave privada impresa en el papel a un programa cliente de Bitcoin. El cliente oficial de Bitcoin proporciona desde la versión 0.6.0 un comando "importprivkey" que importa claves privadas. Desde la versión 0.7.0, este comando puede ejecutarse desde la interfaz gráfica a través de la consola de depuración. Algunos sitios web como Blockchain.info y Mt. Gox permiten también importar claves privadas. En el caso de Mt. Gox, los bitcoins de la dirección importada pasan a la cuenta de usuario y pueden extraerse después del número de confirmaciones obligatorio por depósito.

La importancia de los monederos de papel se debe a la existencia de spyware y virus que intentan rastrear la actividad en el ordenador infectado para robar información confidencial como contraseñas de sitios web o incluso las propias claves privadas Bitcoin. El uso de monederos de papel minimiza este tipo de riesgo.

Si un ordenador está infectado con spyware o virus, lo que puede ocurrir incluso en ausencia de síntomas o sin que el programa antivirus haya detectado nada, entonces cualquier texto tecleado, visualizado o guardado en el ordenador puede ser copiado por control remoto. Una clave privada podría ser interceptada mientras el usario la introduce para importarla. Por ello, la introducción de una clave privada en un ordenador conectado a la red es una operación de riesgo que debe hacerse solamente cuando se quiera hacer un pago inmediato de todo su saldo.

La importancia de las actualizaciones de seguridad

No existe el software perfecto y de cuando en cuando pueden encontrarse vulnerabilidades en la seguridad del propio cliente Bitcoin. Por ello, es sumamente importante mantener el programa cliente actualizado, en particular cuando se haya descubierto y corregido un defecto de seguridad nuevo. En esta wiki hay una lista de fallos de seguridad conocidos, en la que se describen los fallos detectados pendientes de solución. Nótese que esto no quiere decir que sea necesario utilizar la última revisión mayor del programa cliente. Muchos clientes, incluido el cliente de referencia Bitcoin-qt, proporcionan actualizaciones de seguridad para versiones antiguas.

Cómo asegurar el monedero de Bitcoin-qt / bitcoind

Las transacciones Bitcoin envían una suma de bitcoins a una clave pública concreta. Una dirección Bitcoin es un valor hash codificado de una clave pública. Para poder utilizar esos bitcoins recibidos, es necesario tener la clave privada que corresponde a la clave pública de destino. Se puede entender la clave privada como una contraseña muy larga que está asociada a una cuenta, que sería la clave pública. Un monedero de bitcoins contiene todas las claves privadas requeridas para poder gastar las transacciones recibidas. Si se borra un monedero sin copia de seguridad, resultará imposible acceder a la información de autorización necesaria y los bitcoins asociados a esas claves se perderán para siempre.

El monedero del cliente de referencia Bitcoin-qt (o la versión de línea de órdenes bitcoind) contiene una reserva (pool) con una colección de claves disponibles. El número predeterminado de estas claves es de 100 en la reserva de claves. El temaño de la reserva puede configurarse mediante el argumento "-keypool" de línea de órdenes. Cuando se necesita una dirección por motivos tales como un pago, la generación de una “nueva dirección”, etc., la nueva clave no se genera en ese momento, sino que se extrae de la reserva de claves pregeneradas y se genera una nueva dirección que se añade a la reserva para mantener el número de cien claves disponibles (o el número indicado por "-keypool"). Así, cuando se crea una copia de seguridad por vez primera, esta contiene todas las claves en uso más cien claves aún sin usar. Una vez que se lleva a cabo una transacción, habrá aún 99 claves sin usar en la copia. Después de un total de cien acciones que requieran una nueva dirección, se estarán utilizando claves que no están en la copia de seguridad. Los bitcoins recibidos en esas direcciones no respaldadas se perderían si fuera necesario restaurar el monedero con la copia de seguridad antigua. Por ese motivo, es esencial volver a hacer copias de seguridad después de que se hayan utilizado cien direcciones nuevas. Además, la versión actual (octubre de 2012) del cliente de referencia regenera toda la reserva de claves no usadas cuando se cifra el monedero. Por ello, también es imprescindible hacer una copia de seguridad después de que se haya cifrado el monedero.

El proceso de crear una nueva dirección consiste en generar una clave privada, que se guarda internamente en el monedero, y una clave pública, que se somete a varias transformaciones para obtener la dirección pública Bitcoin. La clave privada es un número aleatorio de 256 bits, imposible de adivinar por fuerza bruta si se pierde el monedero. Por ello, las copias de seguridad solamente pueden restaurar aquellos pares de clave privada y pública que estaban en el monedero original antes de hacer la copia, lo cual incluye las direcciones que se han usado en pagos, las direcciones de recepción visibles al usuario, las cien direcciones adicionales de la reserva y las llamadas "direcciones de cambio", que se explican a continuación.

Una complicación añadida de la gestión de direcciones es el hecho de que el monedero guarda internamente más direcciones en uso que las que se muestran a través de la interfaz gráfica de usuario. Esto se debe a que cuando se hace un pago en bitcoins, se toman los bitcoins obtenidos de una o varias transacciones recibidas para enviar la cantidad excata deseada al destinatario final y se reenvía el "cambio" a una nueva dirección mantenida internamente por el programa y que no se muestra en la interfaz de usuario. Por ejmplo, si un usuario instala Bitcoin-qt y recibe un único pago de 50 bitcoins, ese saldo estará asociado a una sola dirección/clave pública. Si a continuación el usuario decide pagar un bitcoin a otra persona, se vaciarán los 50 bitcoins de la transacción original, de tal modo que un bitcoin se enviará a la dirección de destino y 49 bitcoins se enviarán a una dirección nueva, tomada de la reserva, en el propio monedero. Por lo tanto, después del pago de un bitcoin, los 49 bitcoins de saldo resultante estarán en una dirección diferente de la que contenía los 50 bitcoins originales. Ese uso de direcciones de cambio refuerza el anonimato de los pagos al hacer imposible saber qué parte de un pago se ha quedado en poder del mismo usuario y qué parte corresponde al pago real.

En resumen, si se hace una copia de seguridad de un monedero y después se hacen más de cien operaciones, habrá bitcoins que se perderán al restaurar el monedero a partir de la copia de seguridad. Lo mismo ocurrirá si se hace la copia de seguridad antes de cifrar el monedero y después se realizan pagos con el monedero ya cifrado. Por eso es tan importante hacer las copias de seguridad con regularidad y una vez que el monedero ha sido cifrado.

Cómo crear un nuevo monedero

Si un monedero o la contraseña de un monedero cifrado se ven comprometidos, es recomendable crear un nuevo monedero y transferir el saldo completo de bitcoins a nuevas direcciones del monedero recién creado. Un monedero puede verse comprometido, por ejemplo, por la reutilización de contraseñas, por el uso de contraseñas débiles y por hacks o virus en el ordenador.

Hay varias maneras de crear un nuevo monedero con Bitcoin-QT o bitcoind, pero el proceso siguiente ha sido probado con bitcoind 0.6.3. Utilizamos la orden copy para minimizar la posibilidad de pérdida de datos pero se recomienda en cualquier caso hacer copias de seguridad de cualquier archivo wallet.dat que se haya utilizado.

1. Cierre la aplicación Bitcoin.
2. Encuentre el archivo wallet.dat que pueda haberse visto comprometido y renómbrelo, añadiendo una pequeña descripción:
wallet.dat -> wallet-comprometido.dat
Dependiendo de su sistema operativo, el archivo de monedero estará en:
Windows: %APPDATA%\Bitcoin\
Linux: ~/.bitcoin/
Mac: ~/Library/Application Support/Bitcoin/
3. Inicie la aplicación Bitcoin. Se creará un nuevo archivo wallet.dat. En ese momento puede cifrar el monedero si lo desea.
4. Una vez que dispone de un nuevo archivo wallet.dat, puede generar desde la aplicación una o varias direcciones y copiarlas a un programa de edición de texto. Tras obtener la nueva dirección o direcciones, cierre la aplicación Bitcoin, haga una copia de seguridad del archivo wallet.dat y renómbrelo como wallet-nuevo.dat.
5. Renombre el archivo wallet-comprometido.dat como wallet.dat e inicie la aplicación Bitcoin. Una vez abierto el programa, transfiera todo su saldo a la nueva dirección o direcciones que había copiado en el programa de edición de texto. Una vez que el saldo mostrado por el programa pasa a ser 0, espere varios minutos para que llegue al menos una confirmación que confirme que las transacciones han sido trnsmitidas a la red. En ese momento puede cerrar la aplicación Bitcoin.
6. Renombre wallet.dat como wallet-comprometido.dat.
7. Renombre wallet-nuevo.dat como wallet.dat.

Cuando inicie de nuevo la aplicación se encontrará con su saldo original, que ha sido transferido del monedero antiguo al nuevo.

Cómo asegurarse de que el entorno de trabajo es seguro

Si utiliza su ordenador para manejar bitcoins, un monedero, contraseñas usadas con Bitcoin o claves privadas Bitcoin, debe tener cuidado de mantener su sistema libre de malware, virus, keyloggers, herramientas de acceso remoto y otras herramientas que puedan emplearse para hacer copias remotas de información. En el caso de que su sistema se viera comprometido, las precauciones que se comentan a continuación pueden proporcionar protección adicional.

Linux

El primer paso consiste en establecer un nuevo usuario. Por lo tanto, como root, ejecute:

adduser new_user_name

Las veces en que aparezca el mensaje 'Enter the new value, or press ENTER for the default', presione ENTER.

Una vez creado el nuevo usuario, pásese a ese perfil de usuario. Para cambiar el usuario activo puede utilizar el icono de cambiar de usuario de su sistema, que en Ubuntu aparece en la pantalla 'Sistema/Salir'. Si no hay un icono para cambiar la sesión de usuario en su sistema, puede cerrar la sesión e iniciar sesión como el nuevo usuario. Una vez iniciada la sesión con el nuevo perfil de usuario, haga clic sobre una carpeta para mostrar el navegador de archivos y vaya hasta el directorio de inicio (home) del nuevo usuario. Haga clic con el botón secundario para acceder al cuadro de diálogo de Propiedades y vaya a la pestaña de Permisos y a la sección Otros, donde deberá establecer el acceso a carpeta como "Ninguno".

Para navegar de forma segura en Internet, abra Firefox y vaya al menú de Edición y haga clic en Preferencias. Acceda a la pestaña General a la izquierda y en el menú contextual 'Inicio/Cuando Firefox se inicia' elija la opción 'Mostrar página en blanco'. Acceda entonces a la pestaña de Contenidos y desmarque 'Cargar imágenes automáticamente' así como 'Habilitar JavaScript'. Acceda a continuación a la pestaña de Privacidad y en el menú contextual de 'Historia/Firefox', elija 'Nunca recordar historial'. Acceda después a la pestaña de Seguridad y, en la sección de Contraseñas, desmarque 'Recordar contraseñas para los sitios' y desmarque 'Usar contraseña maestra'. Acceda por último a la pestaña Avanzado y dentro de la pestaña de Actualización en la sección 'Comprobar automáticamente actualizaciones', desmarque 'Add-ons' y 'Motores de búsqueda'.

Cuando se desactiva JavaScript, la página de descargas de Linux no se descargará automáticamente, por lo que tendrá que hacer clic sobre el 'direct link' en la parte en que dice "Problems with the download? Please use this 'direct link' or try another mirror".

Una vez establecido este nuevo usuario seguro, debería utilizarlo solamente para Bitcoin en aras de preservar su seguridad.

Es también una buena idea cifrar el directorio Inicio/Home del usuario bajo el cual ejecuta Bitcoin utilizando ecryptfs-utils. Para hacer esto:

  1. Si el directorio Inicio/Home no está vacío, debería hacer primero una copia de seguridad copiando los datos que contenga a otra ubicación.
  2. Instale ecryptfs-utils (en Ubuntu: "sudo apt-get install ecryptfs-utils").
  3. Cierre la sesión del entorno gráfico X y presione Ctrl+Alt+F1 para acceder al command shell (debe haber cerrado la sesión para que no queden archivos abiertos. De lo contrario, la herramienta no será capaz de cifrar sus datos).
  4. Cambie el directorio actual para que no esté dentro de su directorio de inicio (por ejemplo: "cd /").
  5. Ejecute la herramienta de migración (en Ubuntu: "sudo ecryptfs-migrate-home -u nombre_de_usuario").
  6. Si la operación se realiza con éxito, puede ahora presionar ALT+F8 para volver a la interfaz gráfica e iniciar sesión.
  7. Ejecute 'ecryptfs-unwrap-passphrase' y APUNTE EN UN PAPEL O GUARDE EN MÁS DE UN LUGAR EL CÓDIGO INDICADO porque necesitará ese código si alguna vez ha de recuperar los datos y el sistema operativo no funciona. (Puede volver a ejecutarlo más tarde si es necesario, pero ejecútelo ahora de modo que pueda recuperar sus datos si se producen errores en la instalación de Linux.)
  8. Ejecute 'ecryptfs-setup-swap' para cifrar su partición swap (los datos de la carpeta cifrada no están cifrados mientras residen en memoria, por lo que si se envían en algún momento a la partición swap podrían ser robados desde allí a menos que la partición esté también cifrada. Tenga presente que esto significa que ya no podrá utilizar el modo de hibernación, ya que el dispositivo de arranque o bootloader será incapaz de restaurar los datos de hibernación).

(Instrucciones tomadas de [1])

Mac

Esta solución no escala bien, ya que la cantidad de espacio requerido puede llegar a rebasar el tamaño de imagen del disco.

Haga copia de seguridad de todos los datos

Siga estas instrucciones para hacer una copia de seguridad de todos los datos relacionados con Bitcoin (monedero y cadena de bloques) en una imagen de disco cifrada.

  1. Abra la Utilidad de Disco.
  2. Haga clic sobre "Nueva imagen" y elija un tamaño suficientemente grande, cifrado de 128 bits o de 256 bits (más rápido el primero, más seguro el segundo) y partición sencilla.
  3. Guárdelo en algún lugar en que sea fácil de recuperar (como su Dropbox, Wuala, Strongspace o similar).
  4. Elija una contraseña segura y robusta.
  5. Mueva todo el contenido de ~/Library/Application Support/Bitcoin/ a la imagen.
  6. Convierta el directorio orginal en un enlace simbólico (symlink) a la imagen para que la aplicación sea capaz de utilizarlo:
ln -s /Volumes/Bitcoin ~/Library/Application Support/Bitcoin

No olvide montar la imagen antes de utilizar Bitcoin y desmontarla tras su uso.

Hacer copia de seguridad solamente de wallet.dat

Siga estas instrucciones para hacer simplemente una copia de seguridad del archivo wallet.dat. Esto da lugar a una imagen de disco menor, pero el proceso es más complicado.

  1. Abra la Utilidad de Disco.
  2. Haga clic sobre "Nueva imagen" y elija un tamaño suficientemente grande, cifrado de 128 bits o de 256 bits (más rápido el primero, más seguro el segundo) y partición sencilla.
  3. Guárdelo en algún lugar en que sea fácil de recuperar (como su Dropbox, Wuala, Strongspace o similar).
  4. Elija una contraseña segura y robusta.
  5. Mueva su archivo wallet.dat a la imagen.
  6. Convierta el wallet.dat original en un enlace simbólico (symlink) al wallet.dat de la imagen para que la aplicación sea capaz de utilizarlo:
ln -s /Volumes/Bitcoin/wallet.dat ~/Library/Application Support/Bitcoin/wallet.dat
Montar el monedero e iniciar Bitcoin

No olvide montar la imagen antes de utilizar Bitcoin y desmontarla tras su uso.

Nota: Si inicial la aplicación Bitcoin sin haber montado la imagen, la aplicación soreescribirá el enlace simbólico con un nuevo monedero. Si ocurriera eso, no se preocupe. Basta con eliminar el nuevo wallet.dat, montar la imagen y volver a crear el enlace simbólico como se ha comentado.

Automatización: Es posible crear una pequeña aplicación utilizando Automator (incluido en OS X) para montar automáticamente el monedero y acto seguido iniciar la aplicación Bitcoin. Véase en la captura de pantalla cómo hacer esto.

Si no se quiere utilizar imágenes de disco cifradas, puede utilizarse un pequeño shell script que se encargue de descifrar el monedero, iniciar el cliente bitcoin, y cifrarlo de nuevo al cerrar el cliente. Este script funciona tanto en OSX como en Linux: bitcoin-launch-script

Windows

Dada la frecuencia con que se ven comprometidos los sistemas Windows, se aconseja que cifre su monedero o que lo guarde en una imagen de disco cifrada creada con software de terceros, como pueden ser TrueCrypt (código abierto) o Jetico BestCrypt (comercial). Esto mismo es aconsejable para el almacenamiento de contraseñas, claves privadas y otros datos que puedan servir para acceder a su saldo en bitcoins.

Suponiendo que ha instalado el cliente de Bitcoin para Windows y que lo ha ejecutado al menos una vez, se describe a continuación el proceso.

Para montar el directorio de datos Bitcoin en una unidad de disco cifrada

  1. Utilice el programa de cifrado de imágenes de disco que prefiera para crear y montar una imagen cifrada de disco con un tamaño de al menos 5GB. Este procedimiento almacena la base de datos de la cadena de bloques al completo en el archivo wallet.dat, por lo que el tamaño requerido de esta imagen cifrada de disco aumentará con el paso del tiempo.
  2. Localice el directorio de datos Bitcoin y copie el directorio con todo su contenido a la unidad cifrada.

    Para más información sobre cómo encontrar este directorio, véase Cómo localizar el directorio de datos de Bitcoin.

  3. Cree un acceso directo de Windows que inicie Bitcoin con el parámetro -datadir especificando la unidad y el directorio cifrados.

    Por ejemplo, si ha instalado Bitcoin en el directorio predeterminado, ha montado su unidad cifrada para Bitcoin en E:\ y ha creado un directorio de datos Bitcoin con el nombre Bitcoin en la raíz, tendría que utilizar la siguiente orden como destino del acceso directo:

    C:\Program Files\Bitcoin\bitcoin.exe -datadir=E:\Bitcoin
  4. Abra el cuadro de diálogo de opciones de Bitcoin y revise la configuración para que el programa NO se ejecute automáticamente al iniciar Windows.

    Esto se debe a que tendrá que montar la imagen cifrada para Bitcoin antes de arrancar la aplicación Bitcoin.

  5. Cierre Bitcoin y reinícielo mediante el nuevo acceso directo.

Una vez hecho esto, en cualquier momento en que desee utilizar Bitcoin, tendrá primero que montar la imagen cifrada de disco para Bitcoin utilizando la misma unidad y directorio, ejecutando Bitcoin a partir del acceso directo creado, de modo que se encuentren los datos y el monedero en esa ubicación cifrada.

Cómo localizar el directorio de datos de Bitcoin

El directorio de datos es la ubicación en la que se guardan los archivos de datos de Bitcoin, incluido el archivo de datos del monedero.

Windows

Acceda a Inicio -> Ejecutar... (o pulse tecla de Windows + R) y ejecute lo siguiente:

explorer %APPDATA%\Bitcoin

Se abrirá entonces la carpeta de datos de Bitcoin. Para la mayoría de usuarios, suele ser una de las siguientes ubicaciones:

C:\Documents and Settings\SuNombre\Datos de programa\Bitcoin (Windows XP)

C:\Users\SuNombre\Appdata\Roaming\Bitcoin (Windows Vista and 7)

Si no logra encontrar estas carpetas, puede ser porque los directorios "AppData" y "Datos de programa" (a "Application Data" cuando Windows XP está en inglés) son directorios ocultos por defecto. Tendrá que acceder a las opciones de la ventana de exploración de archivos y desmarcar la opción de "Mostrar archivos, carpetas y unidades ocultos" (yendo a la barra de menú superior, cuya visibilidad se puede activar con la tecla "Alt", eligiendo "Herramientas"/"Opciones de carpeta" y activando la pestaña "Ver").

Linux

Por defecto, Bitcoin guarda sus datos en la ubicación:

~/.bitcoin/

Necesitará teclear la orden "ls -a" para ver los directorios ocultos que comienzan con un punto.

Si no se encontrara ahí, puede hacer una búsqueda ejecutando la orden siguiente:

find / -name wallet.dat -print 2>/dev/null

Si modifica el directorio en el que Bitcoin guarda sus datos, tendrá que ejecutar la aplicación desde una terminal o script con la orden:

./bitcoin(-qt) -datadir=./[Nombre_del_directorio_de_datos]

Mac

Por defecto, Bitcoin guarda sus datos en la ubicación:

~/Library/Application Support/Bitcoin/

Copias de seguridad

Nota: No se recomienda utilizar Dropbox para respaldar sus datos Bitcoin ya que hay las siguientes dudas sobre su seguridad:

  1. Dropbox almacena su clave de cifrado (lo cual quiere decir que un empleado despechado de Dropbox o un atacante que lograra acceso al sistema podría descifrar sus datos en Dropbox y robar sus bitcoins)
  2. El cliente Dropbox solamente exige introducción de contraseña en el primer acceso. Una vez autenticado, el servidor le asigna un identificador que indica que, en algún momento, el usuario conoció la contraseña y no vuelve a solicitar ni a enviar al servidor la contraseña. Esto implica que si se utiliza el cliente Dropbox en otra máquina, los usuarios de esa otra máquina, o un virus informático, podrían acceder a sus datos en Dropbox, aun cuando cambiara la contraseña con posterioridad, y sustraer sus bitcoins. Por ello, la única manera segura de utilizar Dropbox consiste en cifrar los datos Bitcoin antes de copiarlos a una carpeta compartida en Dropbox.

Debido a estas limitaciones de Dropbox, puede ser preferible utilizar un sistema alternativo que requiera constantemente autenticación por contraseña, tal como Wuala. Los servidores de Wuala no almacenan su clave de cifrado y el programa se autentica con la contraseña cada vez que se inicia.

Independientemente de que utilice Dropbox, Wuala o cualquier otro sistema, es recomenddable utilizar lo que Steve Gibson llama "cifrado pre-Internet", que consiste en aplicar alguna forma de cifrado a los archivos antes de respaldarlos por si acaso un atacante lograra acceder a la copia de seguridad. En tal caso, asegúrese de utilizar una contraseña que sea fácil de recordar pero segura.

En realidad, el único archivo del que es necesario hacer copia de seguridad es "wallet.dat", lo cual puede hacerse de dos maneras: o bien copiando manualmente el archivo wallet.dat mientras la aplicación Bitcoin está cerrada; o bien utilizando la orden JSON-RPC backupwallet para hacer la copia de seguridad mientras se está ejecutando Bitcoin.

Una vez que se ha hecho la copia, cífrela y guárdela en dos o más lugares seguros. Hacer copias de seguridad para evitar riesgos de robo, averías de dispositivos, incendios o desastres naturales será evidentemente tanto más importante cuanto mayor sea el saldo en bitcoins que contenga el monedero.

Soluciones generales

Su archivo wallet.dat no es cifrado por defecto por la aplicación Bitcoin, pero las versiones más recientes del cliente Bitcoin incorporan un sistema para cifrar con contraseña las claves privadas contenidas en el monedero. Dado que cualquiera que acceda a un monedero descifrado puede gastar todo el saldo en bitcoins, conviene cifrar el monedero bien mediante el propio sistema que ahora incorpora la aplicación o, en versiones más antiguas, con otras soluciones de cifrado como las proporcionadas por los siguientes programas:

  • 7-zip - Incorpora cifrado fuerte de archivos y unidades de disco.
  • AxCrypt de Axantum.
  • lrzip - Software de compresión para Linux y OSX que incorpora cifrado protegido por contraseña de alto nivel.
  • TrueCrypt - Cifrado basado en volúmenes de disco (para usuarios avanzados).

Hay también una lista de software de código abierto de cifrado.

Descifrar y cifrar el archivo wallet.dat cada vez que se inicia y se cierra el cliente Bitcoin puede ser tedioso (y muy susceptible de errores). Si desea asegurarse de mantener el monedero cifrado en todo momento excepto cuando se esté utilizando el cliente Bitcoin, es mejor dejar la automatización de esta tarea a un pequeño script de shell que maneja el cifrado y el inicio del cliente Bitcoin (Linux and OSX). En cualquier caso, este tipo de soluciones externas ya no deberían ser necesarias desde que el cliente Bitcoin ofrece la opción de cifrado del monedero.

Existe también una manera de imprimir y cifrar su archivo wallet.dat como un código especial y escaneable: WalletPaperbackup

Fortaleza de la contraseña

La vulneración de contraseñas por fuerza bruta ha evolucionado mucho. Hoy en día, con hardware apropiado, pueden encontrarse de forma trivial contraseñas con longitud de ocho carcteres, incluso si incluyen mayúsculas, números y caracteres especiales. Por ello, se recomienda una longitud de al menos 12 caracteres. Pueden ser útiles las contraseñas multipalabra y existen técnicas que aumentan la seguridad de las contraseñas sin sacrificar la usabilidad. Véase The Usability of Passwords.

No obstante, el mero uso de palabras normales que se encuentran en los diccionarios es inseguro frente a taques basados en diccionarios. Cuando se usan palabras convencionales del idioma, conviene mezclarlas con símbolos y números.

Debe asumirse siempre que cualquier archivo que se suba a Internet (en Gmail o Dropbox, por ejemplo) puede permanecer en algún lugar indefinidamente y nunca será posible borrarlo definitivamente.

Cómo elegir una contraseña fuerte

Asegúrese de elegir al menos un carácter de cada grupo:

 Minúsculas: abcdefghijklmnopqrstuvwxyz
 Mayúsculas: ABCDEFGHIJKLMNOPQRSTUVWXYZ
 Número: 1234567890
 Símbolo: `~!@#$%^&*()-_=+\|[{]};:'",<.>/? (espacio)
 <9 caracteres = inaceptable
 09 caracteres = inseguro
 10 caracteres = seguridad baja
 11 caracteres = seguridad media
 12 caracteres = seguridad buena (suficientemente buena para el monedero)
 13 caracteres = seguridad excelente, válida para cualquier uso.

Copias de seguridad basadas en correo electrónico y servidores remotos

Una de las maneras más simples de guardar una copia del archivo wallet.dat convenientemente cifrada consiste en enviar la copia cifrada como datos adjuntos en un correo a una dirección propia. Los servicios al estilo de Gmail utilizan redes distribuidas enormes que hacen muy improbable que puedan llegar a perder datos de sus usuarios. Para dificultar aún más, además del cifrado, la identificación de los datos como monedero Bitcoin, es posible ofuscar el aspecto del archivo renombrándolo con un nombre poco atractivo como "notas personales".

Otra solución consiste en utilizar un servicio de almacenamiento remoto de datos como Wuala (cifrado, instrucciones), Dropbox (asegurándose de que el monedero esté cifrado) u otros, incluido el muy seguro SpiderOak.

Copias dse seguridad automatizadas mediante Cron, Bash y GNU/Linux

Los usuarios de Linux pueden configurar copias de seguridad utilizando cron para que se ejecute un script de copia de seguridad en intervalos de tiempo regulares. Para ello es necesario ejecutar 'crontab -e' y añadir la línea siguiente cerca del final:

01 * * * * /usr/local/bin/backupwallet.sh

Esta línea hará que se ejecute el script /usr/local/bin/backupwallet.sh en el minuto 1 de cada hora. Recuerde añadir un salto de línea a continuación de la última línea del archivo crontab o, de lo contrario, no se ejecutará la última línea. Puede también ignorarse la salida del script añadiendo " > /dev/null 2>&1" a la línea (esto evita también que se envíen correos electrónicos de notificación).

Habrá que crear entonces el archivo /usr/local/bin/backupwallet.sh:

#!/bin/bash
# /usr/local/bin/backupwallet.sh
#
# Performs backup of bitcoin wallet.
#
# Written by: https://en.bitcoin.it/wiki/Securing_your_wallet

#
# Standard Options
#
TS=$(date "+%Y%m%d-%H%M")
WALLET=/tmp/wallet-${TS}
WALLET_E=/tmp/wallet-${TS}.crypt
BITCOIN=bitcoind  # /path/to/bitcoind
GPG=gpg  # /path/to/gpg
GPG_USER=username  # Username of gpg recipient. User should have gpg setup.
RM=rm
RM_OPTS='--force'
USE_SHRED=0  # Flip to 1 to use `shred` instead of `rm`.
SHRED=shred
SHRED_OPTS='--force --iterations=9 --zero --remove'

#
# Storage Options
# Only 1 set of options should be un-commented (the last one will be used).
# Update CP_DEST paths as neccessary.
#
# CP - Storage on a local machine. Could be Dropbox/Wuala folder.
#CP=cp
#CP_DEST='/var/data/backups/'  # '~/Dropbox/', etc.
#
# SSH - Storage on a remote machine.
CP=scp
CP_DEST='remoteuser@example.com:~/wallets/'
#
# S3 - Storage on Amazon's S3. Be sure s3cmd is installed and properly setup.
# You may need "s3cmd put --force" if you use a sub-directory in CP_DEST.
#CP=s3cmd put
#CP_DEST='s3://bucket'

do_clean() {
  # Remove temporary wallets.
  if [ 1 -eq $USE_SHRED ]; then
    $SHRED $SHRED_OPTS $WALLET $WALLET_E
  else
    $RM $RM_OPTS $WALLET $WALLET_E
  fi
}

do_fail() {
  do_clean
  echo failed!
  exit 1
}

# Perform the backup.
echo -n Making backup...
$BITCOIN backupwallet $WALLET
[ ! -s "$WALLET" ] && do_fail  # If the backup does not exist or is empty, fail.
echo done.
echo -n Encrypting backup...
$GPG -r $GPG_USER --output $WALLET_E --encrypt $WALLET
[ 0 -ne $? ] && do_fail  # If gpg returns a non-zero result, fail.
echo done.
echo -n Copying to backup location...
$CP $WALLET_E "$CP_DEST"
[ 0 -ne $? ] && do_fail  # If the $CP command returns a non-zero result, fail.
echo done.
do_clean

exit 0

Este shell script hace lo siguiente:

  • Ejecuta bitcoind backupwallet para crear un monedero con marca temporal.
  • Aplica un cifrado GPG al monedero con su clave privada.
  • Copia el resultado utilizando una de entre varias opciones de almacenado posibles (cp, scp, y s3cmd).
  • Utiliza las órdenes rm o shred para eliminar los archivos monedero temporales.

Asegúrese de modificar las opciones del script a la configuración que necesite. Tras guardar los cambios, asegúrese de que el archivo se ejecuta sin problemas desde cron. Los permisos típicos de los archivos en /usr/local/bin/ pueden aplicarse ejecutando (precaución: esto puede variar según la distribución Linux):

cd /usr/local/bin/ && chown root:root backupwallet.sh && chmod 755 backupwallet.sh

Recuperación

Si suponemos que se dispone de una copia de seguridad suficientemente reciente (como para que no se hayan agotado las direcciones adicionales de reserva), se puede recuperar todo el saldo de las direcciones del monedero al restaurar el archivo wallet.dat en la ubicación en que lo lee la aplicación Bitcoin. Basta con seguir los pasos siguientes:

  • Cierre la aplicación Bitcoin.
  • Copie la versión guardada de wallet.dat a su directorio de datos Bitcoin.
  • Si se está copiando a un perfil existente, elimine los archivos blk*.dat para forzar al cliente a descargar de nuevo toda la cadena de bloques.

Cómo eliminar monederos no cifrados

En la mayoría de los sistemas operativos, incluidos Windows, Linux y Mac OS X, no basta con eliminar el archivo wallet.dat para que quede destruido. Mediante el uso de herramientas sofisticadas es posible recuperar un archivo como wallet.dat, incluso después de que el sistema operativo lo dé por eliminado.

En Linux existe la orden shred, que se utiliza para sobreescribir el archivo con datos aleatorios como paso previo a la eliminación. De esa manera, la información marcada como eliminada es totalmente diferente del archivo original que es así irrecuperable. No obstante, el uso de shred (así como herramientas similares para Windows) no garantiza que no puedan existir otras copias ocultas en el disco duro. Eso depende de la configuración del sistema y de los programas instalados. Algunas herramientas de restauración y copia de seguridad del sistema, por ejemplo, crean imágenes fijas periódicas del sistema de archivos, lo cual duplicaría también el archivo wallet.dat.

En Mac OS, el equivalente de shred es srm (introducido a partir de Leopard). Al usar Finder para eliminar archivos, habrá que hacer clic en "Secure Empty Trash" el menú de Finder para que el sistema aniquile los contenidos de la papelera de reciclaje. Como en cualquier otro sistema operativo, esto no es garantía de que no puedan existir otras copias en otra ubicación en el sistema.

Para Windows, la orden nativa cipher /W se encarga de aniquilar todos los archivos que han sido eliminados anteriormente. La aplicación CyberShredder puede destruir con seguridad archivos individuales.

Monederos en línea y móviles

Hasta aquí, en este artículo se ha analizado la seguridad del archivo monedero que utilizan los clientes originales Bitcoin-QT y bitcoind. Este archivo monedero está accesible únicamente en el ordenador en que se ha instalado. En los últimos años han aparecido también otras aplicaciones y servicios de monedero Bitcoin que presentan otras características y mayor facilidad de uso, pero a costa de introducir riesgos añadidos. Cuando se guardan los bitcoins en un eWallet como Instawallet o Easywallet, es en definitiva el proveedor del servicio el que almacena el monedero con sus claves privadas.

Los monederos en línea tienen pros y contras que han de tenerse en cuenta. Por ejemplo, permiten acceder al monedero desde cualquier ordenador en el mundo; pero, dependiendo de las características del sistema, los bitcoins podrían perderse si el servicio se ve comprometido.

Las aplicaciones de monedero para dispositivos móviles disponibles para Android permiten enviar bitcoins mediante códigos QR o a través de NFC, pero esto entraña el riesgo de pérdida si se ve comprometido el propio dispositivo móvil. Puede ser posible cifrar y hacer copias de seguridad del monedero o de las claves privadas en tales dispositivos móviles, pero no es recomendable almacenar sumas grandes de bitcoins sin investigar y evaluar las posibilidades.

Véase también