¿Pueden las claves privadas permanecer fuera de línea durante toda su vida?

Soy nuevo en Bitcoin y esta pregunta se basa en 3 suposiciones que pueden ser incorrectas.

Suposición 1: si entiendo correctamente, la dirección de Bitcoin se genera algorítmicamente independiente de la red, por lo que debería poder crear una dirección pública y una clave privada sin conexión, ¿correcto?

Suposición 2: Puedo recibir fondos a través de la red utilizando mi dirección pública sin tener que dar a conocer mi clave privada a nadie, ¿correcto?

Suposición 3: ahora, cuando sea el momento de gastar mis fondos, sin conexión, puedo crear una transacción de Bitcoin que autorice la transferencia desde mi dirección a otra ubicación y firmarla con mi clave privada completamente fuera de línea. ¿Puedo luego transferir esa transacción a una computadora separada con acceso a Internet y luego publicar esa transacción en la red de Bitcoin para ser extraída/verificada en la cadena de bloques?

Conclusión: si los 3 puntos son ciertos, entonces debería poder mantener mi clave privada de Internet durante toda su vida, ¿correcto?

Sí, solo el quisquilloso es el supuesto 3, la transacción no es solo "pagar desde mi dirección a otra(s) dirección(es)", sino "pagar desde la(s) transacción(es) xyz a otra(s) dirección(es)". Lo que esto significa en la práctica es que preparará la transacción en una computadora en línea, la firmará en la computadora fuera de línea y luego la publicará desde la computadora en línea.

Respuestas (1)

Sí, las tres suposiciones son correctas. Puede, con un poco de esfuerzo, mantener sus claves privadas fuera de línea durante toda su vida.

Una descripción de cómo firmar transacciones fuera de línea se encuentra aquí: ¿Cómo firmar una transacción usando solo una computadora fuera de línea?


Agregar un poco de detalle sobre el Supuesto 3 en la línea del comentario de Tim S.: una computadora que está fuera de línea obviamente no recibirá actualizaciones de la red, por lo que tampoco sabrá qué salidas de transacciones están disponibles para gastar. Esto podría mitigarse importando los datos de la cadena de bloques a la computadora fuera de línea (por ejemplo, con el bootstrap.dat).

Sin embargo, sería mucho más fácil crear una configuración de dos billeteras, donde una billetera en línea solo conoce las direcciones y la billetera fuera de línea tiene las claves privadas. Luego crea la transacción en la billetera en línea, que tiene la información de la transacción y la firma en la billetera fuera de línea. Eso es lo que se describe en la pregunta vinculada anterior también.

Actualización en 2017: la creación de una transacción en el dispositivo en línea y la firma en el dispositivo fuera de línea es esencialmente lo que hacen las billeteras de hardware como Trezor.

También existen soluciones como Ledger Wallet en las que las claves privadas se guardan en un chip de hardware y nunca abandonan el hardware; realiza la firma en el chip.