由于個人生產設備的快速蔓延,使用藍牙設備的頻率和數量也在不斷的增長,這對藍牙通信安全性提出了更高的要求。隨著藍牙官方協議版本的迭代,經典藍牙信息安全模型也在不段更新和完善。本文主要講述經典藍牙技術安全相關內容。
1
藍牙安全模型
目前,藍牙安全模型主要分為五個安全部分:
認證(Authentication):建立設備間的信任關系,證明正在通訊的設備是真正的設備而不是其他冒名的設備。
保密性(Confidentiality):對傳輸的數據加密,確保內容不被竊聽者獲取。
授權(Authorization):是否允許對端設備通過建立的鏈接操作本地的數據項。
數據完整性(Integrity):確認收到的數據就是對端發送的數據。
配對/綁定(Pairing/Bonding):創建一個或多個共享密鑰并存儲用于后續連接,以形成可信設備。
2
經典藍牙安全機制
藍牙核心安全架構隨著時間的推移而發展,已經有多種安全機制。
早期BR/EDR使用legacy pairing方式進行配對,該方式基于E21或E22算法進行。E21和E22均基于E1算法。通信加密則利用了MasseyRueppel 算法衍生的e0算法。這種方式局限于無法提供加密消息的完整性。目前,出于加密安全的考慮,使用較多的是Secure Simple Pairing (SSP),其使用ECDH生成Link Key。且在4.0版本之前使用P-192 Elliptic Curve計算Link Key,設備認證和加密算法與2.0+EDR相同。4.1版本引入Secure connection功能,使用P-256 Elliptic Curve計算Link Key,通過AES-CCM進行加密。
SSP提供了四種關聯模型:Numeric Comparison、Passkey Entry、Just Works以及Out of Band (OOB)。
Numeric Comparison:兩個藍牙設備顯示6位數字,用戶選擇“是”或“否”,與使用PIN的區別是顯示的數字不作為計算Link Key的條件,因此竊聽者也不能用它生成連接或者密鑰。
Passkey Entry:一個設備有輸入能力另外一個有顯示能力使用此模型,和Numeric Comparison一樣,傳輸的6位數字不作為計算Link Key的條件,所以對竊聽者也沒有作用。
Just Works:沒有輸入和顯示的設備適用此模型,與Numeric Comparison在認證階段1相同,因為沒有顯示,不能對比兩個設備上的數值就接受了連接,因此不能提供MITM保護。
Out of Band (OOB):通過有線或者NFC等其他方式進行設備的發現和加密數據的交換。
SSP流程圖
SSP生成Link Key流程
總共分為三步:
每個設備各自計算自己的公-私密鑰,雙方都支持安全連接使用P-256 elliptic curves 否則 P-192 curves。
1:每個設備發送public key給對方。這里public key的依賴于橢圓加密算法,每次連接時隨機生成。
2:執行authentication stage 1。
3:第一個設備計算出確認值E1并發送給設備2,設備2對E1 進行驗證,驗證通過后,設備二計算確認值E2并發給第一個設備。
4:如果E2檢查通過,那么雙方就進行Link Key的計算。
01
認證
藍牙的認證過程使用challenge–response scheme(質詢-響應)方式,這個方式通過驗證Link Key的方式驗證設備。
認證流程有2種:Legacy Authentication和Secure Authentication(雙方都支持安全連接使用此流程)
如果認證失敗,藍牙設備會間隔一段時間后重試,間隔時間會成指數級增長,以避免攻擊。
02
傳統身份驗證
當使用傳統配對或者P-192進行SSP配對時使用此流程。
Step 1:verifier發送128bit的隨機數(AU_RAND)質詢claimant。
Step 2:claimant使用 “E1 algorithm”,通過輸入48bit的mac地址、Link Key、AU_RAND來計算認證響應。Verifier也執行相同的流程。E1輸出的高32位用于身份驗證。剩余的96位時ACO,用于創建加密密鑰。
Step 3:E1輸出的高32位,即the Signed Response (SRES),發送給Verifier。
Step 4:Verifier拿自己的SRES與claimant的SRES進行比較。
Step 5:如果相同則認證成功否則失敗。
03
安全認證
使用P-256 Elliptic Curve進行SSP執行此流程。
Step 1:Master發送128bit的隨機數RAND_M給Slave
Step 2:Slave 發送RAND_S給Master
Step 3:Master和Slave都利用“h4 and h5 algorithms”計算認證響應。以Master的MAC地址,Slave的mac地址、RAND_S、RAND_M、Link Key作為輸入。h5輸出的高32位用于驗證,其余96位作為Authenticated Ciphering Offset (ACO) 用于創建密鑰。
Step 4:Slave把SRES_slave 傳給master
Step 5:Master吧SRES_master傳給Slave
Step 6:Master和Slave拿自己的SRES與對方的進行比較
Step 7:相同則認證成功,否則失敗。
3
經典藍牙的保密性
處理配對和認證之外藍牙還有單獨的保密服務,防止數據包被監聽。
Encryption Mode 1 — 沒有任何保加密
Encryption Mode 2—Individually addressed traffic is encrypted using encryption keys based on individual link keys; broadcast traffic is not encrypted.
Encryption Mode 3—All traffic is encrypted using an encryption key based on the master link key.
模式2和3使用E0或者AES_CCM加密機制。
AES_CCM是一種對稱密鑰加密算法,用于保護通信中傳輸的數據的機密性和完整性。它廣泛應用于無線通信協議如藍牙(Bluetooth)和Wi-Fi等中,為4.0版本之后新加入的加密機制。
AES_CCM是基于AES算法(Advanced Encryption Standard)和CCM模式(Counter with CBC-MAC mode)的組合設計。AES算法是一種分組密碼算法,通過多輪置換和混淆的方式進行加密和解密。CCM模式則是一種加密模式,它使用計數器和CBC-MAC模式對數據進行加密和驗證,同時提供了認證和傳輸機密性保護功能。
下圖為藍牙packet中AES_CCM與E0的加密范圍和流程:
需要注意的是,AES_CCM算法僅提供對數據的機密性和完整性保護,而無法提供絕對的安全性。如同時使用質詢機制等其他安全措施可以增強安全性。
-
藍牙
+關注
關注
114文章
5767瀏覽量
169806 -
算法
+關注
關注
23文章
4599瀏覽量
92643 -
泰凌微
+關注
關注
6文章
144瀏覽量
10789
原文標題:【技術專欄】泰凌微電子經典藍牙技術安全知識講解
文章出處:【微信號:telink-semi,微信公眾號:泰凌微電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論