Español | English
rss facebook linkedin Twitter

Seguridad en dispositivos UMTS

Este post tratará sobre dispositivos inalámbricos que todos conocemos (o deberíamos si estamos en la era digital) y de los que casi todos disponemos de uno, un teléfono o un módem 3G.

El tema de la seguridad en este tipo de redes, puede verse desde diversos puntos de vista, y de los que se podrían escribir innumerables post. En este caso nos centraremos en cómo se realiza la autenticación en la red de un nuevo terminal de usuario (en resumidas cuentas, nuestro teléfono móvil).

Para ello interactúan dos nodos principalmente de la red UMTS el AUC (nodo autenticador, generalmente unido al nodo HLR) y el propio terminal a través la tarjeta que todos introducimos la SIM o USIM. Aunque potencialmente existen otra serie de nodos que intervienen lo hacen de forma más o menos transparente para este punto de comunicación. Para mayor claridad se puede observar el siguiente diagrama de arquitectura de red:

Como se puede apreciar para que un terminal de usuario (UE) pueda "hablar" con el nodo AUC debe atravesar multitud de nodos, aunque la mayoría de estos tienen otro tipo de funciones diferentes a la autenticación del usuario en la red.

Para realizar esta autenticación se realiza un sistema de reto y respuesta para proceder a la autenticación y verificación de las claves (AKA, Authentication and Key Agreement). Para ello en este tipo de redes se utiliza un vector que contiene 5 campos principales:
RAND: Número aleatorio para realizar la pregunta
CK: Clave de cifrado
IK: Clave de integridad
AUTN: Token de autenticación
XRES: Respuesta esperada.

A su vez el campo AUTN consta de los siguientes valores:
SQN: número de secuencia
AMF: Campo de gestión de autenticación
MAC-A: Código de autenticación del mensaje.

El proceso es el siguiente:

Primero el nodo de red se encarga de solicitar los datos al nodo de autenticación

1.- Una vez el nodo ha enviado la petición de acceso a la red, el nodo VLR (unido a la MSC o SGSN generalmente), se encarga de solicitar un vector de inicialización al nodo HLR/AUC (que es quien dispone junto a la USIM de la clave del usuario).
2.- El nodo HLR/AUC se encarga de calcular dichos valores basados en la clave única de usuario.
3.- Una vez terminado el cálculo responde al nodo VLR con el vector de inicialización (AV(1),..., AV(n)) correspondiente.

Posteriormente, el nodo de red (VLR) se encargará de verificar al usuario

1.- El nodo VLR se encarga de elegir un vector de inicialización (uno de los recibidos anteriormente), y envía al terminal únicamente el campo RAND y AUTN.
2.- El terminal móvil procesa los datos recibidos con la ayuda de su clave única y secreta (contenida únicamente en la USIM y en el nodo HLR/AUC). Con esta clave el terminal es capaz de verificar que quien le ha enviado la solicitud de autenticación también dispone de dicha clave. Además el terminal se encarga de validar que el vector utilizado (AV(i)) no ha expirado en el tiempo verificando el número de secuencia (campo SEQ). Así valida que el vector de autenticación es válido. Después el terminal se encarga de general la clave de cifrado (CK), la clave de integridad (IK) y la respuesta esperada al reto enviado por el nodo de red (RES).
3.- El terminal de usuario responde con el campo RES al nodo de red.
4.- El nodo de red verifica que la respuesta (campo RES enviado desde el móvil) es correcta comparándola con la respuesta esperada (XRES) del vector de inicialización utilizado (AV(i)).

Una vez terminado el proceso la autenticación mutua es efectuada. ya que tanto el terminal a través de la USIM y el nodo de red (VLR) se han autenticado mutuamente bajo dos condiciones: Primera la USIM ha verificado que el campo MAC en el AUTN es igual al calculado internamente utilizando la clave privada K. Y segundo el nodo de red VLR ha verificado al terminal (USIM) ya que el campo de respuesta RES es igual al campo esperado XRES.



Para más información se pueden consultar los siguientes enlaces:
1
2
3

José María Arce Guillén
S21sec labs

5 comentarios:

S21sec labs dijo...

Y para complementar tu información, Txema, comentar el protocolo de cifrado de bloques (que no de flujos) que asegura la comunicación entre terminal y antena: el KASUMI o A5/3 (http://en.wikipedia.org/wiki/A5/3). Ya le están metiendo mano.

Iñaki dijo...

Quizá tampoco estaría mal explicar el camino que sigue el flujo de datos (UE <-> BS <-> SGSN <-> HLR) e incluso que una vez completada la autenticación, para que el usuario disponga de su acceso 3G sin poner en peligro la red completa se debe crear un tunel GRE entre el terminal de usuario y el Firewall que hay tras el GGSN, ya que si no, el cliente va a tener total visibilidad de la red umts.

Enhorabuena, papito!

S21sec labs dijo...

Hola a todos,

como siempre, todos los comentarios son bienvenidos, no se ha pretendido ampliar mucho la información para no hacer un post eterno, dejando la puerta abierta a futuros post en caso necesario. Así que viendo los comentarios se procederá a ampliar dicha información en futuros post.

En dichos post si os parece bien lectores, se tratarán temas como la arquitectura de red y flujo de datos, señalización e información de la llamada (tanto en conmutación de circuitos como de paquetes), así como de tratar más a fondo el protocolo de cifrado/descifrado de bloques.

Un saludo a todos.

Álvaro Del Hoyo dijo...

Txema,

¿Cuál es el papel y el flujo de datos como el IMEI y el IMSI en todo esto?

Gracias

Xombra dijo...

Excelente artículo


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login