Concetti del modello di interazione

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 tramite:

  • Lettura e iscrizione ad attributi ed eventi
  • Scrittura negli attributi
  • Invocazione dei comandi

Ogni volta che un nodo stabilisce una sequenza di comunicazione crittografata con un altro nodo, si instaura 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 di livello IM tra Nodi.

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

Nelle transazioni sono supportate diverse azioni, come 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 di dati del report, che riporta le informazioni dal server al client.

Iniziatori e obiettivi

Il nodo che avvia una transazione è l'iniziatore, mentre il nodo che risponde è il destinazione. In genere l'iniziatore è un cluster client e il target è un cluster server. Tuttavia, esistono delle eccezioni a questo schema, come nel caso delle interazioni di abbonamento 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 contemporaneamente nella stessa azione. Tutti i nodi di un gruppo condividono lo stesso ID gruppo, un numero intero a 16 bit.

Per realizzare la comunicazione a livello di gruppo (Groupcast), Matter sfrutta 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, evento o comando nella gerarchia del modello 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 diminuendo così il numero di azioni.

Questo meccanismo è importante per migliorare la reattività delle comunicazioni. Ad esempio, quando un utente desidera 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 i più dispositivi reagiscano a un comando con ritardi visibili tra l'uno e l'altro. Questo è spesso indicato come "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>

E all'interno di questi blocchi di costruzione del percorso, endpoint e cluster possono anche includere operatori jolly per selezionare più di un'istanza del nodo.

Temporizzato e non temporizzato

Esistono due modi per eseguire una transazione di scrittura o di invocazione: Timed e Untimed. Le transazioni temporizzate stabiliscono un timeout massimo per l'invio dell'azione di scrittura/richiamo. Lo scopo di questo timeout è impedire un attacco di intercettazione sulla transazione. È particolarmente valido per i dispositivi che controllano l'accesso ai beni, come le serrature e gli apriporta da garage.

Per comprendere le transazioni temporizzate, è utile capire come possono verificarsi gli attacchi di intercettazione e perché le transazioni temporizzate sono importanti.

The Intercept Attack

Un attacco di intercettazione ha il seguente schema:

  1. Alice invia a Bob un messaggio iniziale, ad esempio un'azione di richiesta di scrittura.
  2. Eve, un attacco man-in-the-middle, intercetta il messaggio e impedisce a Bob di riceverlo, ad esempio tramite un qualche tipo di disturbo radio.
  3. Alice, non ricevendo risposta da Bob, invia un secondo messaggio.
  4. Eve intercetta di nuovo il messaggio e impedisce a Bob di riceverlo.
  5. Eve invia il primo messaggio intercettato a Bob, come se provenisse da Alice.
  6. Bob invia la risposta ad Alice (ed Eve).
  7. Eve conserva il secondo messaggio intercettato per riascoltarlo in seguito. Poiché Bob non ha mai ricevuto il secondo messaggio intercettato originale da Alice, lo accetterà. Questo messaggio rappresenta una violazione della sicurezza quando codifica un comando come "apri serratura".

Per prevenire questi tipi di attacchi, le azioni temporizzate impostano un timeout massimo della transazione all'inizio della transazione. Anche se Eve riesce a eseguire i primi sei passaggi del vettore di attacco, non sarà in grado di riprodurre il messaggio al passaggio 7 a causa della scadenza del timeout nella transazione.

Le transazioni temporizzate aumentano la complessità e il numero di azioni. Pertanto non sono consigliati 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 Leggi transazioni, Scrivi transazioni e Richiama transazioni forniscono una panoramica di alto livello 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 dalle funzioni dell'SDK che le incapsulano in un'interazione. Tuttavia, comprendere le intenzioni integrate è importante per fornire all'ingegnere una buona competenza sulle funzionalità di Matter, nonché un controllo preciso sull'implementazione dell'SDK.