Concetti del modello di interazione

Il modello dei dati (DM) di un nodo non è rilevante se non possiamo eseguire operazioni sul nodo. Il modello di interazione (IM), definisce la relazione DM di un nodo con il DM di altri nodi: un linguaggio comune per la comunicazione tra i messaggi diretti.

I nodi interagiscono tra loro tramite:

  • Lettura e iscrizione ad attributi ed eventi
  • Scrittura negli attributi
  • Richiamo di comandi

Ogni volta che un nodo stabilisce una sequenza di comunicazione criptata con un altro nodo, costituisce una relazione di interazione. Le interazioni possono essere composte da una o più transazioni e le transazioni sono composte da una o più azioni che possono essere intese come messaggi a livello di IM tra nodi.

Modello Gerarchia di interazione
Figura 1: gerarchia del modello di interazione

Sulle transazioni sono supportate diverse azioni, ad esempio un'azione di richiesta di lettura che richiede un attributo o un evento da un altro nodo, o la sua risposta, l'azione Report Data, che riporta le informazioni dal server al client.

Iniziatori e target

Il Nodo che avvia una transazione è l'iniziatore, mentre il Nodo che risponde è il target. In genere l'iniziatore è un cluster client e il target è un cluster server. Tuttavia, ci sono delle eccezioni a questo pattern, ad esempio nelle Interazioni con gli abbonamenti analizzate più avanti in questa sezione.

Gruppi

I nodi in Matter potrebbero appartenere a un gruppo. Un gruppo di dispositivi è un meccanismo per indirizzare e inviare messaggi a più dispositivi con la stessa azione contemporaneamente. Tutti i nodi di un gruppo condividono lo stesso ID gruppo, ovvero un numero intero a 16 bit.

Per effettuare comunicazioni a livello di gruppo (Groupcast), Matter utilizza i messaggi IPv6 Multicast e tutti i membri del gruppo hanno lo stesso indirizzo Multicast.

Percorsi

Ogni volta che vogliamo interagire con un attributo, un evento o un comando, dobbiamo specificare il Percorso per questa interazione: la posizione di un attributo, un evento o un comando nella gerarchia del modello dati di un nodo. L'avvertenza è che i percorsi possono anche utilizzare gruppi o operatori jolly per indirizzare più nodi o cluster contemporaneamente, aggregando queste interazioni e riducendo così il numero di azioni.

Questo meccanismo è importante per migliorare la reattività delle comunicazioni. Ad esempio, se un utente vuole spegnere tutte le luci, un assistente vocale può stabilire una singola interazione con più luci all'interno di un gruppo anziché una sequenza di interazioni individuali. Se l'iniziatore crea interazioni individuali con ogni luce, può generare una latenza percepibile dall'uomo nella reattività del dispositivo. Questo effetto fa sì che più dispositivi reagiscano a un comando con ritardi visibili tra di loro. Questo è spesso definito "effetto popcorn".

Un percorso in Matter può essere assemblato utilizzando una delle seguenti opzioni:

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

All'interno di questi componenti di base di percorso, endpoint e cluster possono includere anche operatori con caratteri jolly per selezionare più di un'istanza di nodo.

A tempo e non a tempo

Esistono due modi per eseguire una transazione di scrittura o chiamata: A tempo e Senza tempo. Le transazioni a tempo stabiliscono un timeout massimo per l'invio dell'azione di scrittura/chiamata. Lo scopo di questo timeout è impedire un attacco di intercettazione alla transazione. È particolarmente utile per i Dispositivi che limitano l'accesso ad asset, come apriporta e serrature di garage.

Per comprendere le transazioni a tempo è utile capire come possono verificarsi gli attacchi a tempo e perché le transazioni a tempo sono importanti.

L'attacco di intercettazione

Un attacco con intercettazione ha il seguente schema:

  1. Alice invia a Roberto un messaggio iniziale, ad esempio un'azione di richiesta di scrittura.
  2. Eva, un tipo man in the middle, intercetta il messaggio e impedisce a Roberto di riceverlo, ad esempio tramite un qualche tipo di jamming della radio.
  3. Alice, non riceve una risposta da Roberto, invia un secondo messaggio.
  4. Eva lo intercetta di nuovo e impedisce a Bob di riceverlo.
  5. Eva invia il primo messaggio intercettato a Bob, come se provenisse da Alice.
  6. Bob invia la risposta ad Alice (ed Eva).
  7. Eva tiene in mano il secondo messaggio intercettato per guardarlo in un secondo momento. Dato che Bob non ha mai ricevuto il secondo messaggio originale intercettato da Alice, lo accetterà. Questo messaggio rappresenta una violazione della sicurezza quando il messaggio codifica un comando come "open Lock".

Per prevenire questi tipi di attacchi, le Azioni a tempo impostano un timeout massimo della transazione all'inizio della transazione. Anche se Eva riesce a eseguire i primi sei passaggi del vettore di attacco, non sarà in grado di riprodurre il messaggio nel passaggio 7 a causa di un timeout scaduto per la transazione.

Le transazioni a tempo aumentano la complessità e il numero di azioni. Pertanto, non sono consigliate per ogni transazione, ma solo per le operazioni critiche sui dispositivi che hanno il controllo su risorse di sicurezza e privacy fisiche o virtuali.

Astrazioni SDK

Le sezioni Lettura transazioni, Scrittura transazioni e Richiama transazioni forniscono una panoramica generale delle azioni del modello di interazione eseguite dall'SDK.

Lo sviluppatore che crea un prodotto che utilizza l'SDK Matter in genere non esegue chiamate per eseguire direttamente le azioni; le azioni sono astratte da funzioni dell'SDK che le incapsulano in un'interazione. Tuttavia, comprendere le Azioni di IM è importante per fornire al tecnico una buona conoscenza delle funzionalità di Matter, nonché un controllo preciso sull'implementazione dell'SDK.