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