Tamaño mínimo de clave de cifrado

BR/EDR

BLE

Las claves temporales de cifrado de una conexión de Bluetooth pueden tener distintos niveles de entropía. Para decidir como de segura es una clave temporal de cifrado de una conexión Bluetooth, durante el inicio del proceso de cifrado se negocia el número de bytes de entropía que tendrá.

Claves pequeñas, por debajo de 7 bytes, pueden ser descubiertas mediante ataques de fuerza bruta, vulnerando la confidencialidad de las comunicaciones.

Descripción del proceso

Para la verificación del tamaño mínimo de clave que acepta el dispositivo ha de realizarse un intento de conexión cifrada imponiendo una limitación de tamaño máximo de clave. Existe una prueba de concepto del ataque KNOB que permite esto.

De esta manera, cuando se inicie el proceso de negociación de entropía de clave, intentaremos negociar 1 byte de entropía a lo que el dispositivo deberá responder con su tamaño de clave mínimo.

En algunos casos, será necesario realizar múltiples intentos de conexión con distintos tamaños máximos de clave para averiguar el tamaño mínimo de clave que permite ya en vez de negociar un tamaño de clave, cierra la conexión.

Se recomienda forzar el uso del máximo tamaño de clave soportado por el estándar Bluetooth: 16 bytes.

Este control se considerará satisfactorio si el tamaño mínimo de clave de cifrado es de al menos 7 bytes.

Recursos relacionados

Para comprobar este control, pueden ser útiles los siguientes recursos:

ID Descripción
BSAM-RES-04 Sniff de una conexión Bluetooth
BSAM-RES-05 Captura de una conexión Bluetooth
BSAM-RES-06 Modo depuración en controladores Bluetooth
BSAM-RES-07 Envío y recepción de mensajes HCI
BSAM-RES-09 Cambiar los atributos de un controlador

Caso de ejemplo

Se va a comprobar la longitud de la clave de cifrado del emparejamiento entre un ordenador y unos auriculares Bluetooth. Usaremos Wireshark con BTVS (btvs.exe -Mode wireshark) para realizar la captura de paquetes para su análisis. La conexión se solicita a través de la aplicación de gestión de dispositivos Bluetooth integrada en el sistema operativo.

En la captura de Wireshark, se identifica el proceso de emparejamiento con un comando Pairing Request, seguido por el comando Pairing Response, y se confirma el emparejamiento con el comando Pairing Confirm.

Wireshark Pairing Process

En los comandos Pairing Request y Pairing Response hay un campo llamado Maximum Encryption Key Size, este indica la longitud máxima de la clave de cifrado en bytes. Este campo debería de tener una longitud de entre 7 y 16 bytes según el estándar de Bluetooth.

En el comando Pairing Request del portátil se comparte en el campo Maximum Encryption Key Size con un valor 16 bytes.

Wireshark Pairing Request

En el comando Pairing Request de los auriculares se comparte en el campo Maximum Encryption Key Size un valor de 16 bytes.

Wireshark Pairing Response

Los comandos Pairing Request y Secure Connections deberían tener siempre valor de Maximum Encryption Key Size superior a 6 para pasar el control. Aún así se recomienda no utilizar valores inferiores a 16.

Si algún dispositivo solicita una longitud de clave inferior a 7 el otro dispositivo que participa en el emparejamiento deberá de cancelar la conexión.

El resultado del control será FAIL si alguno de los dos dispositivos presenta un campo Maximum Encryption Key Size con valor inferior a 7, si esto ocurriera y se establece la conexión entre ambos dispositivos no superarán este control.