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

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

ノードは次の方法で相互に作用します。

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

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

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

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

開始者とターゲット

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

グループ

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

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

パス

属性、イベント、コマンドを操作する場合は、インタラクションのパス(属性、イベント、コマンドがノードのデータモデル階層にある場所)を指定する必要があります。注意すべき点は、パスでは Groups または Wildcard Operators を使用して複数のノードまたはクラスタを同時に処理し、これらのインタラクションを集約してアクションの数を減らす可能性があることです。

このメカニズムは、通信の応答性を高めるために重要です。たとえば、ユーザーがすべてのライトをシャットダウンする場合、音声アシスタントは、個々のインタラクションのシーケンスではなく、グループ内の複数のライトを 1 つのインタラクションとして確立できます。イニシエータが各ライトに対して個別のインタラクションを作成すると、デバイスの応答性が人間が知覚できるレイテンシになります。その結果、複数のデバイスがコマンドに反応し、その間に明らかな遅延が発生します。これは、「ポップコーン効果」と呼ばれることもあります。

Matter 内のパスは、次のいずれかの方法で作成できます。

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

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

時間指定と時間指定なし

書き込みトランザクションまたは呼び出しトランザクションを実行するには、時間指定時間指定なしの 2 つの方法があります。時間指定トランザクションでは、書き込み/呼び出しアクションを送信する最大タイムアウトが設定されます。このタイムアウトは、トランザクションに対するインターセプト攻撃を防止することを目的としています。特に、ガレージ オープナーやロックなど、アセットへのアクセスを制御するデバイスで有効です。

時間指定トランザクションについて理解するには、インターセプト攻撃が発生する理由と時間指定トランザクションが重要である理由を理解する必要があります。

インターセプト アタック

インターセプト アタックのパターンは次のとおりです。

  1. Alice は Bob に Write Request Action などの最初のメッセージを送信します。
  2. 中間の人間が Eve はメッセージを傍受し、Bob がなんらかのタイプのラジオの妨害などによってメッセージを受信できないようにする。
  3. Alice は Bob から応答を受け取っていないため、2 番目のメッセージを送信します。
  4. Eve はこれを再度インターセプトし、Bob に遮断します。
  5. Eve は傍受された最初のメッセージを Alice から送信されたかのように Bob に送信します。
  6. Bob は Alice(と Eve)に回答を送信します。
  7. Eve は後で再生するために、インターセプトされた 2 つ目のメッセージを保持します。Bob は Alice からインターセプトされた元の 2 通目のメッセージを受信したことがないため、受理します。このメッセージは、「open lock」などのコマンドをエンコードした場合のセキュリティ違反を表します。

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

再生タイミング指定取引では、複雑さとアクション数が増えます。したがって、すべてのトランザクションに推奨されるものではありませんが、物理的なアセットまたは仮想のセキュリティ アセットやプライバシー アセットを制御するデバイスでの重要なオペレーションのみになります。

SDK の抽象化

トランザクションの読み取りトランザクションの書き込みトランザクションの呼び出しのセクションには、SDK によって実行されるインタラクション モデル アクションの概要が記載されています。

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