Protocolo Station-to-Station (STS)
Estudie STS como protocolo corregido de intercambio autenticado de claves y su uso en SSH e IKE.
Protocolo Station-to-Station (STS) es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.
Motivación para STS
El protocolo Station-to-Station (STS) (Diffie, van Oorschot, Wiener, 1992) se diseñó para proporcionar un acuerdo autenticado de claves sin una tercera parte de confianza. El intercambio puro de claves Diffie-Hellman no está autenticado: un atacante intermediario puede sustituir los valores DH propios, estableciendo sesiones separadas con cada parte, que cree compartir una misma clave. STS combina DH con firmas digitales y certificados de clave pública para proporcionar autenticación mutua. Las partes se autentican firmando la transcripción de DH, lo que vincula la clave de sesión con sus identidades. STS influyó directamente en el diseño de IKE (Internet Key Exchange para IPsec) y SSH.
Pasos del protocolo STS
El protocolo STS funciona de la siguiente manera. Alice y Bob acuerdan un grupo DH, compuesto por el primo p y el generador g. (1) Alice envía g^a mod p a Bob. (2) Bob envía g^b mod p, Cert_B y Sig_B{g^b, g^a} a Alice. Bob firma la concatenación de ambos valores DH utilizando su clave privada. (3) Alice verifica el certificado y la firma de Bob, y después envía Cert_A y Sig_A{g^a, g^b} cifrados con la clave de sesión K = (g^ab mod p). La identidad y la firma de Alice están cifradas, lo que proporciona protección de la identidad de Alice: los fisgones pasivos no pueden vincular a Alice con esta sesión. Ambas partes calculan K = g^ab mod p y quedan autenticadas mutuamente mediante las firmas.
STS frente a DH no autenticado
Comparar STS con DH no autenticado muestra qué aporta la autenticación. En DH simple, Mallory intercepta g^a y g^b, sustituye g^m en la comunicación con Alice y g^m en la comunicación con Bob, y establece K1 = g^am y K2 = g^bm. Mallory descifra todo el tráfico. En STS, Bob firma {g^b, g^a}; esta firma cubre exactamente los valores DH de esta sesión. Aunque Mallory sustituya g^b por g^m, no puede falsificar una firma válida utilizando la clave del certificado de Bob. Alice rechaza la sesión. La idea clave es que la autenticación en el intercambio de claves debe cubrir la transcripción de DH, no solo las afirmaciones de identidad.
Secreto hacia adelante en STS
STS logra secreto perfecto hacia adelante (PFS) porque la clave de sesión se deriva de valores DH efímeros, g^a y g^b, que se descartan después de la sesión. Aunque la clave de firma a largo plazo de Bob se vea comprometida posteriormente, las sesiones STS registradas anteriormente no pueden descifrarse: el atacante necesita los exponentes DH efímeros a y b, que nunca se almacenaron. Esta es la misma propiedad que se valora en TLS con conjuntos de cifrado ECDHE. Sin DH efímero, por ejemplo, al utilizar transporte de claves RSA, donde la clave de sesión se cifra con la clave RSA estática del servidor, el compromiso de la clave a largo plazo permite descifrar todas las sesiones anteriores.
Protección de la identidad
STS cifra el certificado y la firma de Alice en el paso 3, lo que proporciona protección de la identidad del respondedor frente a fisgones pasivos. Un observador pasivo solo ve el valor DH de Alice y el certificado de Bob, que Bob envía en texto plano en el paso 2. La identidad de Alice queda oculta frente a la observación pasiva. Los atacantes activos que realizan un MITM son detectados cuando falla la verificación de la firma. Esta asimetría, en la que la identidad de la iniciadora se revela al atacante activo mientras que la identidad del respondedor queda protegida frente al fisgón pasivo, es una decisión de diseño deliberada. La protección completa de la identidad de ambas partes frente a atacantes activos requiere una complejidad adicional en el protocolo, como compartir previamente valores DH o utilizar elementos de grupo anónimos.
STS en IKEv1 e IKEv2
IKE (Internet Key Exchange), el protocolo de gestión de claves para IPsec, deriva directamente de STS. IKEv1 (RFC 2409) implementó una autenticación de firmas al estilo de STS en su Main Mode. IKEv2 (RFC 7296) es un rediseño más limpio con cuatro intercambios de mensajes: IKE_SA_INIT, para el intercambio DH y los nonces, e IKE_AUTH, para la identidad, el certificado y la firma sobre la transcripción de IKE_SA_INIT. El formato de firma es AUTH = PRF(SK_pi, transcript) para PSK, o una firma digital sobre los octetos de IKE_SA_INIT para la autenticación mediante certificado. IKEv2 también admite Extensible Authentication Protocol (EAP) para la autenticación heredada basada en contraseñas, de forma análoga a la compatibilidad de STS con diversos métodos de autenticación.
STS en SSH
La autenticación mediante claves de SSH utiliza un mecanismo similar al paso 3 de STS. Después del intercambio de claves DH, donde SSH_MSG_KEXDH_REPLY contiene la clave pública del servidor, el valor DH y una firma sobre el hash del intercambio, el cliente verifica la clave de host del servidor. Para la autenticación del cliente, mediante SSH_MSG_USERAUTH_REQUEST con el método publickey, el cliente firma {session_id, username, service, method, key_algo, public_key} utilizando su clave privada. session_id se deriva de la transcripción de DH, lo que vincula la autenticación a esta sesión específica y evita la falsificación entre sesiones que afectaba a NS. SSH no utiliza certificados de forma predeterminada, pero los admite mediante ssh-keygen -s, para la firma de certificados, en implementaciones grandes.
Familia de protocolos Sigma
STS forma parte de la familia SIGMA (SIGn-and-MAc) de protocolos de intercambio autenticado de claves (AKE), formalizada por Hugo Krawczyk. SIGMA añade un MAC a STS: cada parte firma la transcripción y calcula un MAC de su identidad utilizando la clave de sesión: MAC(K, identity). El MAC vincula la identidad con la clave de sesión y evita un ataque específico en el que un adversario puede vincular firmas de distintas sesiones. SIGMA-I, con la identidad de la iniciadora protegida, SIGMA-R, con la identidad del respondedor protegida, y SIGMA-0, sin protección de identidad, son variantes de este protocolo. IKEv2 y X3DH de Signal son protocolos de la familia SIGMA. El formalismo SIGMA proporciona una demostración rigurosa de seguridad para diseños similares a STS.
Ataque KCI y variantes de STS
STS es vulnerable al compromiso de clave con suplantación (KCI): si la clave a largo plazo de Alice se ve comprometida, un atacante puede suplantar a cualquier parte ante Alice en una sesión nueva, ya que puede falsificar la firma de Alice sobre cualquier transcripción. Esto significa que el compromiso de la clave de una parte permite al adversario suplantar a otras partes ante ella. El KCI es inherente a los protocolos AKE basados en firmas; para defenderse contra él, la clave de sesión debe depender de las contribuciones de ambas partes de una manera que impida que la parte comprometida las sustituya. HMQV (Hashed Menezes-Qu-Vanstone) y NAXOS ofrecen resistencia al KCI, a costa de una complejidad adicional.
Negación plausible y mensajería Off-the-Record
STS proporciona no repudio: las firmas demuestran con certeza criptográfica quién dijo qué. Esto puede ser indeseable en ocasiones: en conversaciones privadas, los participantes quizá no quieran que existan pruebas criptográficas de sus declaraciones que puedan presentarse ante un tribunal. La mensajería Off-the-Record (OTR) y el Double Ratchet de Signal proporcionan negación plausible: en lugar de firmar los mensajes, utilizan claves MAC que están en poder tanto del emisor como del receptor. Después de la conversación, ambas partes pueden afirmar que la otra fabricó los mensajes, ya que cada una posee la clave necesaria para generar los MAC. La contrapartida es que la negación plausible sacrifica el no repudio. Los diseños similares a STS son adecuados cuando se requiere rendición de cuentas; OTR y Signal, cuando se valora la negación plausible.
Demostración de seguridad de STS
La seguridad de STS se analizó de manera informal en el artículo original, pero Bellare y Rogaway la demostraron formalmente (1993, 1994) en su influyente modelo de seguridad AKE. Definieron qué significa que un protocolo de intercambio de claves sea seguro: que las claves de sesión sean indistinguibles de valores aleatorios, incluso cuando el adversario puede registrar partes, revelar claves de sesión, revelar claves a largo plazo, excepto la de la sesión objetivo, y controlar la red. Este modelo de seguridad basado en simulación, ampliado por Canetti-Krawczyk y posteriormente por UC (Universal Composability), es ahora estándar para demostrar la seguridad de protocolos AKE. TLS 1.3, Signal y Noise cuentan con demostraciones formales en variantes de este modelo.
Cuestionario sobre la vinculación de firmas de STS
¿Por qué STS requiere que ambos valores DH (g^a y g^b) se incluyan en la transcripción firmada?
Repaso del protocolo STS
STS combina el intercambio efímero de claves DH con firmas digitales para proporcionar un acuerdo autenticado de claves sin una TTP. Ambas partes firman la transcripción de DH, vinculando la autenticación a la sesión. STS proporciona secreto hacia adelante (DH efímero), autenticación mutua (firmas) y protección de la identidad del respondedor (los datos de Alice se cifran antes de enviarse). STS influyó directamente en IKEv2 y en la autenticación de claves de SSH. SIGMA formaliza STS mediante MAC de identidad y demostraciones de seguridad. KCI es una debilidad inherente de STS que HMQV/NAXOS mitigan. La negación plausible (como en Signal) requiere reemplazar las firmas por MAC para proporcionar autenticidad a nivel de mensaje.
Preguntas frecuentes
¿La lección «Protocolo Station-to-Station (STS)» es gratis?
Sí — el texto completo de «Protocolo Station-to-Station (STS)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Protocolo Station-to-Station (STS)»?
Estudie STS como protocolo corregido de intercambio autenticado de claves y su uso en SSH e IKE. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cryptology Academy?
No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Protocolo Station-to-Station (STS)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?
Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- El protocolo Needham-Schroeder y sus ataques
- Protocolo Station-to-Station (STS)
- El framework del protocolo Noise
- Principios del diseño seguro de protocolos