《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > ULP藍(lán)牙技術(shù)的安全設(shè)計(jì)
ULP藍(lán)牙技術(shù)的安全設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2010年第10期
金 純, 聶增麗
重慶郵電大學(xué) 通信與信息工程學(xué)院, 重慶400065
摘要: 介紹了ULP藍(lán)牙技術(shù)及系統(tǒng)結(jié)構(gòu),重點(diǎn)描述了ULP藍(lán)牙的安全機(jī)制,詳細(xì)分析了其地址生成、認(rèn)證過程、匹配和密鑰交換等關(guān)鍵技術(shù)。最后比較了ULP藍(lán)牙和傳統(tǒng)藍(lán)牙在安全方面的不同。
中圖分類號: TN918.8+2
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2010)10-0143-04
Design of ULP bluetooth security model
JIN Chun, NIE Zeng Li
College of Communication and Information Engineering, Chongqing University of Posts and Telecommunications, Chongqing 400065, China
Abstract: This paper introduces the ULP bluetooth technology and system architecture, which focuses on describing ULP bluetooth security mechanisms and analyses the core technologies of its the address generation, certification process, pairing and keys exchange. In conclusion, compare between bluetooth and bluetooth ULP.
Key words : ULP bluetooth addresses; keys; authentication; pairing

    2007年6月,Wibree技術(shù)被納入藍(lán)牙技術(shù)聯(lián)盟(SIG),并更名為超低功耗藍(lán)牙(ULP)[1]。它繼承了傳統(tǒng)藍(lán)牙優(yōu)化運(yùn)用、耗能更少、成本更低的優(yōu)點(diǎn),適用于小型設(shè)備件簡單的數(shù)據(jù)傳輸。
 Wibree作為一項(xiàng)耗電量極低的藍(lán)牙技術(shù)成為藍(lán)牙規(guī)格的一部分,是一種新的低功率無線技術(shù), 為業(yè)界開拓了新的市場機(jī)會及創(chuàng)新空間。由于采用無線方式進(jìn)行通信,因此,ULP藍(lán)牙與傳統(tǒng)藍(lán)牙一樣面臨傳輸數(shù)據(jù)被截獲的危險。所以如何保證ULP藍(lán)牙運(yùn)用的安全,是ULP藍(lán)牙技術(shù)設(shè)計(jì)的一個核心問題。
 本文基于Bluetooth SIG的技術(shù)草案[2],討論了ULP藍(lán)牙技術(shù)的安全結(jié)構(gòu),介紹了ULP藍(lán)牙的地址生成及認(rèn)證、密鑰生成和匹配原理的相關(guān)過程。
1 ULP藍(lán)牙的安全構(gòu)架
  安全性是ULP藍(lán)牙協(xié)議中必不可少的一部分,它提供使用保護(hù)和信息保密[3]。 如圖1所示,ULP藍(lán)牙系統(tǒng)有三個邏輯組成部分:ULP控制器、ULP主機(jī)和HCI(主機(jī)控制器接口,介于ULP控制器與ULP主機(jī)之間,提供通信服務(wù))。ULP控制器由物理層和鏈路層組成;ULP主機(jī)中主要是ULP的L2CAP協(xié)議;高層主要是應(yīng)用層協(xié)議,多種剖面在高層中應(yīng)用。而安全模塊位于ULP控制器中的鏈路層和ULP主機(jī)的L2CAP協(xié)議中,由主機(jī)控制器提供控制和數(shù)據(jù)。


  ULP藍(lán)牙工作在2.4 GHz的ISM(Industrial Scientific Medical)頻段,其工作的中心頻率為2 402+K×2 MHz(K=0~39),即工作頻帶寬度為2 MHz~3.5 MHz。劃分為40個物理信道,其中包括3個廣播信道和37個數(shù)據(jù)信道。
 結(jié)構(gòu)中的鏈路層有兩種工作狀態(tài):空閑狀態(tài)和連接狀態(tài),其鏈路層只能工作在一種工作狀態(tài)下。同時,ULP藍(lán)牙設(shè)備還有五種工作模式:廣播模式、掃描模式、申請模式、主設(shè)備及從設(shè)備。
 ULP L2CAP(Logic Link Control and Adaptation Protocol)處于鏈路控制協(xié)議之上,屬于數(shù)據(jù)鏈路層。L2CAP對上層協(xié)議可以提供面向連接和無連接數(shù)據(jù)服務(wù)。L2CAP允許高層協(xié)議、應(yīng)用發(fā)送和接收最長64 KB數(shù)據(jù)包。
 鏈路層中的連接加密過程由ULP主機(jī)負(fù)責(zé),其中包含一個由鏈路層獨(dú)立負(fù)責(zé)的加密子進(jìn)程。加密過程由HCI_Setup_Encryption命令初始化。使用這個命令后,主設(shè)備的ULP主機(jī)就表明了鏈路層連接了新的加密模式。只要有這樣一個來自于ULP主機(jī)的命令,一個SEC_EMPTY_REQ數(shù)據(jù)包就會在鏈路層的連接上被傳送。
   在HCI_Setup_Encryption命令之后, HCI_Command_Completed命令所表示的過程完成之前,不允許有來自于ULP主機(jī)的任何數(shù)據(jù)包。
