Una forma de asegurar el almacenamiento en línea
Una cosa que podría ser de gran ayuda para asegurar cualquier archivo de datos de interés para el acceso es hacer uso del Control de Acceso Obligatorio (SELinux en este ejemplo) y una segunda máquina, posiblemente con espacio en el aire. Necesitará un pequeño programa que se ejecuta en la máquina de billetera (lo llamaré banker
para esta publicación) cuyo trabajo es generar desafíos y liberar monedas solo a las solicitudes autenticadas correctamente.
Confiamos en SELinux para hacer lo siguiente: evitar la lectura, escritura y permiso para cambiar el acceso a los archivos de bitcoin y de semilla de autenticación a todas las aplicaciones, excepto banker
y todo lo que genere. También confiamos en SELinux para evitar que salga del modo de ejecución sin un reinicio del sistema.
El banker
autentica cualquier retiro imprimiendo un valor de semilla aleatorio y la salida HMAC correspondiente generada al combinar el valor de semilla con su semilla de autenticación. Esta semilla de autenticación se guarda en otro lugar, tal vez en tu teléfono. Puede usar cualquier método que desee para intercambiar la solicitud firmada, como correo electrónico, scp, interfaz web o tomar una fotografía de un código QR y ejecutarla a través de su propia aplicación en el teléfono, luego tomar una fotografía de ese código con la camara de tu computadora ¡Enloquecer! También puede hacer uso de un contador incremental que nunca permite que una solicitud de número igual o inferior tenga éxito para realizar autenticaciones unidireccionales, o si se siente muy elegante, puede usar GnuPG y una OpenPGP tarjeta inteligente para autenticar con un pinpad.
Caduca cualquier solicitud después de un cierto período de tiempo: de cinco minutos a una hora, dependiendo de qué tan rápido se sienta. Expire cualquier solicitud que funcione de inmediato para que no puedan reproducirse. No es que lo recomiende (la defensa en profundidad siempre es sensata), pero en teoría esto debería permitirle permitir que alguien inicie sesión en su máquina como root y aún así no pueda robar sus monedas.
La seguridad de su almacenamiento sin conexión
Me di cuenta de que en realidad no respondí a tu pregunta inicial, así que aquí está el seguimiento: estás tratando de defenderte contra la pérdida de tu dinero de una de estas dos formas:
- Alguien roba tu billetera
- Pierdes tu billetera
En ambos casos de almacenamiento fuera de línea, está protegido si no estaba comprometido antes de que los datos se imprimieran y borraran de la memoria de la computadora. La segunda parte es una gran advertencia: si está imprimiendo archivos, pueden dejarse como archivos temporales en algún lugar del disco.
Ambos sistemas son aproximadamente iguales para el riesgo de pérdida. Su contraseña debe ser muy larga y compleja. Si olvida o pierde el papel donde está escrita su contraseña, su billetera se pierde, en esencia, en un incendio. Si pierde el papel en el que están impresos sus valores individuales, sucede lo mismo.