diff --git a/README.md b/README.md index 450a986..10456a5 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,24 @@ # SeedSigner — guía completa -*Montar, verificar y usar un firmante de Bitcoin **air-gapped** —sin cable, WiFi ni Bluetooth— con componentes económicos y sin comprar nada relacionado con Bitcoin.* +*Montar, verificar y usar un firmante de Bitcoin **air-gapped** —sin cable, WiFi ni Bluetooth— con componentes genéricos y sin comprar nada relacionado con Bitcoin.* + +> Guía en castellano, libre y verificable. **[CC BY-SA 4.0](LICENSE)** — cópiala, tradúcela y adáptala. +> ¿Un error, un dato desactualizado, un paso que no funciona en tu aparato? [Corrígelo](CONTRIBUTING.md), no hace falta pedir permiso. --- -## Qué es esto y qué no +## Cómo usar esta guía -SeedSigner es un **firmante** (*signing device*), no una wallet. No guarda tu seed: la mantiene en memoria mientras está enchufado y **la olvida por completo al desconectarlo**. Esa propiedad —ser *stateless*— es su rasgo definitorio y la razón de casi todo lo que hace raro. +No está pensada para leerse de una sentada, sino para volver a ella. Tiene tres puertas de entrada según dónde estés: -Tres cosas que conviene tener claras antes de montar una: +| Si estás… | Empieza en | +|---|---| +| **Decidiendo si te metes** | «Qué es esto y qué no» y luego la Parte V (limitaciones). Y prueba el [simulador](#26-el-simulador-probarlo-sin-comprar-nada) antes de gastar nada | +| **Con las piezas encima de la mesa** | Parte I completa, en orden, sin saltarte el test de I/O | +| **Con el aparato ya montado, generando la seed** | Parte II | +| **Usándolo desde hace tiempo y vienes a consultar algo** | Parte III, o directamente la **chuleta** del final | -1. **Tu backup en papel o metal ES el dispositivo.** No hay copia en el aparato. Si pierdes el papel, no hay nada que recuperar de la SeedSigner. Esto asusta al principio y luego resulta liberador: el hardware es desechable y se reemplaza por poco dinero. -2. **No tiene WiFi ni Bluetooth** (en la Pi Zero 1.3, que es la recomendada). Es lo que se llama **air-gapped**: sin ninguna conexión posible con otro ordenador. Solo puede *recibir* datos leyendo códigos QR con la cámara, y solo *enviar* mostrando QR en su pantalla. Aunque el software quisiera filtrar tu seed, no tendría por dónde. -3. **La montas tú.** Eso es una ventaja de seguridad (no hay cadena de suministro que comprometer, no hay paquete que interceptar) y un coste de tiempo real. - -> **Esta guía cubre el aparato, no el método.** El **porqué** —por qué generar tu propia entropía, cómo verificarla, cómo diseñar una passphrase, cómo comprobar el backup— está en la [guía de autocustodia verificable](https://git.bitcointxoko.org/pikaro/autocustodia-verificable), es libre igual que esta, y aquí no se repite. Los pasos de este documento dan por supuesto ese porqué: si no lo tienes, empieza por ahí. - -> **Cuatro palabras que van a salir mucho.** El **firmware** es el programa que corre dentro del aparato: no es una app que instalas encima, es su software propio y se actualiza aparte. **Air-gapped** significa sin ninguna conexión posible con otro ordenador — ni cable, ni WiFi, ni Bluetooth. El **xpub** (o **zpub**, el mismo dato escrito de otra forma) es tu clave pública extendida: sirve para generar tus direcciones y ver tu saldo, pero **no para gastar**. Y **GPG** es la herramienta con la que compruebas que un fichero descargado lo firmó quien dice y nadie lo ha manipulado por el camino. -> -> El **fingerprint** (o **XFP**) aparece a partir de la sección 10: son ocho caracteres que identifican tu wallet sin revelar nada de ella, y con los que compruebas que estás donde crees que estás. - -**Estado de la información:** agosto de 2026, versión **0.8.7** ("The Summer of SeedSigner", 8 de julio de 2026). Contrasta siempre con el [repositorio oficial](https://github.com/SeedSigner/seedsigner) antes de seguir cualquier paso técnico. Si algo aquí lo contradice, gana el repositorio. - -> ⚠️ **El README del repositorio va por detrás de las releases, y más de lo que parece.** El README que acompaña **al propio tag `0.8.7`** sigue diciendo "descarga la versión actual (0.8.6)" y lista ficheros `0.8.6` en toda su tabla. Los ficheros reales de esa release sí se llaman `0.8.7`. -> -> **Fíate de la lista de ficheros de la [página de releases](https://github.com/SeedSigner/seedsigner/releases), no del texto del README.** Es un caso pequeño del principio de toda esta guía: la documentación envejece, y lo que manda es el artefacto, no lo que se dice sobre él. +**Las partes I y II se hacen una vez. La parte III es la que vas a releer durante años.** Está escrita para eso: entradas cortas, cada una respondiendo a una pregunta que te vas a hacer con el aparato en la mano. --- @@ -34,10 +28,10 @@ Esto no se hace en una tarde: hay que pedir piezas y esperar a que lleguen. Sabe | Cuándo | Qué haces | |---|---| -| **Al empezar** | Decidir el modelo y pedir las piezas (Sección 1) | -| **Mientras esperas** | Descargar y **verificar** el software (Sección 5), grabar la MicroSD (6), y trastear el [simulador](#13-pruébalo-antes-de-comprar-el-simulador) para llegar con el menú aprendido | -| **El día que llega el paquete** | Montar (4), arrancar y hacer el test de I/O (7), pasar el vector de prueba (10.1) | -| **Un día que empieces tranquilo** | Generar la seed real (10.2), passphrase (Sección 5 de la guía del método), wallet en Sparrow (12), backup y su verificación | +| **Al empezar** | Decidir el modelo y pedir las piezas (§1). Si tu placa lleva radio, planificar lo de §3 | +| **Mientras esperas** | Descargar y **verificar** el software (§5), grabar la MicroSD (§6), y trastear el [simulador](#26-el-simulador-probarlo-sin-comprar-nada) para llegar con el menú aprendido | +| **El día que llega el paquete** | Montar (§4), arrancar y hacer el test de I/O (§7), pasar el vector de prueba (§10) | +| **Un día que empieces tranquilo** | Generar la seed real (§11), verificación cruzada (§12), passphrase (§19), wallet en Sparrow (§16), backup y su verificación (§14) | | **Unos días después** | Volver a verificar el backup en frío, y ensayar el ciclo de firma en red de pruebas | Dos cosas de ese reparto no son negociables: @@ -48,12 +42,32 @@ Dos cosas de ese reparto no son negociables: --- +## Qué es esto y qué no + +SeedSigner es un **firmante** (*signing device*), no una wallet. No guarda tu seed: la mantiene en memoria mientras está enchufado y **la olvida por completo al desconectarlo**. Esa propiedad —ser *stateless*— es su rasgo definitorio y la razón de casi todo lo que hace raro. + +Tres cosas que conviene tener claras antes de montar una: + +1. **Tu backup en papel o metal ES el dispositivo.** No hay copia en el aparato. Si pierdes el papel, no hay nada que recuperar de la SeedSigner. Esto asusta al principio y luego resulta liberador: el hardware es desechable y reemplazable. +2. **No tiene WiFi ni Bluetooth** (en la Pi Zero 1.3, que es la recomendada). Solo puede *recibir* datos leyendo códigos QR con la cámara, y solo puede *enviar* datos mostrando QR en su pantalla. Aunque el software quisiera filtrar tu seed, no tiene por dónde. +3. **La montas tú.** Eso es una ventaja de seguridad real —no hay pedido a tu nombre, ni lista de clientes, ni paquete que interceptar— y un coste de tiempo real. + +> **Esta guía cubre el aparato, no el método.** El **porqué** —por qué generar tu propia entropía, cómo verificarla, cómo diseñar una passphrase— está en la [guía de autocustodia verificable](https://git.bitcointxoko.org/pikaro/autocustodia-verificable), libre igual que esta. Aquí no se repite, pero lo esencial va resumido donde hace falta, para que este documento se lea solo. + +**Las palabras que más van a salir.** Tu **seed** (o *semilla*) son las 12 o 24 palabras en inglés de las que se derivan matemáticamente todas tus claves y todas tus direcciones; no están «dentro» del aparato. El **fingerprint** son ocho caracteres que identifican una wallet sin revelar nada de ella: es como vas a saber que estás en la correcta. Y **PSBT** es una transacción a medio hacer, sin firmar, que viaja del ordenador al firmante y vuelve firmada. + +**Estado de la información:** septiembre de 2026, software **v0.8.7** («The Summer of SeedSigner», 8 de julio de 2026). Datos verificados contra el código fuente del proyecto, no contra su documentación. Contrasta siempre con el [repositorio oficial](https://github.com/SeedSigner/seedsigner) antes de seguir cualquier paso técnico: si algo aquí lo contradice, gana el repositorio. + +> ⚠️ **El README del repositorio va por detrás de las releases.** Cuando escribimos esto, el texto del README seguía documentando la 0.8.6 mientras la 0.8.7 llevaba semanas publicada. **Mira siempre la [página de releases](https://github.com/SeedSigner/seedsigner/releases), no el README.** Es un caso pequeño del principio de toda la guía: la documentación envejece, la fuente primaria manda. + +--- + ## Índice -- [**Cómo se reparte esto en el tiempo**](#cómo-se-reparte-esto-en-el-tiempo) ← *léelo antes de pedir nada* +**Parte I — Montar** *(se hace una vez)* 1. [Materiales](#1-materiales) -2. [La decisión que hay que tomar antes de comprar: soldar o no](#2-la-decisión-que-hay-que-tomar-antes-de-comprar-soldar-o-no) +2. [Soldar o no: la decisión previa a comprar](#2-soldar-o-no-la-decisión-previa-a-comprar) 3. [Si tu placa lleva radio: desactivarla](#3-si-tu-placa-lleva-radio-desactivarla) 4. [Montaje](#4-montaje) 5. [Descargar y verificar el software](#5-descargar-y-verificar-el-software) @@ -61,79 +75,94 @@ Dos cosas de ese reparto no son negociables: 7. [Primer arranque y test de entrada/salida](#7-primer-arranque-y-test-de-entradasalida) 8. [Recorrido por la interfaz](#8-recorrido-por-la-interfaz) 9. [Configuración recomendada](#9-configuración-recomendada) -10. [Generar tu seed con dados](#10-generar-tu-seed-con-dados) -11. [SeedQR: cargar la seed en segundos](#11-seedqr-cargar-la-seed-en-segundos) -12. [Crear la wallet en Sparrow y firmar una transacción](#12-crear-la-wallet-en-sparrow-y-firmar-una-transacción) -13. [Pruébalo antes de comprar: el simulador](#13-pruébalo-antes-de-comprar-el-simulador) -14. [Resolución de problemas](#14-resolución-de-problemas) -15. [Limitaciones y qué NO hace](#15-limitaciones-y-qué-no-hace) -16. [Fuentes](#16-fuentes) + +**Parte II — Generar la seed** *(se hace una vez, otro día)* + +10. [El vector de prueba](#10-el-vector-de-prueba) +11. [Las 99 tiradas](#11-las-99-tiradas) +12. [Verificación cruzada](#12-verificación-cruzada) +13. [Los otros dos métodos: cámara y elegir palabras](#13-los-otros-dos-métodos-cámara-y-elegir-palabras) +14. [El backup, y cómo se comprueba](#14-el-backup-y-cómo-se-comprueba) +15. [SeedQR: cargar la seed en segundos](#15-seedqr-cargar-la-seed-en-segundos) + +**Parte III — Usar** *(esto es lo que vas a releer)* + +16. [La wallet en Sparrow](#16-la-wallet-en-sparrow) +17. [La rutina de firmar](#17-la-rutina-de-firmar) +18. [Recibir: verificar la dirección](#18-recibir-verificar-la-dirección) +19. [Convivir con la passphrase](#19-convivir-con-la-passphrase) +20. [Multisig, que es su razón de existir](#20-multisig-que-es-su-razón-de-existir) + +**Parte IV — Mantener** + +21. [Actualizar el firmware](#21-actualizar-el-firmware) +22. [Si se rompe, se pierde o te lo quitan](#22-si-se-rompe-se-pierde-o-te-lo-quitan) +23. [Revisión periódica](#23-revisión-periódica) + +**Parte V — Referencia** + +24. [Resolución de problemas](#24-resolución-de-problemas) +25. [Limitaciones y qué NO hace](#25-limitaciones-y-qué-no-hace) +26. [El simulador: probarlo sin comprar nada](#26-el-simulador-probarlo-sin-comprar-nada) +27. [Chuleta de consulta rápida](#27-chuleta-de-consulta-rápida) +28. [Fuentes](#28-fuentes) --- +--- + +# PARTE I — MONTAR ## 1. Materiales | Pieza | Especificación exacta | Trampa | |---|---|---| -| **Raspberry Pi Zero** | **v1.3**, sin WiFi/Bluetooth | Ver abajo ⚠️ | +| **Raspberry Pi Zero** | **v1.3**, sin WiFi/Bluetooth | Ver trampa 2 ⚠️ | | **Pantalla** | Waveshare **1.3" LCD HAT, 240×240 px** | ⚠️ La trampa principal | | **Cámara** | Compatible Pi Zero, sensor **OV5647** (Aokin / AuviPal 5MP 1080p) | El cable es específico del Zero | -| **MicroSD** | Cualquiera, ≥ 4 GB | La imagen ocupa unos 50 MB | -| **Alimentación** | Cargador USB de red o batería externa | ⚠️ Ver abajo | -| **Carcasa** | Open Pill o Orange Pill (impresión 3D) | Opcional para empezar | +| **MicroSD** | Cualquiera, ≥ 4 GB | La imagen ocupa < 42 MB | +| **Alimentación** | Cargador USB de red o batería externa | ⚠️ Ver trampa 3 | +| **Carcasa** | Open Pill u Orange Pill (impresión 3D) | Opcional para empezar | -**Son componentes económicos, fáciles de encontrar y fáciles de ensamblar.** No hay ninguna pieza rara, ninguna requiere herramienta especial, y todas se compran en cualquier tienda de electrónica. - -> **Y esto es lo importante de esa lista: no hay ni un solo componente de Bitcoin.** Una placa de aficionado, una pantalla, una cámara, una tarjeta de memoria. **No estás asociando tu nombre a la compra de una hardware wallet en ningún registro, de ninguna tienda, en ningún país.** -> -> Compara con comprar un aparato hecho: hay un pedido a tu nombre, una dirección de envío, y una lista de clientes en manos de un fabricante — una relación de personas que probablemente tienen bitcoin. Aquí eso no existe. **No hay paquete con tu nombre que interceptar, ni lista en la que aparecer.** -> -> Es una ventaja que no se puede añadir después a un dispositivo comprado. O la tienes desde el principio, o no la tienes. +**Lo que de verdad importa de esta lista, y no es el precio:** son componentes genéricos de electrónica, fáciles de encontrar, y **no hay un solo componente de Bitcoin en ella**. Nadie sabe qué estás montando. No hay pedido a tu nombre en la lista de clientes de un fabricante de hardware wallets, ni paquete identificable que interceptar entre el almacén y tu casa. Esa es la ventaja estructural del aparato, y a diferencia de un precio, no envejece. ### ⚠️ Las tres trampas de la compra - - **1. La pantalla.** Waveshare fabrica varias placas de 1,3 pulgadas que **se parecen muchísimo y no son compatibles**. La que necesitas es la de **240×240 píxeles**. Si compras la de otra resolución, no funciona y no hay forma de arreglarlo por software. Comprueba la resolución en la descripción antes de pagar, no el aspecto de la foto. **2. El modelo de Pi.** La recomendada es la **Pi Zero 1.3**, precisamente porque **no lleva WiFi ni Bluetooth**: la propiedad air-gapped es física, no una opción que puedas desactivar por descuido. -Las "W" y "2W" son más fáciles de encontrar y funcionan, pero llevan radio. Si acabas con una: +Las «W» y «2W» son más fáciles de encontrar y funcionan, pero llevan radio. Si acabas con una: - Sigue siendo utilizable — el software de SeedSigner no usa la radio. -- Puedes **desactivar la radio por hardware**, quitando físicamente un componente. Cómo, con qué riesgo y cómo comprobar que funcionó: **Sección 3**. -- **Importante:** cada modelo usa una imagen distinta y **no son intercambiables**. Ver la tabla del punto 4. +- Puedes **desactivar el WiFi/BT por hardware**. Hay un procedimiento documentado por [DesobedienteTecnologico](https://github.com/DesobedienteTecnologico/rpi_disable_wifi_and_bt_by_hardware) (proyecto en español, por cierto). +- **Importante:** cada modelo usa una imagen distinta y **no son intercambiables**. Ver la tabla de §5.1. -**3. La alimentación.** Es la causa nº 1 de "no me funciona la cámara" y "se reinicia solo". **Una pila de 9V no da suficiente corriente.** Usa un cargador de red decente o una batería externa (power bank) de las normales. Y usa un cable USB de datos-y-carga en buen estado: los cables de carga baratos tienen conductores finos y provocan caídas de tensión que se manifiestan como fallos aleatorios. +**3. La alimentación.** Es la causa nº 1 de «no me funciona la cámara» y «se reinicia solo». **Una pila de 9 V no da suficiente corriente.** Usa un cargador de red decente o una batería externa (*power bank*) de las normales. Y usa un cable USB de datos-y-carga en buen estado: los cables de carga baratos tienen conductores finos y provocan caídas de tensión que se manifiestan como fallos aleatorios. ### Dónde comprar -Cualquier distribuidor de electrónica sirve; no hay una cadena de suministro que proteger porque las piezas son genéricas y el software lo verificas tú. Comprar en tres sitios distintos es incluso mejor: nadie sabe que estás montando un firmante de Bitcoin. +Cualquier distribuidor de electrónica sirve. Comprar en tres sitios distintos es incluso mejor: refuerza justo la ventaja del párrafo de arriba. -Las carcasas impresas se pueden comprar hechas en [BTC Hardware Solutions](https://btc-hardware-solutions.square.site), o imprimirlas: los ficheros están en el [repositorio](https://github.com/SeedSigner/seedsigner/tree/main/enclosures). La **Open Pill** se imprime en ~2 h sin soportes y no necesita tornillería. La **Orange Pill** queda más acabada pero pide 4 separadores M2,5 de 10 mm y tornillos M2,5 de 6 y 12 mm. +Las carcasas impresas se pueden comprar hechas en [BTC Hardware Solutions](https://btc-hardware-solutions.square.site), o imprimirlas: los ficheros están en el [repositorio](https://github.com/SeedSigner/seedsigner/tree/main/enclosures). La **Open Pill** se imprime sin soportes y no necesita tornillería. La **Orange Pill** queda más acabada pero pide 4 separadores M2,5 de 10 mm y tornillos M2,5 de 6 y 12 mm. + +**Y si no tienes impresora 3D ni ganas:** el aparato funciona perfectamente sin carcasa, con el cable de la cámara recogido bajo la pantalla y una goma elástica sujetándolo todo. No es elegante y da igual. --- -## 2. La decisión que hay que tomar antes de comprar: soldar o no +## 2. Soldar o no: la decisión previa a comprar La Pi Zero viene, por defecto, **sin los pines GPIO soldados**. La pantalla se conecta a esos 40 pines (2 filas de 20). Tienes tres caminos: | Opción | Qué implica | Para quién | |---|---|---| -| **Comprar "Pi Zero WH"** | Viene con los pines ya soldados de fábrica | ⭐ **Si dudas, esta.** Cuesta un poco más y te ahorra el único paso que puede arruinar la placa. Ojo: la WH lleva radio (ver trampa 2) | -| **Pines a martillo** (*hammer header*) | Pines con terminación de ojal que se colocan a golpes con una herramienta guía. Sin soldador, sin humo, sin práctica previa | Si quieres montarlo tú entero pero no soldar. Necesitas los pines, la herramienta guía y un **martillo, no un mazo** | +| **Comprar «Pi Zero WH»** | Viene con los pines ya soldados de fábrica | ⭐ **Si dudas, esta.** Te ahorra el único paso que puede arruinar la placa. Ojo: la WH lleva radio (trampa 2) | | **Soldar tú** | 40 puntos de soldadura. No es difícil, pero es la primera vez de mucha gente | Si quieres aprender, o ya tienes soldador | +| **Cabezal a presión** (*hammer header*) | Se clava a martillo, sin estaño. Funciona, menos fiable a largo plazo | Solución de compromiso, y mucha gente no sabe que existe | -**Sobre los pines a martillo**, que es la opción que menos gente conoce: la parte del ojal entra en el agujero de la placa y al martillear se abre, haciendo contacto con el borde metálico. Lo único delicado es **que quede nivelado a lo largo de toda la fila**: martillea de forma pareja, sin ensañarte con un extremo. Es la vía que Lunaticoin recomienda en su guía y funciona bien. - -> 🎥 **Si vas a soldar y nunca lo has hecho**, el proyecto tiene una [demostración de la técnica en una Pi Zero](https://www.youtube.com/watch?v=9cS17JiohjY). Cinco minutos de vídeo valen más que cinco párrafos aquí. - -**Si sueldas, dos consejos que evitan el 90% de los problemas:** +**Si sueldas, dos consejos que evitan la mayoría de los problemas:** - **Suelda antes de montar nada más.** Placa desnuda, buena luz, sin prisa. -- **Una soldadura fría no se ve, se nota.** Si la pantalla no enciende, los botones no responden o el aparato se reinicia, revisa las soldaduras antes que ninguna otra cosa. Es la causa más frecuente. Una soldadura correcta es brillante y con forma de volcán; una fría es mate y abultada. - -> **Si nunca has soldado, no empieces aquí.** Son 40 puntos y hay que hacerlos bien: un puente entre dos pines contiguos puede arruinar la placa. Comprar la versión con los pines ya puestos cuesta poco más y te quita de encima el único paso irreversible de todo el montaje. Aprende a soldar con otra cosa, no con el aparato que va a custodiar tu dinero. +- **Una soldadura fría no se ve, se nota.** Si la pantalla no enciende, los botones no responden o el aparato se reinicia, revisa las soldaduras antes que ninguna otra cosa. Una soldadura correcta es brillante y con forma de volcán; una fría es mate y abultada. --- @@ -143,6 +172,8 @@ La Pi Zero viene, por defecto, **sin los pines GPIO soldados**. La pantalla se c Si acabaste con una **Zero W** o una **Zero 2 W** —son más fáciles de encontrar, y la WH con los pines puestos también lleva radio—, tienes un chip inalámbrico en la placa. Conviene entender qué significa antes de decidir si tocarlo. +**Y hazlo antes de montar**, por el motivo del punto 3.3: la comprobación necesita un sistema con terminal, y SeedSigner OS no lo tiene. + ### 3.1 Las tres capas, y cuál puedes comprobar | | Qué es | ¿Puedes verificarlo tú? | @@ -188,40 +219,25 @@ Ese orden importa: si lo dejas para después, te quedas sin forma de saber si sa ### 4.1 La cámara -Es la pieza más delicada del montaje y donde más gente se equivoca. +Es la pieza más delicada y donde más gente se equivoca. 1. En la Pi Zero, localiza el conector de cámara (el conector plano estrecho, en el borde). -2. **Tira suavemente de las pestañas hacia fuera.** Cuando están hundidas, sujetan el cable; hay que levantarlas para poder insertarlo. -3. Inserta el cable plano **con los contactos dorados mirando hacia la cara inferior de la placa** (la cara sin componentes). Esto es lo que más gente pone al revés. - - -*[Falta foto: el cable bien puesto, contactos dorados a la vista. Si has montado uno, [mándanosla](CONTRIBUTING.md).]* +2. **Tira suavemente de las pestañas hacia fuera.** Cuando están hundidas, sujetan el cable; hay que levantarlas para poder insertarlo. Si empujas con las pestañas hundidas, doblas el cable. +3. Inserta el cable plano **con los contactos dorados mirando hacia la cara inferior de la placa** (la cara sin componentes). **Esto es lo que más gente pone al revés.** 4. Vuelve a presionar las pestañas para fijar el cable. 5. Comprueba que el cable entra recto y hasta el fondo, sin quedar torcido. -> 🎥 **Este es el paso que más gente hace mal, y verlo en movimiento ayuda más que leerlo.** El proyecto lo hace en el [minuto 3:43 de su vídeo de montaje](https://youtu.be/aIIc2DiZYcI?t=223). Si solo vas a ver un trozo de vídeo de toda la guía, que sea ese. +> El proyecto tiene [vídeos oficiales de montaje](https://www.youtube.com/@SeedSigner). Si solo vas a ver un minuto de vídeo en toda tu vida, que sea el del cable de la cámara: es un gesto que se entiende viéndolo y se explica fatal por escrito. -> El cable de la Pi Zero es **más estrecho** que el de las Raspberry Pi grandes. Si compraste una cámara "para Raspberry Pi" genérica, puede venir con el cable ancho y necesitarás un adaptador. **Compruébalo el día que llegue el paquete**, no cuando te sientes a montarlo: si falta el adaptador, es otra semana de espera. +> El cable de la Pi Zero es **más estrecho** que el de las Raspberry Pi grandes. Si compraste una cámara «para Raspberry Pi» genérica, puede venir con el cable ancho y necesitarás el adaptador correcto. Comprueba esto al desembalar. ### 4.2 La pantalla - - Encaja el HAT de Waveshare sobre los 40 pines GPIO. Va en una única orientación posible: la pantalla queda sobre la Pi, y los pines entran todos a la vez. **No fuerces.** Si no entra, algo está desalineado — retíralo y mira los pines. -> ### ✅ Punto de control 1 — montado -> -> Antes de seguir, mira: el cable de la cámara entra recto y hasta el fondo, con los **contactos dorados hacia la cara de abajo** de la placa; la pantalla está encajada sobre los 40 pines sin ninguno doblado ni al aire; y **no has metido nada en la carcasa todavía**. -> -> Si algo de eso no cuadra, arréglalo ahora. Después de este punto, cada problema cuesta el triple de encontrar. - ### 4.3 La carcasa (después de probar) -Una vez que hayas confirmado que arranca, la pantalla pinta, los botones responden y la cámara ve, ya puedes encajarlo en la Open Pill o atornillar la Orange Pill. - -> 🎥 El proyecto tiene el proceso completo en vídeo para las dos: [Open Pill](https://www.youtube.com/watch?v=gXPFJygZobE) (la simple, sin tornillería) y [Orange Pill](https://www.youtube.com/watch?v=aIIc2DiZYcI) (la de acabado, con separadores y tornillos). - -**¿Y si no tienes impresora 3D ni acceso a una?** No es un bloqueo: el aparato funciona perfectamente sin carcasa. Queda una Raspberry con la pantalla encima y la cámara colgando de un cable plano, que es aparatoso pero no frágil. El apaño que funciona: **deja la cámara por detrás, recoge el cable sobrante sobre la placa y encaja la pantalla encima atrapándolo**, y sujeta el conjunto con una goma elástica. Feo y sólido. Ya imprimirás una cuando puedas. +Una vez confirmado que arranca, la pantalla pinta, los botones responden y la cámara ve, ya puedes encajarlo. --- @@ -229,6 +245,8 @@ Una vez que hayas confirmado que arranca, la pantalla pinta, los botones respond ⚠️ **Ejecuta la verificación antes de abrir o montar el archivo `.img`.** Algunos sistemas operativos modifican el archivo al montarlo y la verificación fallaría. +**Este es el paso que más gente se salta y el que más importa.** Cuando alguien te pase un enlace por Telegram diciendo «la última versión de X», esto es lo que hay que hacer. Cuesta cinco minutos. + ### 5.1 Descarga la imagen de TU modelo Desde las [releases oficiales](https://github.com/SeedSigner/seedsigner/releases). Versión actual: **0.8.7**. Comprueba en esa página que no ha salido una más nueva. @@ -243,7 +261,7 @@ Desde las [releases oficiales](https://github.com/SeedSigner/seedsigner/releases | Raspberry Pi 3 B | `seedsigner_os.0.8.7.pi02w.img` | | Raspberry Pi 4 B / 400 | `seedsigner_os.0.8.7.pi4.img` | -Cada imagen pesa unos **50 MB**, así que la descarga es rápida. Si te parece que ha ido demasiado deprisa, es normal: no es un sistema operativo de escritorio. +La imagen ocupa **menos de 42 MB** desde la v0.6.0. Si te parece que ha descargado demasiado rápido, es normal. > Elegir mal no rompe nada: es software, no firmware. Simplemente no arrancará y volverás a grabar la SD. Si no sabes qué placa tienes, prueba `pi0`. > @@ -258,8 +276,6 @@ Los tres archivos, en la misma carpeta. ### 5.2 Verificar la firma -*(El porqué de cada paso está en la Sección 4 / Paso 0b de la guía de autocustodia. Aquí van los comandos concretos.)* - **1. Importar la clave pública del proyecto:** ``` @@ -274,9 +290,9 @@ Debe confirmar que se importó o actualizó 1 clave. **Ignora el ID y el correo gpg --verify seedsigner.0.8.7.sha256.txt.sig ``` -Debe decir **"Good signature"**. Si dice "Bad signature", **para aquí**. +Debe decir **«Good signature»**. Si dice «Bad signature», **para aquí**. -El aviso `WARNING: This key is not certified with a trusted signature` es **normal** y se resuelve en el paso siguiente. No es un error. +El aviso `WARNING: This key is not certified with a trusted signature` es **normal** y se resuelve en el paso siguiente. Va a salir en rojo y va a asustar. No es un error. **3. El paso crítico — ¿de quién es esa clave?** @@ -290,7 +306,7 @@ Para no depender de una sola fuente, el proyecto publica la misma huella en tres - [Gist de GitHub](https://gist.github.com/SeedSigner/5936fa1219b07e28a3672385b605b5d2) - [seedsigner.com/keybase.txt](https://seedsigner.com/keybase.txt) -Si las cuatro coinciden (Keybase + esas tres), un atacante tendría que haber comprometido todas a la vez. **Si no coinciden, para aquí.** +¿Por qué varias? Porque si solo miras una, basta con que comprometan esa una. Si las cuatro coinciden, un atacante tendría que haberlas comprometido todas a la vez. **Si no coinciden, para aquí.** **4. Verificar la imagen:** @@ -298,7 +314,7 @@ Linux o macOS: ``` shasum -a 256 --ignore-missing --check seedsigner.0.8.7.sha256.txt ``` -*(macOS anterior a v11 Big Sur no soporta `--ignore-missing`; omítelo e ignora los avisos de archivos ausentes.)* +*(macOS anterior a Big Sur no soporta `--ignore-missing`; omítelo e ignora los avisos de archivos ausentes.)* Windows (PowerShell): ``` @@ -316,17 +332,9 @@ Sparrow Wallet incluye `Tools` → `Verify Download`, con interfaz gráfica. Le ### 5.4 Si quieres eliminar incluso esa confianza -Desde la v0.7.0, las imágenes son **reproducibles**: puedes compilarlas desde el código fuente y comprobar que el resultado es byte a byte idéntico al publicado. Eso elimina la confianza en quien firma las releases. Instrucciones en el [repo de seedsigner-os](https://github.com/SeedSigner/seedsigner-os/blob/main/docs/building.md). +Desde la v0.7.0 las imágenes son **reproducibles**: puedes compilarlas desde el código fuente y comprobar que el resultado es byte a byte idéntico al publicado. Eso elimina la confianza en quien firma las releases. Instrucciones en el [repo de seedsigner-os](https://github.com/SeedSigner/seedsigner-os/blob/main/docs/building.md). -Es también una forma útil de contribuir al proyecto: compilar y publicar el hash que te sale. - ---- - -> ### ✅ Punto de control 2 — software verificado -> -> Tienes tres archivos de la **misma release**, `gpg --verify` dijo **"Good signature"**, la huella de la clave coincide con la publicada **en más de una fuente**, y `shasum` te devolvió **OK**. -> -> Si cualquiera de esos cuatro falla, **para aquí**. No es un paso opcional que puedas dejar para luego: es la diferencia entre instalar el software del proyecto e instalar el de quien te haya interceptado la descarga. Y no hay ningún mensaje de error más adelante que te avise de haberlo saltado. +Es también una forma útil de contribuir: compilar y publicar el hash que te sale. --- @@ -338,9 +346,9 @@ Tres opciones: **Raspberry Pi Imager**, **balenaEtcher** o `dd`. Las dos primera - Comprueba que el adaptador de MicroSD **no tiene el interruptor de bloqueo activado**. - Borra todo lo que hubiera en la tarjeta. -**En macOS:** al terminar, el sistema dirá que el disco es ilegible y ofrecerá inicializarlo. **Pulsa "Expulsar", nunca "Inicializar".** Es normal: macOS no sabe leer el sistema de archivos de Linux. +**En macOS:** al terminar, el sistema dirá que el disco es ilegible y ofrecerá inicializarlo. **Pulsa «Expulsar», nunca «Inicializar».** Es normal: macOS no sabe leer el sistema de archivos de Linux. -**En Windows:** usa Pi Imager como primera opción. Si la escritura falla, se cuelga o no empieza, prueba a ejecutar la aplicación **como administrador** (clic derecho). Si tienes activado *Acceso controlado a carpetas* (no viene activo por defecto), desactívalo temporalmente. +**En Windows:** usa Pi Imager como primera opción. Si la escritura falla, se cuelga o no empieza, prueba a ejecutar la aplicación **como administrador**. Si tienes activado *Acceso controlado a carpetas*, desactívalo temporalmente. Si una de las dos aplicaciones te falla, prueba la otra: hay máquinas donde una funciona mejor que la otra. @@ -349,8 +357,8 @@ Si una de las dos aplicaciones te falla, prueba la otra: hay máquinas donde una ## 7. Primer arranque y test de entrada/salida 1. Inserta la MicroSD. -2. Conecta la alimentación **por el puerto USB correcto** — la Pi Zero tiene dos micro-USB y solo uno es de alimentación (viene marcado `PWR`). -3. **Espera unos 45 segundos** a que aparezca el logo. La primera vez parece que no pasa nada. Ten paciencia antes de concluir que algo falla. +2. Conecta la alimentación **por el puerto USB correcto** — la Pi Zero tiene dos micro-USB y solo uno es de alimentación (viene marcado `PWR`). La mitad de la gente se equivoca aquí. +3. **Espera unos 45 segundos** a que aparezca el logo. La primera vez parece que no pasa nada. Ten paciencia antes de concluir que algo falla, y sobre todo **no empieces a desenchufar y reenchufar**. ### El test de I/O: hazlo siempre @@ -365,13 +373,9 @@ Este test tarda dos minutos y es el que decide si puedes montar la carcasa o tie > **La SD se puede quitar después de arrancar.** Es una propiedad de seguridad deliberada: una vez cargado el sistema en memoria, puedes extraer la tarjeta y así garantizar que ningún dato secreto pueda escribirse en ella. Para uso normal no hace falta, pero es una opción disponible. ---- +### Punto de control 1 -> ### ✅ Punto de control 3 — el aparato funciona -> -> Arrancó y salió el logo. Cada botón y cada dirección del joystick responden en el test de I/O. La cámara muestra imagen en vivo. -> -> **Este es el momento de meterlo en la carcasa**, y no antes. Si has llegado aquí, el hardware está bien y todo lo que venga después es software y procedimiento — lo cual, dicho de otra forma, significa que **ya no vas a tener que volver a desmontar nada**. +Antes de seguir, deberías tener: **arranca · la pantalla pinta · todos los botones responden · la cámara ve.** Si algo de esto falla, no sigas: los pasos siguientes dan todo esto por supuesto y vas a perseguir el fallo equivocado. --- @@ -396,34 +400,41 @@ Este test tarda dos minutos y es el que decide si puedes montar la carcasa o tie `Settings`: -- **Idioma:** desde la 0.8.7, el **español es idioma totalmente soportado** (y el catalán también). Cámbialo nada más arrancar: los menús de esta guía los verás igual, y te quita la barrera del inglés de golpe. -- **Red:** Mainnet para uso real; Testnet o Regtest para practicar (ver la nota de abajo). +- **Idioma:** desde la 0.8.7, el **español es idioma totalmente soportado** (y el catalán también). *Verificado en el código fuente del proyecto: ambos figuran en la lista de idiomas completos, no en beta.* Cámbialo nada más arrancar: quita la barrera del inglés de golpe. +- **Red:** Mainnet para uso real; Testnet o Regtest para practicar (ver abajo). - **Densidad de QR:** si tu ordenador no lee bien los QR animados que muestra la SeedSigner, baja la densidad aquí. - **Tipos de script:** por defecto Native Segwit. También soporta Taproot, Nested Segwit y Legacy. -- **Modo persistente de ajustes:** los ajustes sí se pueden guardar en la SD (no las seeds). +- **Modo persistente de ajustes:** los ajustes sí se pueden guardar en la SD (las seeds no). -### SettingsQR: configurar varios aparatos en segundos +### SettingsQR: configurar en segundos El proyecto mantiene un [generador de ajustes](https://github.com/SeedSigner/seedsigner-settings-generator) que produce un **código QR con toda una configuración**. Escaneas el QR con la SeedSigner y queda configurada de golpe: idioma, red, tipos de script, nivel de usuario. -Con un solo aparato no te ahorra apenas tiempo, pero sí te ahorra errores: dejas la configuración decidida con calma delante del ordenador en vez de a ciegas con un joystick, y si algún día tienes que reinstalar, la recuperas escaneando el mismo QR. +Útil si montas más de un aparato, o si vas a reconfigurar el tuyo a menudo — y no es raro, porque los ajustes se pierden si no activas el modo persistente. -### ⚠️ Nota sobre la red de pruebas +### Qué red usar para practicar -La guía de autocustodia recomienda **signet** para practicar, porque testnet3 lleva años deteriorada. Pero el README de SeedSigner 0.8.7 lista **mainnet, testnet y regtest** — no menciona signet. +**SeedSigner 0.8.7 no soporta signet.** Verificado contra el código fuente: las únicas redes declaradas son **Mainnet, Testnet y Regtest**. Si has leído en otro sitio que uses signet para practicar custodia —es buen consejo en general, porque testnet3 lleva años deteriorada— aquí no se te aplica. -`[VERIFICAR]` antes de ponerte: mira en los ajustes de tu aparato qué redes ofrece tu versión concreta. Si no hay signet, te quedan dos: +Tus opciones reales: -- **Testnet** — la práctica para casi todo el mundo. Arrastra problemas conocidos (faucets que van y vienen), pero para ensayar el ciclo de firma sirve. -- **Regtest** — tu propia red privada. Es la opción limpia, sin depender de faucets ni de la salud de una red pública, pero **necesitas un nodo Bitcoin corriendo**. Si ya lo tienes, ve por aquí. +- **Testnet**, con sus problemas conocidos (bloques irregulares, faucets que van y vienen). Sirve, con paciencia. +- **Regtest** contra un nodo propio. Es la opción limpia: controlas la red entera, generas bloques a voluntad y no dependes de ningún faucet. Requiere tener un nodo. + +--- +--- + +# PARTE II — GENERAR LA SEED + +> **Otro día que el montaje.** Ya está dicho arriba, pero es el consejo que más dinero ahorra de toda la guía. + +**El porqué de todo esto**, resumido —y desarrollado entero en la [guía del método](https://git.bitcointxoko.org/pikaro/autocustodia-verificable), que se lee aparte y no hace falta para seguir esta—. Si los bits de tu clave los produces tú con un dado, el generador de aleatoriedad del aparato deja de importar: no tienes que confiar en que funcione bien, lo has hecho irrelevante. Esa es toda la tesis. Un dado corriente vale — el sesgo físico de un dado normal cuesta una fracción de bit sobre 256, y es el riesgo más pequeño de la lista con diferencia. --- -## 10. Generar tu seed con dados +## 10. El vector de prueba -> **Lee antes las secciones 2, 3 y 5 de la [guía de autocustodia](https://git.bitcointxoko.org/pikaro/autocustodia-verificable)**: por qué la entropía propia importa, por qué 99 tiradas, cómo diseñar la passphrase y por qué no debes inventártela. Aquí solo va el manejo del aparato. - -### 10.1 El vector de prueba (hazlo primero, siempre) +**Hazlo primero, siempre.** Vas a comprobar algo que casi nadie que tiene una hardware wallet ha comprobado nunca: que la suya calcula bien. `Tools` → `New Seed` → dados → 24 palabras. Introduce: @@ -450,29 +461,61 @@ hole luggage safe present express tragic orbit shed switch metal identify path Fingerprint `8d9cced8`, zpub `zpub6qf9ziL759pzyhKMWaPfNSiCETkoA6oq3fbCDvXqcURiMtPnkEg3nH93W5mrSkvGPoJC9xTYZheYDsYoiYc5AkSk9iY3DkCJHkFgHMdijW6`. -Son seeds públicas, publicadas en la documentación del proyecto. **Riesgo cero, diez minutos, y verifica tu unidad concreta con tu firmware concreto** antes de que custodie nada. +*Los cuatro valores verificados carácter a carácter contra `docs/dice_verification.md` del repositorio oficial.* + +Son seeds públicas, publicadas por el proyecto. **Riesgo cero, diez minutos, y verifica tu unidad concreta con tu firmware concreto** antes de que custodie nada. Si coincide: tu aparato convierte la entropía correctamente. Si no coincide: para y revisa qué versión tienes instalada. -> ### ✅ Punto de control 4 — el aparato calcula bien +> **Por qué esto importa más de lo que parece.** El fallo del generador de aleatoriedad de Coldcard de julio de 2026 estuvo cinco años a la vista, en un firmware público que cualquiera podía leer. Si hubiera habido un vector de prueba que la gente pasara de rutina, se habría visto en 2021. Leer el código no bastó; comprobar el comportamiento sí habría bastado. > -> El vector de prueba te devolvió **exactamente** las palabras esperadas. -> -> Eso te dice algo concreto y valioso: el código que va a convertir tus tiradas en tu seed funciona correctamente **en tu unidad y con tu versión de firmware**. No es una promesa del fabricante, es una comprobación tuya. Muy poca gente que tiene una hardware wallet ha hecho esto nunca. -> -> Si las palabras **no** coinciden: no sigas. Revisa que la imagen que grabaste corresponde a tu modelo de Pi, y que el vector que estás usando es el de tu versión. +> Es también el argumento contra «es código abierto, es seguro»: **auditable no es lo mismo que auditado, y auditado no es lo mismo que saber qué código se está ejecutando de verdad en tu aparato.** -### 10.2 Generar la tuya +### Punto de control 2 + +Tu aparato produce los vectores oficiales exactos. Ahora sabes que la máquina calcula bien. Todavía no sabes si tú vas a hacer bien tu parte — eso es lo siguiente. + +--- + +## 11. Las 99 tiradas + +Cinco minutos de contexto antes de tirar el dado, porque explican las reglas: + +- Un bit es una moneda al aire. Cada bit dobla las posibilidades. 24 palabras son **256 bits**. +- Cada tirada de un dado de seis caras aporta unos **2,585 bits**. 99 tiradas × 2,585 ≈ 256. +- Por eso son 99 y no 100: 99 es lo que pide la interfaz y la diferencia con 100 es de una décima de bit. + +**El procedimiento:** 1. `Tools` → `New Seed` → dados → **24 palabras (99 tiradas)**. 2. Tira el dado 99 veces, introduciendo cada resultado. 3. **Anota cada tirada en papel según la introduces.** Sin la secuencia no podrás hacer la verificación cruzada, y no hay forma de recuperarla. 4. Al terminar, la SeedSigner calcula el checksum y muestra las 24 palabras en 6 pantallas de 4. -5. Si dudas de una tirada a mitad: **reinicia el proceso entero**. No "arregles" una tirada suelta. +5. Si dudas de una tirada a mitad: **reinicia el proceso entero.** No «arregles» una tirada suelta. -⚠️ La secuencia de tiradas **es material de clave**. Nunca la fotografíes ni la guardes en digital. +**Las tres reglas que evitan que te saboteen tus propias manos:** -### 10.3 Verificación cruzada [avanzado] +1. **Decide el método antes de empezar y no improvises.** Nada de «esta tirada no la cuento» o «mejor rebarajo ahora». Ahí es donde se cuela el sesgo sin que te des cuenta, y es lo más contraintuitivo de todo esto: **tu criterio humano es el enemigo aquí**, no el dado. +2. **Tira sobre una superficie dura y con espacio.** Un dado que apenas rueda sobre una toalla no es un dado aleatorio. +3. **Sin cámaras, sin testigos, sin móvil en la habitación.** La secuencia de tiradas **es material de clave**: quien la tenga tiene tu wallet. Nunca la fotografíes ni la guardes en digital. + +> **Un detalle que casi ninguna guía cuenta: el problema del mapeo.** Seis caras no caben en un número entero de bits (2,585 no es entero). Una implementación ingenua que mapee directamente dado→3 bits pierde 0,415 bits por tirada, que en 99 tiradas son **41 bits perdidos**. Se resuelve con *rejection sampling* o trabajando en base 6, que es lo que hacen las implementaciones correctas. +> +> Esto le da un sentido concreto a la verificación cruzada del paso siguiente: no estás buscando un error visible, estás buscando palabras de aspecto perfectamente normal con menos entropía detrás de la que crees. + +--- + +## 12. Verificación cruzada + +> ### 🔴 Con una seed de ENSAYO, nunca con la tuya +> +> Haz esta verificación **antes** de generar la seed que vas a usar: tira 99 veces, genera una seed desechable con el mismo dado y el mismo método, verifica **esa** contra las tres herramientas, descártala, y solo entonces genera la real. +> +> La seed de ensayo no va a tener fondos jamás, así que puedes teclearla en tu ordenador de siempre sin ningún riesgo. Y cubre un ataque que el vector público **no** cubre: un aparato manipulado podría reconocer el vector conocido y portarse bien solo con él, pero **no puede distinguir tus tiradas de ensayo de las de verdad**. +> +> **La seed que vayas a usar no se teclea en un ordenador nunca.** Ni air-gapped, ni en una sesión efímera que destruyas después. +> +> La documentación oficial de SeedSigner sugiere esa vía —verificar tu seed real en un Tails-OS que destruyes— y aquí somos más estrictos a propósito. El problema no es la idea, es que **tú no puedes comprobar que se cumplió**: no puedes verificar que no hubo memoria de intercambio en disco, que el firmware de un USB no persistió nada, que la radio estaba realmente desactivada, ni qué hace el procesador por debajo del sistema operativo. Es un consejo que suena riguroso y traslada el riesgo a un paso que el lector no puede auditar — justo el patrón que esta guía critica en todo lo demás. Y con el ensayo no pierdes verificación: ganas. El repositorio incluye `tools/mnemonic.py`, que ejecuta exactamente el mismo código de conversión que corre en el dispositivo: @@ -483,29 +526,27 @@ pip install embit && pip install -e . && cd tools python3 mnemonic.py dice ``` -También acepta `coins` para secuencias binarias y `--zero-indexed-dice` si anotaste los dados como 0-5. +También acepta `coins` para secuencias binarias (128 lanzamientos de moneda → 12 palabras) y `--zero-indexed-dice` si anotaste los dados como 0-5. Contrasta el resultado con [iancoleman.io/bip39](https://iancoleman.io/bip39) y [bitcoiner.guide/seed](https://bitcoiner.guide/seed/). -⚠️ En iancoleman: marca "Show entropy details", selecciona **"Base 10"** o **"Hex"** — **nunca la opción "Dice [1-6]"**, porque ahí el 6 se convierte en 0 y obtendrás un resultado distinto — y fija "Mnemonic Length" a 24 palabras. +⚠️ **La trampa de iancoleman:** marca «Show entropy details», selecciona **«Base 10»** o **«Hex»** — **nunca la opción «Dice [1-6]»**, porque ahí el 6 se convierte en 0 y obtendrás un resultado distinto — y fija «Mnemonic Length» a 24 palabras. -> ### 🔴 Con una seed de ENSAYO, nunca con la tuya -> -> Haz esta verificación **antes** de generar la seed que vas a usar: tira 99 veces, genera una seed desechable con el mismo dado y el mismo método, verifica **esa** contra las tres herramientas, descártala, y solo entonces genera la real. -> -> La seed de ensayo no va a tener fondos jamás, así que puedes teclearla en tu ordenador de siempre sin ningún riesgo. Y cubre el ataque que el vector público no cubre: un aparato manipulado podría reconocer el vector conocido y portarse bien solo con él, pero no puede distinguir tus tiradas de ensayo de las de verdad. -> -> **La seed que vayas a usar no se teclea en un ordenador nunca.** Ni air-gapped, ni en una sesión efímera que destruyas después. La documentación de SeedSigner sugiere esa vía para verificar seeds reales; aquí somos más estrictos a propósito, y la Sección 3.2 de la [guía de autocustodia](https://git.bitcointxoko.org/pikaro/autocustodia-verificable) explica por qué. +**Qué demuestra esto.** Tres programas escritos por gente distinta, en lenguajes distintos, con librerías distintas, dando el mismo resultado. Para que hubiera una puerta trasera tendría que estar en los tres a la vez. Eso es lo que significa determinista, y es la razón de que puedas fiarte del cálculo sin fiarte de nadie. -### 10.4 La opción de la cámara: qué es y cuándo vale +--- -En `Tools` vas a ver, junto a los dados, la opción de generar la seed **con una foto**. La vas a ver, alguien va a preguntar, y merece una respuesta mejor que "no la uses". +## 13. Los otros dos métodos: cámara y elegir palabras + +### La cámara: qué es y cuándo vale + +En `Tools` vas a ver, junto a los dados, la opción de generar la seed **con una foto**. Merece una respuesta mejor que «no la uses». **Cómo funciona.** SeedSigner encadena cuatro entradas en un SHA-256: el número de serie del Pi, el tiempo desde el arranque, hasta 50 fotogramas de la previsualización en vivo y la foto final. Las dos primeras aportan casi nada —el aparato no tiene reloj y el número de serie no es secreto—, así que **todo descansa en la cámara**. -**Y la cámara aporta de sobra.** Una escena iluminada mide del orden de **millones de bits** frente a los 256 que hacen falta. El dato que más sorprende: **una pared blanca vale prácticamente igual que una estantería llena de libros** —menos del 10% de diferencia—. La entropía no está en lo que fotografías, está en el **ruido del sensor**, que cambia en cada lectura. Dos fotos seguidas del mismo sitio, con el aparato quieto en la mesa, difieren en el 80% de sus valores de color. Y en 320 capturas medidas no se repitió ninguna. +**Y la cámara aporta de sobra.** Una escena iluminada mide del orden de **millones de bits** frente a los 256 que hacen falta. El dato que más sorprende: **una pared blanca vale prácticamente igual que una estantería llena de libros** —menos del 10% de diferencia—. La entropía no está en lo que fotografías, está en el **ruido del sensor**, que cambia en cada lectura. Dos fotos seguidas del mismo sitio, con el aparato quieto en la mesa, difieren en el 80% de sus valores de color. -O sea: **el método no es débil.** Con luz, produce una seed sólida. +O sea: **el método no es débil.** Si lo usas con luz, tienes una seed sólida. #### Por qué esta guía usa dados igualmente @@ -515,12 +556,10 @@ Por una sola razón, y no es la cantidad de entropía. Lo dice el desarrollador Son unos 12 MB de fotogramas. No caben en un QR, y escribirlos a la tarjeta sería guardar tu seed en disco —justo lo que un aparato *stateless* no hace nunca—. Con tus 99 tiradas puedes ir a tres herramientas distintas y comprobar que dan lo mismo. Con una foto, **nadie podrá comprobar nunca nada sobre esa seed concreta**, ni tú. -Y eso pesa doble en una guía sobre verificar: los dados son el único método donde puedes comprobar tu resultado con tus propias manos, hoy y dentro de diez años. +Que un tercero independiente llegue por su cuenta y midiendo a la misma conclusión vale más que cualquier argumento propio. #### Si la usas, cuatro reglas que nadie te va a decir -Salen de mediciones sobre cuatro aparatos físicos, y ninguna es evidente: - | | | |---|---| | **1. Con luz** | Es lo único que importa de verdad. Cualquier escena vale | @@ -530,35 +569,72 @@ Salen de mediciones sobre cuatro aparatos físicos, y ninguna es evidente: La regla 2 no es exageración: con el sensor sin luz se midieron fotos finales de **113, 177, 190 y 221 bits**, por debajo de los 256 que necesita una seed de 24 palabras. Y la capa de previsualización, que debería cubrir eso, **se cae al mismo tiempo**: a oscuras casi todos sus fotogramas son un negro constante que un atacante puede calcular sin haber visto nada. Los dos fallos tienen la misma causa —falta de luz— así que no son dos capas, es una. -La regla 3 viene de un tic introducido en la v0.7.0: si mantienes el botón pulsado atraviesas previsualización, captura y aceptación de un gesto, y no se encadena ni un fotograma. +La regla 3 viene de un cambio introducido en la v0.7.0: si mantienes el botón pulsado atraviesas previsualización, captura y aceptación de un gesto, y no se encadena ni un fotograma. La regla 4 es la que más incomoda: una pantalla de revisión **completamente negra** vino de capturas con cien veces lo necesario, y una **con ruido bien visible** de capturas muy por debajo del mínimo. Mirar la pantalla para quedarte tranquilo es mirar algo que no correlaciona. -> **De dónde salen estas cifras.** Del [análisis de entropía por imagen](https://kdmukai-bot.github.io/seedsigner-ai-analysis/image-entropy/) del propio proyecto, con los 340 MB de capturas en bruto publicados para que cualquiera lo contradiga. Ellos mismos avisan de que es un análisis asistido por IA de su desarrollador principal, **no una auditoría independiente**, y de que nadie ha reproducido las cifras todavía. +> **De dónde salen estas cifras.** Del [análisis de entropía por imagen](https://kdmukai-bot.github.io/seedsigner-ai-analysis/image-entropy/) del propio proyecto, con los 340 MB de capturas en bruto publicados para que cualquiera lo contradiga. Ellos mismos avisan de que es un análisis asistido por IA de su desarrollador principal, **no una auditoría independiente**, y de que nadie ha reproducido las cifras todavía. Lo damos por bueno diciendo lo que ellos dicen. -#### El tercer método: elegir las palabras a mano +### Elegir las palabras a mano -SeedSigner también deja **elegir tú las palabras** de la lista BIP-39 y calcula la última. Es válido si eliges esas palabras con una fuente aleatoria de verdad —dados y una tabla— y **es un desastre si las eliges "al azar" de tu cabeza**, que es lo que hace casi todo el mundo. Si vas por ahí, usa una tabla y un dado, no tu intuición. +SeedSigner también deja **elegir tú las palabras** de la lista BIP-39 y calcula la última. Es válido si eliges esas palabras con una fuente aleatoria de verdad —dados y una tabla impresa— y **es un desastre si las eliges «al azar» de tu cabeza**, que es lo que hace casi todo el mundo. + +Un detalle que sorprende y explica por qué el aparato no te deja elegir la última: **la última palabra no la eliges tú del todo.** En una seed de 24, las 23 primeras son entropía pura y la 24 está en parte determinada por las anteriores (lleva el checksum). Con 23 palabras puestas, solo hay **8 palabras finales válidas** de las 2048. --- -## 11. SeedQR: cargar la seed en segundos +## 14. El backup, y cómo se comprueba -Escribir 24 palabras a mano en un joystick cada vez que quieras firmar es tedioso, y el tedio hace que la gente deje de verificar cosas. La respuesta del proyecto es la **SeedQR**: transcribes tu seed a un código QR **a mano**, en papel, y luego la SeedSigner la lee en un segundo con su cámara. +**Se pierde más bitcoin por backups mal copiados que por hackeos.** Este es el paso que no se recorta nunca. + +### Escribirlo + +1. Transcribe las 24 palabras en papel (o en metal, si el patrimonio lo justifica). **Numeradas.** +2. Letra clara. **Ojo con `1`/`l`, `0`/`O`, `u`/`v`.** +3. Las primeras 4 letras de cada palabra BIP-39 la identifican de forma única — si dudas de una letra final, las cuatro primeras te salvan. + +### Y ahora lo que casi nadie hace: comprobarlo + +Un backup que nunca has probado no es un backup, es una esperanza. + +1. **Apaga el aparato del todo.** Se olvida de tu seed, porque es *stateless*. +2. Vuelve a cargarla **leyendo tu papel**. No de memoria, no mirando la pantalla de antes. Del papel, tal y como lo escribiste. +3. Aplica la passphrase si la tienes. +4. **¿Coincide el fingerprint?** + +Si no coincide, acabas de descubrir —sin dinero de por medio— un error que te habría costado todo el día que necesitaras recuperar. Ese es exactamente el propósito del paso. + +### Dónde guardarlo + +- **Nunca en digital.** Ni foto, ni gestor de contraseñas, ni nota cifrada, ni la nube. +- **Separado de la passphrase.** Si tienes passphrase, guardarla en el mismo papel que las palabras anula la capa entera: quien encuentre el papel tiene la wallet completa. +- **Las tiradas de dado, destrúyelas** una vez hecha la verificación cruzada. Ya no sirven para nada y son tu seed escrita dos veces. +- Piensa en fuego y agua, no solo en ladrones. + +--- + +## 15. SeedQR: cargar la seed en segundos + +Escribir 24 palabras a mano con un joystick cada vez que quieras firmar es tedioso, y **el tedio hace que la gente deje de verificar cosas**. La respuesta del proyecto es la **SeedQR**: transcribes tu seed a un código QR **a mano**, en papel, y luego la SeedSigner la lee en un segundo con su cámara. - La SeedSigner tiene un **modo guiado** para transcribirla, casilla a casilla. -- El proyecto publica [plantillas imprimibles](https://github.com/SeedSigner/seedsigner/tree/main/docs/seed_qr/printable_templates) en varios formatos: rejilla, puntos, y formato "cromo" de tamaño tarjeta. +- El proyecto publica [plantillas imprimibles](https://github.com/SeedSigner/seedsigner/tree/main/docs/seed_qr/printable_templates) en varios formatos: rejilla, puntos, y formato «cromo» de tamaño tarjeta. - **Estándar** (25×25 para 12 palabras, 29×29 para 24) o **Compact** (21×21 y 25×25), que ocupa menos casillas. ⚠️ **Una SeedQR es tu seed en texto plano.** No es cifrado ni ofuscación: cualquiera con un móvil la lee. Guárdala con exactamente el mismo cuidado que las palabras escritas, y nunca la fotografíes. -Muy práctica. Y es donde más gente confunde "difícil de leer para un humano" con "seguro". +Es donde más gente confunde «difícil de leer para un humano» con «seguro». +--- --- -## 12. Crear la wallet en Sparrow y firmar una transacción +# PARTE III — USAR -### 12.1 Crear la wallet +> A partir de aquí, la guía deja de ser un manual de construcción y pasa a ser lo que consultas con el aparato en la mano. Las entradas son cortas a propósito. + +## 16. La wallet en Sparrow + +Se hace **una vez**, y a partir de ahí Sparrow tiene tu xpub y puede ver saldos y componer transacciones sin la SeedSigner delante. 1. Sparrow → `File` → `New Wallet`. Ponle nombre. 2. `Airgapped Hardware Wallet` → en la fila de SeedSigner, pulsa **`Scan`**. Se abre la cámara del ordenador. @@ -569,47 +645,192 @@ Muy práctica. Y es donde más gente confunde "difícil de leer para un humano" Si el QR animado no se lee: baja la densidad de QR en los ajustes de la SeedSigner, o ajusta el brillo con el joystick (arriba/abajo). -### 12.2 Firmar una transacción (PSBT) +> **El xpub es privado, aunque no sea secreto.** Con él cualquiera puede ver todo tu historial y tu saldo, aunque no pueda mover un satoshi. Trátalo como el extracto del banco: no lo publiques, y piensa a qué servidor está consultando tu Sparrow. Lo ideal es que consulte a tu propio nodo. -Este es el ciclo de trabajo normal, y la parte que la guía de autocustodia no cubre porque es específica del modelo air-gapped: +--- + +## 17. La rutina de firmar + +Este es el ciclo que vas a repetir siempre: 1. **En Sparrow**, compón la transacción normalmente y pulsa firmar. Sparrow muestra un **QR animado** con la PSBT (la transacción sin firmar). 2. **En la SeedSigner**: carga tu seed (tecleando las palabras, o escaneando tu SeedQR) → `Scan` → apunta a la pantalla del ordenador. -3. La SeedSigner muestra un **repaso detallado de la transacción**: a dónde va, cuánto, la comisión, y —esto es lo importante— **verifica las salidas de cambio**. Léelo. Es tu única defensa contra un ordenador comprometido que te enseñe una cosa y firme otra. +3. La SeedSigner muestra un **repaso detallado de la transacción**. **Léelo.** 4. Confirma. La SeedSigner muestra la PSBT **firmada** como QR animado. 5. **En Sparrow**: escanea ese QR. Sparrow reconstruye la transacción firmada y ya puedes difundirla. **En ningún momento se conectan.** Todo pasa por códigos QR y tus ojos. -### 12.3 Verificar direcciones de recepción +### El paso 3 es el que justifica todo el aparato -`Scan` sobre la dirección que te muestra tu wallet de software: la SeedSigner confirma si esa dirección pertenece de verdad a tu wallet. Es la defensa contra malware que sustituye direcciones al copiar y pegar. **Hazlo siempre antes de recibir una cantidad significativa.** +Esa pantalla pequeña y fea es tu única defensa contra un ordenador comprometido. Si tu Sparrow estuviera infectado y te enseñara una dirección mientras firma otra, **aquí es donde lo verías y en ningún otro sitio**. + +Lo que tienes que mirar, en este orden: + +| Qué | Por qué | +|---|---| +| **La dirección de destino** | Contrástala con la que te dio quien cobra, por un canal distinto. Los primeros y últimos caracteres no bastan si el malware genera direcciones parecidas: mira el medio también | +| **El importe** | Obvio, y aun así | +| **La comisión** | Una comisión absurda es señal de que algo va mal, y además es un error caro por sí solo | +| **Las salidas de cambio** | La SeedSigner marca cuál es el cambio y que vuelve a ti. Si dice que no reconoce el cambio, **para**: puede significar que el cambio va a una dirección que no controlas | + +**Si algo no cuadra, no firmes.** Cancelar no cuesta nada; una firma no se deshace. + +### Cuando la seed no está cargada + +Es lo normal: el aparato la olvidó al desenchufarlo. Cárgala con la SeedQR (un segundo) o tecleando las palabras. **Que la seed no persista no es una molestia que se tolera, es la propiedad que hace que puedas dejar el aparato en un cajón sin preocuparte.** --- -## 13. Pruébalo antes de comprar: el simulador +## 18. Recibir: verificar la dirección -Existe un **simulador que corre el firmware real de SeedSigner en una pestaña del navegador**: [bitsaga.be/seedsigner-simulator](https://bitsaga.be/seedsigner-simulator/) ([código](https://github.com/bitsagarob/seedsigner-simulator), MIT). +El malware que sustituye direcciones al copiar y pegar es de los ataques más rentables y más comunes que hay. La defensa cuesta veinte segundos: -No es un vídeo ni una imitación rehecha para parecerse: es el mismo Python que corre en el aparato, con la pantalla dibujada en un canvas, los botones en tu teclado y la cámara en tu webcam. Puedes recorrer el menú entero, cargar una seed, meter tiradas de dado, poner passphrase, exportar el xpub y firmar una PSBT. +`Scan` sobre la dirección que te muestra tu wallet de software → la SeedSigner confirma si esa dirección pertenece de verdad a tu wallet. -**Para qué sirve, y aquí está lo bueno:** puedes recorrer el menú entero, meter tiradas de dado y poner una passphrase **mientras esperas a que lleguen las piezas**. Cuando montes el aparato ya no será la primera vez que ves esas pantallas. También sirve para decidir si el flujo te convence antes de gastar nada, y para enseñárselo a alguien: una pantalla de 1,3 pulgadas no se comparte, una pestaña del navegador sí. +**Hazlo siempre antes de recibir una cantidad significativa**, y siempre la primera vez que uses una wallet nueva. + +También puedes recorrer tus direcciones desde `Tools` → explorador de direcciones, útil si quieres comprobar una concreta sin tener Sparrow delante. + +--- + +## 19. Convivir con la passphrase + +La passphrase es una capa **independiente** de la seed: suma su propia entropía y no comparte el fallo de la que ya tienes. Es la mejor defensa si algún día se descubre que tu seed se generó mal. + +**Cómo se hace bien.** *(La [guía del método](https://git.bitcointxoko.org/pikaro/autocustodia-verificable) lo trata a fondo, con la tabla de bits por palabra según el sistema que uses.)* Una frase pensada por una persona aporta del orden de 1 a 3 bits por carácter. Cinco o seis palabras sacadas con dados de una lista aportan **11 a 13 bits por palabra**. No es parecido: es otro orden de magnitud. Genera la passphrase con dados y una tabla, igual que la seed. + +**Y ahora el aviso que salva fondos:** + +> ⚠️ **La passphrase no tiene checksum ni corrección de errores.** Una letra distinta, una mayúscula distinta, un espacio de más, y obtienes **otra wallet completamente distinta y vacía, sin ningún mensaje de error**. No te avisa. Nunca. Es matemáticamente indistinguible de haberla escrito bien. + +Consecuencias prácticas para el uso diario: + +- **Verifica el fingerprint cada vez que cargues la seed con passphrase.** Es la única confirmación de que la escribiste bien. Apúntate el fingerprint correcto en un sitio que no sea el papel de la seed. +- **Guárdala separada de las palabras**, y con la misma exactitud: mayúsculas, espacios, acentos, todo. +- **Alguien más tiene que poder encontrarla** si te pasa algo, o el plan de herencia se rompe justo aquí. Es el fallo más común de las passphrases: protegen tan bien que también te protegen de tus herederos. + +--- + +## 20. Multisig, que es su razón de existir + +Bajar el coste de cada firmante de varios cientos de euros a poco más que un puñado de componentes genéricos es, literalmente, la razón por la que existe SeedSigner. Un multisig 2-de-3 con tres aparatos que montas tú es algo que antes no estaba al alcance de casi nadie. + +**Lo esencial:** + +- **M-de-N**: 2-de-3 significa tres llaves de las que cualquiera dos bastan. Para perderlo todo tendrían que fallar varias a la vez. +- **Mezcla fabricantes.** Si tus tres firmantes son idénticos, el fallo de uno os tumba los tres — que es exactamente lo que pasó con el fallo del generador de aleatoriedad de Coldcard. Una SeedSigner + un aparato comercial + otro distinto es mucho más robusto que tres iguales. +- **Guarda el descriptor.** En multisig, las seeds **no bastan** para recuperar: hace falta también el descriptor de la wallet (qué llaves, qué quorum, qué derivación). Guárdalo con los backups, en varios sitios. Es la causa nº 1 de multisigs irrecuperables. +- **Ensáyalo entero en testnet o regtest** antes de meter nada. Y ensaya la recuperación, no solo la firma. + +> **Un multisig mal montado es más peligroso que un singlesig bien hecho.** Más llaves son más formas de equivocarse, más complejidad y un plan de herencia más difícil. Móntalo cuando el patrimonio lo justifique y cuando entiendas bien el singlesig, no antes. + +--- +--- + +# PARTE IV — MANTENER + +## 21. Actualizar el firmware + +Actualizar es grabar una SD nueva. **No hay proceso de actualización que pueda romper tu aparato ni tocar tu seed**, porque el aparato no guarda nada: es la ventaja escondida de ser *stateless*. + +El procedimiento es el mismo de §5 y §6: descargar, **verificar la firma y el hash otra vez** (no te saltes esto porque ya lo hiciste una vez), grabar. + +**Después de actualizar, vuelve a pasar el vector de prueba de §10.** Son diez minutos y comprueban que la versión nueva calcula igual que la vieja. Si alguna vez no coincidiera, querrías enterarte antes de firmar nada. + +Conviene mirar las [releases](https://github.com/SeedSigner/seedsigner/releases) de vez en cuando, sin obsesión: no es un aparato conectado, no hay urgencia de parchear. + +--- + +## 22. Si se rompe, se pierde o te lo quitan + +**Aquí es donde el diseño paga.** Ninguno de los tres casos es una emergencia: + +| Situación | Qué pasa | Qué haces | +|---|---|---| +| **Se rompe** | Nada. No había nada dentro | Montas otra, o cargas tu seed en cualquier wallet compatible con BIP-39 | +| **Lo pierdes** | Nada, si estaba desconectado. La memoria se borró al desenchufarlo | Igual que arriba | +| **Te lo roban** | Nada, si estaba desconectado | Igual que arriba | +| **Te lo quitan encendido y con la seed cargada** | **Problema serio.** No tiene elemento seguro ni PIN que resista | Mueve los fondos desde otra copia de la seed, cuanto antes | +| **Pierdes el papel** | **Es lo único irrecuperable.** El papel era el dispositivo | Si aún controlas los fondos, genera una wallet nueva y muévelos ahí ya | + +**El caso que sí tienes que tener planificado es el último.** Todo lo demás se resuelve comprando piezas otra vez. Por eso el esfuerzo va al backup y no al aparato. + +**Recuperar sin una SeedSigner a mano:** tus 24 palabras son un estándar (BIP-39). Puedes cargarlas en Sparrow, en otro firmante, o en cualquier wallet compatible. No estás atado a este aparato ni a este proyecto — que es justo lo que se buscaba. + +--- + +## 23. Revisión periódica + +Una vez al año, o cuando cambies algo importante: + +- [ ] **Prueba el backup en frío.** Carga la seed desde el papel, sin mirar nada más, y comprueba el fingerprint. Es la única forma de saber que sigue siendo válido. +- [ ] **Comprueba que el papel sigue legible** y donde debe estar. +- [ ] **Comprueba que alguien más podría encontrarlo** si tú no estás — incluida la passphrase. +- [ ] **Pasa el vector de prueba** si actualizaste el firmware desde la última revisión. +- [ ] **Haz una transacción pequeña** de ida y vuelta. Un procedimiento que no practicas se olvida, y el día que lo necesites será con prisa. + +--- +--- + +# PARTE V — REFERENCIA + +## 24. Resolución de problemas + +| Síntoma | Causas, en orden de probabilidad | +|---|---| +| **No enciende el LED de la Pi** | Esperar un minuto · Cable USB en el puerto equivocado (usa el marcado `PWR`) · Volver a grabar la SD · Fuente insuficiente | +| **La pantalla no muestra nada** | Esperar (el arranque tarda ~45 s) · **Alimentación insuficiente** (una pila de 9 V no basta) · Soldaduras · Pantalla del modelo equivocado (¿240×240?) | +| **Un botón o el joystick no responde** | Test de I/O para identificar cuál · **Soldadura fría** en ese pin | +| **La cámara se reinicia o se cuelga** | **Alimentación insuficiente** · Conexión del cable a la placa de la cámara · Test de I/O | +| **La cámara ve pero no detecta el QR** | Ajustar el brillo con el joystick · Bajar la densidad de QR en ajustes · Bajarla también en el ordenador · Alejar/acercar · Evitar reflejos | +| **Arranca pero se reinicia solo** | Alimentación · Cable USB de mala calidad · Escritura de la SD no verificada | +| **No arranca tras grabar la SD** | Imagen del modelo equivocado (tabla de §5.1) · Escritura fallida: regrabar esperando a la verificación · Probar la otra aplicación de grabado | +| **El QR animado de Sparrow no entra** | Bajar la densidad · Pantalla del ordenador más brillante · Mover despacio | +| **El fingerprint no coincide** | Passphrase mal escrita (mayúsculas, espacios) · Una palabra mal transcrita · Tipo de script distinto | +| **Sparrow no reconoce el cambio** | Wallet equivocada abierta · Tipo de script distinto al de la wallet | + +**El diagnóstico que resuelve la mitad de los casos:** si algo raro pasa, **cambia la fuente de alimentación y el cable** antes de tocar nada más. Y si no, revisa soldaduras. + +--- + +## 25. Limitaciones y qué NO hace + +Ser honesto sobre esto es parte de la guía: + +- **No guarda tu seed.** Si pierdes el papel, se acabó. +- **No es un producto con soporte.** Es un proyecto de voluntarios, sin empresa detrás y sin ánimo de lucro (licencia MIT). Eso es una virtud —no hay incentivo comercial que corrompa el diseño— y significa que si algo falla, la ayuda es una comunidad de Telegram, no un servicio técnico. +- **No tiene elemento seguro ni protección antimanipulación física.** Si alguien accede al aparato mientras está encendido con tu seed cargada, la ve. Su seguridad viene de ser *stateless* y air-gapped, no de resistir un ataque físico. +- **La pantalla es pequeña y los controles, básicos.** Escribir 24 palabras a mano es lento. Por eso existen las SeedQR. +- **No sustituye a entender lo que haces.** Es la herramienta que menos confianza pide y la que más atención exige. + +**Y lo que hace muy bien:** generar la clave sin tener que confiar en nadie, hacer el multisig accesible, y un modelo de firma donde tú ves cada dato que entra y sale. + +--- + +## 26. El simulador: probarlo sin comprar nada + +Existe un **simulador que corre el firmware real de SeedSigner en una pestaña del navegador**: [bitsaga.be/seedsigner-simulator](https://bitsaga.be/seedsigner-simulator/?firmware=stock) ([código](https://github.com/bitsagarob/seedsigner-simulator), MIT). + +No es un vídeo ni una imitación: es el mismo Python que corre en el aparato, con la pantalla dibujada en un canvas, los botones en tu teclado y la cámara en tu webcam. Puedes recorrer el menú entero, meter tiradas de dado, poner passphrase, exportar el xpub y firmar una PSBT. + +**Para qué sirve:** ver si el flujo te convence antes de comprar nada, practicar el procedimiento sin hardware, y enseñárselo a alguien. ### Por qué este sí y no cualquier simulador -Esta guía repite que no te fíes de software que no puedes comprobar, así que toca aplicárselo. Lo que ofrece: está **anclado a un tag de release y no a una rama** (una rama se reescribe, un tag publicado no), su **compilación es reproducible** con el sha256 publicado para que lo rehagas y compares byte a byte, una máquina limpia lo reconstruye en cada cambio, y **corre la batería de tests de los propios autores de SeedSigner**. MIT, con el origen y la licencia de cada dependencia listados. +Esta guía repite que no te fíes de software que no puedes comprobar, así que toca aplicárselo. Está **anclado a un tag de release y no a una rama** (una rama se reescribe, un tag publicado no), su **compilación es reproducible** con el sha256 publicado, una máquina limpia lo reconstruye en cada cambio, y **corre la batería de tests de los propios autores de SeedSigner**. MIT, con el origen y la licencia de cada dependencia listados. Vale la pena mirarlo aunque no lo uses, como ejemplo de qué aspecto tiene un proyecto que se deja verificar. ### Tres trampas prácticas -**1. Arranca en el fork de smartcard, no en SeedSigner a secas.** La página abre por defecto el fork de 3rdIteration, que añade menús de tarjetas SeedKeeper y Satochip que tu aparato **no va a tener**. Para ver lo mismo que tendrás en la mano, usa el control de *Firmware* o entra directamente por [`?firmware=stock`](https://bitsaga.be/seedsigner-simulator/?firmware=stock). +**1. Arranca en el fork de smartcard, no en SeedSigner a secas.** La página abre por defecto un fork con menús de tarjetas SeedKeeper y Satochip que tu aparato **no va a tener**. Usa siempre [`?firmware=stock`](https://bitsaga.be/seedsigner-simulator/?firmware=stock). -**2. Mainnet funciona de verdad.** Arranca en testnet a propósito, pero mainnet está disponible en los ajustes y **deriva claves reales y firma transacciones reales**. Una clave derivada en una pestaña del navegador es una clave real. +**2. Mainnet funciona de verdad.** Arranca en testnet a propósito, pero mainnet está disponible y **deriva claves reales y firma transacciones reales**. -> ⚠️ **No metas ahí ninguna seed tuya. Ninguna. Nunca.** Ni "solo para ver". Una pestaña del navegador no es un air gap y el sistema de ficheros de Pyodide no es un elemento seguro — lo dicen ellos mismos. Usa una seed de prueba pública, como la del vector de la Sección 10.1, que existe justo para esto. +> ⚠️ **No metas ahí ninguna seed tuya. Ninguna. Nunca.** Ni «solo para ver». Una pestaña del navegador no es un air gap y el sistema de ficheros de Pyodide no es un elemento seguro — lo dicen ellos mismos. Usa la seed pública del vector de §10, que existe justo para esto. -**3. Si lo quieres alojar tú** —para tenerlo offline, o por no depender de una web ajena— necesita dos cabeceras (`Cross-Origin-Opener-Policy` y `Cross-Origin-Embedder-Policy`) o no arranca, y la cámara exige `https` o `localhost`: por `http` en una IP de la red local no hay API de cámara que valer. Lo tienen documentado en `docs/SELF-HOSTING.md`. Una vez cargada, la página funciona sin conexión. +**3. Si lo quieres alojar tú**, necesita las cabeceras `Cross-Origin-Opener-Policy` y `Cross-Origin-Embedder-Policy` o no arranca, y la cámara exige `https` o `localhost`. Está documentado en su `docs/SELF-HOSTING.md`. Una vez cargada, la página funciona sin conexión. ### Qué no simula @@ -617,57 +838,74 @@ Sin microSD, sin nada que dependa de hilos, sin comportamientos por tiempo. Y so --- -## 14. Resolución de problemas +## 27. Chuleta de consulta rápida -| Síntoma | Causas, en orden de probabilidad | +**Los cuatro puntos de control** + +1. Arranca, pinta, botones y cámara OK (test de I/O) → §7 +2. El vector de prueba da las palabras exactas → §10 +3. La verificación cruzada con seed de ensayo coincide en tres herramientas → §12 +4. El backup recargado desde el papel da el fingerprint correcto → §14 + +**Antes de firmar, mira siempre** + +Dirección de destino (entera, no solo los extremos) · importe · comisión · **salidas de cambio**. Si algo no cuadra, no firmes. + +**Vectores de prueba oficiales** + +| | 99 tiradas → 24 palabras | 50 tiradas → 12 palabras | +|---|---|---| +| Primera palabra | `eyebrow` | `hole` | +| Última palabra | `radio` | `path` | +| Fingerprint | — | `8d9cced8` | + +Las secuencias completas, en §10. Los dos vectores empiezan igual (`65515223131652132161133154444`…), así que **no te fíes del principio para distinguirlos**: cuenta las tiradas o mira la palabra final. + +**Nunca** + +- Tecleas tu seed real en ningún ordenador. Nunca. Ni air-gapped. +- Fotografías la seed, las tiradas o la SeedQR. +- Guardas la passphrase junto a las palabras. +- Compras hardware wallets de segunda mano *(cambia una fuga de datos por un ataque de cadena de suministro, que es mucho peor)*. +- Usas la opción «Dice [1-6]» de iancoleman. +- Confías en «es código abierto» como razón para no verificar. + +**Menús que se usan a menudo** + +| Quiero | Ruta | |---|---| -| **No enciende el LED de la Pi** | Esperar un minuto · Cable USB en el puerto equivocado (usa el marcado `PWR`) · Volver a grabar la SD · Fuente insuficiente | -| **La pantalla no muestra nada** | Esperar (el arranque tarda ~45 s) · **Alimentación insuficiente** (una pila de 9V no basta: usa red o power bank) · Soldaduras · Pantalla del modelo equivocado (¿240×240?) | -| **Un botón o el joystick no responde** | Test de I/O para identificar cuál · **Soldadura fría** en ese pin | -| **La cámara se reinicia o se cuelga** | **Alimentación insuficiente** · Conexión del cable a la placa verde de la cámara · Test de I/O | -| **La cámara ve pero no detecta el QR** | Ajustar el brillo con el joystick (arriba/abajo) · Bajar la densidad de QR en ajustes · Bajar la densidad en el ordenador · Alejar/acercar · Evitar reflejos en la pantalla | -| **Arranca pero se reinicia solo** | Alimentación · Cable USB de mala calidad · Escritura de la SD no verificada | -| **No arranca tras grabar la SD** | Imagen del modelo equivocado (ver tabla del punto 4) · Escritura fallida: regrabar esperando a que termine la verificación · Probar la otra aplicación de grabado | -| **El QR animado de Sparrow no entra** | Bajar la densidad · Pantalla del ordenador más brillante · Mover despacio | +| Cargar la seed | `Scan` (SeedQR) o `Seeds` → introducir palabras | +| Firmar | `Scan` sobre el QR de Sparrow | +| Exportar xpub | `Seeds` → seed → `Export Xpub` → `Single Sig` → `Native Segwit` → `Sparrow` | +| Verificar una dirección | `Scan` sobre la dirección | +| Seed nueva con dados | `Tools` → `New Seed` → dados | +| Test de I/O | `Settings` → `Input/Output Tests` | +| Cambiar idioma o red | `Settings` | -**El diagnóstico que resuelve la mitad de los casos:** si algo raro pasa, **cambia la fuente de alimentación** antes de tocar nada más. Y si no, revisa soldaduras. +**Si algo falla:** cambia el cable y el cargador antes que nada. Luego mira soldaduras. --- -## 15. Limitaciones y qué NO hace +## 28. Fuentes -Ser honesto sobre esto es parte de la guía: - -- **No guarda tu seed.** Si pierdes el papel, se acabó. No hay recuperación posible desde el aparato. -- **No es un producto con soporte.** Es un proyecto de voluntarios, sin empresa detrás y sin ánimo de lucro (licencia MIT). Eso es una virtud —no hay incentivo comercial que corrompa el diseño— y significa que si algo falla, la ayuda es una comunidad de Telegram, no un servicio técnico. -- **No tiene elemento seguro ni protección antimanipulación física.** Si alguien accede al aparato mientras está encendido con tu seed cargada, la ve. Su seguridad viene de ser stateless y air-gapped, no de resistir un ataque físico. -- **La pantalla es pequeña y los controles, básicos.** Escribir 24 palabras a mano es lento. Por eso existen las SeedQR. -- **No sustituye a entender lo que haces.** Es la herramienta que menos confianza pide y la que más atención exige. - -**Y lo que hace muy bien:** private key generation trustless, multisig barato (bajar el coste de un quorum de varios cientos de euros a menos de 50 por firmante es su razón de existir), y un modelo de firma donde tú ves cada dato que entra y sale. - ---- - -## 16. Fuentes - -- [Repositorio oficial de SeedSigner](https://github.com/SeedSigner/seedsigner) — README (lista de materiales, versión 0.8.7, tabla de imágenes por modelo, procedimiento de verificación). -- [`docs/dice_verification.md`](https://github.com/SeedSigner/seedsigner/blob/dev/docs/dice_verification.md) — vectores de prueba de la sección 10.1, verificados carácter a carácter. +- [Repositorio oficial de SeedSigner](https://github.com/SeedSigner/seedsigner) — README, lista de materiales, tabla de imágenes por modelo, procedimiento de verificación. +- [`docs/dice_verification.md`](https://github.com/SeedSigner/seedsigner/blob/dev/docs/dice_verification.md) — vectores de prueba de §10, verificados carácter a carácter contra el código fuente. - [`docs/legacy_hardware.md`](https://github.com/SeedSigner/seedsigner/blob/dev/docs/legacy_hardware.md) — modificaciones para Raspberry Pi 1. -- [FAQ oficial](https://seedsigner.com/faqs/) — tabla de resolución de problemas de la sección 14. +- [FAQ oficial](https://seedsigner.com/faqs/) — base de la tabla de resolución de problemas de §24. - [Página de hardware](https://seedsigner.com/hardware/). - [Generador de SettingsQR](https://github.com/SeedSigner/seedsigner-settings-generator). - [seedsigner-os](https://github.com/SeedSigner/seedsigner-os/blob/main/docs/building.md) — compilación reproducible. - [Desactivar WiFi/BT por hardware](https://github.com/DesobedienteTecnologico/rpi_disable_wifi_and_bt_by_hardware) — DesobedienteTecnologico. -- [Release 0.8.7 "The Summer of SeedSigner"](https://github.com/SeedSigner/seedsigner/releases/tag/0.8.7) (8 jul 2026) — notas de versión, idiomas y cambios. -- [seedsigner-simulator](https://github.com/bitsagarob/seedsigner-simulator) de bitsaga (MIT) — el firmware real en el navegador, con builds reproducibles y atestación. Sección 13. +- [Release 0.8.7 «The Summer of SeedSigner»](https://github.com/SeedSigner/seedsigner/releases/tag/0.8.7) (8 jul 2026). +- [Análisis de entropía por imagen](https://kdmukai-bot.github.io/seedsigner-ai-analysis/image-entropy/) — mediciones de §13. +- [seedsigner-simulator](https://github.com/bitsagarob/seedsigner-simulator) de bitsaga (MIT) — §26. +- [Guía de montaje de Lunaticoin en Estudio Bitcoin](https://estudiobitcoin.com/seedsigner-que-es-y-guia-de-montaje/) — tiene fotos reales del montaje. De 2021 y con datos desfasados, pero complementaria: la suya monta, esta explica por qué y cómo verificar. - Grupo de [Telegram](https://t.me/joinchat/GHNuc_nhNQjLPWsS) del proyecto, para dudas concretas. -**Vídeos oficiales de montaje**, enlazados en su sitio a lo largo de la guía: [técnica de soldadura en Pi Zero](https://www.youtube.com/watch?v=9cS17JiohjY) · [montaje Open Pill](https://www.youtube.com/watch?v=gXPFJygZobE) · [montaje Orange Pill](https://www.youtube.com/watch?v=aIIc2DiZYcI), con el conector de la cámara en el [minuto 3:43](https://youtu.be/aIIc2DiZYcI?t=223). - -**Otra guía en castellano.** [SeedSigner: qué es y guía de montaje](https://estudiobitcoin.com/seedsigner-que-es-y-guia-de-montaje/), de Lunaticoin en Estudio Bitcoin. Es de 2021 y documenta el firmware 0.4.4, así que sus datos de software y precios están desfasados — pero **tiene fotos reales del montaje** y de ella sale la opción de los pines a martillo y el apaño de la goma elástica que recogemos aquí. Si andas perdido con las piezas en la mano, sus imágenes ayudan. - --- **Sin garantías.** Material educativo elaborado por usuarios, no un producto oficial de SeedSigner. Verifica cada paso contra la documentación oficial. Practica en una red de pruebas antes de usar fondos reales. -*Última actualización: agosto de 2026 · software v0.8.7. Escrita por Pícaro para Bitcoin Txoko.* +**Licencia CC BY-SA.** Copia, traduce y adapta. + +*Última actualización: septiembre de 2026 · software v0.8.7 · datos técnicos verificados contra el código fuente del proyecto. Escrita por Pícaro para Bitcoin Txoko.*