Concepts du modèle d'interaction

Le modèle de données d'un nœud n'est pas pertinent si nous ne pouvons pas effectuer d'opérations s'y rapportent. Le modèle d'interaction (IM) définit la relation DM d'un nœud. avec le DM d'autres nœuds: un langage commun pour la communication entre les DM.

Les nœuds interagissent les uns avec les autres en:

  • Lire les attributs et les événements, et s'y abonner
  • Écrire dans des attributs
  • Appeler des commandes

Chaque fois qu'un nœud établit une séquence de communication chiffrée avec un autre nœud, ils constituent une relation d'interaction. Les interactions peuvent être une ou plusieurs transactions, tandis que "transactions" se compose d'une ou de plusieurs Une ou plusieurs actions pouvant être considérées comme des messages de messagerie instantanée entre Nœuds.

Hiérarchie du modèle d&#39;interaction <ph type="x-smartling-placeholder">
</ph> Figure 1: Hiérarchie du modèle d'interaction

Plusieurs actions sont compatibles avec les transactions, comme les actions de requête de lecture qui demande un attribut ou un événement à partir d'un autre nœud, ou sa réponse, le Action de rapport de données, qui transfère les informations du serveur vers le client.

Initiateurs et cibles

Le nœud qui lance une transaction est l'initiateur, tandis que le nœud qui répond est la cible. En règle générale, l'initiateur est un cluster client et la cible est un cluster serveur. Il existe toutefois des exceptions à ce modèle, telles que comme pour les interactions liées aux abonnements, qui sont analysées plus bas dans cette section.

Groupes

Les nœuds de Matter peuvent appartenir à un groupe. Un groupe de Périphériques est un mécanisme permettant d'adresser et d'envoyer des messages à plusieurs Appareils dans simultanément la même action. Tous les nœuds d'un groupe partagent le même groupe ID, un entier de 16 bits.

Pour effectuer une communication au niveau du groupe (Groupcast), Matter exploite les messages Multicast IPv6, et tous les membres du groupe ont la même adresse Multicast.

Chemins d'accès

Chaque fois que nous voulons interagir avec un attribut, un événement ou une commande, nous devons spécifiez le Path (Chemin) pour cette interaction: l'emplacement d'un attribut, d'un événement dans la hiérarchie du modèle de données d'un nœud. La mise en garde est que les chemins peuvent également utiliser des groupes ou des opérateurs avec caractères génériques pour adresser plusieurs nœuds ou clusters simultanément, en agrégant ces interactions et en réduisant ainsi le nombre d'actions.

Ce mécanisme est important pour améliorer la réactivité des communications. Pour par exemple, lorsqu'un utilisateur veut éteindre toutes les lumières, un assistant vocal peut établir une interaction unique avec plusieurs ampoules d'un même groupe au lieu d'une d'interactions individuelles. Si l'initiateur crée une personne En interagissant avec chaque lumière, elle peut générer une latence perceptible par l'homme dans Réactivité de l'appareil. Cet effet entraîne la réaction des différents appareils commande avec des délais visibles entre eux. On parle souvent de "effet popcorn".

Un chemin dans Matter peut être assemblé à l'aide de l'une des options ci-dessous:

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

Dans ces composants de chemin d'accès, endpoint et cluster peuvent également inclure Opérateurs de caractères génériques permettant de sélectionner plusieurs instances de nœud.

Chronométré et non chronométré

Il existe deux façons d'effectuer une transaction d'écriture ou d'appel : avec délai et sans délai. Les transactions temporelles établissent un délai avant expiration maximal pour l'action d'écriture/d'appel à envoyer. L'objectif de ce délai est d'empêcher Intercepter l'attaque sur la Transaction. Il est particulièrement valable pour les appareils les portails d'accès à certains équipements, tels que les ouvertures de garage et les serrures.

Pour comprendre les transactions temporelles, il est utile de comprendre comment les attaques par interception peuvent se produire et pourquoi les transactions temporelles sont importantes.

L'attaque par interception

Une attaque par interception se présente comme suit :

  1. Alice envoie à Bob un premier message, tel qu'une action de requête d'écriture.
  2. Eve, un homme du milieu, intercepte le message et empêche Bob de le recevoir, par exemple par un type de brouillage radio.
  3. Alice, qui ne reçoit pas de réponse de Bob, envoie un second message.
  4. Eve intercepte à nouveau et empêche Bob de la recevoir.
  5. Eve envoie le premier message intercepté à Bob, comme s'il provenait Alice.
  6. Bob envoie la réponse à Alice (et à Eve).
  7. Eve conserve le deuxième message intercepté pour une relecture ultérieure. Comme Bob n'a jamais reçu d'Alice le deuxième message intercepté d'origine, il acceptera Ce message représente une brèche de sécurité lorsqu'il encode un commande telle que "open lock".

Pour éviter ces types d'attaques, les actions planifiées définissent une valeur de transaction maximale est dépassé au début de la transaction. Même si Eve parvient à exécuter le les six premières étapes du vecteur d'attaque, il ne pourra pas répéter le message à l'étape 7 en raison de l'expiration du délai d'inactivité de la transaction.

Les transactions minutées augmentent la complexité et le nombre d'actions. Il s'agit donc non recommandé pour toutes les transactions, mais uniquement pour les opérations critiques Appareils qui contrôlent les ressources de sécurité et de confidentialité physiques ou virtuelles.

Abstractions de SDK

Les sections Lire les transactions Écrire des transactions Appeler des transactions offrent une vue d'ensemble des actions du modèle d'interaction effectuées par SDK.

Développeur qui crée un produit qui utilise le SDK Matter n'effectue généralement pas d'appels pour exécuter des actions directement ; les actions sont sont extraites par les fonctions du SDK qui les encapsulent dans une interaction. Il est toutefois important de comprendre les actions de gestionnaire d'inventaire afin de fournir à l'ingénieur maîtrise des fonctionnalités de Matter, ainsi qu'une sur l'implémentation du SDK.