Almacenamiento de claves privadas

La mayoría de las aplicaciones web que aceptan bitcoins (ya sea un intercambio, un sitio de apuestas, etc.) brindan al usuario una dirección pública para depositar bitcoins en su cuenta.

¿Cómo almacenan estas aplicaciones web la clave privada asociada con la dirección de depósito? ¿Cuál es la mejor práctica para el almacenamiento de claves privadas desde el punto de vista de la seguridad? ¿Cuál es el mejor procedimiento de almacenamiento para los desarrolladores web que buscan crear grandes cantidades de pares de claves para sus aplicaciones web?

Respuestas (2)

Si solo necesita direcciones de recepción, solo necesita una tabla para ellas junto con una columna que marca para evitar que se use por segunda vez.

Las claves se pueden generar a granel: - http://bitcointalk.org/index.php?topic=101708.0

Ahora, el hecho de que no esté guardando la clave privada en el host web no significa que la seguridad pueda ser laxa. Si un host se viera comprometido, el atacante podría reemplazar las direcciones de Bitcoin en la tabla con direcciones bajo el control del atacante.

Para situaciones en las que el cliente de Bitcoin necesita enviar transacciones, un método de billetera fría/billetera caliente ayudará a disminuir el daño en caso de que el sistema se vea comprometido.

Aquí hay información adicional para proteger los servicios en línea:

Generalmente, las claves públicas se generan a partir de un generador público y las claves privadas se generan a partir del generador privado correspondiente, almacenadas en una máquina de alta seguridad. No se permite la comunicación con la máquina que contiene el generador privado.

Debe saber que las claves de Bitcoin pueden ser generadas por generadores. El generador público genera una serie de claves y direcciones públicas mientras que el generador privado correspondiente genera la serie correspondiente de claves privadas. No hay forma de determinar el generador privado dado el generador público.

El flujo es así:

  1. Se necesita una nueva dirección pública.

  2. Se asigna la siguiente dirección pública mediante el generador público.

  3. La máquina que contiene el generador privado ya está observando cada pago y detectará cualquier pago a una clave generable desde su generador privado.

  4. Cuando se realiza un depósito, la máquina generadora privada detecta el depósito y emite una transacción para transferir los fondos a una billetera caliente o fría adecuada. (O espera hasta que la billetera caliente esté baja, o lo que sea que esté programado para hacer).

  5. La máquina regular también nota el depósito (porque conoce las claves públicas) y acredita al usuario.

La matemática es (¡demasiado simplificada!):

Generador privado: P (un número aleatorio de 256 bits)
Generador público: GxP (P por la constante del generador, un punto EC)
ID de cuenta: I (un número creciente)
Clave pública de cuenta: GxHash(I) + GxP (punto EC)
Clave privada de la cuenta: P+Hash(I) (número de 256 bits)

Esto funciona porque Gx(P + Hash(i)) = GxHash(I) + GxP
Entonces, la clave privada de la cuenta es la clave privada correspondiente a la clave pública de la cuenta. La clave pública de la cuenta se puede generar a partir del ID de la cuenta y el generador público. La clave privada de la cuenta se puede generar a partir del ID de la cuenta y el generador privado. No se pueden generar claves privadas sin el generador privado.