2 ULP藍(lán)牙認(rèn)證及密鑰生成過程
2.1 ULP藍(lán)牙地址

 ULP藍(lán)牙使用兩種類型的地址[4]:設(shè)備地址和存取地址,設(shè)備地址細(xì)分為公有和私有設(shè)備地址。每個ULP設(shè)備應(yīng)該分配一個固定48 bit的ULP藍(lán)牙公共設(shè)備地址,而私有設(shè)備設(shè)置的地址是可選的。ULP設(shè)備只有在證明設(shè)備可靠性后,才顯示其私有地址;每個鏈路層的連接有一個偽隨機(jī)32 bit的存取地址,由連接中的申請者產(chǎn)生,每個鏈路層連接不同的存取地址。ULP藍(lán)牙系統(tǒng)中,只能有一個數(shù)據(jù)包格式能在廣播通道數(shù)據(jù)包和數(shù)據(jù)通道數(shù)據(jù)包中同時使用。如圖2所示,每個數(shù)據(jù)包含4個實(shí)體:標(biāo)頭、同步字、PDU和CRC。廣播數(shù)據(jù)包中的同步字是固定的,數(shù)據(jù)通道中的數(shù)據(jù)包同步字是鏈路層連接的存取地址。


2.2 廣播工作模式中認(rèn)證
 ULP系統(tǒng)中,每一臺設(shè)備會產(chǎn)生并保持兩個隨機(jī)生成的密鑰:鑒權(quán)(identity root)和加密(encryption root)。鑒權(quán)用于連接中生成私有地址和區(qū)分標(biāo)識符密鑰連接中的標(biāo)識符;加密用于確立密鑰標(biāo)識符的安全。在任何加密連接中,廣播創(chuàng)建密鑰作為會話密鑰的基礎(chǔ)。集合密鑰是在某些配對選擇中創(chuàng)建,這些密鑰只是用作保護(hù)(未來)廣播中密鑰的傳遞。
  加密模式中,通過廣播方式把創(chuàng)建的密鑰分派給需要連接的所有設(shè)備或?qū)嶓w,鑒權(quán)可用來建立私有地址。因?yàn)殍b權(quán)每次只支持一個身份,所以許多申請者將獲得同樣的鑒權(quán)。廣播向設(shè)備提供標(biāo)識符的加密(伴隨16 bit標(biāo)識符),在加密模式中該設(shè)備支持連接的設(shè)備。規(guī)范的基本概念有唯一的標(biāo)識符密鑰,被稱為“長期密鑰”(long term key),這個密鑰分配給每個申請者。此外,加密規(guī)則僅僅是推薦使用并且在廣播之外。長期密鑰是不可見的,原則上能使用任何映射在16 bit~128 bit之間的密鑰。加密標(biāo)識符密鑰有以下幾種: IRK(Identity Resolving Key)、PIR(Pairing Identity Root)、DHK(Diversifier Hiding Key)、 PIRK(Pairing Identity Resolving Key)、PDHK (Pairing Diversifier Hiding Key)。
    在廣播模式條件下,廣播設(shè)備產(chǎn)生一個初始隨機(jī)向量(IRV),該向量由10 B的新隨機(jī)數(shù)組成,也是鏈路層(LL)傳輸給申請者的第一個可能的數(shù)據(jù)包。廣播設(shè)備初始化時,到達(dá)連接請求。
  連接請求包括SEC字段(表明是否是加密請求)和PI字段(表明申請者連接一個匹配認(rèn)證)。SEC=1,表示有2 B的加密區(qū)分標(biāo)識符(EDIV)和申請者6 B的隨機(jī)地址。
  如圖3所示,在SEC=1的條件下,ULP藍(lán)牙廣播模式下的認(rèn)證步驟如下:


    (1)解密區(qū)分標(biāo)識符隱藏密鑰。發(fā)送HCI_Set_key(0x00,DKH)命令到鏈路層,返回HCI_Command_Complete(),并再發(fā)送加密請求命令HCI_encrypt(addmaster),PAL返回請求完成命令HCI_Command_Complete()。
 由EDHK計(jì)算DIV:
    DIV=EDHK(addmaster[0…15]?茌DIVhidden)
 此具體過程是:
 由Y=EDHK
 (IRA(初始化隨機(jī)地址),
    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)創(chuàng)建長期密鑰。發(fā)送設(shè)置加密命令到鏈路層HCI_Set_key(0x00,ER),返回完成命令HCI_Command_Complete(),再發(fā)送請求加密長期密鑰命令HCI_encrypt(DIV),返回完成創(chuàng)建長期密鑰命令HCI_Command_Complete(LTK)。
 按以下公式重新創(chuàng)建長期密鑰LTK:
 LTK=EER(DIV/0)
   LTK=EER
