文獻標識碼: A
文章編號: 0258-7998(2010)10-0143-04
2007年6月,Wibree技術被納入藍牙技術聯盟(SIG),并更名為超低功耗藍牙(ULP)[1]。它繼承了傳統藍牙優化運用、耗能更少、成本更低的優點,適用于小型設備件簡單的數據傳輸。
Wibree作為一項耗電量極低的藍牙技術成為藍牙規格的一部分,是一種新的低功率無線技術, 為業界開拓了新的市場機會及創新空間。由于采用無線方式進行通信,因此,ULP藍牙與傳統藍牙一樣面臨傳輸數據被截獲的危險。所以如何保證ULP藍牙運用的安全,是ULP藍牙技術設計的一個核心問題。
本文基于Bluetooth SIG的技術草案[2],討論了ULP藍牙技術的安全結構,介紹了ULP藍牙的地址生成及認證、密鑰生成和匹配原理的相關過程。
1 ULP藍牙的安全構架
安全性是ULP藍牙協議中必不可少的一部分,它提供使用保護和信息保密[3]。 如圖1所示,ULP藍牙系統有三個邏輯組成部分:ULP控制器、ULP主機和HCI(主機控制器接口,介于ULP控制器與ULP主機之間,提供通信服務)。ULP控制器由物理層和鏈路層組成;ULP主機中主要是ULP的L2CAP協議;高層主要是應用層協議,多種剖面在高層中應用。而安全模塊位于ULP控制器中的鏈路層和ULP主機的L2CAP協議中,由主機控制器提供控制和數據。
ULP藍牙工作在2.4 GHz的ISM(Industrial Scientific Medical)頻段,其工作的中心頻率為2 402+K×2 MHz(K=0~39),即工作頻帶寬度為2 MHz~3.5 MHz。劃分為40個物理信道,其中包括3個廣播信道和37個數據信道。
結構中的鏈路層有兩種工作狀態:空閑狀態和連接狀態,其鏈路層只能工作在一種工作狀態下。同時,ULP藍牙設備還有五種工作模式:廣播模式、掃描模式、申請模式、主設備及從設備。
ULP L2CAP(Logic Link Control and Adaptation Protocol)處于鏈路控制協議之上,屬于數據鏈路層。L2CAP對上層協議可以提供面向連接和無連接數據服務。L2CAP允許高層協議、應用發送和接收最長64 KB數據包。
鏈路層中的連接加密過程由ULP主機負責,其中包含一個由鏈路層獨立負責的加密子進程。加密過程由HCI_Setup_Encryption命令初始化。使用這個命令后,主設備的ULP主機就表明了鏈路層連接了新的加密模式。只要有這樣一個來自于ULP主機的命令,一個SEC_EMPTY_REQ數據包就會在鏈路層的連接上被傳送。
在HCI_Setup_Encryption命令之后, HCI_Command_Completed命令所表示的過程完成之前,不允許有來自于ULP主機的任何數據包。
2 ULP藍牙認證及密鑰生成過程
2.1 ULP藍牙地址
ULP藍牙使用兩種類型的地址[4]:設備地址和存取地址,設備地址細分為公有和私有設備地址。每個ULP設備應該分配一個固定48 bit的ULP藍牙公共設備地址,而私有設備設置的地址是可選的。ULP設備只有在證明設備可靠性后,才顯示其私有地址;每個鏈路層的連接有一個偽隨機32 bit的存取地址,由連接中的申請者產生,每個鏈路層連接不同的存取地址。ULP藍牙系統中,只能有一個數據包格式能在廣播通道數據包和數據通道數據包中同時使用。如圖2所示,每個數據包含4個實體:標頭、同步字、PDU和CRC。廣播數據包中的同步字是固定的,數據通道中的數據包同步字是鏈路層連接的存取地址。
2.2 廣播工作模式中認證
ULP系統中,每一臺設備會產生并保持兩個隨機生成的密鑰:鑒權(identity root)和加密(encryption root)。鑒權用于連接中生成私有地址和區分標識符密鑰連接中的標識符;加密用于確立密鑰標識符的安全。在任何加密連接中,廣播創建密鑰作為會話密鑰的基礎。集合密鑰是在某些配對選擇中創建,這些密鑰只是用作保護(未來)廣播中密鑰的傳遞。
加密模式中,通過廣播方式把創建的密鑰分派給需要連接的所有設備或實體,鑒權可用來建立私有地址。因為鑒權每次只支持一個身份,所以許多申請者將獲得同樣的鑒權。廣播向設備提供標識符的加密(伴隨16 bit標識符),在加密模式中該設備支持連接的設備。規范的基本概念有唯一的標識符密鑰,被稱為“長期密鑰”(long term key),這個密鑰分配給每個申請者。此外,加密規則僅僅是推薦使用并且在廣播之外。長期密鑰是不可見的,原則上能使用任何映射在16 bit~128 bit之間的密鑰。加密標識符密鑰有以下幾種: IRK(Identity Resolving Key)、PIR(Pairing Identity Root)、DHK(Diversifier Hiding Key)、 PIRK(Pairing Identity Resolving Key)、PDHK (Pairing Diversifier Hiding Key)。
在廣播模式條件下,廣播設備產生一個初始隨機向量(IRV),該向量由10 B的新隨機數組成,也是鏈路層(LL)傳輸給申請者的第一個可能的數據包。廣播設備初始化時,到達連接請求。
連接請求包括SEC字段(表明是否是加密請求)和PI字段(表明申請者連接一個匹配認證)。SEC=1,表示有2 B的加密區分標識符(EDIV)和申請者6 B的隨機地址。
如圖3所示,在SEC=1的條件下,ULP藍牙廣播模式下的認證步驟如下:
(1)解密區分標識符隱藏密鑰。發送HCI_Set_key(0x00,DKH)命令到鏈路層,返回HCI_Command_Complete(),并再發送加密請求命令HCI_encrypt(addmaster),PAL返回請求完成命令HCI_Command_Complete()。
由EDHK計算DIV:
DIV=EDHK(addmaster[0…15]?茌DIVhidden)
此具體過程是:
由Y=EDHK
(IRA(初始化隨機地址),
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
DIV= {Y0, Y1} XOR {EDIV0, EDIV1}得出?;蛘咴赑I=1的條件下,即匹配連接中有:
Y=EPDHK
(IRA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
得出DIV={Y0,Y1}XOR{EDIV0, EDIV1}
(2)創建長期密鑰。發送設置加密命令到鏈路層HCI_Set_key(0x00,ER),返回完成命令HCI_Command_Complete(),再發送請求加密長期密鑰命令HCI_encrypt(DIV),返回完成創建長期密鑰命令HCI_Command_Complete(LTK)。
按以下公式重新創建長期密鑰LTK:
LTK=EER(DIV/0)
LTK=EER
(DIV,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00)
(3) 創建會話密鑰命令。HCI_Set_key(0x00,LTK),返回完成命令HCI_Command_Complete(),再發送請求加密長期密鑰命令HCI_Encrypt(addmaster/IRV),返回完成創建長期密鑰命令HCI_Command_Complete(SK)。
SK=ELTK(addmaster/IRV)
(4) 鏈路層設置會話密鑰和初始值。初始值為
IV=addmaster/addslave[0…23]
分別發送命令HCI_Set_key(0x01,SK)和HCI_Set_IV(addr|addr[0…23])到鏈路層進行設置,返回完成設置命令HCI_Command_Complete()。生成會話密鑰SK和IV,并在鏈路層設置(廣播地址AA={A0,A1,…,A5})。
2.3申請模式中加密會話設置
申請者瀏覽廣播,找到相匹配的廣播地址AA={A0,A1,…,A5},初始使用6 B完全隨機地址(IRA)。
(1)創建隨機地址:發送HCI_Rand()命令到鏈路層(LL),返回HCI_Command_Complete(rand), addmaster=rand[0…47]。
(2)加密區分標識符(diverfier)密鑰。發送設置加密命令到鏈路層HCI_Set_key(0x00,DHR),返回請求完成命令HCI_Command_Complete(),再發送加密請求命令HCI_Encrypt(addmaster),返回請求完成命令HCI_Command_Complete()。
DIVhidden=EDHK(addmaster[0…15]?茌DIV)
由DIV計算出EDIV。
由Y=EDHK
(IRA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
得出EDIV={Y0,Y1}XOR{DIV0,DIV1}
或者在PI=1的條件下,即匹配中由
Y=EPDHK
(IRA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
得出EDIV={Y0, Y1}XOR{DIV0, DIV1}
最后申請者請求一個連接。
?、偃绻埱蠹用苓B接,則SEC 字段一直等于1;如果在申請者和廣播設備間,擴展匹配繼續進行,即PI字段設置為1。
?、? B的加密區分標識符密鑰(EDIV),6 B的申請者隨機地址(IRA)。
?、郛斶B接已經建立時,申請者從廣播中得到一個10 B的隨機向量(IRV)作為層協議數據單元PDU(類型0xFD),然后從長期密鑰中,申請者創建會話密鑰SK和設置初始值(IV)。
創建會話密鑰SK:發送設置長期密鑰命令HCI_Set_
key(0x00,LTK)到鏈路層, 返回完成命令HCI_Command_
Complete(),再發送加密請求命令HCI_encrypt(addmaster/IRV),返回完成創建會話密鑰命令HCI_Command_Complete(SK),SK=ELTK(addmaster/IRV),IV=addmaster/addslave[0…23],即可表示為:
SK=ELTK(IRA,IRV),IV={IRA,A0,A1,A2}。
?、躍K和IV被分配給鏈路層(LL)作為最后的步驟。LL操作中,申請者將初始化“連接模式變化”。
鏈路層設置會話密鑰和初始值:分別發送命令HCI_Set_key(0x01,SK)和HCI_Set_IV(addr|addr[0…23])到鏈路層設置,返回完成設置命令HCI_Command_Complete()。
2.4密鑰更新
安全連接建立之后,不支持密鑰更新或者重建安全參數。唯一的例外就是匹配程序,在匹配的第一階段后,匹配程序中的會話加密密鑰和狀態發生改變。
3 匹配和密鑰交換
本文的匹配算法有兩個擴展模式,在前n個連接中密鑰改變(如果攻擊者錯過一個更新,安全性提高)。第一個擴展模式尤其適合于移動設備;第二擴展模式是假定兩個設備有相同的地址,通過干擾硬件攻擊者,提高密鑰的安全性,該模式適用于家庭等固定環境。
ULP藍牙的匹配分三個階段進行,其流程如圖4所示。
第一階段,成功匹配功能交換后,開始執行第一階段操作。這一階段不受加密保護,連接中直接進入擴展的狀態(伴隨著PI 字段設置為連接請求和SEC 字段關閉)。
第二階段,在加密通道中執行匹配,受臨時密鑰或者第一階段的結果或是早期擴展階段的保護。該階段的匹配可以直接輸入(PI字段設置為連接請求),在此保護通道中,下面之一被執行:(1) 傳送長期密鑰和認證(從未來的廣播到未來的申請者)。(2) 傳送擴展(臨時)密鑰和認證(從未來的廣播到未來的申請者),在擴展模式中,進行有限的密鑰交換。
第三階段,第三階段與匹配無關,是正常的會話,并且使用了在第二階段同樣的密鑰保護。注:廣泛的與這個密鑰通信可能會導致(取決于匹配機制)攻擊。攻擊長期密鑰可能導致在第二階段中提供的長期密鑰長度少于128 bit。第三階段提供方便和實用性的擴展模式,以及可能簡單的設備。
總體層次規范定義了第三階段的用處,如果沒有定義任何第三階段的用途,匹配的設備將終止匹配會話,用長期密鑰建立新會話。
ULP藍牙系統本身提供的安全系統具有相當的安全特性[5]。在ULP藍牙用于商業或軍事等方面時,現有的點對點的密鑰分配和認證機制將無法滿足安全要求,因而采用AES加密算法是必需的。與傳統藍牙相比,ULP藍牙在安全上有以下特點:
(1) 現有的藍牙認證[6],主要是通過質詢—響應的方法進行認證。ULP藍牙的認證基本相同,但是在ULP藍牙的認證機制中,通過設置SEC和PI的值進行不同的認證。安全措施更明確、簡單,易于實現。
(2) 藍牙加密使用E0加密算法[7],缺點在于若一個偽隨機序列發生錯誤,便會使整個密文發生錯誤,致使在解密過程中無法還原回明文。藍牙E0流加密中用到的 LFSR易受到相關攻擊和分割解決攻擊,且用軟件實現效率非常低。
ULP藍牙中使用AES加密模塊。雖然傳輸速度有所降低,但安全性更高。適合小器件設備,如手表、運動傳感器、醫療設備等;傳統藍牙適用于傳輸大量數據的設備。ULP藍牙的加密的位置處于HCI 層,在流量控制和重傳機制下,可以避免多次加密無用的數據。針對性更強,對不需要加密的數據進行了過濾(如命令分組、事件分組),所以它的日常連接次數可達到50次;而傳統藍牙連接次數在5次以內。ULP藍牙加密方案采用低成本的可編程邏輯器件和現成可用的高級加密處理的智力產權產品實現,降低了系統的成本。
參考文獻
[1] HEYDON R. ULP藍牙開啟全新無線應用[J]. 電子設計應用,2007(9):34-35.
[2] B1uetooth special interest group(SIG). Ultra low power bluetooth technology specification[S]. Controller and host volumes,2007.
[3] DU Sui Kang. Document for bluetooth and bluetooth ULP [J]. Seminar Eingebettette drahtlose System,2009,31(1):211-214.
[4] HAN Hui Hua,YANG Xiao. Application of cryptographic algorithm in bluetooth security mechanism[J]. Journal of Northern Jiaotong, 2003,27(2):24-28.
[5] 金純,許光辰.藍牙技術[M].北京:電子工業出版社,2001.
[6] 榮新華,楊壽保.藍牙安全體系結構研究及其在雙向RKE系統中的應用[J].小型計算機系統,2003,24(8):
1451-1454.
[7] 劉漢華,吳銳,全景才.藍牙安全機制[J].電子質量,2001(6):25-28.