static-httpd

Sitio web estático (HTML + CSS) que sostiene el blog del autor
Log | Files | Refs

index.html (18043B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      5 <meta name="viewport" content="width=device-width, initial-scale=1" />
      6 <title>Experimentos, análisis y mapeo de radiación BLE</title>
      7 <link rel="icon" type="image/png" href="/favicon.png" />
      8 <link rel="stylesheet" type="text/css" href="../article.css" />
      9 </head>
     10 <body>
     11 <header>
     12 <p class="title">Experimentos, análisis y mapeo de radiación BLE</p>
     13 <p class="date">17 de noviembre de 2021 • fjbalon</p>
     14 </header>
     15 <p>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?.</p> 
     16 <p>¿Es posible que pueda tener que ver con la patente <a href="https://patentimages.storage.googleapis.com/68/80/73/6a17a66e9ec8c5/US11107588.pdf">US11107588 - «Métodos y sistemas para priorizar tratamientos, vacunación, pruebas y/o actividades mientras se protege la privacidad de las personas»</a>, 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?.</p>
     17 <p>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).</p>
     18 <p>Antes de realizar experimentos, conviene dejar claro algunos conceptos teóricos.</p>
     19 <h2>Contextualización teórica</h2>
     20 <p>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.</p>
     21 <p>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).</p>
     22 <p>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.</p>
     23 <p>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.</p>    	 <p>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.</p>
     24 <ul>
     25 <li>Static device address, random part of static address(46bits), 11</li>
     26 <li>Non-resolvable device address, random part of static address (46bits), 00</li>
     27 <li>Resolvable devide address, hash (24bits), prand (22bits), 10</li>
     28 </ul>
     29 <p>Por ejemplo, teniendo la dirección BLE-MAC:</p>
     30 <pre><code>4D:3E:0C:F5:C4:42==01001101:00111110:00001100:11110101:11000100:01000010</code></pre>
     31 <p>Como termina en 10, es resolvable, es decir:</p>
     32 <pre><code>hash: 010011010011111000001100
     33 prand: 1111010111000100010000</code></pre>
     34 <p>Y teniendo la dirección:</p>
     35 <pre><code>59:37:5F:E4:9A:A0 -> 01011001:00110111:01011111:11100100:10011010:10100000</code></pre>
     36  <p>Como termina en 00, es non-resolvable, es decir:</p>
     37 <pre><code>random:0101100100110111010111111110010010011010101000</code></pre>
     38 <p>Algunos conceptos a tener en cuenta:</p>
     39 <ul>
     40 <li>RSSI (Received Signal Strength Indicator) es la fuerza de la señal de la baliza como se ve en el receptor. La intensidad de la señal depende de la distancia y el valor de la potencia de transmisión. Bluetooth funciona con señales de radiodifusión y ese valor de potencia de radiodifusión es de alrededor de 2-4dBm, la intensidad de la señal RSSI será pues de entre -26 (unos pocos cm) a -100 (40-50m). A este valor le llamaremos N. Debido a factores externos que influyen en las ondas de radio, como la absorción, la interferencia o la difracción, el RSSI tiende a fluctuar. Cuanto más lejos está el dispositivo de la baliza, más inestable se vuelve el RSSI.</li>
     41 <li>La potencia medida es una constante de sólo lectura calibrada de fábrica que indica cuál es el RSSI esperado a una distancia de 1m a la baliza. Combinado con RSSI, permite estimar la distancia entre el dispositivo y la baliza. Sin embargo, hay que tener en cuenta que este valor puede ser modificado en el chip bruto, siempre que haya acceso a los comandos AT del chip BLE.</li>
     42 <li>Las balizas no emiten constantemente como Wifi; éstas "parpadean". El intervalo de publicidad (advertising) describe el tiempo entre cada parpadeo, que oscila entre 100ms y 2000ms. Cuanto más corto sea el intervalo, más estable será la señal.</li>
     43 </ul>
     44 <p>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):</p>
     45    
     46 <math xmlns="http://www.w3.org/1998/Math/MathML" alttext="d=10(\frac{PM-RSSI}{10N})" display="block">
     47 	<mrow>
     48 		<mi>d</mi>
     49 		<mo>=</mo>
     50 		<mrow>
     51 		<mn>10</mn>
     52 		<mo></mo>
     53 		<mrow>
     54 			<mo stretchy="false">(</mo>
     55 			<mfrac>
     56 			<mrow>
     57 				<mrow>
     58 				<mi>P</mi>
     59 				<mo></mo>
     60 				<mi>M</mi>
     61 				</mrow>
     62 				<mo>-</mo>
     63 				<mrow>
     64 				<mi>R</mi>
     65 				<mo></mo>
     66 				<mi>S</mi>
     67 				<mo></mo>
     68 				<mi>S</mi>
     69 				<mo></mo>
     70 				<mi>I</mi>
     71 				</mrow>
     72 			</mrow>
     73 			<mrow>
     74 				<mn>10</mn>
     75 				<mo></mo>
     76 				<mi>N</mi>
     77 			</mrow>
     78 			</mfrac>
     79 			<mo stretchy="false">)</mo>
     80 		</mrow>
     81 		</mrow>
     82 	</mrow>
     83 </math>
     84    	  
     85 <p>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.</p>
     86 <pre><code>#include &lt;stdio.h&gt;
     87 #include &lt;stdlib.h&gt;
     88 #include &lt;math.h&gt;
     89 
     90 int main (int argc, char *argv[])
     91 {
     92 	double rssi = atof(argv[1]);
     93 	double txp = atof(argv[2]);
     94 
     95 	double n = 2;
     96 	double base = 10.0;
     97 
     98 	double distance = pow(base, ((double) txp - rssi) / (10 * n));
     99 	printf("%fm\n",distance);
    100 
    101 	return 0;
    102 }</code></pre>
    103 <p>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.</p>
    104 <h2>Redes bluetooth</h2>
    105 <p>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.</p>
    106 <h2>Experimentos</h2>
    107 <p>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:</p>
    108 <pre><code>[NEW] Device FC:04:1C:C4:1F:01 OPPO Find X3 Neo 5G
    109 [DEL] Device FC:04:1C:C4:1F:01 OPPO Find X3 Neo 5G
    110 
    111 
    112 Device FC:04:1C:C4:1F:01 (public)
    113 Name: OPPO Find X3 Neo 5G
    114 Alias: OPPO Find X3 Neo 5G
    115 Class: 0x005a020c
    116 Icon: phone
    117 Paired: no
    118 Trusted: no
    119 Blocked: no
    120 Connected: no
    121 LegacyPairing: no
    122 UUID: OBEX Object Push          (00001105-0000-1000-8000-00508f3f34bc)
    123 UUID: Audio Source              (0000110a-0000-1000-8000-00508f3f34bc)
    124 UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00508f3f34bc)
    125 UUID: A/V Remote Control        (0000110e-0000-1000-8000-00508f3f34bc)
    126 UUID: Headset AG                (00001112-0000-1000-8000-00508f3f34bc)
    127 UUID: PANU                      (00001115-0000-1000-8000-00508f3f34bc)
    128 UUID: NAP                       (00001116-0000-1000-8000-00508f3f34bc)
    129 UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00508f3f34bc)
    130 UUID: Phonebook Access Server   (0000112f-0000-1000-8000-00508f3f34bc)
    131 UUID: PnP Information           (00001200-0000-1000-8000-00508f3f34bc)
    132 UUID: Message Access Server     (00001132-0000-1000-8000-00508f3f34bc)
    133 UUID: Vendor specific           (00000000-0000-0000-0000-000000000000)
    134 RSSI: -57
    135 
    136 # Usando servicio externo obtengo fabricante de dirección MAC pública:
    137 # GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD</code></pre>
    138 <p>10:00h. Accede sujeto 1 con iPhone sin Bluetooth activado.</p>
    139 <pre><code>[NEW] Device 56:FC:D8:00:3F:7F 56-FC-D8-00-3F-7F
    140 [CHG] Device 56:FC:D8:00:3F:7F RSSI: -70
    141 [CHG] Device 56:FC:D8:00:3F:7F RSSI: -78
    142 [CHG] Device 56:FC:D8:00:3F:7F RSSI: -57
    143 [CHG] Device 56:FC:D8:00:3F:7F RSSI: -67
    144 [CHG] Device 56:FC:D8:00:3F:7F RSSI: -76
    145 [CHG] Device 56:FC:D8:00:3F:7F RSSI: -64
    146 [CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Key: 0x004c
    147 [CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Value:
    148 	10 06 73 1d b5 71 a8 48                          ..s..q.H
    149 [CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Key: 0x004c
    150 CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Value:
    151 	10 06 7f 1d b5 71 a8 08                          .....q..
    152 [CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Key: 0x004c
    153 [CHG] Device 56:FC:D8:00:3F:7F ManufacturerData Value:
    154 	10 06 73 1d b5 71 a8 78                          ..s..q.x
    155 
    156 ------------------------------------------------------------------------------
    157 
    158 Device 56:FC:D8:00:3F:7F (random)
    159 	Alias: 56-FC-D8-00-3F-7F
    160 	Paired: no
    161 	Trusted: no
    162 	Blocked: no
    163 	Connected: no
    164 	LegacyPairing: no
    165 	ManufacturerData Key: 0x004c # Apple Inc.
    166 	ManufacturerData Value:
    167 	10 06 37 1d b5 71 a8 78                          ..7..q.x
    168 	RSSI: -70
    169 	TxPower: 8
    170 
    171 ------------------------------------------------------------------------------
    172 
    173 56:FC:D8:00:3F:7F => 01010110:11111100:11011000:00000000:00111111:01111111
    174 
    175 # Como termina en 00, es static. Es decir:
    176 
    177 random: 0101011011111100110110000000000000111111011111</code></pre>
    178 <p>11:30h. Caso segundo, identifico segundo dispositivo. Inicio análisis de nuevo.</p>
    179 <pre><code>[NEW] Device 51:3B:DA:9B:F7:DE 51-3B-DA-9B-F7-DE
    180 [CHG] Device 51:3B:DA:9B:F7:DE RSSI: -59
    181 [CHG] Device 51:3B:DA:9B:F7:DE RSSI: -47
    182 [CHG] Device 51:3B:DA:9B:F7:DE RSSI: -60
    183 [CHG] Device 51:3B:DA:9B:F7:DE RSSI: -51
    184 [CHG] Device 51:3B:DA:9B:F7:DE RSSI: -61
    185 [CHG] Device 51:3B:DA:9B:F7:DE RSSI: -51
    186 [CHG] Device 51:3B:DA:9B:F7:DE RSSI: -67
    187 [CHG] Device 51:3B:DA:9B:F7:DE RSSI: -58
    188 [CHG] Device 51:3B:DA:9B:F7:DE RSSI: -71
    189 [CHG] Device 51:3B:DA:9B:F7:DE RSSI: -57
    190 
    191 ------------------------------------------------------------------------------
    192 
    193 Device 51:3B:DA:9B:F7:DE (random)
    194 Alias: 51-3B-DA-9B-F7-DE
    195 Paired: no
    196 Trusted: no
    197 Blocked: no
    198 Connected: no
    199 LegacyPairing: no
    200 ManufacturerData Key: 0x004c # Apple Inc.
    201 ManufacturerData Value:
    202 	10 06 38 1d 57 68 aa 58                          ..8.Wh.X
    203 
    204 ------------------------------------------------------------------------------
    205 
    206 51:3B:DA:9B:F7:DE => 01010001:00111011:11011010:10011011:11110111:11011110
    207 
    208 # Como termina en 10, es resolvable. Es decir:
    209 
    210 hash: 010100010011101111011010
    211 prand: 1001101111110111110111</code></pre>	
    212 <p>Dispositivos no responden a l2ping. Esto confirma que se trata de dispositivos BLE, ya que L2CAP no soporta BLE.</p>
    213 <pre><code>[NEW] Device 51:3B:DA:9B:F7:DE 51-3B-DA-9B-F7-DE
    214 [NEW] Device 56:FC:D8:00:3F:7F OPPO Find X3 Neo 5G
    215 
    216 root ~ # l2ping 51:3B:DA:9B:F7:DE
    217 Can't connect: Host is down
    218 
    219 [DEL] Device 51:3B:DA:9B:F7:DE 51-3B-DA-9B-F7-DE
    220 [NEW] Device 51:3B:DA:9B:F7:DE 51-3B-DA-9B-F7-DE
    221 
    222 root ~ # l2ping 56:FC:D8:00:3F:7F
    223 Ping: 56:FC:D8:00:3F:7F from xx:xx:xx:xx:xx:xx (data size 44) ...
    224 44 bytes from 56:FC:D8:00:3F:7F id 0 time 861.02ms
    225 44 bytes from 56:FC:D8:00:3F:7F id 1 time 296.03ms
    226 44 bytes from 56:FC:D8:00:3F:7F id 2 time 318.75ms</code></pre>
    227 <p>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:</p>
    228 <pre><code>[NEW] Device 58:F2:C8:F7:10:29 58-F2-C8-F7-10-29
    229 [NEW] Device D0:4F:7E:17:64:30 D0-4F-7E-17-64-30
    230 [NEW] Device 47:C4:46:9A:BF:31 47-C4-46-9A-BF-31
    231 [NEW] Device 5E:E8:24:4E:1A:1B 5E-E8-24-4E-1A-1B
    232 [NEW] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
    233 [NEW] Device 78:2D:39:DB:54:2A 78-2D-39-DB-54-2A
    234 [CHG] Device 47:C4:46:9A:BF:31 ManufacturerData Key: 0x004c
    235 [CHG] Device 47:C4:46:9A:BF:31 ManufacturerData Value:
    236 10 06 54 1e a6 68 36 b1                          ..T..h6.        
    237 [DEL] Device 5E:E8:24:4E:1A:1B 5E-E8-24-4E-1A-1B
    238 [DEL] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
    239 [NEW] Device 5E:E8:24:4E:1A:1B 5E-E8-24-4E-1A-1B
    240 [NEW] Device 6A:01:11:B5:2D:6E 6A-01-11-B5-2D-6E
    241 [NEW] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
    242 [CHG] Device 47:C4:46:9A:BF:31 RSSI: -85
    243 [CHG] Device 47:C4:46:9A:BF:31 ManufacturerData Key: 0x004c
    244 [CHG] Device 47:C4:46:9A:BF:31 ManufacturerData Value:
    245 10 06 58 1e a6 68 36 b1                          ..X..h6.        
    246 [DEL] Device 78:2D:39:DB:54:2A 78-2D-39-DB-54-2A
    247 [NEW] Device 78:2D:39:DB:54:2A 78-2D-39-DB-54-2A
    248 [CHG] Device 58:F2:C8:F7:10:29 ManufacturerData Key: 0x004c
    249 [CHG] Device 58:F2:C8:F7:10:29 ManufacturerData Value:
    250 10 06 73 1d c6 b6 13 48                          ..s....H        
    251 [DEL] Device 5E:E8:24:4E:1A:1B 5E-E8-24-4E-1A-1B
    252 [DEL] Device 6A:01:11:B5:2D:6E 6A-01-11-B5-2D-6E
    253 [DEL] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
    254 [NEW] Device 6A:4D:0E:0B:83:F2 6A-4D-0E-0B-83-F2
    255 [NEW] Device 6C:16:4E:1C:DD:36 6C-16-4E-1C-DD-36
    256 [DEL] Device 58:F2:C8:F7:10:29 58-F2-C8-F7-10-29
    257 [NEW] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
    258 [DEL] Device 47:C4:46:9A:BF:31 47-C4-46-9A-BF-31
    259 [NEW] Device 47:C4:46:9A:BF:31 47-C4-46-9A-BF-31
    260 [NEW] Device 6A:01:11:B5:2D:6E 6A-01-11-B5-2D-6E
    261 [DEL] Device 6C:16:4E:1C:DD:36 6C-16-4E-1C-DD-36
    262 [CHG] Device 6A:4D:0E:0B:83:F2 RSSI: -77
    263 [DEL] Device 40:5A:56:14:70:2B 40-5A-56-14-70-2B
    264 [CHG] Device 6A:01:11:B5:2D:6E ManufacturerData Key: 0x004c
    265 [CHG] Device 6A:01:11:B5:2D:6E ManufacturerData Value:
    266 10 06 4b 1e f6 84 55 ff                          ..K...U.</code></pre>	
    267 <p>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:</p>
    268 <ul>
    269 <li>A menos de 1m del target, RSSI marca 40-56dbm.</li>
    270 <li>Misma superficie, hardware en contacto, RSSI marca 21-36dbm.</li>
    271 <li>Receptor sobre emisor, RSSI marca 12-16dbm.</li>
    272 </ul>
    273 <p>Con estas pruebas, observamos que los que smartphones -prácticamente monopolio de Apple Inc.- son los que emiten esta radiación BLE.</p>
    274 </body>
    275 </html>