ノードのデータモデル(DM)は、オペレーションを実行できない場合は関係ありません。インタラクション モデル(IM)は、ノードの DM と他のノードの DM との DM 関係を定義します。これは、DM 間の通信の共通言語です。
ノードは次のように相互に作用します。
- 属性とイベントの読み取りと登録
- 属性への書き込み
- コマンドの呼び出し
Node が別の Node と暗号化された通信シーケンスを確立するたびに、それらはインタラクション関係を構成します。インタラクションは 1 つ以上のトランザクションで構成され、トランザクションは 1 つ以上のアクションで構成されます。アクションは、ノード間の IM レベルのメッセージと見なすことができます。
トランザクションでは、他のノードから属性やイベントをリクエストする読み取りリクエスト アクションや、サーバーからクライアントに情報を返すレポート データ アクションなど、複数のアクションがサポートされています。
イニシエータとターゲット
トランザクションを開始するノードはイニシエータ、応答するノードはターゲットです。通常、イニシエータはクライアント クラスタ、ターゲットはサーバー クラスタです。ただし、このパターンには例外があります。たとえば、このセクションの後半で分析するサブスクリプションのインタラクションなどです。
グループ
Matter のノードは Group に属している場合があります。デバイスのグループは、同じアクション内の複数のデバイスに同時にメッセージを送信するためのメカニズムです。グループ内のすべてのノードは同じグループ ID(16 ビット整数)を共有します。
グループレベルの通信(グループキャスト)を実現するために、Matter は IPv6 Multicast メッセージを活用し、すべてのグループ メンバーは同じ Multicast アドレスを持ちます。
パス
Attribute、Event、Command を操作する場合は、この操作の Path(Node のデータモデル階層内の Attribute、Event、Command の場所)を指定する必要があります。ただし、パスではグループまたはワイルドカード演算子を使用して、複数のノードまたはクラスタを同時にアドレス指定し、これらのインタラクションを集約してアクション数を減らすこともできます。
このメカニズムは、通信の応答性を高めるために重要です。たとえば、ユーザーがすべての照明を消したい場合、音声アシスタントは個々のインタラクションのシーケンスではなく、グループ内の複数の照明との単一のインタラクションを確立できます。イニシエータが各ライトとの個別のインタラクションを作成すると、デバイスの応答性に人間が認識できる遅延が発生する可能性があります。このため、複数のデバイスがコマンドに反応する際に、デバイス間で目に見える遅延が発生します。これは「ポップコーン効果」と呼ばれることがあります。
Matter のパスは、次のいずれかのオプションを使用して組み立てることができます。
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
これらのパス構成要素内では、endpoint と cluster にワイルドカード演算子を含めて、複数のノード インスタンスを選択することもできます。
時間制限ありと時間制限なし
書き込みまたは呼び出しトランザクションを実行する方法は、Timed と Untimed の 2 つあります。Timed Transactions は、Write/Invoke Action の送信の最大タイムアウトを設定します。このタイムアウトの目的は、トランザクションに対する傍受攻撃を防ぐことです。これは、ガレージの開閉装置やロックなど、アセットへのアクセスを制御するデバイスに特に当てはまります。
Timed Transactions を理解するには、Intercept Attacks がどのように発生するのか、また Timed Transactions がなぜ重要なのかを理解することが役立ちます。
インターセプト攻撃
インターセプト攻撃には次のパターンがあります。
- Alice が Bob に Write Request Action などの最初のメッセージを送信します。
- 中間者の Eve がメッセージを傍受し、たとえば無線妨害などの方法で Bob がメッセージを受信できないようにします。
- アリスはボブからの応答を受け取らなかったため、2 番目のメッセージを送信します。
- イブは再び傍受し、ボブがそれを受け取るのを阻止します。
- イブは、最初に傍受したメッセージを、あたかもそれがアリスから送信されたかのようにボブに送信します。
- ボブはアリス(およびイブ)に応答を送信します。
- イブは、2 番目に傍受したメッセージを後で再生できるように保持します。ボブはアリスからの元の 2 番目の傍受メッセージを受信しなかったため、それを受け入れます。このメッセージは、「ロックを開く」などのコマンドがエンコードされている場合にセキュリティ侵害を表します。
このような種類の攻撃を防ぐために、タイムド アクションはトランザクションの開始時に最大のトランザクション タイムアウトを設定します。Eve が攻撃ベクトルの最初の 6 つの手順を実行できたとしても、Transaction のタイムアウトが切れているため、手順 7 でメッセージを再生することはできません。
時間指定トランザクションにより、アクションの複雑さと数が増加します。そのため、すべてのトランザクションに推奨されるわけではなく、物理的または仮想的なセキュリティとプライバシーのアセットを制御するデバイスの重要なオペレーションにのみ推奨されます。
SDK の抽象化
「読み取りトランザクション」、「書き込みトランザクション」、および「呼び出しトランザクション」のセクションでは、SDK によって実行されるインタラクション モデル アクションの概要を説明します。
開発者は、Matter SDK は通常、アクションを直接実行するための呼び出しは実行しません。アクションは、インタラクションにカプセル化する SDK 関数によって抽象化されます。 ただし、IM アクションを理解することは、Matter の機能に関するエンジニアの熟練度を高め、SDK 実装をきめ細かく制御するうえで重要です。