Cómo asegurar su monedero

De Bitcoin Wiki
Revisión del 18:36 18 oct 2012 de Nubarius (discusión | contribuciones) (Continúo traducción)
Saltar a: navegación, buscar

Introducción

La seguridad de un monedero Bitcoin comprende dos metas independientes:

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

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

  1. La creación de un nuevo monedero seguro, utilizando 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 peligros 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 arrancar 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 dentro de una 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 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 sesisón para que no queden archivos abiertos. Si no, 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.

En construcción (18 oct. 2012)


Véase también