Experimentos, análisis y mapeo de radiación BLE

17 de noviembre de 2021 • fjbalon

Desde hace unos meses se viene reportando la aparición de múltiples MACs pertenecientes a dispositivos BLE (Bluetooth Low Energy) captadas por algunos teléfonos y dispositivos. Parece que el aumento exponencial de descubrimiento BLE se debe a su aumento de uso; quizás propiciado con el avance inexorable del IoT, pero esta aparición coincide también con el inicio de ciertas estrategias globales, habría relación?. ¿Podría tener quizás que ver con el uso de esta tecnología por parte de los gobiernos para controlar los flujos sociales y tener así un mayor control sobre las relaciones de sus gobernados?.

¿Es posible que pueda tener que ver con la patente US11107588 - «Métodos y sistemas para priorizar tratamientos, vacunación, pruebas y/o actividades mientras se protege la privacidad de las personas», por Gal Ehrlich y Maier Fenster? En la misma, se desarrolla la utilización de las interacciones de Bluetooth (¿BLE?) entre los teléfonos de los individuos con el objetivo de determinar cuáles son las personas más activas socialmente y que por ello deberían ser objetivo prioritario de las medidas para evitar la propagación de ciertos virus. La fecha de la patente coincide además con el anuncio de Apple y Google de colaboración mutua en el desarrollo de una API para el uso por parte de aplicaciones de rastreo utilizando, precisamente, la tecnología BLE. ¿Están todos los dispositivos modernos emitiendo BLE con este propósito?.

No entro en la supuesta privacidad de este método, algo ridículo de defender. La patente israelí presenta similitudes con la tecnología BLE que estamos exponiendo, especialmente en la creación de mapeos de grupos de personas en scatternets, como unión de piconets (véase que los nodos no conectan con más de 7 nodos unitariamente).

Antes de realizar experimentos, conviene dejar claro algunos conceptos teóricos.

Contextualización teórica

BLE utiliza solo 40 canales en la banda de 2,4GHz, con un espaciado de canales que va de 1-2MHz. Entre los 40 canales proporcionados por el BLE, tres de ellos están reservados exclusivamente para el proceso de pblicidad, a saber, los canales 37, 38 y 39. Los 37 canales restantes, en cambio, se utilizan para la transferencia de datos entre maestro y esclavo en modo conexión. Estos tres canales de publicidad están ubicados en los puntos finales y en el medio de la banda de 2.4GHz, para limitar la interferencia con las redes Wi-Fi.

Los paquetes BLE son, en contraposición con Bluetooth Classic, más pequeños (en particular los paquetes publicitarios) con el fin de minimizar el tiempo de activación de la radio para la transmisión y recepción y, por lo tanto, el consumo de energía. La estructura del paquete BLE típico es visible a continuación y, como puede ver, hay cuatro partes: Preámbulo (8 bits), Dirección de acceso (32 bits), Unidad de datos de protocolo (entre 2 y 39 bytes) y un Código de redundancia cíclica (CRC) final (24 bits).

El preámbulo consta de 8 bits y el receptor lo utiliza para la sincronización. También es útil para identificar qué paquetes se emiten en los canales de publicidad (advertising) y en los canales de datos (data). La Dirección de Acceso consta de 32 bits y tiene diferentes valores según el tipo de canal: canales de publicidad o de datos. Por ejemplo, la dirección de acceso de cualquier paquete transmitido en los canales de publicidad tiene un valor hexadecimal igual a 8E89BED6. El campo Protocol Data Unit (PDU) tiene una longitud variable (de 2 a 39 bytes) y tiene una estructura diferente según el tipo de canal de destino (Datos o Publicidad). Para los canales de publicidad, la PDU está compuesta por dos campos: un encabezado de 2 bytes y un campo de carga útil de 0 a 37 bytes. En cambio, para los canales de datos, la estructura de la PDU tiene tres componentes: un encabezado de 2 bytes y una carga útil con un tamaño de hasta 255 bytes, que podría incluir un campo de verificación MIC.

