El protocolo STS o el Protocolo Station-To-Station ( Station-to-Station protocol , STS ) es un protocolo criptográfico que permite a dos partes obtener una clave secreta compartida utilizando un canal de comunicación desprotegido . La clave resultante se utiliza para un mayor intercambio mediante cifrado simétrico . El protocolo se basa en el algoritmo Diffie-Hellman .
Una característica distintiva del protocolo STS es la ausencia de marcas de tiempo y soporte para la propiedad de confidencialidad directa perfecta . . El protocolo también realiza una confirmación de clave bidireccional [1] , lo que permite que el protocolo se clasifique como " acuerdo de clave autenticado con confirmación de clave " (AKC).
STS se introdujo originalmente en 1987 en el contexto de la seguridad de la red telefónica ISDN (O'Higgins et al. 1987) [2] , se amplió en 1989 y finalmente fue introducido por Whitfield Diffie , Paul C. van Oorschot y Michael Weiner (Michael J. Wiener) en 1992. Basado en el protocolo STS, se creó el protocolo IKE , que se ha convertido en un estándar de la industria. .
Para una descripción detallada del principio de funcionamiento, considere el proceso de intercambio de información entre algunos usuarios : Alice y Bob. Supongamos que Alice tiene la clave pública certificada de Bob y Bob tiene la clave pública certificada de Alice. Al mismo tiempo, ambas claves fueron previamente certificadas por una autoridad de certificación de confianza que no está directamente involucrada en el proceso. Antes de iniciar el protocolo, debe realizar los siguientes pasos [3] [4] :
El protocolo consta de las siguientes rondas de intercambio de información entre Alice y Bob :
1. Alice elige un número aleatorio x tal que 2 ≤ x ≤ p-1 y le envía a Bob un mensaje m A = g x mod p
(1) Alice → Bob: m A = g x mod p,2. Bob elige un número aleatorio y tal que 2 ≤ y ≤ p-1, calcula m B = g y mod p y, usando el mensaje recibido de Alice, calcula la clave secreta compartida K = m A y mod p = g xy mod pág. Luego envía a Alice m B y un mensaje encriptado E K (Sig B ( m B , m A )), firmado con su firma digital electrónica.
(2) Alice ← Bob : m B = g y mod p, E K (Sig B ( m B , m A )),3. Alice calcula de manera similar la clave secreta y descifra el mensaje de Bob. Luego autentica a Bob verificando su firma electrónica y le envía su mensaje E k (Sig A ( m A , m B )), firmado con su firma.
(3) Alice → Bob: E k (Sig A ( m A , m B )),4. Bob recibe el mensaje de Alice, lo descifra y verifica la firma de Alice.
Aquí Sig A y Sig B son firmas digitales de los usuarios Alice y Bob , respectivamente, K = g xy mod p es la clave común requerida.
El uso de firmas digitales al transmitir mensajes entre Alice y Bob garantiza [5] la autenticidad de recibir un mensaje del usuario de quien debería haber venido. Se introdujo el cifrado de los valores de la firma del usuario utilizando un algoritmo simétrico E para garantizar la confirmación mutua de la exactitud del cálculo de la clave, ya que es imposible obtener los valores correctos de las firmas digitales con una clave calculada incorrectamente. .
En 1994, el profesor de la Universidad de Oxford, Kevin Lowe ,ataque al protocolo STS [6] En este caso, Eva está tratando de averiguar la correspondencia [7] .
(1) Alicia → Eva (Bob): m A = g x mod p, (2) Eva → Bob : m A , (3) Eve ← Bob : m B = g y mod p, E K (Sig B ( m B , m A )), (4) Alice ← Eve(Bob) : m B , E K (Sig B ( m B , m A )), (5) Alicia → Eva (Bob): E K (Sig A ( m A , m B )).La criptoanalista Eve, en el medio entre Alice y Bob, usa su intercambio legítimo con Bob para convencer a Alice de que está actuando en nombre de Bob. La sesión con Bob permanece incompleta porque Eve, al no conocer la clave secreta compartida, no podrá adivinar la respuesta correcta para Bob. Por lo tanto, cualquier mensaje de Eva en el tercer paso será rechazado. Este ataque no representa un peligro real [4] , ya que Eve desconoce la clave secreta K. Sin embargo, en este caso, Alice confundirá a Eve con Bob. Bob pensará que ha formado una clave compartida con Eve, pero en realidad con Alice. Por lo tanto, el protocolo no funcionará correctamente. Las consecuencias de tal ataque son comparables a la situación en la que Eve permanece pasiva hasta que Alice envía el último mensaje a Bob. Bob no puede recibirlo porque Eve está bloqueando el último mensaje. Bob notifica a Alice que no se ha recibido el último mensaje. Aunque un solo ataque no es peligroso, sin embargo, un grupo de atacantes, habiendo realizado dicho ataque, puede reducir drásticamente el poder del servidor central, ya que el servidor reservará recursos para los usuarios cuyas notificaciones no llegarán. También vale la pena señalar que durante un ataque de este tipo, Eve y sus aliados no necesitan certificados . Así que este ataque requiere una pequeña cantidad de recursos. .
En 1995, Martin Abadi y Robert Needham propusieron una forma de prevenir tal ataque al servidor. Para ello, basta con pasar el nombre de usuario abiertamente [8] .
En 2004, Colin Boyd y Wenbo Mao propusieron la siguiente especificación para el protocolo STS [9] :
(1) Alice → Bob: m A = g x mod p (2) Alice ← Bob : metro segundo = g y mod p , Sig segundo ( metro segundo , metro una ), h K 0 ( metro segundo , metro una ) (3) Alice → Bob: Sig A ( m A , m B ), h K 0 ( m A , m B )donde K 0 = f(k) es el parámetro clave de la función hash h K 0 ( m A , m B ), calculado como el valor de alguna función a partir de la clave de sesión resultante K = g xy mod p. El módulo p y el generador g todavía están abiertos.
Existe la posibilidad de un "ataque bilateral de clave compartida desconocida" ( ataque BUKS ) [4] En este caso, los criptoanalistas Eva y Mallory están tratando de averiguar la correspondencia.
(1) Alicia → Eva: m A = g x mod p (2) Eve → Mallory : m A (3) Mallory → Bob : m A (4) Mallory ← Bob : m B = g y mod p, Sig B ( m B , m A ), h K 0 ( m B , m A ) (5) Eve ← Mallory : m B , h K 0 ( m B , m A ) (6) Alice ← Eve : m B , Sig E ( m B , m A ), h K 0 ( m B , m A ) (7) Alicia → Eva: Sig A ( m A , m B ), h K 0 ( m A , m B ) (8) Eve → Mallory : h K 0 ( m A , m B ) (9) Mallory → Bob : Sig M ( m A , m B ), h K 0 ( m A , m B )Como resultado, Eve y Mallory, en connivencia, engañan a Alice y Bob, quienes formaron una clave común. Al mismo tiempo, Alice está segura de que ha formado una clave compartida con Eve y Bob está seguro de que ha formado una clave compartida con Mallory. .
Se utiliza un algoritmo simplificado para la autenticación puramente mutua sin generar un secreto compartido. La implementación se ve así [10] :
(1) Alice → Bob: m A = g x mod p (2) Alice ← Bob : m B = g y mod p, Sig B ( m B , m A ) (3) Alice → Bob: Sig A ( m A , m B )Durante el ataque, Eve, que es una usuaria legítima del sistema y posee un certificado de clave pública, le pide a Alice que inicialice el protocolo. Después de eso, entabla una conversación con Bob, se presenta como Alice y usa su número aleatorio único. Después de recibir una respuesta de Bob, Eve reemplaza su certificado y firma con sus propias copias. Esto le pide a Alice que firme el mensaje de Bob, lo que a su vez le permite a Eve engañar a Bob. .
(1) Alicia → Eva: m A = g x mod p (2) Eve → Bob : m A (3) Eve ← Bob : m B = g y mod p, Sig B ( m B , m A ) (4) Alice ← Eve : m B = g y mod p, Sig E ( m B , m A ) (5) Alicia → Eva: Sig A ( m A , m B ) (6) Eva → Bob: Sig A ( m A , m B )Como resultado, Alice cree que está hablando con Eve y Bob cree que él está hablando con Alice. Este ataque es perfecto porque ni Alice ni Bob sospechan nada. Cabe señalar que Eve juega un papel muy activo en este ataque: firma el mensaje generado por Bob y convence a Alice de que también lo firme para engañar por completo a Bob. Si Eve hubiera jugado el papel de una observadora pasiva ordinaria, Alice nunca habría firmado el mensaje de Bob y no se habría dejado engañar [7] .
En los casos en que sea imposible determinar el usuario de quien se recibió el mensaje, K = g xy se puede usar para crear una inserción falsa [11] :
(1) Alice → Bob: m A = g x mod p (2) Alice ← Bob : m B = g y mod , Sig B ( m B , m A ), MAC K (Sig B ( g y , g x )) (3) Alice → Bob : SA ( g x , g y ) , MAC K (Sig A ( g x , g y ))