Conceptos del modelo de interacción

El modelo de datos (DM) de un nodo no es relevante si no podemos realizar operaciones en ellos. El Modelo de interacción (IM), define la relación de DM de un nodo con el DM de otros nodos: un lenguaje común para la comunicación entre los DM.

Los nodos interactúan entre sí de la siguiente manera:

  • Cómo leer atributos y eventos y suscribirse a ellos
  • Escribe en atributos
  • Invocación de comandos

Cada vez que un nodo establece una secuencia de comunicación encriptada con otro nodo, constituyen una relación de Interacción. Las interacciones pueden estar compuestas por una o más transacciones, y las transacciones se componen de una o más acciones que pueden entenderse como mensajes a nivel de IM entre nodos.

Jerarquía del modelo de interacción
Figura 1: Jerarquía del modelo de interacción

Transacciones admite varias acciones, como una acción de solicitud de lectura que solicita un atributo o evento de otro nodo, o su respuesta, la acción de informe de datos, que transporta la información del servidor al cliente.

Iniciadores y objetivos

El nodo que inicia una transacción es el Initiator, mientras que el nodo que responde es el Target. Por lo general, el iniciador es un clúster de cliente y el destino es un clúster de servidor. Sin embargo, hay excepciones a este patrón, como en el análisis de Interacciones de suscripción más abajo en esta sección.

Grupos

Los nodos en Matter pueden pertenecer a un grupo. Un grupo de dispositivos es un mecanismo para direccionar y enviar mensajes a varios dispositivos en la misma acción de forma simultánea. Todos los nodos de un grupo comparten el mismo ID de grupo, un número entero de 16 bits.

Para lograr la comunicación a nivel de grupo (Groupcast), Matter aprovecha los mensajes IPv6 Multicast, y todos los miembros del grupo tienen la misma dirección Multicast.

Rutas de acceso

Cuando queramos interactuar con un atributo, evento o comando, debemos especificar la ruta de acceso para esa interacción: la ubicación de un atributo, evento o comando en la jerarquía del modelo de datos de un nodo. La advertencia es que las rutas de acceso también pueden usar operadores de comodines o grupos para abordar varios nodos o clústeres de forma simultánea, lo que agrega estas interacciones y, por lo tanto, disminuye la cantidad de acciones.

Este mecanismo es importante para mejorar la capacidad de respuesta de las comunicaciones. Por ejemplo, cuando un usuario quiere apagar todas las luces, un asistente de voz puede establecer una sola interacción con varias luces dentro de un grupo, en lugar de una secuencia de interacciones individuales. Si el iniciador crea interacciones individuales con cada luz, puede generar latencia perceptible para las personas en la capacidad de respuesta del dispositivo. Este efecto hace que varios dispositivos reaccionen a un comando con retrasos visibles entre ellos. Esto también se conoce como "efecto palomitas de maíz".

Se puede ensamblar una ruta de acceso en Matter usando una de las siguientes opciones:

<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID>        <cluster> <attribute | event | command>

Dentro de estos componentes básicos de la ruta, endpoint y cluster también pueden incluir operadores de comodines para seleccionar más de una instancia de nodo.

Con y sin hora

Existen dos maneras de realizar una transacción de escritura o de invocación: Timed y Untimed. Las transacciones programadas establecen un tiempo de espera máximo para que se envíe la acción de escritura o invocación. El propósito de este tiempo de espera es evitar un ataque de intercepción en la transacción. Es especialmente válida para dispositivos que controlan el acceso a ciertos recursos, como cerraduras y abridores de cocheras.

Para comprender las transacciones programadas, es útil saber cómo pueden ocurrir los ataques de interceptación y por qué son importantes.

El ataque de intercepción

Un ataque de intercepción tiene el siguiente patrón:

  1. Alice le envía un mensaje inicial a Bob, como una acción de solicitud de escritura.
  2. Eva, un intermediario, intercepta el mensaje y evita que Bob lo reciba, por ejemplo, a través de algún tipo de improvisación de radio.
  3. Alicia, no recibe una respuesta de Roberto, envía un segundo mensaje.
  4. Eva vuelve a interceptarlo e impide que Bob lo reciba.
  5. Eve envía el primer mensaje interceptado a Bob, como si proviniera de Alicia.
  6. Bob envía la respuesta a Alicia (y a Eva).
  7. Eva conserva el segundo mensaje interceptado para volver a reproducirlo más tarde. Dado que Bob nunca recibió el segundo mensaje original interceptado de Alice, este lo aceptará. Este mensaje representa una violación de la seguridad cuando el mensaje codifica un comando como "bloqueo abierto".

Para evitar estos tipos de ataques, las Acciones temporizadas establecen un tiempo de espera máximo de la Transacción al comienzo. Incluso si Eve logra ejecutar los primeros seis pasos del vector de ataque, no podrá volver a reproducir el mensaje del paso 7 debido a que venció el tiempo de espera de la transacción.

Las transacciones programadas aumentan la complejidad y la cantidad de acciones. Por lo tanto, no se recomiendan para todas las transacciones, sino solo para las operaciones críticas de los dispositivos que tienen control sobre los recursos de privacidad y seguridad físicos o virtuales.

Abstracción del SDK

Las secciones Lectura de transacciones, Escritura de transacciones e Invocar transacciones proporcionan una descripción general de alto nivel de las acciones del modelo de interacción que realiza el SDK.

Por lo general, el desarrollador que crea un producto que usa el SDK de Matter no realiza llamadas para ejecutar acciones de forma directa; las funciones del SDK abstraen las acciones que las encapsulan en una interacción. Sin embargo, comprender las acciones de IM es importante para proporcionar al ingeniero una buena competencia sobre las funciones de Matter, así como un control detallado sobre la implementación del SDK.