藍牙(Bluetooth®)核心規(guī)格中有三大主要架構(gòu)層:控制器、主機和應(yīng)用。主機層中有一個為配對和密鑰分配定義方法和協(xié)議的安全管理器模塊、相應(yīng)的安全工具箱、以及定義配對指令框架形式、框架架構(gòu)和超時限制的安全管理器協(xié)議。安全管理器采用密鑰分配的方式執(zhí)行無線電通訊中的身份和加密功能。
配對以建立密鑰,然后就能用密鑰來加密鏈路。然后執(zhí)行傳輸特定的(transport specific)密鑰分配來分享密鑰。密鑰可用來加密日后的重新連接、驗證簽名數(shù)據(jù)、或執(zhí)行隨機地址解析??偟膩碚f配對有三個階段:
第一階段:配對特性交換
第二階段(低功耗傳統(tǒng)配對):生成短期密鑰(Short Term Key,簡稱STK)
?。ǖ凸陌踩B結(jié)):生成長期密鑰(Long Term Key,簡稱LTK)
第三階段:傳輸特定的密鑰分配
大多數(shù)讀者可能未必了解低功耗傳統(tǒng)配對和低功耗安全連接。低功耗(Low Energy,簡稱LE)是藍牙規(guī)格中藍牙4.0及以上版本的主要特性之一。藍牙4.2規(guī)格為低功耗物理傳輸添加了安全連接特性,升級了配對功能,在藍牙低功耗物理傳輸中采用美國聯(lián)邦信息處理(FIPS)許可的算法(AES-CMAC和P-256 橢圓曲線)。為了區(qū)別安全連接與藍牙4.0和4.1規(guī)格中定義的低功耗配對,我們將后者成為低功耗傳統(tǒng)配對。圖1是傳統(tǒng)配對和安全連接都適用的配對流程圖。
圖1:配對流程圖
在這一篇中,我們主要討論第一階段,即配對特性交換。配對就是安全特性的交換,包括輸入/輸出(IO)功能、對于中間人保護的要求等。兩臺設(shè)備間配對信息的交換是通過配對請求(PairingRequest)和配對響應(yīng)(PairingResponse)數(shù)據(jù)包實現(xiàn)的。這兩種信息的內(nèi)容請參考表1:配對請求/響應(yīng)。
表1 配對請求/響應(yīng)
“代碼”
IO 功能
IO 即為輸入/輸出,IO功能結(jié)合在一起可生成這一字段的值。
對于輸入功能來說,可能為“無輸入”、“是/否”或“鍵盤”,詳情如下:
對于輸出功能來說,可能為“無輸出”或“數(shù)字輸出”,詳情如下:
將輸入輸出功能結(jié)合在一起之后,就有了以下矩陣,定義了藍牙設(shè)備應(yīng)有的IO功能。
1 沒有配對算法可以使用“是/否”的輸入和“無輸出”,因此其IO功能結(jié)果為“NoInputNoOutput”。
從以上矩陣中能大致了解相應(yīng)的IO功能,并從下表中選擇合適的值,置入配對請求/響應(yīng)數(shù)據(jù)包。