O modelo de dados (DM) de um nó não é relevante se não pudermos realizar operações nele. O modelo de interação (IM) define a relação de DM de um nó com a DM de outros nós: uma linguagem comum para comunicação entre DMs.
Os nós interagem entre si das seguintes maneiras:
- Leitura e inscrição 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ó, 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 IM entre nós.
Várias ações são compatíveis com transações, como uma ação de solicitação de leitura que pede um atributo ou evento de outro nó ou a resposta dele, a ação de dados de relatório, que envia 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 destino é 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 a vários dispositivos na mesma ação simultaneamente. Todos os nós em um grupo compartilham o mesmo ID do grupo, um número inteiro de 16 bits.
Para realizar a comunicação no nível do grupo (Groupcast), o Matter usa mensagens Multicast IPv6, e todos os participantes do grupo têm o mesmo endereço Multicast.
Caminhos
Sempre que quisermos interagir com um atributo, evento ou comando, precisamos especificar o caminho dessa 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 diminuindo o número de ações.
Esse mecanismo é importante para aumentar 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, isso poderá gerar uma latência perceptível para humanos na capacidade de resposta do dispositivo. Esse efeito faz com que os 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 curinga para selecionar mais de uma instância de nó.
Com e sem tempo definido
Existem duas maneiras de realizar uma transação de escrita ou invocação: Timed e Untimed. As transações cronometradas estabelecem um tempo limite máximo para o envio da ação de gravação/invocação. O objetivo desse tempo limite é evitar umAtaque de interceptação sobre a transação. Isso é especialmente válido para dispositivos que controlam o acesso a bens, como abridores de portas de garagem e fechaduras.
Para entender as transações temporizadas, é útil compreender como os ataques de interceptação podem ocorrer e por que as transações temporizadas são importantes.
O ataque de interceptação
Um ataque de interceptação segue o seguinte padrão:
- Alice envia a Bob uma mensagem inicial, como uma solicitação de gravação.
- Eve, um invasor man-in-the-middle, intercepta a mensagem e impede que Bob a receba, por exemplo, usando algum tipo de bloqueio de rádio.
- Alice, sem receber resposta de Bob, envia uma segunda mensagem.
- Eva intercepta novamente e impede que Bob receba a mensagem.
- Eva envia a primeira mensagem interceptada para Bob, como se viesse de Alice.
- Bob envia a resposta para Alice (e Eva).
- Eve guarda a segunda mensagem interceptada para reproduzi-la posteriormente. Como Bob nunca recebeu a segunda mensagem interceptada original de Alice, ela será aceita. Esta mensagem representa uma violação de segurança quando codifica um comando como "abrir fechadura".
Para evitar esses tipos de ataques, as Ações Temporizadas definem um tempo limite máximo para a transação no início da mesma. Mesmo que Eve consiga executar os seis primeiros passos do vetor de ataque, não será possível reproduzir a mensagem no passo 7 devido ao tempo limite expirado da transação.
Transações temporizadas aumentam a complexidade e o número de ações. Portanto, não são recomendados para todas as transações, mas apenas para operações críticas em dispositivos que controlam ativos de segurança e privacidade físicos ou virtuais.
abstrações de SDK
As seções Ler transações, Gravar transações e Invocar transações fornecem uma visão geral de alto nível das ações do modelo de interação executadas pelo SDK.
O desenvolvedor que cria um produto que usa o SDK Matter normalmente não faz 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, compreender as ações IM é importante para proporcionar ao engenheiro uma boa proficiência nas capacidades do Matter, bem como um controle preciso sobre a implementação do SDK.