藍牙技術聯盟(Bluetooth SIG)於2023年初宣布藍牙Mesh 1.1版本,針對跨子網(Subnet)通訊引入「子網橋接」功能,在不犧牲網路安全的前提下,讓Mesh網路布建更加靈活。
藍牙Mesh協議規格1.1版本引入「子網橋接」,而要充分了解子網橋接的功能和優勢,就必須了解藍牙Mesh 1.0版本的特定層面。本文將介紹子網橋接功能的背景及技術。(註:藍牙Mesh配置文件規格已更名,現稱為藍牙Mesh協議規格。本文和相關文件在提及1.1版規格時將使用這一名稱,但在提及1.0版規格時,仍將繼續稱其為藍牙Mesh配置文件規格)。
藍牙Mesh子網背景介紹
子網(Subnet)
藍牙Mesh網路構成所有單播位址的位址空間。藍牙Mesh網路可由一或多個子網組成,共享這一共同位址空間。每個子網都有一個唯一的網路金鑰(NetKey),如果節點在配置時獲得NetKey,就會成為該子網的成員。
一個節點可以擁有一個以上的NetKey,因此可以是一個以上子網的成員。然而,在藍牙Mesh配置文件規格1.0版本中,訊息無法從一個子網傳遞到另一個子網,子網之間完全隔離。
區域隔離
將網路劃分為幾個不同的子網,以便將網路的不同部分隔離開來,可提供許多好處。
出於安全考量,防止一個子網的裝置與其他子網的裝置進行互動可能是有用的,甚至是必要的。以旅館客房為例,房間內的智慧型裝置可與同一房間內的其他裝置通訊,但不能與房間外的裝置通訊。將每個旅館客房內的裝置置於各自的子網中,可以將每個房間的裝置與其他房間的裝置隔離開來,滿足旅館客房的安全要求(圖1)。
子網還可用於將網路流量限制在建築物的特定區域內。若訊息需要透過中繼才能到達所有預定目的地節點,並使用受管網路泛洪(Managed Flooding),這項特點尤其有用。子網可視為是在一組裝置周圍設置邊界,即使訊息中繼也無法跨越邊界,因此可避免將無關訊息中繼到沒有目的地裝置所在的網路部分。
這種技術通常用於隔離辦公室的不同樓層,如圖2所示。三樓電燈開關發送的訊息將由該樓層天花板的中繼節點轉發,因為它們屬於同一個子網,但上下樓層的中繼節點可能會收到開關發送的訊息,此時則會立即捨棄訊息,因此訊息不會跨樓層傳播。
重放攻擊和序列號
惡意裝置可以被動接收訊息,並在稍後重新傳輸,可能導致網路發生未經授權變更,這種攻擊稱為重放攻擊(Replay Attack)。藍牙Mesh定義了防止重放攻擊的重放保護機制。
重放保護包括所有訊息都有一個相關的nonce值,其中包括一個24位元序列號(SEQ);來源節點每發送一則新訊息,都必須遞增該序列號。如果一個節點每5秒鐘發送一次訊息,那麽SEQ值大概將在兩年多之後開始循環使用。為了防止這種情况發生,SEQ值由32位元初始化向量(IV)值延伸,該值在整個網路中共享。如果SEQ值面臨耗盡的風險,IV就會透過名為IV更新的程序自動更新。
32位元IV值本身並不包含在訊息中,取而代之的是稱為IVI的單位元欄位;該欄位表示網路在同一時間可能使用的兩個IV值中,哪一個與訊息相關。
接收裝置會追蹤每個來源位址上次成功處理訊息的IV和SEQ值。如果收到訊息的IV值和SEQ值組合,在數值上不高於從同一來源單播位址收到的最後一則訊息,就會將該訊息視為可能的重放攻擊並加以捨棄。
評估藍牙Mesh 1.0中的子網
藍牙Mesh配置文件規格1.0版本定義的子網,具有部分安全性和網路利用效率的優勢,卻也因為子網造成的區域隔離絕對性,不易滿足某些要求。如果為了利用效率而使用子網限制訊息在網路無關部分的傳輸,那麽網路規畫人員必須仔細考慮如何使用子網。安裝人員必須在首次建立網路時設定所需的子網。
定向轉發提供了一種更好的方法,可將節點間的流量限制在網路的相關部分。子網有時也能達到類似效果,但子網區域隔離無法像定向轉發那樣精確定向,只能限制選定的裝置處理訊息。目前推薦使用定向轉發來滿足網路利用效率的要求。
使用子網作為網路安全機制的區域隔離功能非常强大。想像一下,若某家旅館的每間客房皆採用子網區域隔離,並且於客房採用智慧型技術,讓客人可以對裝置和系統進行手動和自動控制,不僅升級客人使用體驗,旅館管理階層也對房間裝置無法互相干擾感到滿意。然而,旅館管理階層也希望能安裝閘道器,讓每個客房的感測器皆能報告住用資料,以便為TCP/IP型圖形使用者介面系統(GUI System)提供訊息,在不打擾客人的情況下安排客房清潔和洗衣服務。使用藍牙Mesh 1.0子網時,需要在每個旅館房間皆安裝閘道器節點,才能實現這一目標。
子網橋接技術發威 藍牙Mesh 1.1實現靈活通訊(1)
子網橋接技術發威 藍牙Mesh 1.1實現靈活通訊(2)