Un Bluetooth Beacon es un altavoz en una sala llena de gente: difunde el mismo paquete a todos los que estan en rango, sin emparejar y sin autenticar por defecto. Esa apertura es lo que hace a los beacons baratos y faciles de desplegar, pero tambien significa que cualquiera con un telefono puede leer, clonar o falsificar tu trafico de beacon. Este articulo mapea el modelo de amenaza real de un Bluetooth Beacon y los controles de ingenieria que de verdad detienen a un atacante.

Por que un beacon esta expuesto por diseno

Un beacon anuncia para ser oido. Los paquetes de advertising son legibles por cualquier escaneo, y la carga (UUID/Major/Minor de iBeacon, namespace/instance de Eddystone o un MSD propio) se envia en claro salvo que la cifres especificamente. No se negocia ninguna clave al anunciar, asi que la radio no distingue una pasarela legitima de un telefono de un desconocido.

El modelo de amenaza

Amenaza Que hace el atacante Que rompe
Escucha Registra advertising pasivamente Privacidad, fuga de ubicacion
Suplantacion Emite un beacon falso con tus IDs Fraude de presencia, abuso de disparador
Replay Captura un paquete valido, lo reenvia Ilusion de «sigue ahi»
MITM / pasarela falsa Suplanta el enlace de subida Inyeccion, manipulacion

Escucha: el claro filtra la ubicacion

Un frame iBeacon estandar lleva un UUID fijo mas Major/Minor que a menudo codifican planta, zona o clase de activo. Un atacante en el lobby registra los UUID y en una tarde construye un mapa de tus zonas. Mitigaciones: usa IDs opacos y rotativos; nunca incrustes datos significativos en los campos estaticos; guarda el mapeo real en el servidor.

Suplantacion: presencia falsa

Como el ID del beacon es publico, un atacante emite el mismo UUID/Major/Minor desde una placa de 10 dolares y tu sistema cree que un activo (o un cliente) esta donde no esta. Retail: eventos falsos de «fidelidad presente». Logistica: palets fantasticos. La solucion es autenticidad: el receptor debe verificar criptograficamente que el paquete vino de un tenedor de clave, no solo que el ID coincide.

Replay: captura y reenvio

El replay es el ataque mas simple y el mas facil de pasar por alto. Un atacante graba hoy un paquete valido y lo reenvia la semana que viene para afirmar que el beacon «sigue ahi». Un frame iBeacon crudo no tiene marca de tiempo ni nonce, asi que el receptor no distingue viejo de nuevo. Una marca de tiempo firmada lo derrota.

MITM y la pasarela falsa

Si tu beacon habla con una pasarela por un enlace sin cifrar, una pasarela falsa puede inyectar o modificar lecturas. Lo mismo aplica si el enlace pasarela-a-nube no esta autenticado. Cada salto necesita su propia integridad y, donde el dato es sensible, confidencialidad.

Mitigaciones criptograficas que funcionan

Advertising cifrado. Mete la carga significativa en un blob cifrado (AES-CCM bajo LE Secure Connections o una clave precompartida). La radio sigue emitiendo, pero solo los tenedores de clave pueden leerla.

Beacons firmados. Sella cada paquete con una firma ECDSA sobre la carga mas una marca de tiempo. El receptor verifica antes de confiar:

def firmar_beacon(carga, ts, clave_priv):
msg = carga + ts                  # ts = contador grueso o unix time
sig = ecdsa_sign(msg, clave_priv) # P-256 o Ed25519
return carga + ts + sig


def verificar_beacon(anuncio, clave_pub, ventana):
carga, ts, sig = separar(anuncio)
if ahora() - ts > ventana:         # ej. 60 s
return REPLAY_DETECTADO
return ecdsa_verificar(carga + ts, sig, clave_pub)

IDs volatiles rotativos. Refleja el modelo de privacidad de las direcciones privadas resolubles: difunde un ID rotativo derivado de clave que solo tu servidor puede resolver. Un fisgon ve un ID distinto cada pocos minutos y no puede rastrear.

Marca de tiempo + nonce anti-replay. Un contador monotono o una marca de tiempo gruesa dentro del sobre firmado hace unico y efimero cada paquete.

Seguridad vs coste

Esquema Confidencialidad Integridad Resist. replay Coste energia Compatibilidad
Claro Ninguna Ninguna Ninguna Ninguno Universal
ID rotativo Debil Ninguna Parcial Bajo Universal
Firmado Ninguna Fuerte Si (tiempo) Medio Necesita verif.
Cifrado Fuerte Fuerte Si (nonce) Alto Necesita clave

Aprovisionamiento de claves y raiz hardware

La firma solo es tan confiable como la clave privada. Guardala en un secure element o derivala de un PUF para que no se pueda leer de la imagen del firmware. Es la misma disciplina de root-of-trust del secure boot: la identidad del beacon se graba en fabrica, no se carga de flash en tiempo de ejecucion.

Deteccion operativa

Aun con cripto, vigila el aire:

  • Anomalia RSSI: un beacon que de repente lee +20 dB mas fuerte sugiere un suplantador cercano.
  • Mismo ID desde dos lugares a la vez: fisicamente imposible – marca.
  • Lista blanca de pasarelas: acepta solo subidas de certificados conocidos.

Estandares en los que apoyarse

Apple Find My y la especificacion multiplataforma Detecting Unwanted Location Trackers definen comportamientos anti-acoso (alertas de separacion, pitidos) que debes imitar en etiquetas de consumo. Device Provisioning Protocol (DPP) da un onboarding limpio para pasarelas.

Checklist OEM

1. Decide el modelo de amenaza antes de elegir esquema – la mayoria necesita firmado, no cifrado.

2. Guarda claves en secure element / PUF, nunca en flash de app.

3. Anade marca de tiempo o contador a cada paquete; verifica la ventana.

4. Rota los IDs publicos en un calendario que el servidor resuelva.

5. Envía forma de revocar y re-clavar un beacon comprometido.

Un Bluetooth Beacon gana confianza igual que cualquier cosa: demostrando, en cada paquete, que es quien dice ser.

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *