互動模型概念

如果無法對節點執行作業,節點的資料模型 (DM) 就沒有意義。互動模型 (IM) 會定義節點的 DM 關係,以及其他節點的 DM 關係:這是 DM 之間通訊的通用語言。

節點會透過下列方式互動:

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

節點與其他節點建立加密通訊序列時,即構成「互動」關係。互動可能由一或多個「交易」組成,而交易則由一或多個「動作」組成,可視為節點之間的 IM 層級訊息。

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

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

發起端和目標

發起交易的節點是「發起者」,而回應的節點是「目標」。通常「啟動者」是「用戶端叢集」,「目標」是「伺服器叢集」。不過,這個模式也有例外狀況,例如本節稍後分析的「訂閱互動」

群組

Matter 中的節點可能屬於群組。裝置群組是一種機制,可同時將訊息傳送至同一動作中的多個裝置。群組中的所有節點共用相同的群組 ID (16 位元整數)。

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

路徑

每當要與屬性、事件或指令互動時,都必須指定互動的路徑:屬性、事件或指令在節點資料模型階層中的位置。但路徑也可以使用群組萬用字元運算子,同時處理多個節點或叢集,彙整這些互動,進而減少動作數量。

這項機制對於提升通訊的回應速度至關重要。舉例來說,使用者想關閉所有燈具時,語音助理可以與群組中的多個燈具建立單一互動,而不是一連串的個別互動。如果「發起者」與每盞燈建立個別「互動」,可能會在裝置回應速度方面產生人為可察覺的延遲。這項效果會導致多部裝置對指令做出反應時,彼此之間出現明顯延遲。這通常稱為「爆米花效應」。

您可以使用下列任一選項,在 Matter 中組裝路徑:

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

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

計時和非計時

執行寫入或叫用交易的方法有兩種:計時非計時。計時交易會為要傳送的寫入/叫用動作設定最長逾時時間。這項逾時設定的目的是防止交易遭到攔截攻擊。特別適用於可控制資產存取權的裝置,例如車庫門遙控器和門鎖。

如要瞭解限時交易,請先瞭解攔截攻擊的發生方式,以及限時交易的重要性。

攔截攻擊

攔截攻擊的模式如下:

  1. 小莉傳送初始訊息給志明,例如「撰寫要求動作」。
  2. 中間人 Eve 攔截訊息,並阻止 Bob 接收訊息,例如透過某種無線電干擾。
  3. 艾莉絲沒有收到志明回覆,因此傳送第二則訊息。
  4. Eve 再次攔截訊息,阻止 Bob 接收。
  5. Eve 會將攔截到的第一則訊息傳送給 Bob,並偽裝成 Alice 傳送。
  6. Bob 將回應傳送給 Alice (和 Eve)。
  7. 伊芙會保留截獲的第二封訊息,以供日後重播。由於鮑伯從未收到愛麗絲傳送的原始第二封訊息,因此會接受該訊息。如果訊息編碼的指令是「開鎖」等,這類訊息就會造成安全漏洞。

為防範這類攻擊,Timed Actions 會在交易開始時設定交易逾時上限。即使 Eve 設法執行攻擊向量的前六個步驟,由於交易逾時,她也無法在步驟 7 重播訊息。

計時交易會增加動作的複雜度和數量。因此,不建議用於每筆交易,只適用於可控管實體或虛擬安全和隱私權資產的裝置上,執行重要作業時使用。

SDK 抽象化

「讀取交易」、「寫入交易」和「叫用交易」部分提供 SDK 執行的互動模型動作概要。

建立使用 Matter SDK 的產品時,開發人員通常不會直接執行動作呼叫,而是透過 SDK 函式將動作封裝至互動中。不過,瞭解 IM 動作有助於工程師掌握 Matter 的功能,並精細控管 SDK 實作項目,因此非常重要。