Frases de recuperación
Las carteras de BitTool Signer son carteras BIP39 estándar. Una frase creada en BitTool Signer se puede restaurar en cualquier cartera BIP39 que use las mismas rutas de derivación, y una frase de otra cartera se puede importar.
Crear una cartera
La creación tiene cuatro pasos:
- Generar. El usuario pone nombre a la cartera, elige 24 palabras (por defecto) o 12 palabras y puede añadir una passphrase BIP39 (frase de contraseña adicional). La frase se genera en el dispositivo a partir del CSPRNG del sistema (detalles).
- Hacer la copia de seguridad. La frase se muestra en una de las formas de copia de seguridad que se describen más abajo.
- Comprobar. Todas las palabras se ocultan y cuatro posiciones (cinco a partir de 18 palabras) quedan como huecos. El usuario rellena los huecos tocando, en el orden correcto, palabras presentadas de forma desordenada. Un error borra el intento.
- Definir la contraseña de la cartera. Cifra la frase en este móvil (detalles).
El índice público (direcciones y xpubs) se deriva y se guarda antes de que la cartera aparezca en la lista, de modo que la vinculación funciona de inmediato.
Formas de copia de seguridad
Todas las formas empiezan ocultas y aparecen con un toque. Hacer una captura de pantalla, grabar la pantalla o salir de la app las vuelve a ocultar; una captura de pantalla también muestra un aviso para que se elimine la imagen.
Palabras
Las 12 o 24 palabras en una cuadrícula numerada: la copia de seguridad que la mayoría de la gente debería anotar.
Código QR
Un código QR de texto plano con las palabras separadas por espacios simples, para trasladar la cartera a otro dispositivo propio. Cualquier cartera que importe una frase desde un código QR puede leerlo, y BitTool Signer lo vuelve a leer con la ortografía exacta. Nunca incluye la passphrase BIP39. La app nunca ofrece guardarlo, imprimirlo ni compartirlo.
Tarjetas de recuperación (2 de 3)
Las palabras se reparten en tres tarjetas, de modo que dos tarjetas cualesquiera restauran la frase completa, pero una sola tarjeta no. Las posiciones se organizan en filas de tres, y cada tarjeta omite una palabra por fila, desplazándose una posición en cada fila:
card index (0, 1, 2) that leaves out word position p (0-based) = (⌊p / 3⌋ + p mod 3) mod 3
Para 12 palabras:
| Posición | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Tarjeta 1 | — | ✓ | ✓ | ✓ | ✓ | — | ✓ | — | ✓ | — | ✓ | ✓ |
| Tarjeta 2 | ✓ | — | ✓ | — | ✓ | ✓ | ✓ | ✓ | — | ✓ | — | ✓ |
| Tarjeta 3 | ✓ | ✓ | — | ✓ | — | ✓ | — | ✓ | ✓ | ✓ | ✓ | — |
La disposición depende solo del número de palabras, así que las tarjetas creadas en momentos distintos, o en otro dispositivo, siempre encajan entre sí. Cada tarjeta indica las posiciones que omite.
Una sola tarjeta sigue revelando dos tercios de la frase. Lo que queda por adivinar son 11 bits por cada palabra que falta, menos los bits del checksum:
| Palabras | Faltan por tarjeta | Quedan por adivinar |
|---|---|---|
| 12 | 4 | 40 bits: factible para un atacante decidido |
| 15 | 5 | 50 bits |
| 24 | 8 | 80 bits |
Con frases de 12 y 15 palabras, la app advierte al usuario de que debe custodiar cada tarjeta como si fuera la frase completa, o de que use 24 palabras. Las tarjetas de recuperación nunca incluyen la passphrase.
Qué se guarda
La bóveda guarda la frase como palabras canónicas (Unicode NFC) y la passphrase BIP39 exactamente tal como se escribió. La frase y la passphrase nunca se escriben en un archivo de texto plano, nunca salen del móvil y no forman parte de ningún código QR, salvo el código QR explícito de la frase de recuperación descrito más arriba.