Elementos de seguridad en Bluetooth

Tabla de contenidos

Salto de frecuencias
Emparejamiento de dispositivos
Autenticación
Autorización
Cifrado de datos

Salto de frecuencias


Bluetooth trabaja en la frecuencia de 2.4 GHz de la banda ISM disponible a nivel mundial. Con el fin de evitar interferencias con otras tecnologías que operen en la misma banda de frecuencias, Bluetooth emplea la técnica de salto de frecuencias (FHSS, Frequency Hopping Spread Spectrum), que consiste en dividir la banda en 79 canales  de longitud 1 MHz y realizar 1600 saltos por segundo.




Todos los dispositivos Bluetooth que participan en una piconet están sincronizados desde el punto de vista del tiempo y de la secuencia de saltos entre canales. Cada unidad dispone de un reloj de sistema interno que determina la temporización y la secuencia de saltos que debe seguir el transceptor. El maestro de una piconet es el dispositivo cuyo reloj interno y patrón de saltos (la frecuencia a la que hay que saltar en un determinado momento del tiempo) se utilizan para sincronizar a todos los demás dispositivos esclavos. Por tanto, todos los esclavos de una piconet deben conocer la dirección BD_ADDR del maestro y sincronizar sus relojes con el reloj del maestro.

Cuando se establece la piconet, el dispositivo esclavo recibe un paquete FHS (Frequency Hop Synchronization) que le permite sincronizar su reloj interno con el reloj del maestro agregando un desplazamiento a su reloj interno y también generar el patrón de saltos de frecuencia que van a utilizar los dispositivos pertenecientes a la piconet durante las comunicaciones.

Una vez comenzada la comunicación, el intercambio de paquetes de datos se realiza de acuerdo con el patrón de saltos de frecuencia establecido y a una velocidad marcada por el reloj interno. Esto significa que en cada instante de tiempo cada dispositivo escribirá o escuchará durante su timeslot en un determinado canal del espectro.

Cualquier dispositivo ajeno que no pertenezca a la piconet no podrá participar en la comunicación enviando paquetes o escuchando tráfico, ya que no dispone de la tabla con la secuencia de saltos utilizada en la misma y, además, la probabilidad de adivinar cuál de todos los canales puede ser empleado para la comunicación en cada instante de tiempo es mínima. En definitiva, la técnica de saltos de frecuencia empleada por Bluetooth garantiza, en principio, la participación exclusiva de dispositivos autorizados en una piconet y una comunicación libre de escuchas por parte de usuarios ajenos a la misma.

Emparejamiento de dispositivos


El emparejamiento de dispositivos en Bluetooth se entiende como una relación de confianza. El objetivo es que dos dispositivos Bluetooth se puedan comunicar si están emparejados, si hay una relación de confianza entre los mismos.

La primera vez que dos dispositivos intentan comunicarse, tiene lugar el procedimiento denominado emparejamiento que permite crear una clave de enlace común de una forma segura. Este procedimiento requiere que el usuario de cada dispositivo introduzca un código de seguridad Bluetooth (código PIN, Personal Identification Number) de hasta 16 bytes de longitud que debe ser el mismo en los dos casos.

   


A partir del código PIN, se obtiene la clave de enlace común a través del siguiente algoritmo:

1) Se genera una clave de inicialización común Kinit de 128 bits usando el algoritmo E22 a partir del código de seguridad Bluetooth (PIN), la longitud del mismo, la dirección BD_ADDR de 48 bits y un número aleatorio IN_RAND.


2) Se genera la clave de enlace Kab usando el algoritmo E21. Los dispositivos usan la clave de inicialización Kinit para intercambiar dos nuevos números aleatorios, conocidos como LK_RAND A y LK_RAND B. Cada dispositivo genera un número aleatorio y se lo envía al otro dispositivo previamente XOReado bit a bit con Kinit. Dado que ambos dispositivos conocen Kinit, cada dispositivo conoce ambas LK_RAND. A partir de la dirección BD_ADDR y LK_RAND, se genera la clave de enlace Kab.



3) Una vez que los dispositivos emparejados disponen de la clave de enlace Kab, utilizan esta clave común para autenticarse automáticamente en las sucesivas conexiones.

Autenticación


La autenticación es el proceso por el cual un dispositivo Bluetooth verifica su identidad en otro dispositivo para poder acceder a los servicios que ofrece.

