SPEKE ( Simple Password Exponential Key Exchange ) es un método criptográfico para el intercambio de claves autenticado mediante 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í tienes una forma sencilla de SPEKE:
- Alice y Bob acuerdan utilizar un número primo seguro p suficientemente grande y seleccionado aleatoriamente , así como una función hash H ().
- Alice y Bob se ponen de acuerdo en una contraseña compartida π .
- Alice y Bob construyen g = H ( π ) 2 mod p . (Al elevar al cuadrado, g se convierte en un generador del subgrupo de orden primo del grupo multiplicativo de los enteros módulo p .)
- Alice elige un número entero aleatorio secreto a , luego le envía a Bob g a mod p .
- Bob elige un número entero aleatorio secreto b , luego le envía a Alice g b mod p.
- Alice y Bob abortan si los valores recibidos no están en el rango [2, p -2], para evitar ataques 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 obtendrán el mismo valor para K si y solo si utilizan 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 para derivar una clave de cifrado secreta compartida que les permita enviarse mensajes seguros y autenticados. El uso de un protocolo de confirmación de clave es opcional, tal como se especifica en las normas IEEE P1363.2 e ISO/IEC 11770-4.
A diferencia del protocolo Diffie-Hellman sin autenticación, SPEKE previene los ataques de intermediario mediante la incorporación de la contraseña. Un atacante que pueda leer y modificar todos los mensajes entre Alice y Bob no podrá obtener la clave compartida K ni intentar adivinar la contraseña más de una vez en cada interacción con una persona que la conozca.
En general, SPEKE puede utilizar cualquier grupo de orden primo adecuado para la criptografía de clave pública, incluida la criptografía de curva elíptica . Sin embargo, cuando SPEKE se implementa mediante criptografía de curva elíptica, el protocolo se modifica sustancialmente al requerir una primitiva adicional que debe mapear 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 autenticado 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 ataques de diccionario y, por lo tanto, ya no se recomendó en una versión revisada del artículo. En 1997, Jablon refinó y mejoró SPEKE con variaciones adicionales, incluido un método de acuerdo de clave autenticado por 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 de la suposición de Decision Diffie-Hellman. [ 3 ] Sin embargo, la prueba trata la función de confirmación de clave en SPEKE como obligatoria, lo cual 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 como complemento de otras técnicas criptográficas.
En 2014, se identificaron dos ataques contra el protocolo SPEKE, tal como se especifica en el artículo original de Jablon de 1996 y en los estándares IEEE P1363.2 (D26) e ISO/IEC 11770-4 (2006). [ 4 ] El primer ataque permite a un atacante activo suplantar la identidad de un usuario sin conocer su contraseña, mediante el inicio de dos sesiones paralelas con la víctima. El segundo ataque permite a un atacante intermediario manipular la clave de sesión entre dos usuarios legítimos sin ser detectado. El primer ataque evidencia una debilidad práctica del protocolo, mientras que el segundo tiene implicaciones teóricas en las pruebas de seguridad de SPEKE. Durante la reunión del Comité Técnico Conjunto 1/Comité de Seguridad 27 de ISO/IEC en Ciudad de México en octubre de 2014, el comité técnico del Grupo de Trabajo 2 del Comité de Seguridad 27 de ISO/IEC discutió los dos ataques y acordó que la especificación SPEKE en ISO/IEC 11770-4 (2006) debía revisarse para abordar los problemas identificados. El parche propuesto implica definir explícitamente las identidades de sesión e incluirlas en la función de derivación de claves de manera que no se altere la simetría del protocolo. La versión parcheada de SPEKE se publicó en ISO/IEC 11770-4 (2017). [ 5 ] Sin embargo, la especificación SPEKE en IEEE P1363.2 permanece sin parchear.
Patentes
La patente estadounidense 6,226,383 describe varias variantes del método. Esta patente expiró en marzo de 2017.
Estándares
Entre los estándares que describen SPEKE se incluyen IEEE P1363.2 e ISO/IEC 11770-4. En el último estándar ISO/IEC 11770-4 (2017), la especificación SPEKE se revisa con respecto a la anterior en ISO/IEC 11770-4 (2006) para abordar los dos ataques reportados por Hao y Shahandashti en 2014. [ 4 ]
Referencias
- ↑ Jablon, David (octubre de 1996). "Intercambio de claves autenticado solo con contraseña fuerte" . ACM SIGCOMM Computer Communication Review . 26 (5): 5– 26. CiteSeerX 10.1.1.57.4798 . doi : 10.1145/242896.242897 . S2CID 2870433 .
- ↑ Jablon, David (20 de junio de 1997). «Protocolos de intercambio de claves de contraseña extendidos inmunes a ataques de diccionario» . Actas del 6.º Taller de la IEEE sobre Tecnologías Facilitadoras: Infraestructura para Empresas Colaborativas . 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. S2CID 10568917 .
- ↑ MacKenzie, Philip (19 de julio de 2001). "Sobre la seguridad del protocolo de intercambio de claves autenticado por contraseña SPEKE" . Recuperado el 22 de marzo de 2008 .
- 1 2 F. Hao, SF Shahandashti. El protocolo SPEKE revisado . Actas de la 1.ª Conferencia Internacional sobre Investigación en Estandarización de la Seguridad, 2014.
- ↑ "Plataforma de navegación en línea (OBP)" . Archivado del original el 21 de agosto de 2012.
Enlaces externos
- Enlaces para criptografía basada en contraseñas
- Métodos SPEKE de la IETF (trabajo en curso)
- Protocolos de acuerdo clave