Claves públicas, claves privadas y direcciones: qué hace cada una
Tres cosas que la gente usa como si fueran intercambiables y que hacen trabajos completamente distintos. Tenerlas claras es lo que hace que todas las demás decisiones de seguridad cobren sentido.
Casi todos los errores graves en cripto se remontan a confundir tres cosas que suenan parecido y que no se comportan en nada igual. Una vez clara la distinción, casi todos los consejos de seguridad dejan de ser una lista de reglas que memorizar y pasan a ser obvios.
La clave privada firma
Una clave privada es un número secreto muy grande. Su única función es producir firmas: dada una transacción, genera una prueba de que quien tiene la clave la autorizó. Ese es todo su trabajo.
La propiedad decisiva es que cualquiera puede verificar una firma sin que se revele la clave que la produjo. Eso es lo que hace que el sistema funcione siquiera. También es la razón por la que la clave privada es la única de las tres que debe permanecer secreta, y por la que quien la obtenga puede mover tus fondos sin ningún paso adicional. No hay una capa de contraseña por debajo ni ninguna autoridad que pueda revertir el resultado.
La clave pública verifica
La clave pública se deriva de la clave privada mediante un cálculo de un solo sentido. Con la clave privada puedes calcular la pública de forma trivial; con la pública no puedes recuperar la privada por ningún medio práctico. Esa asimetría es todo el cimiento.
Su trabajo es la verificación. Cualquiera que tenga la clave pública puede comprobar que una firma la produjo la clave privada correspondiente, y así es como la red confirma que una transacción la autorizó quien controla los fondos. Publicarla no te cuesta nada.
La dirección recibe
Una dirección se deriva de la clave pública, normalmente aplicándole una función hash y añadiendo una suma de verificación. Es más corta, incluye detección de errores —de modo que una dirección mal tecleada casi siempre se rechaza en lugar de aceptarse— y en la mayoría de las redes no revela la clave pública hasta que gastas desde ella por primera vez.
Su trabajo es darse a conocer. Una dirección es un destino, nada más. Compartir una no expone tus fondos a ningún riesgo; el peor resultado es una pérdida de privacidad, porque cualquiera con la dirección puede ver su historial de transacciones en un libro mayor público.
Dónde encaja la frase semilla
Una frase semilla no es una cuarta clave. Es una codificación legible por humanos del número que genera tus claves privadas, normalmente todas ellas, a lo largo de muchas direcciones, de forma determinista. Por eso una sola frase puede restaurar una cartera entera.
De ahí se sigue directamente que una frase semilla es estrictamente más sensible que cualquier clave privada individual, porque equivale a todas ellas a la vez. Todas las reglas sobre frases semilla —no la escribas nunca en un sitio web, no la fotografíes, no la guardes en un gestor de contraseñas que no controlas— se siguen de ese único hecho y no de la superstición. Nuestra entrada del glosario cubre la codificación en sí.
Qué vuelve obvio todo esto
Con los tres papeles claros, varios consejos estándar dejan de necesitar memorizarse:
- Compartir una dirección es seguro, porque una dirección solo recibe. Compartir una clave privada es la pérdida total, porque una clave privada firma.
- Una cartera física es valiosa precisamente porque realiza la firma dentro del dispositivo, así que la clave privada nunca llega a existir en un ordenador conectado a internet.
- «Verifica la dirección» va de la suma de verificación y del malware que sustituye el portapapeles, no del secreto.
- Un servicio que te pide la frase semilla para «validar» o «restaurar» algo te está pidiendo todas las claves que tienes. No existe una versión legítima de esa petición.
La relación de un solo sentido
Conviene retener la dirección de la derivación: frase semilla → clave privada → clave pública → dirección, con cada paso fácil hacia delante e inviable hacia atrás. Todas las consecuencias prácticas se siguen de esa flecha. Puedes repartir el extremo lejano con libertad y debes proteger el extremo cercano de forma absoluta, y nada de lo que hay en medio cambia eso.
Por qué una sola semilla produce muchas direcciones
Las carteras modernas son jerárquicas y deterministas, que es una manera precisa de decir que una sola semilla genera todo un árbol de claves mediante un procedimiento definido. Cada rama produce una clave privada nueva, y cada una de ellas produce su propia clave pública y su dirección.
De ahí se siguen dos consecuencias útiles. Una cartera puede entregar una dirección nueva en cada pago sin necesitar una copia de seguridad nueva, porque todas esas direcciones descienden de la misma semilla. Y restaurar esa semilla en otro software recupera las mismas direcciones, porque el procedimiento de derivación está estandarizado y no es propietario.
También explica una confusión frecuente: ver muchas direcciones en una cartera no significa que existan muchos secretos separados. Hay un secreto, y todo lo demás se deriva de él. Eso es cómodo y es precisamente por lo que la frase semilla es el único punto de fallo total.
Firmar no revela la clave
Conviene ser explícitos sobre la propiedad en la que descansa todo. Una firma se produce a partir de la clave privada y del mensaje, y se puede comprobar contra la clave pública; pero observar cualquier cantidad de firmas no le permite a un atacante reconstruir la clave privada que las hizo.
Eso es lo que hace seguro firmar repetidamente con la misma clave en lugar de necesitar una nueva cada vez. También explica por qué firmar un mensaje para demostrar la propiedad de una dirección es una operación normal y segura, mientras que introducir una frase semilla nunca lo es. Una es el uso previsto del sistema y la otra es entregar el sistema.
Dónde se tensa el modelo
Dos desarrollos complican esta imagen limpia, y conviene conocer ambos porque cambian lo que significa una firma.
Los esquemas multifirma requieren varias claves privadas para autorizar una transacción, de modo que ninguna clave por sí sola basta. Eso elimina el punto único de fallo a costa de una historia de recuperación más compleja: ahora tienes varios secretos que proteger y una política sobre cuántos hacen falta.
La abstracción de cuentas, en las redes que la soportan, permite programar las reglas que gobiernan una cuenta en lugar de fijarlas: límites de gasto, retrasos temporales o recuperación por una parte designada. Es útil, y significa que «quien tiene la clave controla los fondos» ya no es estrictamente cierto en esas redes. El mecanismo base no ha cambiado; lo que ha cambiado es quién puede invocarlo.