Recuperación de claves

Fystack Recovery reconstruye sin conexión las claves privadas de una billetera a partir de un número mínimo (umbral) de partes de la clave. Úsalo para dejar Fystack, migrar una billetera o recuperar fondos si Fystack no está disponible.

Descripción general

La parte de Fystack se exporta desde el dashboard como un paquete .enc sellado con RSA, la parte del cosigner se exporta como un .mshare sellado con frase de contraseña, y Fystack Recovery, en una máquina aislada, las desbloquea, combina y verifica para obtener claves ECDSA y EdDSA
Click to open the full-size diagram

Cada firmante exporta su propia parte, cifrada:

  • Parte de Fystack: se exporta desde el dashboard como un paquete RSA .enc, sellado con una clave pública RSA que tú proporcionas.
  • Parte del cosigner: se exporta con cosigner-cli export como un archivo .mshare, sellado con una frase de contraseña de seis palabras.

Fystack Recovery desbloquea cada archivo, combina las partes y verifica el resultado contra las claves públicas de la billetera. Una sola parte no puede reconstruir una clave.

Secuencia de recuperación: generar un par de claves RSA, exportar la parte de Fystack desde el dashboard, exportar la parte del cosigner y luego agregar, desbloquear, combinar y verificar las partes en Fystack Recovery
Click to open the full-size diagram

Antes de empezar

Descarga la última versión de Fystack Recovery mientras todavía tienes conexión y luego muévela a la máquina sin conexión. Es de código abierto, así que puedes revisarla y compilarla tú mismo.

Paso 1: Genera un par de claves RSA

La parte de Fystack se sella con tu clave pública RSA. Genera el par de claves en la máquina sin conexión y conserva allí la clave privada.

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out recovery.key
openssl rsa -in recovery.key -pubout -out recovery.pub

Solo recovery.pub sale de la máquina sin conexión.

Paso 2: Exporta la parte de Fystack

Abre la billetera en el dashboard y ve a la pestaña Signers. El firmante de Fystack tiene un botón Export Share.

Pestaña Signers de la billetera que muestra el firmante interno de Fystack con un botón Export Share y un cosigner de servidor
Pestaña Signers de una billetera de 2 de 2
  1. Haz clic en Export Share.
  2. Pega el contenido de recovery.pub en Recipient RSA public key (PEM).
  3. Escribe el nombre de la billetera para confirmar y marca la casilla de reconocimiento.
  4. Haz clic en Export Share para descargar el paquete .enc.
Diálogo Export Key Share con la clave pública RSA del destinatario, la confirmación del nombre de la billetera y la casilla de reconocimiento
La parte se cifra de extremo a extremo con tu clave pública RSA

Solo quien posea la clave privada RSA correspondiente puede descifrar el paquete.

Paso 3: Exporta la parte del cosigner

En el host del cosigner, detén el cosigner y ejecuta export. Escribe un .mshare por billetera y muestra una frase de contraseña de recuperación una sola vez. Consulta Operaciones para más detalles.

cosigner-cli stop
cosigner-cli export --out-dir /secure/recovery
cosigner-cli start
Salida de cosigner-cli export que lista los archivos .mshare escritos y la frase de contraseña de recuperación de un solo uso
Ejemplo de salida de cosigner-cli export

Cada archivo se llama <wallet-id>-<cosigner>-<date>.mshare. Copia a la máquina sin conexión el archivo de la billetera que estás recuperando.

Paso 4: Agrega y desbloquea las partes

Abre Fystack Recovery en la máquina sin conexión y haz clic en Add share file.

Paso 1 de Fystack Recovery, Add and unlock shares, todavía sin partes agregadas
Agrega todas las partes que tengas

Recovery admite ambos formatos:

  • Paquete RSA (.enc): se desbloquea con la clave privada RSA del Paso 1.
  • Frase de contraseña (.mshare): se desbloquea con la frase de contraseña de seis palabras del Paso 3.

Agrega todas las partes que tengas. No hay que introducir ningún umbral: los contadores muestran cuántas partes ECDSA y EdDSA están desbloqueadas respecto del total de participantes de la billetera.

Recovery con el paquete RSA desbloqueado y la parte con frase de contraseña a la espera de su frase, 1 de 2 participantes desbloqueados
El paquete RSA está desbloqueado, el .mshare espera su frase de contraseña

Introduce la frase de contraseña y haz clic en Unlock. Cuando todas las partes muestren Unlocked, haz clic en Continue.

Recovery con ambas partes desbloqueadas, 2 de 2 participantes para ECDSA y EdDSA
Ambas partes desbloqueadas

Para billeteras HD, agrega también en Child wallets la lista de billeteras hijas exportada junto con la parte maestra, para recuperar todas las billeteras hijas.

Paso 5: Recupera

Revisa el ID de la billetera y el conteo de partes, y luego haz clic en Recover keys.

Paso Recover que muestra el ID de la billetera y 2 partes ECDSA y 2 EdDSA listas para combinar
Revisa antes de reconstruir

Paso 6: Usa las claves recuperadas

Recovery combina las partes y luego verifica cada clave contra la clave pública de la billetera y realiza una firma de prueba con ella. Ambas comprobaciones deben superarse.

Página de claves recuperadas que muestra la clave ECDSA verificada y con firma de prueba, con su dirección de Ethereum, clave privada y clave pública, seguida de la clave EdDSA
Claves ECDSA y EdDSA verificadas

Para cada curva, el resultado muestra:

  • ECDSA: la dirección de Ethereum / EVM, la clave privada (hex) y la clave pública comprimida.
  • EdDSA: la dirección de Solana, la clave privada y la clave pública.

La clave privada permanece oculta hasta que haces clic en Reveal. Usa Copy o Export... para trasladarla a la billetera de destino y luego haz clic en Start over para borrarla de la memoria.

Lista de verificación de seguridad

  • Ejecuta Recovery en una máquina aislada (air-gapped). Mantente sin conexión y nunca hagas capturas de pantalla de las claves recuperadas.
  • Mantén la clave privada RSA y la frase de contraseña del cosigner separadas de los archivos de las partes.
  • Mueve los fondos a una nueva billetera una vez recuperados. La billetera anterior ya no tiene protección por umbral.
  • Elimina los archivos de las partes, la clave privada RSA y cualquier clave exportada cuando termines.