文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2010)10-0143-04
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è)備件簡(jiǎn)單的數(shù)據(jù)傳輸,。
Wibree作為一項(xiàng)耗電量極低的藍(lán)牙技術(shù)成為藍(lán)牙規(guī)格的一部分,,是一種新的低功率無(wú)線(xiàn)技術(shù), 為業(yè)界開(kāi)拓了新的市場(chǎng)機(jī)會(huì)及創(chuàng)新空間,。由于采用無(wú)線(xiàn)方式進(jìn)行通信,,因此,ULP藍(lán)牙與傳統(tǒng)藍(lán)牙一樣面臨傳輸數(shù)據(jù)被截獲的危險(xiǎn),。所以如何保證ULP藍(lán)牙運(yùn)用的安全,,是ULP藍(lán)牙技術(shù)設(shè)計(jì)的一個(gè)核心問(wèn)題。
本文基于Bluetooth SIG的技術(shù)草案[2],,討論了ULP藍(lán)牙技術(shù)的安全結(jié)構(gòu),,介紹了ULP藍(lán)牙的地址生成及認(rèn)證、密鑰生成和匹配原理的相關(guān)過(guò)程,。
1 ULP藍(lán)牙的安全構(gòu)架
安全性是ULP藍(lán)牙協(xié)議中必不可少的一部分,,它提供使用保護(hù)和信息保密[3]。 如圖1所示,,ULP藍(lán)牙系統(tǒng)有三個(gè)邏輯組成部分: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個(gè)物理信道,,其中包括3個(gè)廣播信道和37個(gè)數(shù)據(jù)信道,。
結(jié)構(gòu)中的鏈路層有兩種工作狀態(tài):空閑狀態(tài)和連接狀態(tài),其鏈路層只能工作在一種工作狀態(tài)下,。同時(shí),,ULP藍(lán)牙設(shè)備還有五種工作模式:廣播模式、掃描模式,、申請(qǐng)模式,、主設(shè)備及從設(shè)備。
ULP L2CAP(Logic Link Control and Adaptation Protocol)處于鏈路控制協(xié)議之上,,屬于數(shù)據(jù)鏈路層,。L2CAP對(duì)上層協(xié)議可以提供面向連接和無(wú)連接數(shù)據(jù)服務(wù),。L2CAP允許高層協(xié)議、應(yīng)用發(fā)送和接收最長(zhǎng)64 KB數(shù)據(jù)包,。
鏈路層中的連接加密過(guò)程由ULP主機(jī)負(fù)責(zé),,其中包含一個(gè)由鏈路層獨(dú)立負(fù)責(zé)的加密子進(jìn)程。加密過(guò)程由HCI_Setup_Encryption命令初始化,。使用這個(gè)命令后,,主設(shè)備的ULP主機(jī)就表明了鏈路層連接了新的加密模式。只要有這樣一個(gè)來(lái)自于ULP主機(jī)的命令,,一個(gè)SEC_EMPTY_REQ數(shù)據(jù)包就會(huì)在鏈路層的連接上被傳送,。
在HCI_Setup_Encryption命令之后, HCI_Command_Completed命令所表示的過(guò)程完成之前,,不允許有來(lái)自于ULP主機(jī)的任何數(shù)據(jù)包,。
2 ULP藍(lán)牙認(rèn)證及密鑰生成過(guò)程
2.1 ULP藍(lán)牙地址
ULP藍(lán)牙使用兩種類(lèi)型的地址[4]:設(shè)備地址和存取地址,設(shè)備地址細(xì)分為公有和私有設(shè)備地址,。每個(gè)ULP設(shè)備應(yīng)該分配一個(gè)固定48 bit的ULP藍(lán)牙公共設(shè)備地址,,而私有設(shè)備設(shè)置的地址是可選的。ULP設(shè)備只有在證明設(shè)備可靠性后,,才顯示其私有地址,;每個(gè)鏈路層的連接有一個(gè)偽隨機(jī)32 bit的存取地址,由連接中的申請(qǐng)者產(chǎn)生,每個(gè)鏈路層連接不同的存取地址,。ULP藍(lán)牙系統(tǒng)中,,只能有一個(gè)數(shù)據(jù)包格式能在廣播通道數(shù)據(jù)包和數(shù)據(jù)通道數(shù)據(jù)包中同時(shí)使用。如圖2所示,每個(gè)數(shù)據(jù)包含4個(gè)實(shí)體:標(biāo)頭,、同步字,、PDU和CRC。廣播數(shù)據(jù)包中的同步字是固定的,,數(shù)據(jù)通道中的數(shù)據(jù)包同步字是鏈路層連接的存取地址,。
2.2 廣播工作模式中認(rèn)證
ULP系統(tǒng)中,每一臺(tái)設(shè)備會(huì)產(chǎn)生并保持兩個(gè)隨機(jī)生成的密鑰:鑒權(quán)(identity root)和加密(encryption root),。鑒權(quán)用于連接中生成私有地址和區(qū)分標(biāo)識(shí)符密鑰連接中的標(biāo)識(shí)符,;加密用于確立密鑰標(biāo)識(shí)符的安全。在任何加密連接中,,廣播創(chuàng)建密鑰作為會(huì)話(huà)密鑰的基礎(chǔ),。集合密鑰是在某些配對(duì)選擇中創(chuàng)建,這些密鑰只是用作保護(hù)(未來(lái))廣播中密鑰的傳遞,。
加密模式中,,通過(guò)廣播方式把創(chuàng)建的密鑰分派給需要連接的所有設(shè)備或?qū)嶓w,鑒權(quán)可用來(lái)建立私有地址,。因?yàn)殍b權(quán)每次只支持一個(gè)身份,,所以許多申請(qǐng)者將獲得同樣的鑒權(quán),。廣播向設(shè)備提供標(biāo)識(shí)符的加密(伴隨16 bit標(biāo)識(shí)符),在加密模式中該設(shè)備支持連接的設(shè)備,。規(guī)范的基本概念有唯一的標(biāo)識(shí)符密鑰,被稱(chēng)為“長(zhǎng)期密鑰”(long term key),這個(gè)密鑰分配給每個(gè)申請(qǐng)者,。此外,加密規(guī)則僅僅是推薦使用并且在廣播之外,。長(zhǎng)期密鑰是不可見(jiàn)的,,原則上能使用任何映射在16 bit~128 bit之間的密鑰。加密標(biāo)識(shí)符密鑰有以下幾種: 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)生一個(gè)初始隨機(jī)向量(IRV),,該向量由10 B的新隨機(jī)數(shù)組成,,也是鏈路層(LL)傳輸給申請(qǐng)者的第一個(gè)可能的數(shù)據(jù)包。廣播設(shè)備初始化時(shí),,到達(dá)連接請(qǐng)求,。
連接請(qǐng)求包括SEC字段(表明是否是加密請(qǐng)求)和PI字段(表明申請(qǐng)者連接一個(gè)匹配認(rèn)證)。SEC=1,,表示有2 B的加密區(qū)分標(biāo)識(shí)符(EDIV)和申請(qǐng)者6 B的隨機(jī)地址,。
如圖3所示,在SEC=1的條件下,ULP藍(lán)牙廣播模式下的認(rèn)證步驟如下:
(1)解密區(qū)分標(biāo)識(shí)符隱藏密鑰,。發(fā)送HCI_Set_key(0x00,DKH)命令到鏈路層,,返回HCI_Command_Complete(),并再發(fā)送加密請(qǐng)求命令HCI_encrypt(addmaster),PAL返回請(qǐng)求完成命令HCI_Command_Complete(),。
由EDHK計(jì)算DIV:
DIV=EDHK(addmaster[0…15]?茌DIVhidden)
此具體過(guò)程是:
由Y=EDHK
(IRA(初始化隨機(jī)地址),
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
DIV= {Y0, Y1} XOR {EDIV0, EDIV1}得出,。或者在PI=1的條件下,,即匹配連接中有:
Y=EPDHK
(IRA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
得出DIV={Y0,Y1}XOR{EDIV0, EDIV1}
(2)創(chuàng)建長(zhǎng)期密鑰,。發(fā)送設(shè)置加密命令到鏈路層HCI_Set_key(0x00,ER),返回完成命令HCI_Command_Complete(),再發(fā)送請(qǐng)求加密長(zhǎng)期密鑰命令HCI_encrypt(DIV),返回完成創(chuàng)建長(zhǎng)期密鑰命令HCI_Command_Complete(LTK),。
按以下公式重新創(chuàng)建長(zhǎ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)建會(huì)話(huà)密鑰命令,。HCI_Set_key(0x00,LTK),返回完成命令HCI_Command_Complete(),,再發(fā)送請(qǐng)求加密長(zhǎng)期密鑰命令HCI_Encrypt(addmaster/IRV),,返回完成創(chuàng)建長(zhǎng)期密鑰命令HCI_Command_Complete(SK)。
SK=ELTK(addmaster/IRV)
(4) 鏈路層設(shè)置會(huì)話(huà)密鑰和初始值,。初始值為
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(),。生成會(huì)話(huà)密鑰SK和IV,并在鏈路層設(shè)置(廣播地址AA={A0,A1,…,A5}),。
2.3申請(qǐng)模式中加密會(huì)話(huà)設(shè)置
申請(qǐng)者瀏覽廣播,,找到相匹配的廣播地址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)識(shí)符(diverfier)密鑰,。發(fā)送設(shè)置加密命令到鏈路層HCI_Set_key(0x00,DHR),,返回請(qǐng)求完成命令HCI_Command_Complete(),再發(fā)送加密請(qǐng)求命令HCI_Encrypt(addmaster),,返回請(qǐng)求完成命令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}
最后申請(qǐng)者請(qǐng)求一個(gè)連接。
?、偃绻?qǐng)求加密連接,,則SEC 字段一直等于1;如果在申請(qǐng)者和廣播設(shè)備間,擴(kuò)展匹配繼續(xù)進(jìn)行,,即PI字段設(shè)置為1,。
②2 B的加密區(qū)分標(biāo)識(shí)符密鑰(EDIV),6 B的申請(qǐng)者隨機(jī)地址(IRA),。
?、郛?dāng)連接已經(jīng)建立時(shí),申請(qǐng)者從廣播中得到一個(gè)10 B的隨機(jī)向量(IRV)作為層協(xié)議數(shù)據(jù)單元PDU(類(lèi)型0xFD),,然后從長(zhǎng)期密鑰中,,申請(qǐng)者創(chuàng)建會(huì)話(huà)密鑰SK和設(shè)置初始值(IV)。
創(chuàng)建會(huì)話(huà)密鑰SK:發(fā)送設(shè)置長(zhǎng)期密鑰命令HCI_Set_
key(0x00,LTK)到鏈路層, 返回完成命令HCI_Command_
Complete(),,再發(fā)送加密請(qǐng)求命令HCI_encrypt(addmaster/IRV),返回完成創(chuàng)建會(huì)話(huà)密鑰命令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操作中,申請(qǐng)者將初始化“連接模式變化”,。
鏈路層設(shè)置會(huì)話(huà)密鑰和初始值:分別發(fā)送命令HCI_Set_key(0x01,SK)和HCI_Set_IV(addr|addr[0…23])到鏈路層設(shè)置,,返回完成設(shè)置命令HCI_Command_Complete(),。
2.4密鑰更新
安全連接建立之后,不支持密鑰更新或者重建安全參數(shù),。唯一的例外就是匹配程序,,在匹配的第一階段后,匹配程序中的會(huì)話(huà)加密密鑰和狀態(tài)發(fā)生改變,。
3 匹配和密鑰交換
本文的匹配算法有兩個(gè)擴(kuò)展模式,,在前n個(gè)連接中密鑰改變(如果攻擊者錯(cuò)過(guò)一個(gè)更新,安全性提高),。第一個(gè)擴(kuò)展模式尤其適合于移動(dòng)設(shè)備;第二擴(kuò)展模式是假定兩個(gè)設(shè)備有相同的地址,,通過(guò)干擾硬件攻擊者,提高密鑰的安全性,,該模式適用于家庭等固定環(huán)境,。
ULP藍(lán)牙的匹配分三個(gè)階段進(jìn)行,其流程如圖4所示。
第一階段,,成功匹配功能交換后,,開(kāi)始執(zhí)行第一階段操作。這一階段不受加密保護(hù),,連接中直接進(jìn)入擴(kuò)展的狀態(tài)(伴隨著PI 字段設(shè)置為連接請(qǐng)求和SEC 字段關(guān)閉),。
第二階段,在加密通道中執(zhí)行匹配,,受臨時(shí)密鑰或者第一階段的結(jié)果或是早期擴(kuò)展階段的保護(hù),。該階段的匹配可以直接輸入(PI字段設(shè)置為連接請(qǐng)求),在此保護(hù)通道中,下面之一被執(zhí)行:(1) 傳送長(zhǎng)期密鑰和認(rèn)證(從未來(lái)的廣播到未來(lái)的申請(qǐng)者),。(2) 傳送擴(kuò)展(臨時(shí))密鑰和認(rèn)證(從未來(lái)的廣播到未來(lái)的申請(qǐng)者),,在擴(kuò)展模式中,進(jìn)行有限的密鑰交換,。
第三階段,,第三階段與匹配無(wú)關(guān),是正常的會(huì)話(huà),,并且使用了在第二階段同樣的密鑰保護(hù),。注:廣泛的與這個(gè)密鑰通信可能會(huì)導(dǎo)致(取決于匹配機(jī)制)攻擊。攻擊長(zhǎng)期密鑰可能導(dǎo)致在第二階段中提供的長(zhǎng)期密鑰長(zhǎng)度少于128 bit,。第三階段提供方便和實(shí)用性的擴(kuò)展模式,,以及可能簡(jiǎn)單的設(shè)備。
總體層次規(guī)范定義了第三階段的用處,,如果沒(méi)有定義任何第三階段的用途,,匹配的設(shè)備將終止匹配會(huì)話(huà),用長(zhǎng)期密鑰建立新會(huì)話(huà)。
ULP藍(lán)牙系統(tǒng)本身提供的安全系統(tǒng)具有相當(dāng)?shù)陌踩匦訹5],。在ULP藍(lán)牙用于商業(yè)或軍事等方面時(shí),,現(xiàn)有的點(diǎn)對(duì)點(diǎn)的密鑰分配和認(rèn)證機(jī)制將無(wú)法滿(mǎn)足安全要求,因而采用AES加密算法是必需的,。與傳統(tǒng)藍(lán)牙相比,,ULP藍(lán)牙在安全上有以下特點(diǎn):
(1) 現(xiàn)有的藍(lán)牙認(rèn)證[6],主要是通過(guò)質(zhì)詢(xún)—響應(yīng)的方法進(jìn)行認(rèn)證,。ULP藍(lán)牙的認(rèn)證基本相同,,但是在ULP藍(lán)牙的認(rèn)證機(jī)制中,通過(guò)設(shè)置SEC和PI的值進(jìn)行不同的認(rèn)證。安全措施更明確,、簡(jiǎn)單,,易于實(shí)現(xiàn)。
(2) 藍(lán)牙加密使用E0加密算法[7],,缺點(diǎn)在于若一個(gè)偽隨機(jī)序列發(fā)生錯(cuò)誤,,便會(huì)使整個(gè)密文發(fā)生錯(cuò)誤,致使在解密過(guò)程中無(wú)法還原回明文,。藍(lán)牙E0流加密中用到的 LFSR易受到相關(guān)攻擊和分割解決攻擊,,且用軟件實(shí)現(xiàn)效率非常低。
ULP藍(lán)牙中使用AES加密模塊,。雖然傳輸速度有所降低,,但安全性更高。適合小器件設(shè)備,,如手表,、運(yùn)動(dòng)傳感器、醫(yī)療設(shè)備等,;傳統(tǒng)藍(lán)牙適用于傳輸大量數(shù)據(jù)的設(shè)備。ULP藍(lán)牙的加密的位置處于HCI 層,,在流量控制和重傳機(jī)制下,,可以避免多次加密無(wú)用的數(shù)據(jù)。針對(duì)性更強(qiáng),,對(duì)不需要加密的數(shù)據(jù)進(jìn)行了過(guò)濾(如命令分組,、事件分組),所以它的日常連接次數(shù)可達(dá)到50次;而傳統(tǒng)藍(lán)牙連接次數(shù)在5次以?xún)?nèi)。ULP藍(lán)牙加密方案采用低成本的可編程邏輯器件和現(xiàn)成可用的高級(jí)加密處理的智力產(chǎn)權(quán)產(chǎn)品實(shí)現(xiàn),,降低了系統(tǒng)的成本,。
參考文獻(xiàn)
[1] HEYDON R. ULP藍(lán)牙開(kāi)啟全新無(wú)線(xià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.