ZigBee (especificación)


ZigBee (especificación)

ZigBee es una especificación que define una solución para comunicaciones inalámbricas de bajo coste y consumo con vistas a constituir la base del desarrollo de redes ubicuas. ZigBee Alliance desarrolla la especificación y certifica sus implementaciones. En 2007, la versión más reciente es la aprobada en 2006.

Contenido

Visión general

Pila de protocolos ZigBee

ZigBee se basa en el nivel físico y el control de acceso al medio (MAC) definidos en la versión de 2003 del estándar IEEE 802.15.4, que desarrolla estos niveles para las redes áreas personales de baja tasa de transferencia (low-rate personal area networks, LR-WPAN's). La especificación completa de este estándar añadiendo cuatro componentes principales: los niveles de red y aplicación, los objetos de dispositivo ZigBee (ZigBee device objects, ZDO) y objetos de aplicación definidos por el fabricante, que permiten la personalización y adaptación, y favorecen la integración total.

Además de añadir dos capas de alto nivel a la pila de protocolos ya existente, el principal cambio es la adición de ZDO's, que son responsables de llevar a cabo una serie de cometidos, entre los que se encuentran el mantenimiento de los roles de los dispositivos, la gestión de peticiones de unión a una red, el descubrimiento de otros dispositivos y la seguridad.

En esencia, ZigBee es una arquitectura de red en malla. Su nivel de red soporta de forma nativa tres topologías distintas: por una parte, patrones de redes típicas en estrella y árbol, así como redes genéricas en malla. Toda red necesita un dispositivo coordinador, encargado de su creación, mantenimiento básico y control de sus parámetros. En redes en estrella, el coordinador debe ser el nodo central. Por su parte, las redes en árbol y malla permiten el uso de routers ZigBee para habilitar la comunicación en el nivel de red; éstos no son coordinadores ZigBee, pero pueden serlo de sus respectivos espacios de operación personal definidos por 802.15.4. No obstante, la comunicación en árboles es estrictamente jerárquica y puede utilizar opcionalmente tramas baliza, mientras que las mallas permiten estructuras arbitrarias pero no balizado en los routers.

Nivel de red

Los cometidos principales del nivel de red son permitir el correcto uso del subnivel MAC y ofrecer un interfaz adecuado para su uso por parte del nivel inmediatamente superior (el de aplicación). Sus capacidades, incluyendo el ruteo, son las típicas de un nivel de red clásico.

Por una parte, la entidad de datos crea y gestiona las unidades de datos del nivel de red a partir del payload del nivel de aplicación y realiza el ruteo en base a la topología de la red en la que el dispositivo se encuentra. Por otra, las funciones de control del nivel controlan la configuración de nuevos dispositivos y el establecimiento de nuevas redes; puede decidir si un dispositivo colindante pertenece a la red e identifica nuevos routers y vecinos. El control puede detectar así mismo la presencia de receptores, lo que posibilita la comunicación directa y la sincronización a nivel MAC.

Nivel de aplicación

El nivel de aplicación es el más alto definido por la especificación y, por tanto, la interfaz efectiva entre el nodo ZigBee y sus usuarios. En él se ubican la mayor parte de los componentes definidos por la especificación: tanto ZDO's como sus procedimientos de control como los objetos de aplicación se encuentran aquí.

Componentes principales

El ZDO se encarga de la definición del rol de un dispositivo como coordinador o nodo de dispositivo (end device), como ya se ha indicado; además, identifica los dispositivos que se encuentran a un salto en la red (one-hop) y los servicios que ofrecen. Tras ello, puede proceder a establecer enlaces seguros con dispositivos externos y responder peticiones de asociación.

El subnivel de soporte a la aplicación (application support sublayer, APS) es el segundo componente básico del nivel. Como tal, ofrece una interfaz bien definida y servicios de control asociados. Trabaja como nexo de unión entre el nivel de red y el resto de componentes del nivel de aplicación. Mantiene actualizadas las tablas de asociaciones (binding tables) en forma de base de datos, que puede utilizarse para encontrar dispositivos adecuados en base a los servicios demandados y ofrecidos. Como puente entre dos niveles, encamina los mensajes a lo largo de la pila de protocolos..

Modelos de comunicación

Modelo de comunicación de alto nivel de ZigBee

Una aplicación consiste en un conjunto de objetos que se comunican entre sí y cooperan para llevar a cabo un trabajo. El propósito de ZigBee es distribuir este trabajo entre muchos nodos distintos que se asocian formando una red (este trabajo será en general local a cada nodo en gran parte, como por ejemplo el control de cada electrodoméstico individual dentro de una vivienda).

El conjunto de objetos que conforma la red se comunica utilizando los servicios de APS, supervisado a su vez por las interfaces ZDO. El nivel de aplicación sigue un diseño clásico de servicios estructurados en tipos petición-confirmación/indicación-respuesta. Dentro de un dispositivo puede haber hasta 240 objetos, con números entre 1 y 240. 0 se reserva para el interfaz de datos de ZDO y 255 para broadcast; el rango 241-254 se reserva para usos futuros.

Existen dos servicios utilizables por los objetos de aplicación:

  • El servicio de pares clave-valor (key-value pair, KPV) se utiliza para realizar la configuración, definiendo, solicitando o modificando valores de atributos de objetos por medio de una interfaz simple basada en primitivas get/set, algunas de ellas con petición de respuesta. Se utiliza XML comprimido (extensible a XML puro) para lograr una solución sencilla y flexible.
  • El servicio de mensajes está diseñado para ofrecer una aproximación general al tratamiento de información, sin necesidad de adaptar protocolos de aplicación y buscando evitar la sobrecarga que presenta KPV. Permite el envío de un payload arbitrario a través de tramas APS.

El direccionamiento es, a su vez, parte del nivel de aplicación. Un nodo está formado por un transceptor de radio compatible con 802.15.4 y una o más descripciones de dispositivo (colecciones de atributos que pueden consultarse o asignarse, o se pueden monitorizar por medio de eventos). El transceptor es la base del direccionamiento, mientras que los dispositivos dentro de un nodo se identifican por medio de un endpoint numerado entre 1 y 240.

Comunicación y descubrimiento de dispositivos

Para que los dispositivos que forma una aplicación puedan comunicarse, deben utilizar un protocolo de aplicación compartido (formado por formatos, tipos de mensajes y demás). Estas convenciones se agrupan en perfiles. Las decisiones de asociación se deciden en base a la coincidencia entre identificadores de clusters de entrada y salida, que son únicos en el contexto de un perfil dado y se asocian a un flujo de datos de entrada o salida en un dispositivo; las tablas de asociaciones mantienen los pares de identificadores fuente y destino.

En base a la información disponible, el descubrimiento de dispositivos puede adecuarse utilizando varios métodos distintos. Si se conoce la dirección de red, se pide la dirección IEEE utilizando unicast. Sino es así, se pide por broadcast, y la dirección IEEE forma parte de la respuesta. Los dispositivos hoja (end devices) responden con la dirección propia solicitada, mientras que routers y coordinadores envían también las direcciones de todos los dispositivos asociados a ellos.

Este protocolo extendido permite indagar acerca de dispositivos dentro de una red y sus servicios ofrecidos a nodos externos a la misma. Los endpoints pueden informar acerca de estos servicios cuando el protocolo de descubrimiento dirige mensajes a ellos. También pueden utilizarse servicios de emparejamiento oferta-demanda.

Los identificadores de cluster favorecen la asociación entre entidades complementarias por medio de tablas de asociación, mantenidas en los coordinadores ZigBee ya que estas tablas siempre han de estar disponibles en una red (los coordinadores son, de entre todos los nodos, los que con mayor seguridad dispondrán de una alimentación continua). Los backups a estas tablas, de ser necesarios para la aplicación, han de realizarse en niveles superiores. Por otra parte, el establecimiento de asociaciones necesita que se haya formado un enlace de comunicación; tras ello, se decide si adjuntar un nuevo nodo a la red en base a la aplicación y las políticas de seguridad.

Nada más establecerse la asociación pueden iniciarse las comunicaciones. El direccionamiento directo utiliza la dirección de radio y el número de endpoint; por su parte, el indirecto necesita toda la información relevante (dirección, endpoint, cluster y atributo) y la envía al coordinador de la red, que mantiene esta información por él y traduce sus peticiones de comunicación. Este direccionamiento indirecto es especialmente útil para favorecer el uso de dispositivos muy sencillos y minimizar el almacenamiento interno necesario. Además de estos dos métodos, se puede hacer broadcast a todos los endpoints de un dispositivo, y direccionamiento de grupos para comunicarse con grupos de endpoints de uno o varios dispositivos distintos.

Servicios de seguridad

Uno de los aspectos más característicos de ZigBee son los servicios que ofrece para el soporte de comunicaciones seguras. Se protege el establecimiento y transporte de claves, el cifrado de trama y el control de dispositivos. Se apoya en el marco definido por IEEE 802.15.4; la seguridad depende de la correcta gestión de las claves simétricas y la adecuada implementación de los métodos y políticas de seguridad.

Modelo básico de seguridad

La piedra angular de la confidencialidad es la adecuada protección de todo el material de cifrado. Debe asumirse que se confía en la instalación inicial de las claves, así como en el procesado de la información de seguridad. Para que la implementación funcione en su conjunto, se asume su corrección (los comportamientos definidos se respetan plenamente).

Las claves son la base de la arquitectura de seguridad y, como tal, su protección es fundamental para la integridad del sistema. Las claves nunca deben transportarse utilizando un canal inseguro, si bien existe una excepción momentánea que se da en la fase inicial de la unión de un dispositivo desconfigurado a una red. La red ZigBee debe tener particular cuidado, pues una red ad hoc puede ser accesible físicamente a cualquier dispositivo externo y el entorno de trabajo no se puede conocer de antemano. Las aplicaciones que se ejecutan en concurrencia utilizando el mismo transceptor deben, así mismo, confiar entre sí, ya que por motivos de coste no se asume la existencia de un cortafuegos entre las distintas entidades del nivel de aplicación.

Los distintos niveles definidos dentro de la pila de protocolos no están separados criptográficamente, por lo se necesitan políticas de acceso, que se asumen correctas en su diseño. Este modelo de confianza abierta (open trust) posibilita la compartición de claves disminuyendo el coste de forma significativa. No obstante, el nivel que genera una trama es siempre el responsable de su seguridad. Todos los datos de las tramas del nivel de red han de estar cifradas, ya que podría haber dispositivos maliciosos, de forma que el tráfico no autorizado se previene de raíz. De nuevo, la excepción es la transmisión de la clave de red a un dispositivo nuevo, lo que dota a toda la red de un nivel de seguridad único. También es posible utilizar criptografía en enlaces punto a punto.

Arquitectura de seguridad

ZigBee utiliza claves de 128 bits en sus mecanismos de seguridad. Una clave puede asociarse a una red (utilizable por los niveles de ZigBee y el subnivel MAC) o a un enlace (en tal caso, adquirida por preinstalación, acuerdo o transporte). Las claves de enlace se establecen en base a una clave maestra que controla la correspondencia entre claves de enlace. Como mínimo la clave maestra inicial debe obtenerse por medios seguros (transporte o preinstalación), ya que la seguridad de toda la red depende de ella en última instancia. Los distintos servicios usarán variaciones unidireccionales (one-way) de la clave de enlace para evitar riesgos de seguridad.

Es claro que la distribución de claves es una de las funciones de seguridad más importantes. Una red segura encarga a un dispositivo especial la distribución de claves: el denominado centro de confianza (trust center). En un caso ideal los dispositivos llevarán precargados de fábrica la dirección del centro de confianza y la clave maestra inicial. Si se permiten vulnerabilidades momentáneas, se puede realizar el transporte como se ha descrito. Las aplicaciones que no requieran un nivel especialmente alto de seguridad utilizarán una clave enviada por el centro de confianza a través del canal inseguro transitorio.

Por tanto, el centro de confianza controla la clave de red y la seguridad punto a punto. Un dispositivo sólo aceptará conexiones que se originen con una clave enviada por el centro de confianza, salvo en el caso de la clave maestra inicial. La arquitectura de seguridad está distribuida entre los distintos niveles de la siguiente manera:

  • El subnivel MAC puede lleva a cabo comunicaciones fiables de un solo salto. En general, utiliza el nivel de seguridad indicado por los niveles superiores.
  • El nivel de red gestiona el ruteo, procesando los mensajes recibidos y pudiendo hacer broadcast de peticiones. Las tramas salientes usarán la clave de enlace correspondiente al ruteo realizado, si está disponible; en otro caso, se usará la clave de red.
  • El nivel de aplicación ofrece servicios de establecimiento de claves al ZDO y las aplicaciones, y es responsable de la difusión de los cambios que se produzcan en sus dispositivos a la red. Estos cambios podrían estar provocados por los propios dispositivos (un cambio de estado sencillo) o en el centro de confianza, que puede ordenar la eliminación de un dispositivo de la red, por ejemplo. También encamina peticiones de los dispositivos al centro de seguridad y propaga a todos los dispositivos las renovaciones de la clave de red realizadas por el centro. El ZDO mantiene las políticas de seguridad del dispositivo.

La estructura de niveles de seguridad se basa en CCM*, una variante de CCM que añade servicios de sólo-cifrado y sólo-integridad.

Véase también

Referencias


Wikimedia foundation. 2010.