Todas las funciones de seguridad de nivel de enlace están basadas en el concepto de clave de enlace, el cual es un número pseudoaleatorio de 128 bits almacenado individualmente por cada par de dispositivos Bluetooth. La autenticación no requiere la intervención del usuario; implica un esquema de desafío/respuesta entre cada par de dispositivos que emplea una clave de enlace secreta común de 128 bits. Consecuentemente, este esquema se utiliza para autentificar dispositivos, no usuarios.

Una vez que los dispositivos emparejados disponen de la clave de enlace, utilizan esta clave común para autentificarse automáticamente en las sucesivas conexiones. El proceso de autenticación está basado en el esquema desafío/respuesta y transcurre de la siguiente forma:

1) El dispositivo reclamante envía su dirección BD_ADDR al dispositivo verificador.

2) El verificador devuelve un desafío aleatorio de 128 bits al demandante.

3) El reclamante usa el algoritmo E1 para generar la respuesta de autenticación (SRES) de 32 bits, usando como parámetros de entrada la dirección BD_ADDR del reclamante, la clave de enlace Kab almacenada y el desafío. El verificador realiza la misma operación en paralelo.

4) El reclamante devuelve la respuesta SRES al verificador.

5) El verificador comprueba la respuesta SRES recibida por el reclamante con la respuesta SRES calculada por él.

6) Si los valores de SRES coinciden, el verificador y el reclamante intercambian los papeles y repiten el proceso entero.

La especificación de Bluetooth establece que si se produce un fallo durante el proceso de autenticación, y para prevenir que un atacante pruebe claves de enlace aleatorias en un ataque de fuerza bruta, debe transcurrir cierto período de espera antes de que se pueda llevar a cabo un nuevo intento de autenticación. Para cada sucesivo intento fallido, el tiempo de espera aumenta exponencialmente.

En Microsoft Windows, las claves de enlace generadas durante el emparejamiento con otros dispositivos Bluetooth se almacenan en el registro.




Linux almacena las claves de enlace en el archivo /var/lib/bluetooth/BD_ADDR/linkkeys.


Autorización


La autorización es el procedimiento que determina los derechos que tiene un dispositivo Bluetooth para acceder a los servicios que ofrece un sistema.

El mecanismo de autorización en dispositivos Bluetooth se lleva a cabo mediante niveles de confianza. Los dispositivos tienen tres niveles de confianza, los cuales determinan la capacidad de acceso a los servicios: total, parcial o restringida y nula.

En el caso de que un determinado dispositivo de confianza intente acceder a un servicio autorizado, no se requiere ningún procedimiento de confirmación, accede de forma transparente.

En el caso de que un determinado dispositivo de confianza restringida o no confiable intente acceder a un servicio restringido, se requiere un procedimiento explícito de confirmación por parte del usuario para permitir o denegar el acceso a ese dispositivo. Nótese que para algunos servicios, como el Perfil de Carga de Objetos (OBEX PUSH) es posible conceder permisos de acceso temporal a dispositivos no emparejados previamente.




En la mayoría de dispositivos es posible marcar manualmente los dispositivos emparejados como dispositivos de confianza, para evitar la confirmación en cada intento de conexión.

   

Cifrado de datos


El cifrado de datos protege la información que se transmite en un enlace entre dispositivos Bluetooth. Garantiza la confidencialidad del mensaje transmitido, de forma que si el paquete es capturado por un usuario que no posea la clave de descifrado, el mensaje le resultará ininteligible.

Su implementación es opcional, pero necesita que se haya producido anteriormente una autenticación. El maestro y el esclavo deben ponerse de acuerdo en utilizar cifrado o no. En caso afirmativo, deben determinar el tamaño de la clave de cifrado, para lo cual, maestro y esclavo intercambian mensajes hasta alcanzar un acuerdo. No siempre es posible llegar a un acuerdo sobre el tamaño de la clave, en este caso se indica a las unidades Bluetooth que no se les permite comunicarse utilizando cifrado en el enlace.

Tras esta negociación comienza el proceso de cifrado:

El maestro genera una clave de cifrado KC de 128 bits usando el algoritmo E3, el cual requiere como parámetros de entrada un número aleatorio de 128 bits, la clave de enlace Kab generada durante el procedimiento de emparejamiento y número COF (Ciphering Offset) de 96 bits basado en el valor temporal ACO (Authenticated Ciphering Offset) calculado durante el procedimiento de autenticación.




Una vez que la clave de cifrado se ha generado con éxito, el maestro se encuentra en condiciones de transmitir datos cifrados, para lo cual debe detener temporalmente el tráfico de datos de los niveles superiores y así evitar la recepción de datos corruptos.

© 2005 - 2009 Alberto Moreno Tablado