Conceitos do modelo de interação

O modelo de dados (DM, na sigla em inglês) de um nó não será relevante se não for possível realizar operações nele. 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, uma linguagem comum para a comunicação entre DMs.

Os nós interagem entre si usando:

  • Como ler e se inscrever em atributos e eventos
  • Como gravar em atributos
  • Como invocar comandos

Sempre que um nó estabelece uma sequência de comunicação criptografada com outro nó, ele constitui 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 no nível de mensagem instantânea entre os nós.

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

Várias ações são compatíveis com transações, como uma ação de solicitação de leitura que solicita um atributo ou evento de outro nó ou a resposta dela, a ação de dados do relatório, que transporta as informações do servidor para o cliente.

Iniciadores e metas

O nó que inicia uma transação é o Iniciador e o nó que responde é o Destino. Normalmente, o iniciador é um cluster de cliente, e o destino é um cluster de servidor. No entanto, existem exceções a esse padrão, como nas Interações de assinatura, que são 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 Group ID, um número inteiro de 16 bits.

Para realizar a comunicação no nível do grupo (Groupcast), o Matter aproveita as mensagens IPv6 Multicast, 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 lidar com 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 apagar 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 uma latência perceptível por humanos na capacidade de 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 de pipoca".

Um caminho em Matter pode ser combinado 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 caracteres curinga para selecionar mais de uma instância de nó.

Com e sem marcação de tempo

Há duas maneiras de executar uma transação de gravação ou invocação: Com marcação de tempo e Sem marcação de tempo. As transações cronometradas estabelecem um tempo limite máximo para que a ação de gravação/invocação seja enviada. O objetivo desse tempo limite é impedir um ataque de interceptação na transação. Ele é válido especialmente para dispositivos que controlam o acesso a recursos, como abridores de garagem e fechaduras.

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

O ataque à interceptação

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

  1. Alice envia uma mensagem inicial a Bob, como uma ação de solicitação de gravação.
  2. Eve, um intermediário, intercepta a mensagem e impede que Bob a receba, por exemplo, por meio de algum tipo de jamming de rádio.
  3. Alice, não recebendo uma resposta de Bob, envia uma segunda mensagem.
  4. Eve intercepta novamente e impede que Bob a receba.
  5. Eve envia a primeira mensagem interceptada para Bob, como se ela viesse de Alice.
  6. Bob envia a resposta para Alice (e Eve).
  7. Eva segura a segunda mensagem interceptada para ser repetida mais tarde. Como Bob nunca recebeu a segunda mensagem original interceptada de Alice, ela a aceitará. Essa mensagem representa uma violação de segurança quando a mensagem codifica um comando, como "open lock".

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

As transações cronometradas 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 operações essenciais em dispositivos que têm controle sobre recursos físicos ou virtuais de segurança e privacidade.

Abstrações do SDK

As seções Transações de leitura, Transações de gravação e Invocar transações oferecem 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 do Matter geralmente não faz chamadas para executar ações diretamente. As ações são abstraídas pelas funções do SDK que as encapsulam em uma interação. No entanto, entender as ações de mensagens instantâneas é importante para fornecer ao engenheiro uma boa profissão sobre os recursos do Matter, bem como um controle exato sobre a implementação do SDK.