Pairing, Bonding y Protección de Comunicaciones
Comenzar arrow_downwardDos conceptos fundamentales para entender la seguridad en BLE.
Proceso de establecer una relación de confianza entre dos dispositivos BLE. Genera claves temporales para la sesión actual.
Proceso de almacenar las claves generadas durante el pairing para uso futuro. Permite reconexión segura sin repetir el pairing.
El proceso de pairing se divide en tres fases secuenciales.
Intercambio de características de seguridad
Verificación de identidad de los dispositivos
Distribución de claves para encriptación
Long Term Key - Clave principal para encriptación de la conexión.
Identity Resolving Key - Permite resolver direcciones privadas.
Connection Signature Resolving Key - Firma de datos sin encriptar.
Las capacidades de entrada/salida determinan qué métodos de pairing están disponibles.
Solo puede mostrar información
0x00
Display + botones Sí/No
0x01
Solo teclado numérico
0x02
Sin interfaz de usuario
0x03
Teclado + pantalla
0x04
Cuatro métodos para autenticar dispositivos durante el pairing.
No requiere interacción del usuario. Se usa cuando al menos un dispositivo no tiene capacidad de I/O.
Un dispositivo muestra un PIN de 6 dígitos, el otro lo introduce. Proporciona autenticación.
Ambos dispositivos muestran un número de 6 dígitos. El usuario confirma que coinciden.
Usa un canal secundario (NFC, QR code) para intercambiar datos de autenticación.
El método se selecciona automáticamente según las capacidades I/O de ambos dispositivos.
| Iniciador / Responder | DisplayOnly | DisplayYesNo | KeyboardOnly | NoInputNoOutput | KeyboardDisplay |
|---|---|---|---|---|---|
| DisplayOnly | Just Works | Just Works | Passkey | Just Works | Passkey |
| DisplayYesNo | Just Works | Numeric Comp | Passkey | Just Works | Numeric Comp |
| KeyboardOnly | Passkey | Passkey | Passkey | Just Works | Passkey |
| NoInputNoOutput | Just Works | Just Works | Just Works | Just Works | Just Works |
| KeyboardDisplay | Passkey | Numeric Comp | Passkey | Just Works | Numeric Comp |
BLE 4.2 introdujo LE Secure Connections con mejoras significativas de seguridad.
Método original de pairing en BLE. Usa un Temporary Key (TK) para generar el Short Term Key (STK).
Vulnerabilidad: Un atacante que capture el pairing puede descifrar la clave en segundos con fuerza bruta.
Método moderno usando ECDH (Elliptic Curve Diffie-Hellman) para intercambio de claves.
Recomendación: Siempre usar LE Secure Connections cuando ambos dispositivos lo soporten.
Principales vectores de ataque en comunicaciones BLE.
Seguimiento de dispositivos usando su dirección MAC fija durante el advertising.
Solución: Usar direcciones privadas resolvables (RPA) con IRK.
Captura del tráfico BLE sin encriptar usando un sniffer.
Solución: Usar encriptación (pairing) y LE Secure Connections.
Atacante se interpone entre dos dispositivos durante el pairing.
Solución: Usar Passkey Entry, Numeric Comparison u OOB.
Sin protección MITM, el atacante puede hacer pairing con ambos dispositivos y reenviar datos modificados.
BLE define 4 niveles de seguridad en el Security Mode 1.
Selecciona las capacidades I/O de cada dispositivo para descubrir qué método de pairing se usará según la especificación BLE (LE Secure Connections).
Selecciona las capacidades I/O de ambos dispositivos
para ver el método de pairing resultante
| Iniciador \ Responder | DisplayOnly | DisplayYesNo | KeyboardOnly | NoInputNoOutput | KeyboardDisplay |
|---|---|---|---|---|---|
| DisplayOnly | JW | JW | PK | JW | PK |
| DisplayYesNo | JW | NC | PK | JW | NC |
| KeyboardOnly | PK | PK | PK | JW | PK |
| NoInputNoOutput | JW | JW | JW | JW | JW |
| KeyboardDisplay | PK | NC | PK | JW | NC |
Limita qué dispositivos pueden conectarse o escanear tu dispositivo BLE.
Una lista de direcciones de dispositivos conocidos y confiables. Solo los dispositivos en la lista pueden:
AA:BB:CC:DD:EE:01
AA:BB:CC:DD:EE:02
XX:XX:XX:XX:XX:XX
XX:XX:XX:XX:XX:XX
Código para habilitar y gestionar el Filter Accept List.
Configuración y callbacks para implementar seguridad BLE.
Ejemplo de implementación de los callbacks de autenticación.
Principales funciones de la API de seguridad de Zephyr.
bt_conn_set_security()
Solicita un nivel de seguridad específico para la conexión.
bt_conn_auth_passkey_entry()
Proporciona el passkey introducido por el usuario.
bt_conn_auth_passkey_confirm()
Confirma que el passkey mostrado es correcto.
bt_unpair()
Elimina el bonding con un dispositivo específico.
bt_conn_auth_cancel()
Cancela el proceso de pairing en curso.
bt_foreach_bond()
Itera sobre todos los dispositivos con bonding.
Herramientas y técnicas para depurar comunicaciones BLE.