6) 3G, LA NUEVA GENERACIÓN

Mientras la telefonía GSM estaba en pleno auge, se iban poniendo los cimientos de una nueva tercera generación de teléfonos móviles. Se suponía que iba a representar una revolución en las comunicaciones, capacitando al usuario para efectuar videoconferencias y todo tipo de servicios en red. La realidad fue más sobria. Al altísimo coste de las licencias para los operadores telefónicos (en total, 50 000 millones de euros tan sólo en Alemania) se juntaba la dificultad técnica de poner en marcha una infraestructura nueva de comunicaciones, todo mientras los teléfonos GSM proporcionaban cada vez más y mejores servicios a los usuarios.

Pero finalmente la telefonía de tercera generación comenzó a desplegarse. El resultado se llama UMTS (Universal Mobile Telecommunications System). La arquitectura de este nuevo sistema, definidos por el 3GPP (3rd Generation Partnership Project) comparte elementos con la telefonía GSM, pero es muy distinto en otros aspectos. La integración con servicios de Internet es ahora mucho más profunda, y ni que decir tiene que todos los sistemas fueron profundamente reformados. No sólo entraban en juego algoritmos de cifrado y autenticación nuevos, sino que los fallos de concepto de la telefonía GSM fueron corregidos.

Los estándares de seguridad de 3GPP se dividen en cinco tipos:

1) Seguridad en el acceso a red. Es el conjunto de protecciones que proporcionan a un usuario un acceso seguro a la red 3G. En particular, protegen contra ataques en el tramo que se desarrolla en el aire (teléfono a estación base)

2) Seguridad en el dominio del proveedor. Proporciona una conexión segura entre los centros de autenticación y los centros conmutadores para el intercambio de datos

3) Seguridad en el dominio del usuario. Asegura el acceso del usuario al teléfono (para evitar que otro usuario no autorizado pueda usarlo). Se consigue mediante un código secreto similar al usado en la telefonía GSM (PIN)

4) Seguridad en el dominio de aplicación. Protege las comunicaciones de las aplicaciones (programas, servicios…) entre el usuario y el proveedor

5) Seguridad de configuración. Permite al usuario habilitar o deshabilitar diversas opciones de seguridad, como el uso de cifrado

El tipo 1 (seguridad en el acceso a red) es lo que vimos en páginas anteriores en el caso de la telefonía GSM, y es lo que vamos a ver aquí de nuevo. En términos generales, la seguridad en el acceso a red comprende cuatro puntos fundamentales:

1) Confidencialidad de la identidad del usuario

2) Autenticación e intercambio de claves

3) Confidencialidad de los mensajes

4) Integridad de los datos

El primer punto se resuelve, de forma similar al caso GSM, con la emisión de un número de identidad temporal. Los otros tres puntos constituyen el problema de autenticación e intercambio de claves, aunque más bien deberíamos hablar de “acuerdo”, ya que realmente no intercambiamos la clave. El esquema es algo más complejo que en el caso GSM, puesto que ahora tienen que autenticarse tanto el teléfono como la red. Antes solamente era el móvil el que tenía que demostrar su identidad, pero como hemos visto existe la posibilidad de que una estación base falsa intente engañar al usuario, así que ahora serán las dos partes las que se identifiquen mutuamente. También hay que acordar una clave de integridad IK que impedirá alteraciones en los datos transmitidos o recibidos, además de la habitual clave para cifrado CK.

Los pasos iniciales son similares a los de la red GSM. El teléfono emite un mensaje a la red, o bien la red decide que hay que iniciar un nuevo proceso de autenticación e intercambio. Para ello, el centro de conmutación, envía un paquete de datos a la estación de telefonía que conectará con el móvil. En el caso GSM, dicho paquete era un triplete (RAND, SRES, Ki): un paquete aleatorio, la respuesta que deberá enviar el móvil y, si todo va bien, la clave de autenticación de la tarjeta SIM. Pero ahora lo que tendremos no es un triplete, sino un quintuplete:

a) Un paquete de datos aleatorios RAND, de 128 bits

