
Antes de que un dispositivo LoRaWAN pueda enviar o recibir datos, debe completar un proceso llamado activación — el paso en el que el dispositivo obtiene su dirección de red y sus claves de sesión. El método de activación que elija afecta a la seguridad, la complejidad del despliegue y las operaciones diarias.
La especificación LoRaWAN define dos métodos de activación: OTAA (Over-The-Air Activation) y ABP (Activation By Personalization). Este artículo desglosa cómo funciona cada uno, los compara en paralelo y ofrece orientación práctica para la selección.
OTAA es el método de activación recomendado. Los dispositivos se envían sin claves de sesión y completan la autenticación por el aire tras el primer encendido.
La activación OTAA ocurre en tres pasos:
1. El dispositivo envía una Join Request
El dispositivo transmite una Join Request que contiene:
| Campo | Descripción |
|---|---|
| JoinEUI / AppEUI | Identificador de aplicación (64 bits) que selecciona la aplicación o el servidor de red al que unirse |
| DevEUI | Identificador de dispositivo único a nivel global (64 bits), normalmente derivado de la MAC del hardware o programado en la fabricación |
| DevNonce | Un número aleatorio (16 bits) que se incrementa en cada Join Request, lo que evita ataques de repetición |
La Join Request se autentica con un MIC (Message Integrity Code) calculado usando la AppKey, lo que garantiza que el mensaje no ha sido manipulado.
2. El servidor de red valida y envía una Join Accept
Al recibir la Join Request, el servidor de red:
La Join Accept contiene:
| Campo | Descripción |
|---|---|
| JoinNonce | Valor aleatorio (24 bits) generado por el servidor de red, usado para la derivación de claves |
| NetID | Identificador de red (24 bits) |
| DevAddr | La dirección de red asignada (32 bits) |
| DLSettings | Ajustes de enlace descendente (RX2 data rate, desplazamiento RX1, etc.) |
| RxDelay | Retardo de la ventana de recepción |
| CFList | Lista opcional de frecuencias de canal |
3. El dispositivo deriva sus claves de sesión
El dispositivo descifra la Join Accept con su AppKey y luego deriva las claves de sesión a partir de la AppKey, el JoinNonce, el DevNonce y el NetID.
LoRaWAN 1.0.x (1.0.2 / 1.0.3 / 1.0.4) deriva dos claves:
Derivación simplificada:
NwkSKey = aes_encrypt(AppKey, 0x01 | AppNonce | NwkID | DevNonce)
AppSKey = aes_encrypt(AppKey, 0x02 | AppNonce | NwkID | DevNonce)
LoRaWAN 1.1 introduce la separación de claves, derivando cuatro claves:
LoRaWAN 1.1 cambia el nombre de AppEUI a JoinEUI y separa la NwkKey de la AppKey, lo que permite la separación de claves a nivel de red y a nivel de aplicación — la base para el roaming seguro.
ABP omite por completo el procedimiento de unión. Los dispositivos se aprovisionan previamente con todos los parámetros de comunicación en el momento de fabricación y comienzan a enviar inmediatamente después del encendido.
Lo siguiente debe escribirse en el dispositivo antes del envío y registrarse en el servidor de red con antelación:
| Parámetro | Descripción |
|---|---|
| DevAddr | Dirección de red del dispositivo (32 bits), debe ser única dentro de la asignación del servidor |
| NwkSKey | Clave de sesión de red (AES de 128 bits) |
| AppSKey | Clave de sesión de aplicación (AES de 128 bits) |
Los dispositivos ABP no necesitan un DevEUI, JoinEUI ni AppKey (a menos que se planee migrar a OTAA más adelante).
Un dispositivo ABP pasa directamente a funcionar tras el encendido:
No hay intercambio de Join Request / Join Accept.
Los dispositivos ABP deben gestionar sus contadores de tramas de enlace ascendente (FCntUp) y de enlace descendente (FCntDown). Los servidores de red rastrean estos contadores para prevenir ataques de repetición: si un dispositivo se reinicia y su contador se restablece por debajo del valor que el servidor registró por última vez, sus tramas serán rechazadas.
Dos enfoques comunes:
ManThink ofrece productos IoT para conectar dispositivos, desplegar redes y trabajar con datos. Consulta estos recursos de producto junto con las recomendaciones técnicas del artículo:
| Dimensión | OTAA | ABP |
|---|---|---|
| Seguridad | Alta — las claves se derivan durante el procedimiento de unión y nunca se transmiten | Baja — las claves deben escribirse en la fabricación y registrarse en el servidor; riesgo de exposición |
| Rotación de claves | Sí — volver a unirse para obtener claves nuevas | No — las claves son fijas; cambiarlas requiere reflashear los dispositivos |
| Asignación de DevAddr | Asignada dinámicamente por el servidor de red | Fija en la fabricación; la unicidad debe gestionarse manualmente |
| Complejidad de despliegue | El dispositivo solo necesita las claves raíz; el servidor gestiona el resto | Tanto el dispositivo como el servidor necesitan una preconfiguración completa |
| Tiempo hasta el primer paquete | Primero el procedimiento de unión (normalmente 5–15 segundos) | Instantáneo — funciona justo después del encendido |
| Gestión del contador de tramas | Comienza desde cero tras la unión; sin problemas de conflicto | Debe gestionarse con cuidado; un reinicio puede provocar el rechazo de tramas |
| Roaming | Compatible (separación de claves de LoRaWAN 1.1) | No compatible |
| LoRaWAN 1.1 | Totalmente compatible — 1.1 depende de OTAA | No recomendado en 1.1 |
| Escala de despliegue | Adecuado para flotas de producción | Adecuado para pruebas pequeñas |
| Cambio de red | Cambiar el JoinEUI para unirse a otra red | Requiere reflashear todos los parámetros |
"ABP ahorra energía porque no hay procedimiento de unión."
No realmente. El procedimiento de unión cuesta muy poco — una Join Request y una Join Accept, normalmente completadas en unos segundos. En comparación con la vida útil de la batería de varios años de un dispositivo, la energía de la fase de unión es insignificante. Lo que ABP realmente ahorra es esfuerzo de configuración durante el desarrollo — y en producción esa comodidad tiene como costo una menor seguridad y una mayor sobrecarga operativa.
En ThinkLink:
| OTAA | ABP | |
|---|---|---|
| En una frase | Como conectarse a Wi-Fi — autenticación automática, dirección automática | Como una línea fija — número y línea preconfigurados en fábrica |
| Seguridad | Alta | Baja |
| Recomendado para producción | Sí | No (solo depuración/enseñanza) |
| LoRaWAN 1.1 | Requerido | No recomendado |
En conclusión: use OTAA en producción, ABP solo para depuración y enseñanza. Si tiene más de diez dispositivos, o si los dispositivos están en entornos que no puede controlar físicamente, OTAA es la única opción sensata.
Escrito conforme a las especificaciones LoRaWAN 1.0.4 y 1.1. Los detalles del protocolo siguen los documentos de especificación de LoRa Alliance; los consejos operativos se basan en la experiencia de la plataforma ThinkLink.
ThinkLink es el producto de plataforma IoT de ManThink, que ofrece gestión de red LoRaWAN, operaciones de dispositivos y servicios de datos.