- Advertisement -
首頁 技術頻道 藍牙Mesh技術解析(下) Mesh架構/安全設計一網打盡

藍牙Mesh技術解析(下) Mesh架構/安全設計一網打盡

- Advertisement -

藍牙Mesh網狀網路架構解析

本節將深入介紹藍牙Mesh網狀網路的架構及其各個層次與負責的作用。此外也將說明Mesh架構(圖1)與低功耗藍牙核心架構之間的關係。

在Mesh網狀網路架構的最底層稱為「低功耗藍牙」。然而,事實上這並不單純只是Mesh架構的其中一層,而是指整個低功耗藍牙技術,如此一來才能提供基礎的無線通訊能力,讓在這之上的Mesh架構能夠運作。

顯然地,藍牙Mesh系統必須要有低功耗藍牙技術存在的狀況下才能運作。接下來我們將從最底層開始,逐一說明Mesh架構的每一層。

載體層

Mesh網路的訊息需要一套通訊系統負責傳送和接收。這就是「載體層」(Bearer Layer)的作用,該層定義通訊系統該如何處理Mesh PDU。目前藍牙Mesh技術只定義兩個載體,分別為廣播載體(Advertising Bearer)與GATT載體(GATT Bearer)。

廣播載體會利用低功耗藍牙的GAP廣播與掃描功能來發送和接收Mesh PDU。GATT載體則可讓不支援廣播載體的裝置,經由前述的「Proxy Protocol」通訊協定與Mesh網狀網路內支援廣播載體的節點間接通訊。

Proxy Protocol是封裝在GATT運作中,藉由特別定義的GATT特性來達成。Mesh網路的代理節點會執行GATT特性並支援GATT載體與廣播載體,因此能在兩種載體之間轉換並轉發訊息。

網路層

「網路層」(Network Layer)定義了各種訊息位址類型以及網路訊息格式,讓載體層可以傳送傳輸層PDU。該層可支援多個載體,每一載體各有多個網路介面,包括可讓同一節點內的多個元素彼此溝通的本地端介面。

網路層會判斷訊息該經由哪一網路介面輸出。來自載體層的訊息會經過一個輸入過濾條器(Input Filter),以決定是否要將訊息傳送至網路層作進一步處理。同樣地,輸出訊息也會經過一個輸出過濾器(Output Filter)來決定是否該拋棄訊息或者傳送至載體層。至於轉發(Relay)和代理(Proxy)的功能則是可以經由網路層來執行。

下層傳輸層

「下層傳輸層」(Lower Transport Layer)會從上層傳輸層接收PDU,之後將PDU傳送到另一裝置的下層傳輸層;必要時,該層也會進行PDU的切割與重組。當PDU較長而無法塞入單一Transport PDU時,下層傳輸層就會加以切割,將該PDU分成多個Transport PDU。接收端裝置的下層傳輸層,則會將這些分割過的PDU重組成單一的上層傳輸層PDU,並且往上一層傳送。

上層傳輸層

「上層傳輸層」(Upper Transport Layer)負責將來自存取層以及要傳給存取層的應用資料進行加密、解密與認證。此外,該層也負責處理訊息的傳輸與控制,訊息由各節點的上層傳輸層內部產生,並彼此互相傳遞,包括「友誼」(Friendship)和「心跳」(Heartbeat)相關的訊息。

存取層

「存取層」(Access Layer)負責定義各種應用該如何存取上層傳輸層,包括:

.定義應用資料格式。

.定義及控制上層傳輸層所負責執行的加密、解密流程。

.確認從上層傳輸層所收到的資料是否送到正確網路,才將資料往上一層傳。

基礎模型層

「基礎模型層」(Foundation Models Layer)負責執行與Mesh網狀網路組態及管理相關的模型。

模型層

「模型層」(Models Layer)負責依照模型的規格定義,執行模型以及相關的行為、訊息、狀態、狀態綁定等等。

Mesh網狀網路安全採強制規定

低功耗藍牙提供了多種安全機制讓設定檔的設計者選擇,如不同的配對方式,或每一特性對應的個別安全要求等等。但事實上,安全性完全是一項選擇性功能,因此也可以造出完全沒有任何安全防護或限制的開放式裝置。

裝置設計者或製造商必須自行分析其面臨的威脅,然後決定其產品的安全性需求與解決方案(圖2)。然而,對於藍牙Mesh網狀網路來說,安全性是強制的。不論是網路本身,或是個別應用和裝置,全都有安全機制保護,而且無法透過任何方式加以關閉或削弱。

Mesh網狀網路安全基本原則

藍牙Mesh網狀網路具備以下基本安全原則:

.所有Mesh訊息皆經過加密和認證。

.網路安全、應用安全與裝置安全,各自獨立分開。

.安全金鑰在Mesh網狀網路中的生命週期可透過「金鑰更新」(Key Refresh)程序來變更。