b) Un paquete de datos RES (de 64 bits), que se usará para contrastar la respuesta del móvil

c) Una clave de confidencialidad CK, de 128 bits

d) Una clave de integridad IK, de 128 bits

e) Un “vale de autenticación” [Authentication Token] AUTN, que se compone a su vez de tres partes:

—Un número de secuencia SQN sumado (“xoreado” más bien) con una clave de autenticación AK, es decir, SQNAK (tanto SQN como AK tienen 48 bits de longitud)

—Un campo para gestión de autenticación AMF, que contiene datos sobre el tipo de algoritmo usado, la clave y su período de vigencia (16 bits)

—Un código de autenticación del mensaje MAC (64 bits)

Todo eso es lo que el centro de conmutación tiene en su poder, y que necesitará para “negociar una sesión” con el móvil. Como ven ustedes, la cosa se complica, aunque podemos reconocer algunos de estos elementos. Nuevamente, hay una clave secreta que poseen solamente la red y el móvil. En el caso GSM, la llamábamos Ki, ahora será simplemente K. E igual que antes, ahora tampoco podemos transmitir CK por el aire, ya que cualquiera podría interceptarla. Lo que hemos de hacer es producir un conjunto de datos que permita a ambas partes identificarse a plena satisfacción, y acordar una clave de cifrado, todo ello sin revelar nada sobre K.

Para ello, necesitaremos un conjunto de algoritmos, llamados f1 a f5. En realidad, son todos el mismo algoritmo, pero que nos dan datos diferentes según los necesitemos (como A3 y A8 en el caso GSM). Hay otro algoritmo, llamado f0, que produce el paquete aleatorio RAND. Los algoritmos f2 a f5 toman como entrada el paquete de datos RAND y la clave secreta K; f1 además toma como datos de entrada los paquetes SQN y AMF que hemos mencionado antes.

Comencemos entonces. El centro de conmutación (o la antena más próxima, si lo prefiere) envía al móvil el paquete aleatorio y el vale de autenticación, es decir, el paquete (RAND, SQNAK, AMF, MAC). Ahora el móvil efectúa las siguientes operaciones:

—f5(RAND, K) = AK. Con este primer paso, recuperamos la clave de autenticación.

—(SQNAK) ⊕ AK = SQN (recuerden que ⊕ aquí representa la operación XOR, que es su propia inversa). Con la clave AK del paso anterior, y el paquete de datos SQNAK, recuperamos el número de secuencia SQN. El centro conmutador, en realidad, no ha recibido un quintuplete de datos, sino varios quintupletes, para que se vayan usando conforme sean necesarios. El número de secuencia SQN indica qué quintuplete se está utilizando en ese momento

—f1(RAND, K, AMF, SQN) = XMAC. A partir de los datos obtenidos en los dos pasos anteriores, y del paquete AMF enviado por el centro de conmutación, el móvil construye XMAC. Si coincide con el código MAC que tiene el centro de conmutación, es decir si XMAC=MAC, significa que los datos no han sido alterados, es decir, que tanto el móvil como el centro de conmutación están usando el mismo tipo de cifrado (AMF), el mismo quintuplete de autenticación (SQN), están realizando la autenticación en ese momento (RAND), y además comparten la misma clave secreta (K). De ese modo, la red ha quedado autenticada frente al móvil

—f2(RAND, K) = XRES. Si la clave K y el paquete aleatorio RAND son iguales, XRES=RES y el móvil queda autenticado frente a la red

En caso de que los pasos anteriores hayan sido cumplimentados satisfactoriamente, ambas partes quedan autenticadas, es decir, convencidas de que el otro es quien dice ser. Ahora pasamos al proceso de creación de las claves. Ese proceso es sencillo:

—f3(RAND, K) = CK nos da una clave temporal de cifrado, para proteger la comunicación

—f4(RAND, K) = IK proporciona un clave de integridad, para garantizar que los datos intercambiados no han sido alterados en ningún momento

Y por fin, la llamada comienza. El algoritmo para cifrar dicha llamada se denomina f8 (en la red GSM era el A5), y utilizará la clave CK. Como datos de entrada de f8 se tienen, además de la clave y del bloque que se va a cifrar, un conjunto de datos que indican la longitud y número del bloque de texto, la dirección de transmisión y el portador. El tipo y función exactos de estos datos no son de importancia aquí. Baste saber que sirven para saber cómo es el bloque de datos que vamos a cifrar. Para descifrar, no hay más que invertir el proceso.

Una novedad en la red 3G respecto a la GSM es que no solamente aseguramos la confidencialidad de la comunicación, sino su integridad, de forma que nadie pueda inyectar paquetes cifrados falsos. Para ello se utiliza un algoritmo de integridad f9, que con su correspondiente clave IK y datos sobre el bloque de datos a cifrar nos da un código de autenticación de mensaje (MAC). Comparando el MAC que calcula el móvil con el que posee el centro de conmutación podemos saber si el mensaje ha sido transmitido de forma íntegra, o si por el contrario ha sido alterado.

He dejado cabos sueltos en esta explicación para no cansarle, querido lector. Por ejemplo, hay otras dos funciones, llamadas f1* y f5*, que son algoritmos de “resincronización”, “y que no entraremos a detallar porque son esencialmente idénticos a los f1 y f5. Hay protocolos para diversas situaciones (cuando hay una asincronía de datos, cuando no se ha establecido una autenticación adecuadamente, cuando una petición de autenticación no es respondida…); e incluso existe la posibilidad de que los teléfonos GSM puedan usarse en la red 3G, lo que en la jerga de los programadores se denomina “compatibilidad hacia atrás”.“

Vayamos a lo que aquí más nos interesa: ¿son buenos esos algoritmos? Afortunadamente, no tenemos que buscar copias filtradas, ya que son públicos y están disponible en Internet[74]. Diferenciemos entre los de autenticación y cifrado. Los primeros, esos que hemos llamado f1-f5, reciben el nombre genérico de MILENAGE. Como en el caso GSM, los creadores del estándar permiten que cada teleco utilice el algoritmo concreto que desee, e igual que antes se incorpora uno de serie, como ese disco de prueba que se regala con la cadena musical. En este caso, el “regalo” recibió el nombre de Rinjdael. Se trataba de un algoritmo de cifrado tan seguro que, después de un largo proceso de selección, fue seleccionado por el gobierno norteamericano para sustituir al viejo algoritmo de cifrado DES. Ahora Rinjdael se llama AES (Advanced Encryption Standard), y en cuestión de seguridad es difícil escoger algo mejor. En este punto, la elección del consorcio 3GPP merece un sobresaliente.

En lo que respecta al algoritmo dual de cifrado f8 e integridad f9 el proporcionado “de serie” por el 3GPP recibe el nombre de KASUMI. En este caso los responsables decidieron sabiamente no repetir los errores del pasado, al menos en lo relativo al secreto, y en septiembre de 2000[75] se anunció la distribución pública de las especificaciones de f8 y f9[76]. No solamente se utiliza en la telefonía 3G, sino que también es empleado en la telefonía GSM, como sustituto de A5/1, y también en el protocolo de datos GPRS, sustituyendo a GEA1 y GEA2. En esos casos, KASUMI recibe los nombres de A5/3 y GEA3, respectivamente[77]. La presentación en sociedad del nuevo algoritmo fue hecha oficialmente en julio de 2002[78].

Por si se ha confundido con esta especie de trastorno de personalidad múltiple, se lo repetiré:

—En GSM, se llama A5/3

—En GPRS, recibe el nombre de GEA3

—En la telefonía UTMS de tercera generación (3G), es el conjunto de f8 y f9.

Cualquiera que sea su personalidad, se trata de un algoritmo de cifrado en bloque, con clave de entre 64 y 128 bits. Las especificaciones 3GPP indicaban que, cuando fuese usado en redes GSM y GPRS, operaría con claves de 64 bits, incluyendo la advertencia de que dicha clave sería “no estructurada, no debe suponerse, por ejemplo, que ninguno de sus bits tenga valores predeterminadas,” es decir, que los tiempos de debilitar deliberadamente la clave con bits cero habían pasado a la historia. Cuando se utiliza en la telefonía 3G, procesa una clave más larga, de 128 bits[79].

