Il modello di dati (DM) di un nodo non è pertinente se non possiamo eseguire operazioni su di esso. 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 DM.
I nodi interagiscono tra loro:
- Leggendo e sottoscrivendo attributi ed eventi
- Scrivendo negli attributi
- Richiamando i 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 i nodi.
Nelle 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 relativa risposta, l'azione di dati del report, 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, esistono eccezioni a questo pattern, ad esempio nelle interazioni di sottoscrizione analizzate più avanti in questa sezione.
Gruppi
I nodi in Matter possono appartenere a un gruppo. Un gruppo di dispositivi è un meccanismo per indirizzare e inviare messaggi a più dispositivi nella stessa azione contemporaneamente. Tutti i nodi di un gruppo condividono lo stesso ID gruppo, un numero intero a 16 bit.
Per eseguire la comunicazione a livello di gruppo (groupcast), Matter sfrutta i messaggi IPv6 Multicast e tutti i membri del gruppo hanno lo stesso Multicast indirizzo.
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 di dati di un nodo. L'avvertenza è che i percorsi possono utilizzare anche 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, quando 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'utente nella reattività del dispositivo. Questo effetto fa sì che più dispositivi reagiscano a un comando con ritardi visibili tra loro. Questo è spesso indicato come "effetto popcorn".
Un percorso in Matter può essere assemblato utilizzando una delle opzioni riportate di seguito:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
All'interno di questi blocchi di creazione del percorso, endpoint e cluster possono includere anche operatori jolly per selezionare più istanze di nodi.
Con e senza timeout
Esistono due modi per eseguire una transazione di scrittura o richiamo: con timeout e senza timeout. Le transazioni con timeout stabiliscono un timeout massimo per l'invio dell'azione di scrittura/richiamo. Lo scopo di questo timeout è impedire un attacco di intercettazione alla transazione. È particolarmente valido per i dispositivi che limitano l'accesso agli asset, come gli apriporta del garage e le serrature.
Per comprendere le transazioni con timeout, è utile capire come possono verificarsi gli attacchi di intercettazione e perché le transazioni con timeout sono importanti.
L'attacco di intercettazione
Un attacco di intercettazione ha il seguente pattern:
- Alice invia a Bob un messaggio iniziale, ad esempio un'azione di richiesta di scrittura.
- Eve, un uomo nel mezzo, intercetta il messaggio e impedisce a Bob di riceverlo, ad esempio tramite un tipo di disturbo radio.
- Alice, non ricevendo una risposta da Bob, invia un secondo messaggio.
- Eve intercetta di nuovo e impedisce a Bob di riceverlo.
- Eve invia a Bob il primo messaggio intercettato, come se provenisse da Alice.
- Bob invia la risposta ad Alice (e a Eve).
- Eve conserva il secondo messaggio intercettato per una riproduzione successiva. Poiché Bob non ha mai ricevuto il secondo messaggio intercettato originale da Alice, lo accetterà. Questo messaggio rappresenta una violazione della sicurezza quando il messaggio codifica un comando come "apri blocco".
Per impedire questi tipi di attacchi, le azioni con timeout impostano un timeout massimo della transazione all'inizio della transazione. Anche se Eve riesce a eseguire i primi sei passaggi del vettore d'attacco, non sarà in grado di riprodurre il messaggio al passaggio 7 a causa di un timeout scaduto nella transazione.
Le transazioni con timeout 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 degli asset di sicurezza e privacy fisici o virtuali.
Astrazioni SDK
Le sezioni Transazioni di lettura, Transazioni di scrittura, e Transazioni di richiamo forniscono una panoramica generale delle azioni del modello di interazione eseguite dall' SDK.
In genere, lo sviluppatore che crea un prodotto che utilizza l'Matter SDK in genere non esegue chiamate per eseguire direttamente le azioni; le azioni vengono astratte dalle funzioni dell'SDK che le incapsulano in un'interazione. Tuttavia, la comprensione delle azioni IM è importante per fornire all'ingegnere una buona conoscenza delle funzionalità di Matter, nonché un controllo preciso sull'implementazione dell'SDK.