Xpub: lo que revela la clave pública de tu wallet de Bitcoin
Una xpub permite encontrar todas las direcciones de una cuenta de Bitcoin, y por tanto todo su historial, sin poder gastar. Qué revela, qué riesgo tiene y a quién dársela.
Una xpub (clave pública extendida) es la clave pública de una cuenta de wallet 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 wallets jerárquicas deterministas: una sola semilla produce todo un árbol de claves. Una clave extendida añade 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 reforzadas (non-hardened).
Las wallets ordenan estas claves según la ruta de BIP44: m / purpose' / coin_type' / account' / change / address_index. La xpub que muestra una wallet es la del nivel account'. Cubre 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 (legacy), que empiezan por 1 |
ypub | BIP49 | m/49'/0'/0' | SegWit anidado, que empiezan por 3 |
zpub | BIP84 | m/84'/0'/0' | SegWit nativo, que empiezan por 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 a una, sin límite.
- Todo el historial: cada recepción, cada envío, cada importe, 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 da este uso: entregar la clave pública extendida de una cuenta a un auditor 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 reforzada que descienda de ella equivale a conocer la clave privada extendida madre. 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' está reforzado: una fuga así queda limitada a la cuenta afectada y no alcanza a las demás cuentas de la misma semilla. Así que exporta una xpub, nunca la clave privada de una dirección, y no des nunca tu frase de recuperación.
Cómo encuentra un programa las direcciones
Un programa que lee una xpub deriva las direcciones en orden y se detiene tras una serie de direcciones nunca usadas: BIP44 fija este límite (gap limit) en 20. Si has creado más de 20 direcciones seguidas sin usarlas, un programa que siga esta regla no verá las siguientes.
Para leer los saldos, el programa consulta después a un servidor o a un nodo, dirección por dirección. Ese servidor conoce entonces todas tus direcciones y puede relacionarlas entre sí: es la otra fuga, 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 mientras la guarde, y una filtración de sus datos la expone.
- Mejor una lectura local: una wallet conectada a tu propio nodo, o una herramienta que deriva las direcciones en tu dispositivo, no confía la xpub a nadie.
- Una cuenta por uso: otra cuenta (el siguiente
account') tiene otra xpub, que no revela nada de las demás cuentas.
Cómo lee CentraFIN 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, ni 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 entera. Todos los detalles están en la página Bitcoin.
Fuentes
- BIP32: wallets 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?
No solo con la xpub: 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 mi xpub se ha filtrado?
No se puede revocar: quien la tenga verá siempre esa cuenta. A partir de ahora, usa una cuenta nueva cuya xpub nunca se haya compartido. La transferencia desde la cuenta antigua, eso sí, seguirá siendo visible.
¿Qué diferencia hay entre xpub, ypub y zpub?
El tipo de dirección de la cuenta: direcciones que empiezan por 1 para xpub, por 3 para ypub (SegWit anidado) y por bc1q para zpub (SegWit nativo).
Toma el control de tu patrimonio
Tu cuenta está lista en un minuto, sin contraseña.