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