Xpub: qué revela la clave pública de tu billetera de Bitcoin
Una xpub permite encontrar todas las direcciones de una cuenta de Bitcoin, y con ellas todo su historial, sin poder gastar. Qué revela, cuál es su riesgo y a quién dársela.
Una xpub (clave pública extendida) es la clave pública de una cuenta de billetera de Bitcoin de la que se derivan todas sus direcciones: quien la tiene ve cada pago que esa cuenta recibe y envía, pero no puede gastar nada.
Qué contiene una xpub
El estándar BIP32 describe las billeteras jerárquicas deterministas: una sola semilla produce todo un árbol de claves. Una clave extendida le agrega a la clave un código de cadena (chain code), que sirve para calcular sus claves hijas. Según BIP32, conocer una clave pública extendida permite reconstruir todas sus claves públicas hijas no endurecidas (non-hardened).
Las billeteras ordenan estas claves según la ruta de BIP44: m / purpose' / coin_type' / account' / change / address_index. La xpub que muestra una billetera es la del nivel account'. Abarca dos cadenas de direcciones: 0 para las direcciones de recepción, 1 para las direcciones de cambio, que reciben el cambio de tus propios envíos.
xpub, ypub o zpub
El prefijo indica qué tipo de dirección usa la cuenta:
| Prefijo | Estándar | Ruta de la primera cuenta | Direcciones |
|---|---|---|---|
xpub | BIP44 | m/44'/0'/0' | Direcciones antiguas, que empiezan con 1 |
ypub | BIP49 | m/49'/0'/0' | SegWit anidado, que empiezan con 3 |
zpub | BIP84 | m/84'/0'/0' | SegWit nativo, que empiezan con bc1q |
Las tres son el mismo tipo de clave: solo cambian sus bytes de versión, y con ellos sus primeras letras.
Qué revela una xpub
- Todas las direcciones de la cuenta, pasadas y futuras: se derivan una por una, sin límite.
- Todo el historial: cada recepción, cada envío, cada monto, ya que la blockchain es pública.
- El saldo de la cuenta, en cualquier momento.
- Nada para gastar: sin clave privada, no se puede firmar ninguna transacción.
El propio BIP32 menciona este uso: entregarle a un auditor la clave pública extendida de una cuenta le permite ver todos los pagos entrantes y salientes, sin acceso a ninguna clave secreta. Quien tiene tu xpub tiene la vista de ese auditor, para siempre: una xpub no se puede revocar.
El riesgo que debes conocer
Una xpub sola no permite gastar. Pero BIP32 advierte: conocer una clave pública extendida y cualquier clave privada no endurecida que descienda de ella equivale a conocer la clave privada extendida de la que provienen. Dicho de otro modo, tu xpub y la clave privada de una sola de tus direcciones bastan para gastar toda la cuenta.
El nivel account' es endurecido: una filtración así queda limitada a esa cuenta y no alcanza a las otras cuentas de la misma semilla. Así que exporta una xpub, nunca la clave privada de una dirección, y nunca des tu frase de recuperación.
Cómo un programa encuentra las direcciones
Un programa que lee una xpub deriva las direcciones en orden y se detiene después de una serie de direcciones nunca usadas: BIP44 fija este límite (gap limit) en 20. Si creaste más de 20 direcciones seguidas sin usarlas, un programa que sigue esta regla no verá las siguientes.
Para leer los saldos, el programa consulta luego un servidor o un nodo, dirección por dirección. Ese servidor conoce entonces todas tus direcciones y puede vincularlas entre sí: esa es la otra filtración, que no viene de la xpub en sí, sino de la forma de leerla.
Antes de dar tu xpub
- Pregúntate quién la guarda: una aplicación que guarda tu xpub en sus servidores conoce tu cuenta durante todo ese tiempo, y una filtración de sus datos la expone.
- Prefiere una lectura local: una billetera conectada a tu propio nodo, o una herramienta que deriva las direcciones en tu dispositivo, no le confía la xpub a nadie.
- Una cuenta para cada uso: otra cuenta (el siguiente
account') tiene otra xpub, que no revela nada de las demás cuentas.
Cómo CentraFIN lee tu xpub
CentraFIN lee tu xpub en tu dispositivo: tu navegador deriva las direcciones, lee sus saldos por una conexión cifrada de extremo a extremo y lo guarda todo en una bóveda que él mismo cifra. El servidor de CentraFIN nunca ve tu xpub, una dirección ni un saldo. Cada dirección se lee siempre en el mismo nodo, elegido al azar, para que ningún nodo vea la cuenta completa. Los detalles están en la página Bitcoin.
Fuentes
- BIP32: billeteras jerárquicas deterministas
- BIP44: ruta de derivación y gap limit
- BIP49: ypub, SegWit anidado
- BIP84: zpub, SegWit nativo
Preguntas frecuentes
¿Se pueden robar bitcoins con una xpub?
Con la xpub sola, no: no permite firmar. Si además se tiene la clave privada de una de las direcciones de la cuenta, sí: toda la cuenta.
¿Basta una xpub para ver mi saldo?
Sí. Da todas las direcciones de la cuenta, y la blockchain da sus saldos y sus transacciones.
¿Qué hago si se filtró mi xpub?
No se puede revocar: quien la tenga verá siempre esa cuenta. De ahora en adelante, usa una cuenta nueva cuya xpub nunca se haya compartido. La transferencia desde la cuenta anterior, en cambio, seguirá siendo visible.
¿Qué diferencia hay entre xpub, ypub y zpub?
El tipo de dirección de la cuenta: direcciones que empiezan con 1 para xpub, con 3 para ypub (SegWit anidado) y con bc1q para zpub (SegWit nativo).
Toma el control de tu patrimonio
Tu cuenta está lista en un minuto, sin contraseña.