.訊息標頭編碼讓網路內傳遞的訊息難以被追蹤,提供了私密性機制讓節點無法被追蹤。

.藍牙Mesh的安全機制可防範網路遭到回放攻擊(Replay Attack)。

.裝置新增至Mesh網路以成為節點的程序具安全性。

.節點可安全地從網路移除,並且可防範垃圾桶(Trashcan)攻擊。

依不同安全考量進行隔離

藍牙Mesh安全機制的核心是由三種金鑰所構成的。這些金鑰分別保護著Mesh網狀網路的不同部分,將不同的安全考量分離。

為了解這樣的設計並體會其重要性,我們來看一個可作為轉發節點的Mesh燈泡案例。當燈泡扮演轉發的角色時,它可能會經手Mesh網路上一些有關大樓門禁系統的訊息。然而,一個燈泡不該有權限讀取並處理這類訊息的內容,但卻必須將訊息轉發給其他節點。

為解決這樣的衝突,藍牙Mesh技術採用了不同的安全金鑰,分別保護訊息在網路層的傳輸與應用(如照明、保全、暖氣等等)相關的資料。

所有Mesh網路當中的節點都有一把網路金鑰(NetKey)。事實上,正是因為持有共同的金鑰,節點才能成為該網路的成員。這把網路金鑰還可衍生出網路加密金鑰,以及一把私密金鑰。

節點持有的網路金鑰,最高僅能解開並驗證到網路層的通訊,因此節點能夠轉發訊息,但無法解開應用相關資料。網路或許還會進一步分隔成多個子網路(Subnet),而且每個子網路都有專屬的網路金鑰,唯有子網路內的成員才擁有。網路金鑰可以用來隔離實體空間,例如飯店內的每一間客房。

要解開特定應用相關的資料,節點必須擁有對應的應用金鑰(AppKey)。在Mesh網路的所有節點之中,可能存在著許多不同的應用金鑰,但通常每個應用金鑰只會被少數的節點所持有,即為能夠參與該項應用的節點類型。舉例而言,燈泡和照明開關,會擁有照明應用的應用金鑰,但是卻不會擁有暖氣系統的應用金鑰;後者通常是溫度控制開關、散熱器控制閥等節點才有。

上層傳輸層會使用應用金鑰來加密及驗證訊息,而後才將訊息傳給存取層,多把應用金鑰會對應到一把網路金鑰。

這樣的關係稱之為「金鑰綁定」,代表著一些特定的應用必須持有應用金鑰,而且只能在某個特定網路上運作,但是一個網路卻能容納多個互相獨立而安全的應用。

最後一把金鑰是裝置金鑰(DevKey),為一種特別的應用金鑰。每個節點都有獨一無二的裝置金鑰,且唯有啟動配置器裝置才知道。裝置金鑰用於啟動配置程序之中,負責保障啟動配置器與節點之間的通訊安全。

移除節點/啟動金鑰提升安全性

如前所述,節點持有多種Mesh的安全金鑰。假設節點發生故障而必須拆除,或者持有者決定將它賣給他人,很重要的一件事就是要確保該裝置不被拿來攻擊其原本所屬的網路。

為此,藍牙Mesh技術定義了一套移除網路節點的程序。使用者可利用啟動配置器的應用程式,而將某個節點列入黑名單,並啟動「金鑰更新」的程序。

金鑰更新程序會使得網路上的所有節點(除了黑名單中的節點之外)收到新的網路金鑰、應用金鑰以及所有相關的衍生資料。換句話說,負責保障網路和應用安全的整套安全金鑰全部都會換掉。如此一來,移除節點所持有的網路金鑰和應用金鑰都變得無效,該節點將不再是網路的成員,因此就不會構成威脅。

私密性

從網路金鑰衍生而來的私密金鑰,是用來編碼網路PDU的標頭(Header)資料,例如來源位址。編碼可確保竊聽者無法輕易追蹤裝置及裝置使用者的行蹤。此外,也讓一些根據流量分析的攻擊難以達成。這項技巧的安全程度也確實符合其用途。

回放攻擊

在網路安全的領域中,「回放攻擊」(Replay Attack)是指竊聽者從網路上攔截、擷取到一個或多個訊息,並將該訊息重新傳送一次,目的是希望欺騙接收端執行一些攻擊端裝置沒有權限執行的動作。常見的例子是汽車免鑰匙系統,駭客藉由擷取車主與車輛之間的認證程序訊息,並對免鑰匙系統回放這些訊息,就能打開車門,將車偷走。

藍牙Mesh網狀網路便內建了防範回放攻擊的機制。基本上是利用兩個網路PDU欄位:Sequence Number(SEQ)和IV Index。

元素在每次發布訊息時,就會將SEQ數值加一。當節點收到來自某個元素的訊息時,其SEQ值若小於或等於上一個有效訊息的SEQ,那麼該訊息將被拋棄,因為這很可能就是來自回放攻擊。

