互動模型概念

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

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

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

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

互動模式的階層
圖 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. Eve 會保留第二則攔截到的訊息,以便稍後重播。由於 Bob 從未收到 Alice 傳送的原始第二則攔截訊息,因此會接受該訊息。如果訊息編碼的指令是「開鎖」等,就表示發生安全漏洞。

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

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

SDK 抽象化

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

建立使用 Matter SDK 的產品時,開發人員通常不會直接呼叫來執行動作,而是透過 SDK 函式將動作抽象化,並封裝至互動中。不過,瞭解 IM Actions 對於向工程師說明 Matter 的功能,以及精細控管 SDK 實作項目,都非常重要。