Conceitos do modelo de interação

O modelo de dados (DM, na sigla em inglês) de um nó não é relevante se não for possível realizar operações com ele. O modelo de interação (IM, na sigla em inglês) define a relação de DM de um nó com o DM de outros nós: um idioma comum para a comunicação entre DMs.

Os nós interagem entre si:

  • Como ler e se inscrever em atributos e eventos
  • Gravação em atributos
  • Como invocar comandos

Sempre que um nó estabelece uma sequência de comunicação criptografada com outro nó, eles constituem uma relação de interação. As interações podem ser compostas por uma ou mais transações, e as transações são compostas por uma ou mais ações, que podem ser entendidas como mensagens de nível de mensagem instantânea entre nós.

Hierarquia do modelo de interação
Figura 1: hierarquia do modelo de interação

Várias ações são aceitas em transações, como uma ação de solicitação de leitura que solicita um atributo ou evento de outro nó ou a resposta dele, a ação de dados do relatório, que transmite as informações do servidor para o cliente.

Iniciadores e destinos

O nó que inicia uma transação é o Iniciador, enquanto o nó que responde é o Destino. Normalmente, o iniciador é um cluster de cliente e o alvo é um cluster de servidor. No entanto, há exceções a esse padrão, como nas Interações de assinatura analisadas mais adiante nesta seção.

Grupos

Os nós em Matter podem pertencer a um grupo. Um grupo de dispositivos é um mecanismo para endereçar e enviar mensagens para vários dispositivos na mesma ação simultaneamente. Todos os nós em um grupo compartilham o mesmo ID de grupo, um número inteiro de 16 bits.

Para realizar a comunicação em nível de grupo (Groupcast), o Matter usa mensagens Multicast do IPv6, e todos os membros do grupo têm o mesmo endereço Multicast.

Caminhos

Sempre que quisermos interagir com um atributo, evento ou comando, precisamos especificar o caminho para essa interação: o local de um atributo, evento ou comando na hierarquia do modelo de dados de um nó. A ressalva é que os caminhos também podem usar grupos ou operadores curinga para abordar vários nós ou clusters simultaneamente, agregando essas interações e, assim, diminuindo o número de ações.

Esse mecanismo é importante para melhorar a capacidade de resposta das comunicações. Por exemplo, quando um usuário quer desligar todas as luzes, um assistente de voz pode estabelecer uma única interação com várias luzes em um grupo em vez de uma sequência de interações individuais. Se o iniciador criar interações individuais com cada luz, ele poderá gerar latência perceptível por humanos na resposta do dispositivo. Esse efeito faz com que vários dispositivos reajam a um comando com atrasos visíveis entre eles. Isso é muitas vezes chamado de "efeito pipoca".

Um caminho em Matter pode ser montado usando uma das opções abaixo:

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

E dentro desses elementos básicos de caminho, endpoint e cluster também podem incluir operadores de curinga para selecionar mais de uma instância de nó.

Cronometrada e sem tempo

Há duas maneiras de executar uma transação de gravação ou invocação: com tempo e sem tempo. As transações com tempo limite estabelecem um tempo limite máximo para que a ação de gravação/invocação seja enviada. O objetivo desse tempo limite é evitar um ataque de interceptação na transação. Isso é especialmente válido para dispositivos que controlam o acesso a recursos, como fechaduras e controles remotos de garagem.

Para entender as transações temporizadas, é útil entender como os ataques de interceptação podem acontecer e por que as transações temporizadas são importantes.

O ataque de interceptação

Um ataque de interceptação tem o seguinte padrão:

  1. A Alice envia uma mensagem inicial para o Bob, como uma ação de solicitação de gravação.
  2. Eve, um homem no meio, intercepta a mensagem e impede que Bob a receba, por exemplo, com algum tipo de interferência de rádio.
  3. Como Alice não recebe uma resposta de Bob, ela envia uma segunda mensagem.
  4. Eve intercepta novamente e impede que Bob receba a mensagem.
  5. Eve envia a primeira mensagem interceptada para Bob, como se ela viesse de Alice.
  6. Bob envia a resposta para Alice (e Eva).
  7. Eve mantém a segunda mensagem interceptada para uma reprodução posterior. Como Bob nunca recebeu a segunda mensagem interceptada original de Alice, ele a aceitará. Essa mensagem representa uma violação de segurança quando codifica um comando, como "abrir trava".

Para evitar esses tipos de ataques, as ações temporizadas definem um tempo limite máximo no início da transação. Mesmo que Eva consiga executar as primeiras seis etapas do vetor de ataque, ela não poderá reproduzir a mensagem na etapa 7 devido a um tempo limite expirado na transação.

As transações programadas aumentam a complexidade e o número de ações. Portanto, elas não são recomendadas para todas as transações, mas apenas para as operações críticas em dispositivos que têm controle sobre recursos de segurança e privacidade físicos ou virtuais.

Abstracções do SDK

As seções Transações de leitura, Transações de gravação e Transações de invocação fornecem uma visão geral de alto nível das ações do modelo de interação realizadas pelo SDK.

O desenvolvedor que cria um produto que usa o SDK Matter normalmente não realiza chamadas para executar ações diretamente. As ações são abstraídas por funções do SDK que as encapsulam em uma interação. No entanto, entender as ações de mensagens instantâneas é importante para que o engenheiro tenha uma boa proficiência nos recursos de Matter, além de ter um controle preciso sobre a implementação do SDK.