1. 程式人生 > >BLE Mesh 前言2:你需要提前知道的事

BLE Mesh 前言2:你需要提前知道的事

一、藍芽Mesh的參考資源

  1. 藍芽Mesh規範Spec,它定義了藍芽Mesh相關的技術細節。

      2. 藍芽Mesh術語表

      3. 藍芽Mesh概覽

二、藍芽Mesh定義重申

        藍芽Mesh網路是用於建立多對多裝置通訊的低功耗藍芽新的網路拓撲

        它允許建立基於多個裝置的大型網路,網路可以多至數百上萬臺Mesh裝置。這些裝置通過BLE傳輸資訊,可為很多工業領域提供理想的解決方案選擇。例如,樓宇自動化,包括照明、供暖、製冷、安防系統;無線感測器網路;資產跟蹤等

三、哪些裝置可以部署藍芽Mesh

        藍芽Mesh執行在BLE之上,所以只能與藍芽

4.0及以上版本相容。因此市面上的藍芽產品可以通過韌體升級(OTA為主)的方式升級為具有藍芽Mesh功能的產品。但是是否具有可升級性,還需要結合具體的產品效能看,比如程式儲存器(ROM)是否充足,記憶體(RAM)是否足夠,是否支援OTA,MCU的處理能力是否能夠滿足Provisioning對於非對稱加密的運算需求等。

四、網路泛洪

        Flooding,即通過廣播的方式,將資訊從網路中的某一個節點轉發至目標節點。

        大家聽到網路泛洪,初次印象肯定是網路會非常繁忙,效率低下,耗電。但是藍芽Mesh採用的網路泛洪是可控的,裝置對於資訊的轉發需要滿足多種限制條件;同時,通過可控的flooding,不需要建立和管理複雜的路由表,路由發現表等。節省了網路執行的儲存空間和開銷。

        Flooding的本質,就是多路徑的,確保了資訊可以通過多條路徑傳遞到目的節點,因此網路中的任何一個節點出現故障,都不會導致網路癱瘓,保證了網路的可靠性。

五、低功耗配置

       可見上一章節的LPN和FN節點說明

六、手機如何接入藍芽Mesh網路

       要開發App,必須使用Mesh的代理(Proxy)協議,才能通過代理節點與網狀網路進行通訊。即應用程式,需要實現預先定義的GATT服務(service)和特性(Characteristic),就可以與藍芽Mesh網路中的代理節點進行通訊,進而通過代理節點與整個Mesh網路進行互動。

七、安全性

藍芽Mesh網路是一種真正工業級解決方案,其安全性包括:

  1. 使用經過驗證的安全演算法對新增到網路的裝置進行配置(Provisioning),這套安全機制通過橢圓曲線演算法(ECDH)非對稱加密和帶外(OOB)認證的方式來保證安全的新增裝置;
  2. 所有通訊資訊都需要使用128-bit AES-CCM進行加密和認證,藍芽Mesh網路中的所有資訊都需要進行加密和認證;
  3. 加密和認證應用與網路層(Network layer)和應用層(Application Layer)兩層,分別有兩組金鑰:網路層金鑰Network Key和應用層金鑰Application Key。同一網路中的節點間使用同一網路層金鑰加密和解密。但是應用層的資訊是否可以被解密取決於節點是否具有應用層金鑰。這樣設計的好處在於將兩層的加密隔離,加解密互不干擾。
  4. 通過在傳送的每個資訊上加入不同的序列號(Sequence number)來防止重放攻擊replay attack;
  5. 在Mesh網路中,可以通過既定的金鑰更新程式將網路中不授信的裝置列入黑名單,將其踢出網路;

      6. 通過擾碼的方式對每條資訊進行模糊(obfuscation)處理,這意味著,及時您帶著mesh裝置走動,身邊的駭客通過資料包嗅覺器(packets sniffer)也無法跟蹤到您的行蹤,因為所有的資訊都經過了模糊處理。