(DIV,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00)
    (3) 創(chuàng)建會話密鑰命令。HCI_Set_key(0x00,LTK),返回完成命令HCI_Command_Complete(),再發(fā)送請求加密長期密鑰命令HCI_Encrypt(addmaster/IRV),返回完成創(chuàng)建長期密鑰命令HCI_Command_Complete(SK)。
   SK=ELTK(addmaster/IRV)
 (4) 鏈路層設(shè)置會話密鑰和初始值。初始值為
    IV=addmaster/addslave[0…23]
分別發(fā)送命令HCI_Set_key(0x01,SK)和HCI_Set_IV(addr|addr[0…23])到鏈路層進(jìn)行設(shè)置,返回完成設(shè)置命令HCI_Command_Complete()。生成會話密鑰SK和IV,并在鏈路層設(shè)置(廣播地址AA={A0,A1,…,A5})。
2.3申請模式中加密會話設(shè)置
    申請者瀏覽廣播,找到相匹配的廣播地址AA={A0,A1,…,A5},初始使用6 B完全隨機(jī)地址(IRA)。
  (1)創(chuàng)建隨機(jī)地址:發(fā)送HCI_Rand()命令到鏈路層(LL),返回HCI_Command_Complete(rand), addmaster=rand[0…47]。
  (2)加密區(qū)分標(biāo)識符(diverfier)密鑰。發(fā)送設(shè)置加密命令到鏈路層HCI_Set_key(0x00,DHR),返回請求完成命令HCI_Command_Complete(),再發(fā)送加密請求命令HCI_Encrypt(addmaster),返回請求完成命令HCI_Command_Complete()。
    DIVhidden=EDHK(addmaster[0…15]?茌DIV)
   由DIV計(jì)算出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;如果在申請者和廣播設(shè)備間,擴(kuò)展匹配繼續(xù)進(jìn)行,即PI字段設(shè)置為1。
 ②2 B的加密區(qū)分標(biāo)識符密鑰(EDIV),6 B的申請者隨機(jī)地址(IRA)。
 ③當(dāng)連接已經(jīng)建立時,申請者從廣播中得到一個10 B的隨機(jī)向量(IRV)作為層協(xié)議數(shù)據(jù)單元PDU(類型0xFD),然后從長期密鑰中,申請者創(chuàng)建會話密鑰SK和設(shè)置初始值(IV)。
    創(chuàng)建會話密鑰SK:發(fā)送設(shè)置長期密鑰命令HCI_Set_
key(0x00,LTK)到鏈路層, 返回完成命令HCI_Command_
Complete(),再發(fā)送加密請求命令HCI_encrypt(addmaster/IRV),返回完成創(chuàng)建會話密鑰命令HCI_Command_Complete(SK),SK=ELTK(addmaster/IRV),IV=addmaster/addslave[0…23],即可表示為:
 SK=ELTK(IRA,IRV),IV={IRA,A0,A1,A2}。
 ④SK和IV被分配給鏈路層(LL)作為最后的步驟。LL操作中,申請者將初始化“連接模式變化”。
 鏈路層設(shè)置會話密鑰和初始值:分別發(fā)送命令HCI_Set_key(0x01,SK)和HCI_Set_IV(addr|addr[0…23])到鏈路層設(shè)置,返回完成設(shè)置命令HCI_Command_Complete()。
2.4密鑰更新
    安全連接建立之后,不支持密鑰更新或者重建安全參數(shù)。唯一的例外就是匹配程序,在匹配的第一階段后,匹配程序中的會話加密密鑰和狀態(tài)發(fā)生改變。
