互動模型概念

如果無法對節點執行作業,則節點的資料模型 (DM) 就不相關。「互動模型」 (IM) 定義節點與其他節點的 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 也可以包含萬用字元運算子,用於選取多個節點執行個體。

計時與無計時

執行寫入或叫用交易的方式有兩種:TimedUntimed。定時交易會為要傳送的寫入/叫用動作建立「逾時時間上限」。此逾時的目的是防止交易發生攔截攻擊。對會限制資產存取權的裝置 (例如車庫開啟器和門鎖) 特別有效。

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

攔截攻擊

攔截式攻擊的模式如下:

  1. Alice 會向 Bob 傳送首則訊息,例如「寫入要求動作」。
  2. 中間人 Eve 攔截了此訊息,並阻止小明接收到這封信,例如透過某種廣播電台作曲。
  3. 麗麗是未收到來自 Bob 的回覆,先傳送第二則訊息。
  4. 夏娃再次攔截並阻止白先生接收它。
  5. 夏娃將第一個攔截的訊息傳送給 Bob,就像來自小艾一樣。
  6. Bob 將回覆傳送給 Alice (和夏娃)。
  7. 夏娃會保留第二個攔截的訊息,方便稍後重播。由於 Bob 從未收到來自 Alice 的原始第二攔截訊息,因此他將接受該訊息。當訊息對「開啟鎖定」等指令進行編碼時,這則訊息代表發生安全漏洞。

為防止這類攻擊,定時動作會在交易開始時設定最長的交易逾時時間。即使 Eve 成功執行攻擊向量的前六個步驟,因為交易逾時,也無法在步驟 7 上重播訊息。

定時交易會增加複雜度和動作數量。因此,不建議每項交易都採用這些方法,但只有可以控管實體或虛擬安全性和隱私權資產的重要作業。

SDK 抽象化機制

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

使用 Matter SDK 建立產品的開發人員通常不會直接執行動作來直接執行動作;動作是由 SDK 函式提取,而該函式會封裝成「互動」。不過,要讓工程師充分掌握 Matter 的功能,並精細地控管 SDK 實作項目,就必須瞭解 IM 動作。