至於IV Index則是另一個欄位,用來搭配SEQ。來自同一元素的訊息,其內含的IV Index必定等於或大於來自該元素上一個有效訊息的數值。

藍牙Mesh技術採管理式網路泛洪機制

Wi-Fi網路是圍繞著一個中央節點(也就是路由器)來運作,所有網路流量都會經過此處,萬一路由器故障,整個網路就跟著停擺。

反觀藍牙Mesh網路採用的是「管理式網路泛洪機制」的訊息傳送技巧。所有訊息一旦由節點發布之後,就會廣播到網路上,而非透過路由方式傳送至一個或多個特定節點。

所有在無線射頻可達範圍內的節點都會收到訊息,並可轉發所收到的訊息(如果有設定的話)。所謂轉發,就是將收到的訊息再廣播一次,以讓距離原發送節點較遠的節點能夠接收到訊息。

除此之外,藍牙技術採用管理式網路泛洪的另一個重要意義就是,訊息可經由網路內的多重路徑到達目的地。如此可形成一個非常穩定可靠的網路,而這也是為何當初藍牙Mesh網狀網路的設計會選擇採用洪水式的傳遞方法,而非採用路由的方式。

管理式網路泛洪機制特點

藍牙Mesh網狀網路善用了洪水式方法的優點,並且加以優化,因此能夠兼具穩定性以及效率,同時也反映了「管理式網路泛洪機制」所代表的涵意。這些方法包括:

心跳

節點會定時發出「心跳」訊息,每一次的心跳訊息,都是告知網路內的其他節點,自己仍然在正常運作。此外,心跳訊息亦含有一些資料可讓收到的節點判斷發送端與自己距離,即是要經過幾次轉跳才會到達,這項情報就能夠有效用在TTL欄位。

TTL

TTL(Time To Live)存活時間是所有藍牙Mesh PDU都擁有的欄位。此一欄位用來控制訊息轉發過程中轉跳的最大次數。藉由TTL的設定,節點就能夠掌控訊息的轉發,並且達到節能的效果,以避免訊息不會無意義地轉發太多次。心跳訊息可以讓節點判斷每次發布訊息時TTL的最大設定值。

訊息快取(Message Cache)

所有節點都必須執行訊息快取。包含節點最近收到的所有訊息,當節點收到一個訊息時,即可比對快取內是否有相同的訊息。若有,即代表該訊息已經接受並處理過,可以立即拋棄。

好友節點

藍牙Mesh網狀網路中重要的最佳化機制為「好友」節點與「低功耗」節點的組合。如上所述,好友節點可提供訊息儲存功能,並且將訊息轉傳給相關的低功耗節點。如此一來,低功耗節點就能發揮優異的能源效率。消息的內部傳遞當一節點接收到訊息時,會將訊息從架構最底下的低功耗藍牙,一層一層往上傳(從載體層到網路層)。接著,網路層會進行各項檢查來決定是否將訊息傳給上一層,或者直接拋棄。

消息的內部傳遞

當一節點接收到訊息時,會將訊息從架構最底下的低功耗藍牙,一層一層往上傳(從載體層到網路層)。接著,網路層會進行各項檢查來決定是否將訊息傳給上一層,或者直接拋棄。

此外,PDU當中有一個網路識別碼(Network ID)欄位,可用來快速判斷訊息使用的網路金鑰。如果接收端的網路層無法辨識該網路金鑰,就代表接收端裝置不屬於該網路的成員,而會將PDU拋棄。此外,還有一個網路訊息完整性檢查(MIC) 欄位。節點會辨識PDU網路識別碼對應的網路金鑰,如果檢查失敗,訊息便會直接被拋棄。在發送端節點訊號範圍內的所有節點都會收到發出的訊息,與收到裝置不相干的訊息則會迅速被拋棄,例如來自不同的網路或子網路的訊息。

同樣的原則在上層傳輸層也一樣適用。不過,該層檢查的是訊息的應用金鑰,也就是PDU當中的應用識別碼(AID)欄位。如果收到的節點無法辨識PDU中的應用識別碼,上層傳輸層就會將PDU直接拋棄。此外,若是傳輸訊息的完整性檢查(TransMIC)失敗,訊息也會被拋棄。

相信經過本文的介紹,讀者應該已經對藍牙Mesh技術以及其功能、概念與名詞有了一些基本的認識。雖然藍牙技術與我們所認識的有點不同,但卻是一種能讓裝置透過全新拓撲彼此通訊的藍牙技術;最重要的是,這項技術也讓廣泛應用的低功耗藍牙無線技術能夠開拓全新的領域與產業。

(本文作者任職於藍牙技術聯盟)

相關文章

- Advertisement -
- Advertisement -

最新文章

- Advertisement -

熱門文章

- Advertisement -

編輯推薦

- Advertisement -