3 匹配和密鑰交換
 本文的匹配算法有兩個擴(kuò)展模式,在前n個連接中密鑰改變(如果攻擊者錯過一個更新,安全性提高)。第一個擴(kuò)展模式尤其適合于移動設(shè)備;第二擴(kuò)展模式是假定兩個設(shè)備有相同的地址,通過干擾硬件攻擊者,提高密鑰的安全性,該模式適用于家庭等固定環(huán)境。
   ULP藍(lán)牙的匹配分三個階段進(jìn)行,其流程如圖4所示。


    第一階段,成功匹配功能交換后,開始執(zhí)行第一階段操作。這一階段不受加密保護(hù),連接中直接進(jìn)入擴(kuò)展的狀態(tài)(伴隨著PI 字段設(shè)置為連接請求和SEC 字段關(guān)閉)。
    第二階段,在加密通道中執(zhí)行匹配,受臨時密鑰或者第一階段的結(jié)果或是早期擴(kuò)展階段的保護(hù)。該階段的匹配可以直接輸入(PI字段設(shè)置為連接請求),在此保護(hù)通道中,下面之一被執(zhí)行:(1) 傳送長期密鑰和認(rèn)證(從未來的廣播到未來的申請者)。(2) 傳送擴(kuò)展(臨時)密鑰和認(rèn)證(從未來的廣播到未來的申請者),在擴(kuò)展模式中,進(jìn)行有限的密鑰交換。
 第三階段,第三階段與匹配無關(guān),是正常的會話,并且使用了在第二階段同樣的密鑰保護(hù)。注:廣泛的與這個密鑰通信可能會導(dǎo)致(取決于匹配機(jī)制)攻擊。攻擊長期密鑰可能導(dǎo)致在第二階段中提供的長期密鑰長度少于128 bit。第三階段提供方便和實(shí)用性的擴(kuò)展模式,以及可能簡單的設(shè)備。
 總體層次規(guī)范定義了第三階段的用處,如果沒有定義任何第三階段的用途,匹配的設(shè)備將終止匹配會話,用長期密鑰建立新會話。
    ULP藍(lán)牙系統(tǒng)本身提供的安全系統(tǒng)具有相當(dāng)?shù)陌踩匦訹5]。在ULP藍(lán)牙用于商業(yè)或軍事等方面時,現(xiàn)有的點(diǎn)對點(diǎn)的密鑰分配和認(rèn)證機(jī)制將無法滿足安全要求,因而采用AES加密算法是必需的。與傳統(tǒng)藍(lán)牙相比,ULP藍(lán)牙在安全上有以下特點(diǎn):
 (1) 現(xiàn)有的藍(lán)牙認(rèn)證[6],主要是通過質(zhì)詢—響應(yīng)的方法進(jìn)行認(rèn)證。ULP藍(lán)牙的認(rèn)證基本相同,但是在ULP藍(lán)牙的認(rèn)證機(jī)制中,通過設(shè)置SEC和PI的值進(jìn)行不同的認(rèn)證。安全措施更明確、簡單,易于實(shí)現(xiàn)。
 (2) 藍(lán)牙加密使用E0加密算法[7],缺點(diǎn)在于若一個偽隨機(jī)序列發(fā)生錯誤,便會使整個密文發(fā)生錯誤,致使在解密過程中無法還原回明文。藍(lán)牙E0流加密中用到的 LFSR易受到相關(guān)攻擊和分割解決攻擊,且用軟件實(shí)現(xiàn)效率非常低。
 ULP藍(lán)牙中使用AES加密模塊。雖然傳輸速度有所降低,但安全性更高。適合小器件設(shè)備,如手表、運(yùn)動傳感器、醫(yī)療設(shè)備等;傳統(tǒng)藍(lán)牙適用于傳輸大量數(shù)據(jù)的設(shè)備。ULP藍(lán)牙的加密的位置處于HCI 層,在流量控制和重傳機(jī)制下,可以避免多次加密無用的數(shù)據(jù)。針對性更強(qiáng),對不需要加密的數(shù)據(jù)進(jìn)行了過濾(如命令分組、事件分組),所以它的日常連接次數(shù)可達(dá)到50次;而傳統(tǒng)藍(lán)牙連接次數(shù)在5次以內(nèi)。ULP藍(lán)牙加密方案采用低成本的可編程邏輯器件和現(xiàn)成可用的高級加密處理的智力產(chǎn)權(quán)產(chǎn)品實(shí)現(xiàn),降低了系統(tǒng)的成本。
參考文獻(xiàn)
[1] HEYDON R. ULP藍(lán)牙開啟全新無線應(yīng)用[J]. 電子設(shè)計(jì)應(yīng)用,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] 金純,許光辰.藍(lán)牙技術(shù)[M].北京:電子工業(yè)出版社,2001.
[6] 榮新華,楊壽保.藍(lán)牙安全體系結(jié)構(gòu)研究及其在雙向RKE系統(tǒng)中的應(yīng)用[J].小型計(jì)算機(jī)系統(tǒng),2003,24(8):
1451-1454.
[7]  劉漢華,吳銳,全景才.藍(lán)牙安全機(jī)制[J].電子質(zhì)量,2001(6):25-28.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。