1. 程式人生 > >BLE藍芽中的安全連線(Secure Connections)

BLE藍芽中的安全連線(Secure Connections)

BLE關於安全的發展歷史

藍芽Core 5.0已經發布,目前來看安全相關的內容沒有太多改變

BLE作為一個新發展出來的分支,作為一個新興的事務,關於安全的修改並不是特別多,僅僅在Core 4.2中有所增補

4.0提出BLE,並且採用配對認證的方式(密碼輸入、數字比較、直接工作),加密採用AES-CCM,從加密的角度來看加密程度已經很高,但是認證階段的加密程度似乎還有待加強,於是在4.2中將BR/EDR的SC機制引入過來


從Core 4.2中可以看出引入了Secure Connections安全機制,簡稱SC

從藍芽的發展歷史來看SC也並非是新技術,在BR/EDR中早在Core 4.1已經提出

Secure Connections安全機制簡介

SC最先提出在BR/EDR中,追溯其起源可以到Core 2.1,在Core 2.1之前,加密認證方式所有的安全均建立在0-16位的數字上,存在被破解的風險,於是人們提出了SSP(Secure Simple Pairing),SSP是一種在傳統認證基礎上改進過來的認證加密方式

如上圖,SSP的改變主要在於認證階段,採用橢圓曲線非對稱加密方式,交換公鑰、存留私鑰、公鑰結合私鑰計算共享金鑰的方式進行認證,最終認證通過後由共享金鑰生成連線金鑰(Link Key)

可以發現在認證加密過程中金鑰的生成存在隨機性,並且使用者都不會直接接觸到金鑰,大大的提高了其安全係數,並且橢圓曲線非對稱加密演算法其加密程度也非常高,在此基礎上,配對的安全係數提高了加密過程依然採用傳統的E0演算法,直到在Core 4.1中將BLE的AES-CCM加密演算法引入過來,將SSP認證與AES-CCM加密結合,提出了SC加密認證機制


上述為BR/EDR中SC的發展過程,在Core 4.2中,BLE直接將BR/EDR的SC安全機制借鑑過來,提出LE Secure Connections


新提出的安全機制對於BLE來講,改變的僅僅是配對階段,加密階段原本BLE就是使用的AES-CCM

LE Secure Connections

主要有以下步驟: 1.Public Key Exchange
2.Authentication Stage 1
3.Long Term Key Calculation
4.Authentication Stage 2
1.首先配對雙方進行公鑰交換 2.接著根據雙方IO能力選項(輸入數字、比較數字、直接工作)的方式進行階段1認證
3.根據SK、PK計算出DHKey,利用DHKey計算出LTK 4.對利用Pk、Sk生成的DHKey進行認證



LE Secure Connections 新增PDU


用於傳遞ECDH P-256演算法生成的公鑰
用於對DHKey進行認證 關於ECDH認證機制,可以參考NIFS的相關文件,或者後續文章