SPEKE ( Intercambio de claves exponencial de contraseña simple ) es un método criptográfico para el acuerdo de claves autenticadas por contraseña .
Descripción
El protocolo consiste en poco más que un intercambio de claves Diffie-Hellman donde el generador Diffie-Hellman g se crea a partir de un hash de la contraseña .
Aquí hay una forma simple de SPEKE:
- Alice y Bob acuerdan usar un primo seguro p adecuadamente grande y seleccionado al azar , así como una función hash H ().
- Alice y Bob acuerdan una contraseña compartida π .
- Alice y Bob construyen g = H ( π ) 2 mod p . (El cuadrado hace que g sea un generador del subgrupo de orden primo del grupo multiplicativo de enteros módulo p .)
- Alice elige un entero aleatorio secreto a , luego envía a Bob g un mod p .
- Bob elige un entero aleatorio secreto b , luego envía a Alice g b mod p.
- Alice y Bob abortan cada uno si sus valores recibidos no están en el rango [2, p -2], para evitar un ataque de confinamiento de subgrupos pequeños .
- Alice calcula K = ( g b mod p ) a mod p .
- Bob calcula K = ( g a mod p ) b mod p .
Tanto Alice como Bob llegarán al mismo valor para K si y solo si usan el mismo valor para π . Una vez que Alice y Bob calculan el secreto compartido K , pueden usarlo en un protocolo de confirmación de clave para demostrarse mutuamente que conocen la misma contraseña π y obtener una clave de cifrado secreta compartida para enviarse mensajes seguros y autenticados entre sí. El uso de un protocolo de confirmación de clave es opcional, como se especifica en las normas IEEE P1363.2 e ISO / IEC 11770-4.
A diferencia de Diffie-Hellman no autenticado, SPEKE evita el ataque man-in-the-middle mediante la incorporación de la contraseña. Un atacante que puede leer y modificar todos los mensajes entre Alice y Bob no puede aprender la clave compartida K y no puede adivinar más de una vez la contraseña en cada interacción con una parte que la conoce.
En general, SPEKE puede utilizar cualquier grupo de primer orden que sea adecuado para la criptografía de clave pública, incluida la criptografía de curva elíptica . Sin embargo, cuando SPEKE se realiza utilizando criptografía de curva elíptica, el protocolo se cambia esencialmente al requerir una primitiva adicional que debe asignar de forma segura una contraseña a un punto aleatorio en la curva elíptica designada. (Esta primitiva se denomina IOP o función de entero a punto en IEEE P1363.2 e ISO / IEC 11770-4).
Historia
SPEKE es uno de los protocolos más antiguos y conocidos en el campo relativamente nuevo del intercambio de claves autenticadas por contraseña. Fue descrito por primera vez por David Jablon en 1996. [1] En esta publicación, Jablon también sugirió una variante donde, en el paso 2 del protocolo, g se calcula como g = g q S con una constante g q . Sin embargo, esta construcción resultó ser insegura contra los ataques de diccionario y, por lo tanto, ya no se recomendaba en una versión revisada del documento. En 1997, Jablon refinó y mejoró SPEKE con variaciones adicionales, incluido un método de acuerdo de clave autenticado con contraseña aumentado llamado B-SPEKE. [2] Un artículo publicado por MacKenzie en 2001 presenta una prueba en el modelo de oráculo aleatorio de que SPEKE es un protocolo PAKE seguro (usando una definición algo relajada) basado en una variación del supuesto de Decisión Diffie-Hellman. [3] Sin embargo, la prueba trata la función de confirmación de clave en SPEKE como obligatoria, que no es como se especifica SPEKE en las normas IEEE P1363.2 e ISO / IEC 11770-4.
Desde 1999, el protocolo ha sido utilizado por varias empresas en una variedad de productos, generalmente complementando otras técnicas criptográficas.
En 2014, se identificaron dos ataques contra el protocolo SPEKE como se especifica en el artículo original de Jablon de 1996 y en las normas IEEE P1363.2 (D26) e ISO / IEC 11770-4 (2006). [4] El primer ataque permite a un atacante activo hacerse pasar por un usuario sin conocer la contraseña iniciando dos sesiones paralelas con la víctima. El segundo ataque permite que un atacante intermediario manipule la clave de sesión entre dos usuarios honestos sin ser detectado. El primer ataque indica una debilidad práctica del protocolo, mientras que el segundo ataque tiene implicaciones teóricas sobre las pruebas de seguridad de SPEKE. Durante la reunión ISO / IEC JTC 1 / SC 27 en la Ciudad de México en octubre de 2014, los dos ataques fueron discutidos por el comité técnico en ISO / IEC SC 27 / Grupo de trabajo 2, y se acordó que la especificación SPEKE en ISO / La IEC 11770-4 (2006) debe revisarse para abordar los problemas identificados. El parche propuesto implica definir explícitamente las identidades de sesión e incluir esas identidades en la función de derivación de claves de una manera que no cambie la simetría del protocolo. El SPEKE parcheado se ha publicado en ISO / IEC 11770-4 (2017). [5] Sin embargo, la especificación SPEKE en IEEE P1363.2 permanece sin parches.
Patentes
La patente de EE.UU. 6.226.383 describe varias variaciones del método. Esta patente expiró en marzo de 2017.
Estándares
Los estándares que describen SPEKE incluyen IEEE P1363 .2 e ISO / IEC 11770-4. En la última norma ISO / IEC 11770-4 (2017), la especificación SPEKE se revisa a partir de la anterior en ISO / IEC 11770-4 (2006) para abordar los dos ataques informados por Hao y Shahandashti en 2014. [4]
Referencias
- ^ Jablon, David (octubre de 1996). "Intercambio de claves autenticadas con contraseña segura" . Revisión de la comunicación informática . 26 (5): 5-26. CiteSeerX 10.1.1.57.4798 . doi : 10.1145 / 242896.242897 .
- ^ Jablon, David (20 de junio de 1997). Protocolos extendidos de intercambio de claves de contraseñas inmunes al ataque de diccionario . Actas de los Sextos Talleres sobre Tecnologías Habilitadoras: Infraestructura para Empresas Colaborativas (WET-ICE '97) . Cambridge, MA, EE.UU .: IEEE Computer Society. págs. 248-255. CiteSeerX 10.1.1.30.8102 . doi : 10.1109 / ENABL.1997.630822 . ISBN 978-0-8186-7967-4.
- ^ MacKenzie, Philip (19 de julio de 2001). "Sobre la seguridad del protocolo de intercambio de claves autenticadas con contraseña SPEKE" . Consultado el 22 de marzo de 2008 . Cite journal requiere
|journal=
( ayuda ) - ^ a b F. Hao, SF Shahandashti. El protocolo SPEKE revisado . Actas de la 1a Conferencia Internacional sobre Investigación en Normalización de la Seguridad, 2014.
- ^ https://www.iso.org/obp/ui/#iso:std:67933:en