他山之石(二):藍牙Mesh 技術一起學 配網(2)
續上文:
4. Authentication 身份認證n
在這一步中,配網器使用所選擇的認證方式來認證未配網設備。3種方式可選:輸出OOB,輸入OOB,靜態的OOB和沒有OOB。
Output OOB輸出OOB
如果選擇了輸出OOB的認證方式,未配網設備就會產生一個隨機數並通過一個和它的能力相兼容的方式來輸出。舉個例子:如果未配網設備是一個燈,它可以通過閃爍給定的次數來表示這個隨機數。如果設備有一個LCD的屏幕,它就可以顯示一個多位的隨機數。配網器的使用者把觀察到的數字輸入來認證未配網設備。輸出OOB的認證流程見圖5.
在輸入這個隨機數給配網器以後, 配網器產生和檢查確認值。不管使用的是什麼方式的認證方式,這個確認值的過程在整個身份認證步驟中是相同的。
Input OOB輸入OOB
輸入OOB認證方法類似於輸出OOB方法,但設備角色是顛倒的。配網器生成一個隨機數,顯示它,然後提示用戶使用適當的動作將隨機數輸入到未配置的設備中。例如,一個電燈開關可以允許用戶在一個特定的時間內按適當的次數來輸入隨機數。
與輸出OOB相比,輸入OOB方法需要發送一個額外的配網協議PDU。在完成身份驗證操作之後,未配置的設備向配網器發送了一個輸入完成的PDU以通知它隨機數已經輸入。該流程將繼續進行檢查確認值。
Static OOB or No OOB 靜態OOB或沒有OOB
萬一輸入OOB和輸出OOB都不行,配網器和未配網設備還可以使用靜態OOB或者不用OOB的認證。在這種情況下,配網器和未配網設備各產生一個隨機數然後進入確認值操作。
Confirmation Value 確認值
怎麼產生這個確認值呢?剛才說了, 不管是用何種認證方式, 接下來都會產生和檢查這個確認值。根據規格, 配網器和未配網設備會自己分別計算一個確認值。配網器的叫ConfirmationProvisioner ,設備的叫ConfirmationDevice。兩個確認值使用相同的計算流程,即使他們的隨即輸入會不相同。
藍牙Mesh協議大概有兩頁紙來闡述這個計算過程。這個值需要8個參數,見下表。
Table 1 - Parameters used for confirmation value calculation.
我們大概來看一下這個產生的流程吧,圖8提供了確認值產生的演算法。這裡包含了多輪的AES-CMAC and SALT。
大威註:這裡我就不翻譯了,簡單來說,綠色的是設備端的,藍色的是配網器端的。
Confirmation Value Check 確認值檢查
當確認值準備好後,兩個設備會交換它們,並分別檢查接收的值的完整性。圖9說明了確認值檢查過程。
這個過程從配網器發送RandomProvisioner這個隨機數開始,未配網設備用這個隨機數來重新計算確認值來和之前收到的確認值進行比較。
- 如果不相同,配網過程取消。
- 如果相同,反過來未配網設備發送RandomDevice, 然後配網器同樣重新計算確認值然後和收到的確認值進行比較。
- 如果不同,結束!
- 如果相同,代表認證階段結束。未配網設備成為mesh節點。接著兩者進入第5步。
Distribution of Provisioning Data 分發配網數據n
一旦認證步驟完成,在配網過程中最重要的步驟--派生和分發配網數據就可以承載在配網器和節點之間安全鏈接上。配網者負責生成配網數據,其中包括一些數據項,包括稱為「Network Key網路密鑰」的安全密鑰。表2列出了配網數據欄位。
為了安全的分發這些配網數據,配網器用配網器和設備計算的Session
Key使用AES-CCM 來加密配網數據。大威註:具體的過程略。。。見圖10
配網器和設備都需要生成一個SessionKey和SessionNonce。當SessionKey和SessionNonce值準備好時,配網器將會加密,並將配網數據PDU發送給設備。這裡,同樣的SessionKey和SessionNonce值用於解密接收的數據。
到這裡,配網過程就完成了。兩個設備都知道新的DevKey和global
NetKey,恭喜我們的新設備成為藍牙mesh網路的節點。配網過程是藍牙mesh安全性的基礎,它允許網路設備可靠地和安全地通信。(完)
推薦閱讀:
※藍牙4.0安全嗎?
※2.4G下WIFI和藍牙衝突,如何解決?
※藍牙模塊都有哪些?
TAG:Mesh | 蓝牙Bluetooth | 无线通信 |