¿Cómo firmar una transacción usando solo una computadora fuera de línea?

Creo que es posible generar claves en una computadora fuera de línea y firmar. Para crear una transacción, necesito ingresar los detalles de las transacciones y, de alguna manera, tengo que transferir la transacción firmada desde una computadora fuera de línea a una computadora en línea para transmitir la transacción.

¿Es posible hacer esto sin usar el almacenamiento USB? Puedo usar un teclado o un lector de código de barras para transferir el hash de la transacción de entrada a una computadora fuera de línea y la transacción firmada de regreso a la computadora en línea. Entonces esa clave privada permanece con la computadora fuera de línea.

¿Cuáles son las instrucciones paso a paso para hacer esto, con cualquier verificación/corrección de error requerida?

Siempre que la computadora fuera de línea pueda firmar el mensaje y generar un código QR, el proceso debería ser muy sencillo.

Respuestas (2)

Tiene razón en que el nodo fuera de línea necesita cómo reclamar sus fondos, por lo que no puede estar totalmente aislado.

Actualmente, la solución de billetera fuera de línea más madura es a través de un cliente llamado Bitcoin Armory . Así es como se ve su flujo de trabajo con billeteras fuera de línea:

El nodo en línea crea la transacción -> Llave USB -> La computadora fuera de línea firma la transacción -> Llave USB -> Transacción de transmisión del nodo en línea

Puede usar Windows, Linux o Mac para su billetera fuera de línea, pero recomendaría Linux, ya que es difícil deshabilitar AutoRun/AutoPlay en Windows.

Descargar:

Esta página explica las transacciones fuera de línea con mayor detalle.

gracias por la referencia ¿Es posible omitir la parte de "unidad USB"?
@vi.su. Necesita alguna forma de obtener las entradas/índice en la computadora fuera de línea, y alguna forma de obtener las transacciones firmadas. Puede hacerlo escribiéndolos manualmente, pero eso parece demasiado difícil.
Actualmente uso una memoria USB para copiar transacciones sin firmar a una computadora fuera de línea donde las firmo, luego uso la misma memoria USB para copiarlas nuevamente a una computadora en línea. Pero hoy leí arstechnica.com/security/2013/10/… que es bastante aterrador si es cierto. Me gustaría encontrar una manera de usar códigos QR para transmitir la información requerida entre computadoras en lugar de una memoria USB para evitar este riesgo de infección.
La transacción sin firmar en sí misma es lo suficientemente pequeña como para caber en un código QR, pero la computadora fuera de línea también necesita acceso a las transacciones de entrada para la transacción que está tratando de firmar, que actualmente proporciono copiando un archivo de billetera también. Los archivos de la cartera son demasiado grandes para caber en un código QR.
El vínculo "Esta página" en la última línea está desactualizado. bitcoinarmory.com/about/using-our-wallet/#offlinewallet es quizás el nuevo enlace.
@ChrisMoore "El enlace "Esta página" en su última línea está desactualizado". Gracias. "Me gustaría encontrar una manera de usar QRcodes para transmitir la información requerida" Esa es una idea interesante, pero probablemente esté fuera del alcance de esta pregunta.
¿Tú crees? La pregunta decía "¿Es posible hacer esto sin usar el almacenamiento USB?" por lo que una respuesta con códigos QR parecería ser exactamente lo que estaba buscando.
El enlace a la página explicativa parece estar desactualizado nuevamente.

Estoy trabajando en esto ahora mismo. Actualmente, tengo un arsenal en línea y fuera de línea configurado para usar la llave USB como se ha descrito aquí antes. Acabo de crear una nueva aplicación para Android que se emparejará con la red de bitcoin y le permitirá escanear un código QR que represente CUALQUIER transacción firmada y transmitirlo a los pares. Esto hace que puedas hacer esto:

  • Hacer una transacción sin firmar en armería
  • Crea un código QR a partir de él.
  • Escanéelo con el teléfono (hasta ahora, QR Droid y Barcode Scanner funcionan)
  • Llevar el teléfono a la billetera fuera de línea
  • Muestra el código QR para la transacción sin firmar en el teléfono (usar el historial en el droide QR funciona bien)
  • Escanee usando la cámara web en una computadora de billetera fuera de línea (lo hice con éxito con la aplicación zbar Linux en Ubuntu; detalles del paquete a continuación)
  • Firma tx con armería fuera de línea
  • Mostrar código QR para tx firmado (más paquetes a seguir)
  • Escanea con la nueva aplicación de Android para transmitir

Esto casi ha terminado: la aplicación actualmente se empareja con los nodos de bitcoin y escaneará el código QR y lo enviará a una actividad de transmisión, pero la parte de transmisión y el análisis del formato del arsenal permanecen.

ACTUALIZACIÓN: Implementado. Ver el vídeo

Código Python aquí

Código de la aplicación de Android aquí

Esta explicación no ayuda demasiado al autor de la pregunta, ¿podría ampliar los bits "crear una transacción" y "firmar tx con un arsenal fuera de línea"?
Agregué un video que muestra todo el proceso. Se supone que sabe cómo realizar una transacción fuera de línea en la armería, que se describe aquí . Todo lo que tiene que hacer es convertir el texto de la transacción sin firmar en un código QR (utilicé QREncoder de App Store en mi Mac para hacer esto), luego siga los pasos en el video. Pronto publicaré los guiones y los vincularé desde el video y probablemente aquí.