インタラクション モデルのコンセプト

ノードのデータモデル(DM)は、操作を実行できない場合は関係ありません。インタラクション モデルIM)は、ノードの DM と他のノードの DM との DM 関係を定義します。これは、DM 間の通信の共通言語です。

ノードは次の方法で相互にやり取りします。

  • 属性とイベントの読み取りと登録
  • 属性への書き込み
  • コマンドの呼び出し

Node が別の Node と暗号化された通信シーケンスを確立するたびに、それらはインタラクション関係を構成します。インタラクションは 1 つ以上のトランザクションで構成され、トランザクションは 1 つ以上のアクションで構成されます。アクションは、ノード間の IM レベルのメッセージと見なすことができます。

インタラクション モデルの階層
図 1: インタラクション モデルの階層

トランザクションでは、他のノードから属性またはイベントをリクエストする読み取りリクエスト アクションや、サーバーからクライアントに情報を返すレポート データ アクションなど、複数のアクションがサポートされています。

イニシエータとターゲット

トランザクションを開始するノードはイニシエータ、応答するノードはターゲットです。通常、イニシエータはクライアント クラスタで、ターゲットはサーバー クラスタです。ただし、このパターンには例外があります。たとえば、このセクションで後述するサブスクリプションのインタラクションなどです。

グループ

Matter のノードは Group に属している場合があります。デバイスのグループは、同じアクション内の複数のデバイスに同時にメッセージを送信するためのメカニズムです。グループ内のすべてのノードは、同じグループ ID(16 ビット整数)を共有します。

グループレベルの通信(グループキャスト)を実現するために、Matter は IPv6 Multicast メッセージを活用します。すべてのグループ メンバーは同じ Multicast アドレスを持ちます。

パス

属性、イベント、コマンドを操作する場合は、この操作のパス(ノードのデータモデル階層内の属性、イベント、コマンドの場所)を指定する必要があります。ただし、パスでグループまたはワイルドカード演算子を使用して複数のノードまたはクラスタを同時にアドレス指定し、これらのインタラクションを集約してアクション数を減らすこともできます。

このメカニズムは、通信の応答性を高めるために重要です。たとえば、ユーザーがすべての照明を消灯したい場合、音声アシスタントは個々のアクションのシーケンスではなく、グループ内の複数の照明との単一のアクションを確立できます。イニシエータが各ライトとの個別のインタラクションを作成すると、デバイスの応答性に人間が認識できる遅延が発生する可能性があります。このため、複数のデバイスがコマンドに反応する際に、デバイス間で目に見える遅延が発生します。これは「ポップコーン効果」と呼ばれることがあります。

Matter のパスは、次のいずれかのオプションを使用して組み立てることができます。

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

これらのパス構成要素内で、endpointcluster には、複数のノード インスタンスを選択するためのワイルドカード演算子を含めることもできます。

時間制限ありと時間制限なし

書き込みまたは呼び出しトランザクションを実行する方法は、TimedUntimed の 2 つあります。Timed Transactions は、Write/Invoke Action の送信の最大タイムアウトを設定します。このタイムアウトの目的は、トランザクションに対する傍受攻撃を防ぐことです。これは、ガレージの開閉装置やロックなど、アセットへのアクセスを制御するデバイスに特に当てはまります。

Timed Transactions を理解するには、Intercept Attacks がどのように発生するのか、また Timed Transactions がなぜ重要なのかを理解することが役立ちます。

インターセプト攻撃

インターセプト攻撃には次のパターンがあります。

  1. Alice は Bob に Write Request Action などの最初のメッセージを送信します。
  2. 中間者の Eve がメッセージを傍受し、たとえば無線妨害などの方法で Bob がメッセージを受信できないようにします。
  3. 祐介さんから返信がないため、明子さんは 2 通目のメッセージを送信します。
  4. Eve は再び傍受し、Bob が受け取れないようにします。
  5. Eve は、Alice から送信されたかのように、最初に傍受したメッセージを Bob に送信します。
  6. Bob は Alice(と Eve)に応答を送信します。
  7. Eve は、後で再生するために 2 番目の傍受メッセージを保持します。Bob は Alice からの 2 番目の傍受されたメッセージを一度も受信していないため、このメッセージを受け入れます。このメッセージは、「ロックを開く」などのコマンドをエンコードしている場合、セキュリティ侵害を表します。

このような攻撃を防ぐため、Timed Actions はトランザクションの開始時にトランザクションの最大タイムアウトを設定します。Eve が攻撃ベクトルの最初の 6 つの手順を実行できたとしても、トランザクションのタイムアウトが切れているため、手順 7 でメッセージを再生することはできません。

Timed Transactions は、複雑さとアクションの数を増やします。そのため、すべてのトランザクションに推奨されるわけではなく、物理的または仮想的なセキュリティとプライバシーのアセットを制御するデバイスの重要なオペレーションにのみ推奨されます。

SDK の抽象化

読み取りトランザクション書き込みトランザクション呼び出しトランザクションの各セクションでは、SDK によって実行される Interaction Model Actions の概要を説明します。

Matter SDK を使用するプロダクトを作成するデベロッパーは、通常、アクションを実行する呼び出しを直接行いません。アクションは、それらを Interaction にカプセル化する SDK 関数によって抽象化されます。ただし、IM アクションを理解することは、Matter の機能に関するエンジニアの熟練度を高め、SDK 実装をきめ細かく制御するうえで重要です。