Desafortunadamente, KASUMI no es la solución ideal. Como ya hemos visto, los fallos del protocolo GSM permite la existencia de diversas vías de ataque, fruto de las cuales el móvil puede ser forzado a utilizar cifrado débil, o incluso nada de cifrado. En este sentido, la adopción de KASUMI en su función de A5/3 no constituye realmente una mejora. Se supone, eso sí, que es más resistente que A5/1 desde el punto de vista criptoanalítico, aunque su clave de 64 bits lo hace vulnerable a ataques con tablas arcoíris. Idénticas consideraciones ha de hacerse en GPRS cuando KASUMI asume el papel de GEA3.

En cuanto a su uso en telefonía 3G UTMS, KASUMI resistió hasta 2005. Ese año, los investigadores Eli Biham, Orr Dunkelman y Nathan Keller (BDK) desvelaron una serie de ataques, el mejor de los cuales requería casi 2^55 mensajes en texto llano, y tenía una complejidad equivalente a la de efectuar 2^76 operaciones de cifrado. Esto, evidentemente, no es práctico. Sin embargo, hay que tener en cuenta que KASUMI tiene una clave de 128 bits, lo que significa que, de ser un algoritmo seguro, la única vía de ataque válido sería probar las 2^128 claves posibles. Lo que demostraron Biham, Dunkelman y Keller es que, en la práctica, la resistencia de KASUMI es equivalente a la de un algoritmo de cifra de 76 bits, y que resulta vulnerable a un tipo de técnica de ataque denominada criptoanálisis diferencial de clave relacionada[80].

Siguiendo la máxima de Bruce Schneier de que los ataques criptoanalíticos no pueden más que mejorar, en 2010 el equipo BDK hizo otro intento contra KASUMI[81]. El resultado fue contundente: las vulnerabilidades pasaron del “teórico pero no práctico” a “podemos hacerlo en el sótano de casa”. Una técnica llamada “ataque sándwich” consiguió obtener los 128 bits de la clave. Los requisitos computacionales son tan bajos (un gigabyte de memoria) que el ataque puede llevarse a cabo en apenas dos horas en un PC. La fortaleza de KASUMI quedó reducida al de un cifrado con clave de 32 bits (recordemos que el A5/2, usado para la exportación en la telefonía GSM, tenía clave de 40 bits).

Un descubrimiento adicional fue el hecho de que, unos años antes, el consorcio 3GPP metió la pata tontamente. El primer algoritmo de cifra e integridad que se consideró para la telefonía de tercera generación se basaba en un sistema llamado MISTY, diseñado por Mitsubishi. Con el doble objeto de evitar ciertos ataques criptoanalíticos y hacerlo más rápido en hardware, se efectuaron algunas modificaciones y se convirtió en KASUMI. Lo sorprendente fue que el ataque BDK de 2010 hacía picadillo la seguridad de KASUMI, ¡pero era ineficaz contra MISTY! En palabras de los autores del estudio: “esto pone en cuestión tanto el diseño de KASUMI como la evaluación de seguridad frente a ataques de clave relacionada”. El cambio que buscaba una mejora acabó dando un algoritmo peor que el anterior. El único consuelo es que, debido a las características particulares del ataque, los autores no creen que sea aplicable a KASUMI tal y como se usa en la telefonía 3G; eso sí, no dijeron una palabra sobre su vulnerabilidad al usarlo en telefonía de segunda generación (GSM o GPRS).

Lo que resulta un enigma es el motivo por el que los expertos del consorcio 3GPP diseñaron un protocolo de autenticación e intercambio de claves basado en AES, probablemente el algoritmo criptográfico más resistente que pudieron encontrar, y luego confiaron el cifrado a un algoritmo recién creado. A estas alturas, y visto el ejemplo de otros casos del pasado, podríamos pensar que KASUMI fue deliberadamente debilitado para facilitar el acceso a las agencias de inteligencia nacionales. Quizá lo descubramos dentro de veinte años.