Como se señalaba en el artículo anterior 802.15.4 frente a ZigbeeLa capa MAC del IEEE implementa varias funciones que el protocolo Zigbee utiliza en las capas de red y aplicación. Una de estas características son los servicios de seguridad.
IEEE 802.15.4 establece el algoritmo de cifrado que se va a utilizar para cifrar los datos que se van a transmitir, sin embargo, la norma no especifica cómo hay que gestionar las llaves o qué tipo de políticas de autenticación deben aplicarse. Estas cuestiones se tratan en las capas superiores, que son gestionadas por tecnologías como ZigBee.
Vista global de la seguridad 802.15.4:
El algoritmo de cifrado utilizado es AES (Estándar de cifrado avanzado) con un 128b longitud de la clave (16 Bytes). Es realmente importante contar con un único tipo de método de encriptación debido a que la mayoría de los 802.15.4/ZigBee transceptores tienen un específico diseño de hardware para hacer frente a este trabajo a nivel electrónico (dispositivos empotrados de bajos recursos).
El algoritmo AES no sólo se utiliza para cifrar la información, sino también para validar los datos enviados. Este concepto se denomina Integridad de los datos y se consigue utilizando un Código de integridad del mensaje (MIC) también llamado Código de autenticación de mensajes (MAC) que se adjunta al mensaje. Este código garantiza la integridad de la cabecera MAC y de los datos de carga útil adjuntos. Se crea encriptando partes de la trama MAC IEEE utilizando la Clave de la red, por lo que si recibimos un mensaje de un nodo no fiable veremos que la MAC generada para el mensaje enviado no se corresponde con la que se generaría utilizando el mensaje con la Clave secreta actual, por lo que podemos descartar este mensaje. La MAC puede tener diferentes tamaños: 32, 64, 128 bits, sin embargo siempre se crea utilizando la 128b AES algoritmo. Su tamaño no es más que la longitud en bits que se adjunta a cada trama. Cuanto más grande, más seguro (aunque menos carga útil puede llevar el mensaje). Seguridad de los datos se realiza encriptando el campo de carga útil de datos con la Clave 128b.
Información sobre seguridad 802.15.4:
Hay tres campos en la trama MAC de IEEE 802.15.4 que están relacionados con cuestiones de seguridad:
- Control del marco (situado en la cabecera MAC)
- Control de seguridad auxiliar (en la cabecera MAC)
- Carga útil de datos (en el campo MAC Payload)
La Marco de seguridad auxiliar sólo se activa si Seguridad activada subcampo de la Marco Marco de control está activada. Esta cabecera especial tiene 3 campos:
- Control de seguridad (1B) especifica qué tipo de protección se utiliza (véase más adelante).
- Contador de marcos (4B) es un contador dado por la fuente de la trama actual con el fin de proteger el mensaje de la protección contra repeticiones. Por esta razón, cada mensaje tiene un ID de secuencia único representado por este campo.
- Identificador clave (0-9B) especifica la información necesaria para saber qué clave estamos utilizando con el nodo con el que nos estamos comunicando.
La Control de seguridad es el lugar donde nuestro Política de Seguridad está activado. Utilizando los 2 primeros bits (Nivel de seguridad campo) elegimos lo que vamos a cifrar y la longitud de la Clave:
0x00 | Sin seguridad | Los datos no están encriptados. No se valida la autenticidad de los datos. | |||
0x01 | AES-CBC-MAC-32 | MIC-32 | Los datos no se cifran. Se valida la autenticidad de los datos. | ||
0x02 | AES-CBC-MAC-64 | MIC-64 | Los datos no se cifran. Se valida la autenticidad de los datos. | ||
0x03 | AES-CBC-MAC-128 | MIC-128 | Los datos no se cifran. Se valida la autenticidad de los datos. | ||
0x04 | AES-CTR | ENC | Los datos están encriptados. No se valida la autenticidad de los datos. | ||
0x05 | AES-CCM-32 | AES-CCM-32 | Los datos se cifran. Se valida la autenticidad de los datos. | ||
0x06 | AES-CCM-64 | AES-CCM-64 | Los datos se cifran. Se valida la autenticidad de los datos. | ||
0x07 | AES-CCM-128 | AES-CCM-128 | Los datos se cifran. Se valida la autenticidad de los datos. |
La 0x00 no establece ningún cifrado, por lo que ni se cifran los datos (no hay confidencialidad de los datos) ni se valida la autenticidad de los datos. Desde el 0x01 a 0x03 los datos se autentican mediante el Código de Autenticación de Mensaje cifrado (MAC). El valor 0x04 encripta la carga útil garantizando Confidencialidad de los datos. En 0x05 a 0x07 gama garantiza ambos confidencialidad y autenticidad de los datos.
La Modo de identificador de clave establece el tipo de clave (implícita o explícita) que deben utilizar el emisor y el receptor. Los valores posibles son:
- 0 - el emisor y el receptor conocen implícitamente el identificador de la clave (no se especifica en el mensaje)
- 1- el id de la clave viene determinado explícitamente por el 1Byte Índice de claves del Identificador clave Campo y el macDefaultKeySource.
- 2 - el id de la clave viene determinado explícitamente por el 1Byte Índice de claves y el 4Byte Fuente clave ambos subcampos del Identificador clave Campo.
- 3 - el id de la clave viene determinado explícitamente por el 1Byte Índice de claves y el 8Byte Fuente clave ambos subcampos del campo Identificador de clave.
Como ya se ha señalado, el Identificador clave se activa cuando Modo de identificador de clave no es cero. El Fuente clave especifica el creador de la clave de grupo. En Índice de claves subcampo ayuda a identificar las diferentes Claves de un Fuente clave.
La Carga útil de datos puede tener tres configuraciones diferentes en función de los campos de seguridad previamente definidos:
- AES-CTR: todos los datos se cifran utilizando la clave 128b definida y el algoritmo AES. El contador de fotogramas establece el ID del mensaje y el Contador de llaves (subcampo Key Control) es utilizado por la capa de aplicación si el Contador de marcos se alcanza el valor máximo.
- AES-CBC-MAC: El Código de Autenticidad de Mensaje (MAC) se adjunta al final de la carga útil de datos. Su longitud depende del nivel de seguridad especificado en el campo Security Policy. La MAC se crea cifrando la información de la cabecera MAC 802.15.4 y la carga útil de datos.
- AES-CCM: Es la mezcla de los métodos definidos anteriormente. Los subcampos se corresponden con los AES-CTR modo más el extra AEX-CBC-MAC subcampo encriptado.
Hemos probado con éxito el AES-CTR modo en ambos Waspmote y SquidBee dispositivos sensores. El hardware de cifrado específico de los transceptores utilizados permite cifrar la información sin casi aumentar el consumo de energía. Como se ha señalado anteriormente es importante contar con un transceptor que tenga hardware específico para el proceso de cifrado. En XBee módulos integrados en Waspmote y SquidBee funcionan así.
La lista de control de acceso:
Cada Transceptor 802.15.4 tiene que gestionar un lista para controlar su "hermanos de confianza" junto con la política de seguridad . Por esta razón, cada nodo tiene que controlar su propia Lista de control de acceso (ACL) que almacena los siguientes campos:
- Dirección: del nodo con el que queremos comunicarnos
- Suite de seguridad: la policía de seguridad que se está utilizando (AEC-CTR, AES-CCM-64, AES-CCM-128,,...)
- Clavela clave 128b utilizada en el algoritmo AES
- Último vector inicial (IV) y contador de repeticiones: ambos son el mismo campo. El último IV es utilizado por el origen y el contador de repeticiones por el destino como ID del mensaje para evitar ataques de respuesta.
Cuando un nodo quiere enviar un mensaje a un nodo específico o recibe un paquete, mira el ACL para ver si se trata de un hermano de confianza o no. En caso afirmativo, el nodo utiliza los datos de la fila específica para aplicar las medidas de seguridad. En el caso de que el nodo no esté en la lista o su mensaje sea rechazado se inicia un proceso de autenticación.
Seguridad ZigBee:
ZigBee implementa dos capas de seguridad adicionales sobre el de 802.15.4: el Red y Aplicación capas de seguridad. Todas las políticas de seguridad se basan en el algoritmo de cifrado AES 128b, por lo que la arquitectura de hardware desplegada anteriormente para el nivel de enlace (capa MAC) sigue siendo válida. Existen tres tipos de claves: maestra, de enlace y de red.
- Llaves maestras: Están preinstalados en cada nodo. Su función es mantener confidencial la Claves de enlace entre dos nodos de la Procedimiento de establecimiento de claves (SKKE).
- Claves de enlace: Son únicos entre cada par de nodos. Estas claves son gestionadas por el nivel de Aplicación. Se utilizan para encriptar toda la información entre cada dos dispositivos, por esta razón se necesitan más recursos de memoria en cada dispositivo (en el "mundo real" no se suele utilizar esta tecla).
- Clave de red: Es una clave única de 128b sentre todos los dispositivos de la red. Es generado por el Centro de confianza y regenerado a intervalos diferentes. Cada nodo tiene que obtener la Clave de Red para poder unirse a la red. Una vez que el centro de confianza decide cambiar la Clave de Red, la nueva se difunde a través de la red mediante el protocolo Clave de red antigua (véase la imagen anterior sobre "Modo residencial ZigBee"). Una vez actualizada esta nueva clave en un dispositivo, su Contador de marcos (véase en las secciones anteriores) se inicializa a cero. Este Centro de confianza normalmente es el Coordinador, aunque puede ser un dispositivo dedicado. Tiene que autentificar y validar cada dispositivo que intente unirse a la red.
Cada par de dispositivos puede tener ambos Claves de red y de enlace. En este caso se utiliza siempre la clave Link (más seguridad aunque más se necesita memoria). Existen dos tipos de políticas de seguridad que puede seguir el Centro de confianza:
- Modo comercial: la cuota del Centro de Confianza Llaves maestra y de enlace con cualquier de los dispositivos de la red (véase la imagen siguiente sobre la "Modo comercial ZigBee"). Este modo requiere recursos de memoria elevados. Este modo ofrece un modelo centralizado completo para el control de la seguridad de las claves.
- Modo residencialEl Centro de Confianza comparte sólo el Clave de red (es el modo ideal cuando los dispositivos integrados tienen que hacer frente a esta tarea debido a la escasos recursos que tienen). Este es el modo elegido normalmente para el Red de sensores inalámbricos (véase la imagen anterior sobre el "Modo residencial ZigBee").
Hemos podido analizar tanto IEEE 802.15.4 y ZigBee pilas de protocolos de seguridad en las plataformas de sensores Waspmote y SquidBee debido a que admiten dos transceptores diferentes compatibles "pin a pin". El XBee OEM 802.15.4 implementa el protocolo IEEE a través del Freescale plataforma de chipset. Por otro lado, la pila ZigBee se ha estudiado utilizando el XBee ZB transceptor que utiliza de Ember solución de chipset.