La direccción de un dispositivo BLE se identificará como Public o Random y esto podrá verse en un bit adicional que se añade para notificarlo en todos los paquetes BLE. Todas las direcciones MAC indiferentemente de si son Public o Random disponen de 48 bits (6 bytes). Las direcciones MAC públicas se componen de 24 bits que identifican a la compañia que ha fabricado el dispositivo, estos 24 bits los designa el IEEE; los otros 24 restantes los establece el fabricante para identificar el dispositivo. Sin embargo, muchos dispositivos, especialmente los smartphones, utilizan de forma predeterminada una dirección de tipo aleatorio (random) que, por supuesto, no es la dirección MAC real del dispositivo, este método se creó para evitar que se monitorice el tráfico que esta realizando un dispositivo bluetooth. Por ello se crearon direcciones estáticas (reestablecida por cada ciclo de encendido-apagado) o privadas, que cambian periódicamente.

Las de tipo resoluble se dividen en dos partes, el hash y el prand, mientras que las de tipo no resoluble contienen 46 bits totalmente aleatorios. La característica de capacidad de resolución está indicada por el bit 47, que identifica una dirección no resoluble (valor 0) o una dirección resoluble (valor 1), como se ve a continuación.

Por ejemplo, teniendo la dirección BLE-MAC:

4D:3E:0C:F5:C4:42==01001101:00111110:00001100:11110101:11000100:01000010

Como termina en 10, es resolvable, es decir:

hash: 010011010011111000001100
prand: 1111010111000100010000

Y teniendo la dirección:

59:37:5F:E4:9A:A0 -> 01011001:00110111:01011111:11100100:10011010:10100000

Como termina en 00, es non-resolvable, es decir:

random:0101100100110111010111111110010010011010101000

Algunos conceptos a tener en cuenta:

Con estos conceptos podemos calcular la distancia a la que se encuentra la baliza, Siendo que D es distancia, PM es potencia media, RSSI y N (rango de 2-4):

d = 10 ( P M - R S S I 10 N )

He hecho un pequeño programa en C que hace este cálculo, en base a esta fórmula, donde recibe los argumentos del RSSI y la potencia medida, respectivamente.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main (int argc, char *argv[])
{
	double rssi = atof(argv[1]);
	double txp = atof(argv[2]);

	double n = 2;
	double base = 10.0;

	double distance = pow(base, ((double) txp - rssi) / (10 * n));
	printf("%fm\n",distance);

	return 0;
}

Sin embargo, es muy poco preciso. Sirve para determinar y calibrar al dispositivo en laboratorio. No es preciso para experimentación en mundo real. Por lo que no calcularemos en el resto del texto la distancia en base a esta fórmula, sino nos basaremos directamente en el bruto de RSSI.

Redes bluetooth

La tecnología Bluetooth está basada en piconets consistentes en una unidad central y hasta 7 unidades dedicadas ubicadas en un radio de 10 metros de la unidad central. Las piconets pueden ser unidas en scatternets (red que se produce cuando se conectan dos dispositivos pertenecientes a piconets distintas). La unidad central se comunica con las unidades dedicadas; no existe comunicación directa entre las unidades dedicadas.

Experimentos

Caso 1: Nadie a 3 metros a la redonda, posible contaminación por viandantes en la calle cercana. Enciendo y apago bluetooth clásico de OPPO. Valor recogido:

[NEW] Device FC:04:1C:C4:1F:01 OPPO Find X3 Neo 5G
[DEL] Device FC:04:1C:C4:1F:01 OPPO Find X3 Neo 5G


Device FC:04:1C:C4:1F:01 (public)
Name: OPPO Find X3 Neo 5G
Alias: OPPO Find X3 Neo 5G
Class: 0x005a020c
Icon: phone
Paired: no
Trusted: no
Blocked: no
Connected: no
LegacyPairing: no
UUID: OBEX Object Push          (00001105-0000-1000-8000-00508f3f34bc)
UUID: Audio Source              (0000110a-0000-1000-8000-00508f3f34bc)
UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00508f3f34bc)
UUID: A/V Remote Control        (0000110e-0000-1000-8000-00508f3f34bc)
UUID: Headset AG                (00001112-0000-1000-8000-00508f3f34bc)
UUID: PANU                      (00001115-0000-1000-8000-00508f3f34bc)
UUID: NAP                       (00001116-0000-1000-8000-00508f3f34bc)
UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00508f3f34bc)
UUID: Phonebook Access Server   (0000112f-0000-1000-8000-00508f3f34bc)
UUID: PnP Information           (00001200-0000-1000-8000-00508f3f34bc)
UUID: Message Access Server     (00001132-0000-1000-8000-00508f3f34bc)
UUID: Vendor specific           (00000000-0000-0000-0000-000000000000)
RSSI: -57

# Usando servicio externo obtengo fabricante de dirección MAC pública:
# GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD

10:00h. Accede sujeto 1 con iPhone sin Bluetooth activado.

[NEW] Device 56:FC:D8:00:3F:7F 56-FC-D8-00-3F-7F
[CHG] Device 56:FC:D8:00:3F:7F RSSI: -70
[CHG] Device 56:FC:D8:00:3F:7F RSSI: -78
[CHG] Device 56:FC:D8:00:3F:7F RSSI: -57
[CHG] Device 56:FC:D8:00:3F:7F RSSI: -67
[CHG] Device 56:FC:D8:00:3F:7F RSSI: -76
[CHG] Device 56:FC:D8:00:3F:7F RSSI: -64
[CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Key: 0x004c
[CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Value:
	10 06 73 1d b5 71 a8 48                          ..s..q.H
[CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Key: 0x004c
CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Value:
	10 06 7f 1d b5 71 a8 08                          .....q..
[CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Key: 0x004c
[CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Value:
	10 06 73 1d b5 71 a8 78                          ..s..q.x

------------------------------------------------------------------------------

Device 56:FC:D8:00:3F:7F (random)
	Alias: 56-FC-D8-00-3F-7F
	Paired: no
	Trusted: no
	Blocked: no
	Connected: no
	LegacyPairing: no
	ManufacturerData Key: 0x004c # Apple Inc.
	ManufacturerData Value:
	10 06 37 1d b5 71 a8 78                          ..7..q.x
	RSSI: -70
	TxPower: 8

------------------------------------------------------------------------------

56:FC:D8:00:3F:7F => 01010110:11111100:11011000:00000000:00111111:01111111

# Como termina en 00, es static. Es decir:

random: 0101011011111100110110000000000000111111011111

11:30h. Caso segundo, identifico segundo dispositivo. Inicio análisis de nuevo.

[NEW] Device 51:3B:DA:9B:F7:DE 51-3B-DA-9B-F7-DE
[CHG] Device 51:3B:DA:9B:F7:DE RSSI: -59
[CHG] Device 51:3B:DA:9B:F7:DE RSSI: -47
[CHG] Device 51:3B:DA:9B:F7:DE RSSI: -60
[CHG] Device 51:3B:DA:9B:F7:DE RSSI: -51
[CHG] Device 51:3B:DA:9B:F7:DE RSSI: -61
[CHG] Device 51:3B:DA:9B:F7:DE RSSI: -51
[CHG] Device 51:3B:DA:9B:F7:DE RSSI: -67
[CHG] Device 51:3B:DA:9B:F7:DE RSSI: -58
[CHG] Device 51:3B:DA:9B:F7:DE RSSI: -71
[CHG] Device 51:3B:DA:9B:F7:DE RSSI: -57

------------------------------------------------------------------------------

Device 51:3B:DA:9B:F7:DE (random)
Alias: 51-3B-DA-9B-F7-DE
Paired: no
Trusted: no
Blocked: no
Connected: no
LegacyPairing: no
ManufacturerData Key: 0x004c # Apple Inc.
ManufacturerData Value:
	10 06 38 1d 57 68 aa 58                          ..8.Wh.X

------------------------------------------------------------------------------

51:3B:DA:9B:F7:DE => 01010001:00111011:11011010:10011011:11110111:11011110

# Como termina en 10, es resolvable. Es decir:

hash: 010100010011101111011010
prand: 1001101111110111110111

Dispositivos no responden a l2ping. Esto confirma que se trata de dispositivos BLE, ya que L2CAP no soporta BLE.

[NEW] Device 51:3B:DA:9B:F7:DE 51-3B-DA-9B-F7-DE
[NEW] Device 56:FC:D8:00:3F:7F OPPO Find X3 Neo 5G

root ~ # l2ping 51:3B:DA:9B:F7:DE
Can't connect: Host is down

[DEL] Device 51:3B:DA:9B:F7:DE 51-3B-DA-9B-F7-DE
[NEW] Device 51:3B:DA:9B:F7:DE 51-3B-DA-9B-F7-DE

root ~ # l2ping 56:FC:D8:00:3F:7F
Ping: 56:FC:D8:00:3F:7F from xx:xx:xx:xx:xx:xx (data size 44) ...
44 bytes from 56:FC:D8:00:3F:7F id 0 time 861.02ms
44 bytes from 56:FC:D8:00:3F:7F id 1 time 296.03ms
44 bytes from 56:FC:D8:00:3F:7F id 2 time 318.75ms

Nos situamos ahora en zona transitada. Múltiples vehículos y viandantes. Al iniciar el escaneo, detecta y pierde numerosos dispositivos BLE. Cabe destacar que he eliminado los dispositivos conocidos, como teléfonos o auriculares:

[NEW] Device 58:F2:C8:F7:10:29 58-F2-C8-F7-10-29
[NEW] Device D0:4F:7E:17:64:30 D0-4F-7E-17-64-30
[NEW] Device 47:C4:46:9A:BF:31 47-C4-46-9A-BF-31
[NEW] Device 5E:E8:24:4E:1A:1B 5E-E8-24-4E-1A-1B
[NEW] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
[NEW] Device 78:2D:39:DB:54:2A 78-2D-39-DB-54-2A
[CHG] Device 47:C4:46:9A:BF:31 ManufacturerData Key: 0x004c
[CHG] Device 47:C4:46:9A:BF:31 ManufacturerData Value:
10 06 54 1e a6 68 36 b1                          ..T..h6.        
[DEL] Device 5E:E8:24:4E:1A:1B 5E-E8-24-4E-1A-1B
[DEL] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
[NEW] Device 5E:E8:24:4E:1A:1B 5E-E8-24-4E-1A-1B
[NEW] Device 6A:01:11:B5:2D:6E 6A-01-11-B5-2D-6E
[NEW] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
[CHG] Device 47:C4:46:9A:BF:31 RSSI: -85
[CHG] Device 47:C4:46:9A:BF:31 ManufacturerData Key: 0x004c
[CHG] Device 47:C4:46:9A:BF:31 ManufacturerData Value:
10 06 58 1e a6 68 36 b1                          ..X..h6.        
[DEL] Device 78:2D:39:DB:54:2A 78-2D-39-DB-54-2A
[NEW] Device 78:2D:39:DB:54:2A 78-2D-39-DB-54-2A
[CHG] Device 58:F2:C8:F7:10:29 ManufacturerData Key: 0x004c
[CHG] Device 58:F2:C8:F7:10:29 ManufacturerData Value:
10 06 73 1d c6 b6 13 48                          ..s....H        
[DEL] Device 5E:E8:24:4E:1A:1B 5E-E8-24-4E-1A-1B
[DEL] Device 6A:01:11:B5:2D:6E 6A-01-11-B5-2D-6E
[DEL] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
[NEW] Device 6A:4D:0E:0B:83:F2 6A-4D-0E-0B-83-F2
[NEW] Device 6C:16:4E:1C:DD:36 6C-16-4E-1C-DD-36
[DEL] Device 58:F2:C8:F7:10:29 58-F2-C8-F7-10-29
[NEW] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
[DEL] Device 47:C4:46:9A:BF:31 47-C4-46-9A-BF-31
[NEW] Device 47:C4:46:9A:BF:31 47-C4-46-9A-BF-31
[NEW] Device 6A:01:11:B5:2D:6E 6A-01-11-B5-2D-6E
[DEL] Device 6C:16:4E:1C:DD:36 6C-16-4E-1C-DD-36
[CHG] Device 6A:4D:0E:0B:83:F2 RSSI: -77
[DEL] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
[CHG] Device 6A:01:11:B5:2D:6E ManufacturerData Key: 0x004c
[CHG] Device 6A:01:11:B5:2D:6E ManufacturerData Value:
10 06 4b 1e f6 84 55 ff                          ..K...U.

En prácticamente todos los casos, ManufacturerData Key devuelve el valor de Apple Inc. 0x004c. ¿Tantos iPhone hay emitiendo BLE?. He obtenido 2 iPhone, Bluetooth Classic apagado en ambos, dispuestos sobre una mesa. Puede haber contaminación electromagnética externa. Selecciono dirección concreta en base a su baja RSSI y realizo mediciones de distancia:

Con estas pruebas, observamos que los que smartphones -prácticamente monopolio de Apple Inc.- son los que emiten esta radiación BLE.