Frases de recuperación
Las billeteras de BitTool Signer son billeteras BIP39 estándar. Una frase creada en BitTool Signer se restaura en cualquier billetera BIP39 que use las mismas rutas de derivación, y una frase de otra billetera se puede importar.
Creación de una billetera
La creación tiene cuatro pasos:
- Generar. El usuario le pone nombre a la billetera, elige 24 palabras (valor predeterminado) o 12 palabras, y puede agregar una passphrase BIP39 (frase de contraseña adicional). La frase se genera en el dispositivo a partir del CSPRNG del sistema (detalles).
- Respaldar. La frase se muestra en una de las formas de respaldo que se describen abajo.
- Comprobar. Todas las palabras se ocultan y cuatro posiciones (cinco para 18 palabras o más) quedan en blanco. El usuario completa los espacios tocando palabras desordenadas en el orden correcto. Un error borra el intento.
- Establecer la contraseña de la billetera. Esta contraseña cifra la frase en este teléfono (detalles).
El índice público (direcciones y xpubs) se deriva y se guarda antes de que la billetera aparezca en la lista, así que el emparejamiento funciona de inmediato.
Formas de respaldo
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; además, una captura de pantalla muestra una advertencia para que se elimine la imagen.
Palabras
Las 12 o 24 palabras en una cuadrícula numerada: el respaldo que la mayoría de las personas debería anotar.
Código QR
Un código QR en texto plano con las palabras separadas por espacios simples, para trasladar la billetera a otro dispositivo propio. Cualquier billetera que importe una frase desde un código QR puede leerlo, y BitTool Signer lo vuelve a leer con la escritura 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, con un desplazamiento de 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 de la cantidad de palabras, así que las tarjetas hechas en momentos distintos, o en otro dispositivo, siempre encajan entre sí. Cada tarjeta indica las posiciones que omite.
Aun así, una sola tarjeta revela dos tercios de la frase. Lo que queda por adivinar son 11 bits por cada palabra faltante, menos los bits del checksum:
| Palabras | Faltantes por tarjeta | Por adivinar |
|---|---|---|
| 12 | 4 | 40 bits: factible para un atacante decidido |
| 15 | 5 | 50 bits |
| 24 | 8 | 80 bits |
Para frases de 12 y 15 palabras, la app advierte al usuario que proteja cada tarjeta como si fuera la frase completa, o que use 24 palabras. Las tarjetas de recuperación nunca incluyen la passphrase.
Qué se almacena
La bóveda guarda la frase como palabras canónicas (Unicode NFC) y la passphrase BIP39 exactamente como se escribió. La frase y la passphrase nunca se escriben en un archivo de texto plano, nunca salen del teléfono y no forman parte de ningún código QR, salvo el código QR explícito de la frase de recuperación descrito arriba.