Los algoritmos COMP128 son implementaciones de las funciones A3 y A8 definidas en el estándar GSM . A3 se utiliza para autenticar la estación móvil en la red. A8 se utiliza para generar la clave de sesión que A5 utiliza para cifrar los datos transmitidos entre la estación móvil y la BTS .
Existen tres versiones de COMP128. Originalmente eran confidenciales. Una descripción parcial de la primera versión se filtró en 1997 y se completó mediante ingeniería inversa . Esto condujo a su publicación completa en 1998. [ 1 ] La segunda y la tercera versiones se obtuvieron mediante ingeniería inversa del software que verifica la conformidad de las tarjetas SIM. [ 2 ]
Introducción
Para obtener más información sobre cómo se utilizan A3 y A8, consulte el Centro de autenticación .
Las funciones A3 y A8 reciben como entrada una clave de 128 bits ( K i ) y un desafío de 128 bits ( RAND ). A3 genera una respuesta de 32 bits ( SRES ) y A8 genera una clave de sesión de 64 bits ( K c ). A3/A8 es la función combinada que recibe como entrada K i y RAND , y genera como salida SRES y K c .
Dado que A3 y A8 no se especifican con mayor detalle, los operadores pueden elegir libremente los algoritmos concretos que se utilizarán para A3 y A8.
Algoritmos COMP128
Los algoritmos COMP128 implementan la función A3/A8. Hay tres de ellos:
- COMP128-1 – algoritmo original con debilidades conocidas
- COMP128-2 – algoritmo más robusto que aún borra los 10 bits más a la derecha de K c
- COMP128-3: mismo algoritmo que COMP128-2 con los 64 bits de K c generados.
Todos ellos se basan en una función de compresión con dos entradas de 128 bits y una salida de 128 bits, de ahí sus nombres. K i y RAND se utilizan como entradas de la función de compresión. Los bits de su salida se utilizan para rellenar SRES y K c .
Descripción de COMP128-1
COMP128-1 utiliza una función de compresión de ocho rondas basada en una estructura de mariposa de cinco etapas. SRES se rellena con los primeros 32 bits de la salida. K c se rellena con los últimos 54 bits de la salida, seguidos de diez ceros.
Para obtener una descripción completa del algoritmo, el lector puede consultar la implementación de OsmocomBB .
Descripción de COMP128-2/3
La implementación de COMP128-2 y COMP128-3 es notablemente más compleja que la de COMP128-1. Para una descripción completa del algoritmo, el lector puede consultar la implementación de OsmocomBB o la implementación de FreeRADIUS , ambas basadas en el código Python del artículo Secrets of Sim [ 2 ] . COMP128-2 es idéntico a COMP128-3 excepto por el hecho de que, al final, borra los 10 bits más a la derecha de K c .
Seguridad
La función hash COMP128-1 se considera débil debido a la insuficiente difusión de pequeños cambios en la entrada. Se han demostrado ataques prácticos que pueden recuperar la clave del suscriptor de la tarjeta SIM. [ 3 ]
Las claves de sesión generadas por COMP128-1 y COMP128-2 tienen intencionadamente solo 54 bits de entropía. Esto debilita significativamente el cifrado A5 o A6.
Referencias
Enlaces externos
- Briceno, Marc; Goldberg, Ian (1998), Clonación GSM
- Handschuh, Helena; Paillier, Pascal (2000), Reducción de la probabilidad de colisión de supuestos Comp128 , CiteSeerX 10.1.1.141.1033
- Estándar GSM