互動模型概念

如果節點的資料模型 (DM) 無法執行作業,則與其資料模型無關。「互動模型」 (IM) 定義節點與其他節點 DM 的關係:這是 DM 之間的共通語言。

節點可透過以下方式彼此互動:

  • 讀取及訂閱屬性和事件
  • 寫入屬性
  • 叫用指令

只要節點與其他節點建立加密通訊序列,就會構成「互動」關係。互動可能由一或多個「交易」組成,交易由一或多個「操作」組成,這些動作可理解為節點之間的即時訊息層級訊息。

互動模式的階層
圖 1:互動模型的階層

交易支援多種動作,例如要求其他節點屬性或事件的讀取要求動作,或是其回應「報表資料動作」,該動作會從伺服器將資訊傳回用戶端。

啟動者和目標

啟動交易的節點為「Initiator」,而回應的節點為「Target」。啟動器通常是用戶端叢集,而目標則是伺服器叢集。不過,這個模式仍有例外狀況,例如本節中更深入的訂閱互動部分。

群組

Matter 中的節點可能屬於群組。多組裝置是一種機制,可以在同一個動作中同時傳送訊息並傳送至多部裝置。群組中的所有節點都共用相同的「群組 ID」,也就是 16 位元整數。

為了完成群組層級通訊 (Groupcast),Matter 會使用 IPv6 Multicast 訊息,所有群組成員都使用相同的 Multicast 位址。

路徑

每當我們想要與屬性、事件或指令互動時,都必須指定此互動的路徑:在節點的資料模型階層中,屬性、事件或指令的位置。要注意的是,路徑也可能使用群組萬用字元運算子同時處理多個節點或叢集,藉此匯總這些互動並減少動作數量。

這項機制十分重要,有助於加快通訊的回應速度。舉例來說,當使用者想關閉所有燈具時,語音助理可在群組內與數個燈具進行單一互動,而非建立一系列的個別互動。如果發起者與每種光源建立個別互動,就能在裝置回應速度中產生人類可察覺的延遲。這樣會導致多部裝置回應指令之間出現明顯延遲的指令。這通常稱為「爆米花效果」。

Matter 中的路徑可以使用下列其中一個選項組合:

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

在這些路徑建構區塊中,endpointcluster 也可能提供萬用字元運算子,用於選取多個節點執行個體。

計時且未計時

寫入或叫用交易的方式有兩種,分別是「Timed」和「Untimed」。定時交易會針對要傳送的寫入/叫用動作建立逾時時間上限。逾時的目的在於防止交易發生攔截攻擊。這類機制特別適用於限制存取資產的裝置,例如車庫開啟器和鎖頭。

如要瞭解定時交易,瞭解攔截攻擊的可能方式,以及定時交易的重要性。

攔截式攻擊

攔截攻擊的模式如下:

  1. Alice 傳送初始訊息,例如寫入要求動作。
  2. 她在中間進行了攔截,並阻止小明接收訊息,例如某種類型的無線電幹擾。
  3. Alice 未收到來自「志明」的回覆,會傳送第二則訊息。
  4. 夏娃再次攔截了,小明無法接收來電。
  5. 夏娃傳送第一則攔截的訊息給 Bob,就像是來自 Alice 一樣。
  6. Bob 將回覆傳送給 Alice (和 Eve)。
  7. 夏娃保留第二則攔截的訊息,供稍後重播。由於 Bob 從未收到來自 Alice 的原始第二則攔截訊息,因此會接受訊息。此訊息代表訊息將「開啟鎖定」這類指令進行編碼時,發生安全性漏洞。

為防範這類攻擊,定時操作會在交易開始時設定交易逾時時間上限。即使 Eve 設法執行攻擊向量的前六個步驟,但由於交易的逾時時間過期,因此無法在步驟 7 重播該訊息。

定時交易會提高複雜性和動作數量。因此,不建議針對每筆交易使用這類憑證,而是僅在可控管實體/虛擬安全和隱私權資產的裝置上進行重要作業。

SDK 抽象化機制

讀取交易」、「寫入交易」和「叫用交易」這兩節提供了 SDK 執行互動模型動作的概略總覽。

建立使用 Matter SDK 的產品時,開發人員通常不會執行直接執行動作的呼叫,而動作會由用於封裝至互動的 SDK 函式擷取。不過,瞭解 IM 動作,重點是讓工程師充分熟悉 Matter 的功能,並進一步掌控 SDK 實作方式。