??? 摘 要: 重點(diǎn)分析了藍(lán)牙的信息安全機(jī)制" title="安全機(jī)制">安全機(jī)制,對(duì)其各部分的算法及實(shí)現(xiàn)步驟進(jìn)行了詳細(xì)討論,。并對(duì)現(xiàn)有藍(lán)牙規(guī)范安全性做了一定的評(píng)估,,根據(jù)其不足提出了由DES算法構(gòu)建的一種新的安全機(jī)制,,能夠滿(mǎn)足安全性要求較高的藍(lán)牙應(yīng)用,。
??? 關(guān)鍵詞: 藍(lán)牙? 密鑰? DES算法? 安全機(jī)制
?
??? 藍(lán)牙作為一種新興的短距離無(wú)線通信技術(shù)已經(jīng)在各個(gè)領(lǐng)域得到廣泛應(yīng)用,,它提供低成本,、低功耗,、近距離的無(wú)線通信,,構(gòu)成固定與移動(dòng)設(shè)備通信環(huán)境中的個(gè)人網(wǎng)絡(luò),,使得近距離內(nèi)各種信息設(shè)備能夠?qū)崿F(xiàn)無(wú)縫資源共享。
??? 由于藍(lán)牙通信標(biāo)準(zhǔn)是以無(wú)線電波作為媒介,,第三方" title="第三方">第三方可能輕易截獲信息,,所以藍(lán)牙技術(shù)必須采取一定的安全保護(hù)機(jī)制,尤其在電子交易應(yīng)用時(shí),。為了提供使用的安全性和信息的可信度,,系統(tǒng)必須在應(yīng)用層和鏈路" title="鏈路">鏈路層提供安全措施,。
??? 本文重點(diǎn)討論了藍(lán)牙信息安全機(jī)制的構(gòu)成原理及相關(guān)算法,并指出其在安全性方面存在的不足與問(wèn)題,。因?yàn)閷?duì)于大多數(shù)需要將保密放在首位來(lái)考慮的應(yīng)用來(lái)說(shuō),,藍(lán)牙現(xiàn)行標(biāo)準(zhǔn)所提供的數(shù)據(jù)安全性是不夠的。藍(lán)牙現(xiàn)行規(guī)范采用的128位密鑰長(zhǎng)度的序列的加密在某些情況下可以被破解,。本文同時(shí)提出了一種藍(lán)牙安全機(jī)制的改進(jìn)方案,,即采用DES加密體制構(gòu)建強(qiáng)健的加鑰算法,能夠在計(jì)算上證明此加密算法是安全可靠的,。
1 藍(lán)牙的安全機(jī)制
??? 藍(lán)牙采取的安全機(jī)制適用于對(duì)等通信情況,,即雙方以相同方式實(shí)現(xiàn)認(rèn)證與加密規(guī)程。鏈路層使用4個(gè)實(shí)體提供安全性:一個(gè)公開(kāi)的藍(lán)牙設(shè)備地址,,長(zhǎng)度為48bit,;認(rèn)證密鑰,長(zhǎng)度為128bit,;加密密鑰,,長(zhǎng)度為8~128bit;隨機(jī)數(shù)" title="隨機(jī)數(shù)">隨機(jī)數(shù),,長(zhǎng)度為128bit,。以下重點(diǎn)討論藍(lán)牙安全機(jī)制的組成及相關(guān)算法。
1.1 隨機(jī)數(shù)發(fā)生器
??? 隨機(jī)數(shù)發(fā)生器在藍(lán)牙標(biāo)準(zhǔn)" title="藍(lán)牙標(biāo)準(zhǔn)">藍(lán)牙標(biāo)準(zhǔn)中有重要應(yīng)用,,例如在生成認(rèn)證密鑰和加密密鑰中以及查詢(xún)-應(yīng)答方案中等,。產(chǎn)生隨機(jī)數(shù)的理想方法是使用具有隨機(jī)物理特性的真實(shí)隨機(jī)數(shù)發(fā)生器,例如某些電子器件的熱噪聲等,,但是在實(shí)際應(yīng)用中通常利用基于軟件實(shí)現(xiàn)的偽隨機(jī)數(shù)發(fā)生器,。藍(lán)牙系統(tǒng)對(duì)于隨機(jī)數(shù)的要求是“隨機(jī)生成”和“非重復(fù)性”?!半S機(jī)生成”是指不可能以明顯大于零的概率(對(duì)于長(zhǎng)度為L(zhǎng)位的藍(lán)牙加密密鑰,,概率大于1/2L)估計(jì)出隨機(jī)數(shù)值。
??? 目前在眾多類(lèi)型的偽隨機(jī)數(shù)發(fā)生器中,,線性同余發(fā)生器(Linear Congruential Generator)被最廣泛地研究與使用,。其表達(dá)式為:
??? ???
??? 式中α和c為常量,m為模數(shù),,均為正整數(shù),。αXn+c對(duì)m作模運(yùn)算后得到Xn+1。開(kāi)始時(shí)以某種方式給出一個(gè)種子數(shù)X0,;然后使用前一個(gè)隨機(jī)整數(shù)Xn生成下一個(gè)隨機(jī)整數(shù)Xn+1,,由此產(chǎn)生整數(shù)隨機(jī)數(shù)列{Xn}。
1.2? 密鑰管理
??? 藍(lán)牙單元密鑰長(zhǎng)度不能由單元制造者預(yù)置,,不能由用戶(hù)設(shè)置,。藍(lán)牙基帶標(biāo)準(zhǔn)規(guī)定不接收由高層軟件給出的加密密鑰以防止使用者完全控制密鑰長(zhǎng)度,。
1.2.1 密鑰類(lèi)型
??? 鏈路密鑰是一個(gè)128位隨機(jī)數(shù),為通信雙方或多方共享的臨時(shí)性或半永久性密鑰,。半永久性鏈路密鑰可以用于共享鏈路單元之間的幾個(gè)相繼認(rèn)證過(guò)程中,。臨時(shí)密鑰的典型應(yīng)用是:在點(diǎn)對(duì)多點(diǎn)通信情況下,同一信息需要安全地發(fā)往多個(gè)接收端,,這時(shí)采用主單元密鑰取代當(dāng)前鏈路密鑰,。藍(lán)牙標(biāo)準(zhǔn)定義了四種鏈路密鑰:①聯(lián)合密鑰KAB;②單元密鑰KA,;③臨時(shí)密鑰Kmaster,;④初始化密鑰Kinit。此外還定義了加密密鑰KC,,由當(dāng)前鏈路密鑰生成。對(duì)藍(lán)牙單元來(lái)說(shuō),,單元密鑰KA在單元A中生成,,依賴(lài)于該單元,很少改變,。聯(lián)合密鑰KAB由單元A,、B方共同生成。臨時(shí)密鑰Kmaster僅在當(dāng)前會(huì)話(huà)中使用,,也稱(chēng)主單元密鑰,。初始化密鑰Kinit是藍(lán)牙初始化過(guò)程中使用的鏈路密鑰。該密鑰由一個(gè)隨機(jī)數(shù),、一個(gè)通常為十進(jìn)制的PIN碼以及發(fā)起單元的藍(lán)牙設(shè)備地址BD_ADDR生成,。PIN碼可由用戶(hù)選擇也可以是隨藍(lán)牙一起提供的固定數(shù)。目前大多數(shù)應(yīng)用中PIN碼為4位的10進(jìn)制數(shù),,無(wú)法提供較高的安全性,。藍(lán)牙基帶標(biāo)準(zhǔn)要求PIN碼長(zhǎng)度為1~16位,因此建議盡量使用較長(zhǎng)的PIN碼以增強(qiáng)安全性,。
1.2.2? 密鑰生成與初始化
??? 每一對(duì)要實(shí)現(xiàn)認(rèn)證與加密的藍(lán)牙單元都要執(zhí)行初始化過(guò)程,,其過(guò)程由以下幾部分組成:
??? (1)生成初始化密鑰Kinit:為初始化過(guò)程中臨時(shí)使用的鏈路密鑰。該密鑰由E22算法及相關(guān)參數(shù)生成,,其生成原理圖見(jiàn)圖1,。E22輸出的128位初始化密鑰Kinit用于鏈路密鑰的交換分配過(guò)程。如果申請(qǐng)者與證實(shí)者沒(méi)有交換過(guò)鏈路密鑰,,則Kinit用于認(rèn)證過(guò)程,,否則不再使用。該過(guò)程必須保證能夠抵御一定的攻擊,,例如攻擊者使用大量的假藍(lán)牙地址BD_ADDR來(lái)測(cè)試大量PIN等,,如果設(shè)備地址固定則每次測(cè)試PIN碼等待間隔應(yīng)按指數(shù)增加,。
??? (2)認(rèn)證:如果兩個(gè)單元沒(méi)有發(fā)生過(guò)通信聯(lián)系,則使用初始化密鑰作為鏈路密鑰,。每次執(zhí)行認(rèn)證規(guī)程,,均發(fā)布新隨機(jī)參數(shù)AU_RANDA。在相互認(rèn)證中,,首先在一個(gè)方向執(zhí)行認(rèn)證規(guī)程,,成功后再反向執(zhí)行認(rèn)證。認(rèn)證成功將得到一個(gè)輔助參數(shù)ACO,,即認(rèn)證加密偏移量,。它將用于生成加密密鑰。
??? (3)生成單元密鑰:?jiǎn)卧荑€在藍(lán)牙單元首次運(yùn)行時(shí)生成,,根據(jù)E21算法生成并幾乎不改變,。初始化時(shí),通信雙方通常選用一個(gè)內(nèi)存容量較少的單元中的密鑰作為鏈路密鑰,。
??? (4)生成聯(lián)合密鑰:聯(lián)合密鑰是分別在A單元與B單元中生成的兩個(gè)數(shù)字的組合,。生成過(guò)程是:每個(gè)單元生成隨機(jī)數(shù)LK_RANDA與LK_RANDB,采用E21算法與各自的隨機(jī)數(shù),、藍(lán)牙地址分別生成另一個(gè)隨機(jī)數(shù)LK_KA與LK_KB,,并通過(guò)其他操作后兩個(gè)單元得出聯(lián)合密鑰。然后開(kāi)始互相認(rèn)證過(guò)程以確認(rèn)交互過(guò)程成功,。聯(lián)合密鑰交換分配成功后將放棄使用原鏈路密鑰,。
??? (5)生成加密密鑰:加密密鑰KC根據(jù)E3算法,由當(dāng)前鏈路密鑰,、96bit“加密偏移數(shù)”COF和一個(gè)128bit隨機(jī)數(shù)導(dǎo)出,。
??? (6)點(diǎn)對(duì)多點(diǎn)配置情況:實(shí)際上,主單元通知幾個(gè)從單元使用一個(gè)公共鏈路密鑰廣播加密消息,,在多數(shù)應(yīng)用中這個(gè)公共鏈路密鑰是臨時(shí)密鑰,,記為Kmaster。Kmaster被從單元接收后便可用它替代原鏈路密鑰,。Kmaster的產(chǎn)生過(guò)程為:首先由2個(gè)128bit的隨機(jī)數(shù)RAND1與RAND2生成新鏈路密鑰Kmaster:Kmaster=E22(RAND1,RAND2,16),。然后將第3個(gè)隨機(jī)數(shù)RAN0發(fā)往從單元,主,、從單元根據(jù)E22,、當(dāng)前鏈路密鑰及RAND計(jì)算出128bit擾亂碼overlay,主單元將overlay與新鏈路密鑰按位“異或”結(jié)果發(fā)送給從單元,,再計(jì)算出Kmaster,。在后面的認(rèn)證過(guò)程中計(jì)算出一個(gè)新ACO值。
1.3 加密規(guī)程
??? 對(duì)有效載荷加密通過(guò)流密碼算法實(shí)現(xiàn),流密碼與有效載荷同步,,加密原理圖如圖2所示,。流密碼系統(tǒng)由三部分組成:執(zhí)行初始化、生成密鑰流比特,、執(zhí)行加密或解密,。有效載荷密鑰生成器將輸入比特流以恰當(dāng)順序進(jìn)行組合并移入密鑰流生成器使用的4個(gè)線性反饋移位寄存器LFSR。第二部分是主要部分,,密鑰流比特根據(jù)Massey與Rueppel提出的方法生成,,該方法經(jīng)過(guò)一定的分析與研究,證明具有較高的加密性能,,但此法可能受到相關(guān)攻擊,,其改進(jìn)方法在本文后面詳細(xì)描述。
?
1.3.1 商定加密密鑰長(zhǎng)度與加密模式
??? 實(shí)現(xiàn)基帶標(biāo)準(zhǔn)的藍(lán)牙設(shè)備需要定義最大允許密鑰字節(jié)長(zhǎng)度Lmax,,1≤Lmax≤16,。在生成加密密鑰前,有關(guān)單元必須商定密鑰實(shí)際長(zhǎng)度,。主單元將建議值發(fā)送給從單元,。如果
并且從單元支持建議值,從單元對(duì)此給予確認(rèn),,
成為本鏈路加密密鑰長(zhǎng)度值。如果不滿(mǎn)足上述條件,,從單元將向主單元發(fā)送新的建議值
<
,,主單元對(duì)此建議評(píng)估。重復(fù)此規(guī)程直至達(dá)成協(xié)議或一方放棄商談,。
1.3.2 加密算法
??? 加密規(guī)程使用流密碼加密,。加密系統(tǒng)使用線性反饋移位寄存器(LFSRS),寄存器系統(tǒng)輸出由具有16狀態(tài)的有限狀態(tài)機(jī)進(jìn)行組合,狀態(tài)機(jī)輸出或是密鑰流序列,,或是初始化階段的隨機(jī)初始值,。加密算法需要提供加密密鑰、48bit藍(lán)牙地址,、主單元時(shí)鐘比特與128bit隨機(jī)數(shù)RAND,,加密算法原理如圖3所示。
?
??? 其中,,有4個(gè)LFSR(LFSR1,,…,LFSR4),,比特長(zhǎng)度分別為L(zhǎng)1=25,,L2=31,L3=33,L4=39,,反饋多項(xiàng)式(抽頭多項(xiàng)式,,特征多項(xiàng)式)參見(jiàn)表1。4個(gè)寄存器長(zhǎng)度之和是128bit,。
?
??? 這些多項(xiàng)式都是本原多項(xiàng)式,,漢明重量都為5,可以兼顧生成序列具有良好的統(tǒng)計(jì)特性與減少硬件實(shí)現(xiàn)所需要的異或門(mén)數(shù)兩方面的要求,。
??? 式中,,T1[.]與T2[.]是GF(4)上兩個(gè)不同的線性雙射。
??? 密鑰流生成器工作前需要為4個(gè)LFSR(總共128bit)裝載初始值并且確定C0與C-14bit值,,這些132bit初始值使用密鑰流生成器由規(guī)定的輸入量導(dǎo)出,,輸入量分別為密鑰KC、48bit藍(lán)牙地址和26 bit主單元時(shí)鐘CLK26-1,。加密算法初始化過(guò)程:(1)由128bit加密密鑰Kc生成有效加密密鑰,,記為Kc′,令L(1≤L≤16)為用8bit組數(shù)目表示的有效密鑰長(zhǎng)度,,則:Kc′(x)=g2(L)(x)(KC(x)modg1(L)(x)),。(2)將Kc′、藍(lán)牙地址,、時(shí)鐘以及6bit常數(shù)111001移入LFSR,。加密算法初始化完成后,從加法組合器輸出密鑰流用于加密/解密,。
1.3.2 認(rèn)證
??? 藍(lán)牙技術(shù)認(rèn)證實(shí)體使用所謂查驗(yàn)-應(yīng)答方案,。通過(guò)“兩步”協(xié)議,申請(qǐng)者是否知道秘密密鑰使用對(duì)稱(chēng)密鑰進(jìn)行證實(shí),。這意味著,,一個(gè)正確的申請(qǐng)者/證實(shí)者對(duì),在查驗(yàn)-應(yīng)答方案中將共享相同密鑰KC,,證實(shí)者對(duì)于申請(qǐng)者是否能夠認(rèn)證算法K1認(rèn)證隨機(jī)數(shù)AU_RANDA,,并返回認(rèn)證結(jié)果SERS,進(jìn)行查驗(yàn),。其認(rèn)證及加密密鑰生成函數(shù)可以參考相關(guān)資料,,此處略。
2? 藍(lán)牙安全機(jī)制的方案改進(jìn)
??? 現(xiàn)有藍(lán)牙安全機(jī)制主要存在兩個(gè)主要問(wèn)題,。一個(gè)是單元密鑰的使用問(wèn)題:在鑒權(quán)和加密過(guò)程中,,由于單元密鑰沒(méi)有改變,第三方利用此密鑰來(lái)竊取信息,。128位密鑰長(zhǎng)度的E0序列加密在某些情況下可通過(guò)不是很復(fù)雜的方法破解,。另一個(gè)是藍(lán)牙單元提供的個(gè)人識(shí)別碼(PIN碼)的不安全問(wèn)題:由于大多數(shù)應(yīng)用中PIN碼是由4位十進(jìn)制數(shù)組成,所以采用窮舉法很容易攻擊成功。
??? 克服這些安全性問(wèn)題的解決方法除了增加PIN碼長(zhǎng)度外,,關(guān)鍵是要采取更為強(qiáng)健的加密算法,,如用數(shù)字加密標(biāo)準(zhǔn)DES代替序列加密算法。DES是一種塊加密方法,,加密過(guò)程是針對(duì)一個(gè)個(gè)數(shù)據(jù)塊進(jìn)行的,。在DES算法中,原始信息被分為64位的固定長(zhǎng)度數(shù)據(jù)塊,,然后利用56位的加密密鑰通過(guò)置換和組合方法生成64位的加密信息,。與藍(lán)牙序列的加密算法不同,數(shù)學(xué)上可以證明塊加密算法是完全安全的,。DES塊密碼是高度隨機(jī)和非線性的,,其產(chǎn)生的密文和明文與密鑰的每一位都相關(guān)。DES的可用加密密鑰數(shù)量非常龐大,,應(yīng)用于每一位明文信息的密鑰都是從這個(gè)龐大數(shù)量的密鑰中隨機(jī)產(chǎn)生的,。DES算法已經(jīng)被廣泛采用并認(rèn)為非常可靠,。采用DES加密算法的藍(lán)牙技術(shù)可以將藍(lán)牙應(yīng)用到安全性較高的應(yīng)用中去,,例如電子金融交易、ATM等,。
2.1? DES算法
??? 1977年美國(guó)國(guó)家標(biāo)準(zhǔn)局公布了聯(lián)邦數(shù)據(jù)加密標(biāo)準(zhǔn)DES,。由于DES算法保密性強(qiáng),迄今尚無(wú)切實(shí)可行的破譯方法,,所以DES得到了廣泛地應(yīng)用,。DES是一種分組密碼體制,它將明文按64位一組分成若干組,,密鑰長(zhǎng)為56位。其基本思想是采用變換的組合與迭代,,將明文中的各組變?yōu)槊芪慕M,。
??? 在DES系統(tǒng)中,乘積變換是加密過(guò)程的核心,,連續(xù)進(jìn)行16次操作,,每次更新一組密鑰。移位變換B是移位變換A的逆變換,。圖4為DES體制加密流程,,圖的右側(cè)表示DES系統(tǒng)的密鑰生成過(guò)程。初始密鑰是一串64bit的隨機(jī)序列,。經(jīng)過(guò)反復(fù)移位變換,,產(chǎn)生16組子密鑰(K1~K16),每組子密鑰用于一次乘積變換。所謂初始重排(IP)就是打亂輸入分組內(nèi)比特原有排列次序,,重新排列,,排列方式是固定的。
?
??? DES的一次乘積變換運(yùn)算步驟為:(1)把64bit輸入碼分成左右兩組,,每組32位比特,,分別用Li-1和Ri-1代表。其中i代表第i次乘積變換,,i=1~16,。(2)把該次乘積變換輸入分組的右組32位比特變?yōu)檩敵龇纸M的左組32位比特,即Li=Ri-1,。(3)輸入分組右組32位比特經(jīng)過(guò)擴(kuò)展操作變?yōu)?8位比特碼組,。(4)擴(kuò)展變換輸出的48位比特與子密鑰Ki的48位比特按模2相加,輸出的48位比特分為8組,,每組6位,。(5)把每組6位比特進(jìn)行密表(S-盒)替代,產(chǎn)生4位比特,。輸入的6位比特的第1,、6兩位決定密表內(nèi)所要選擇的行數(shù),其余4位決定密表內(nèi)的列數(shù),。(6)把8組密表輸出合并為32位比特,,然后與本次乘積變換輸入左組Ci-1按位模2相加,即可得到第i次乘積變換的右32位輸出Ri,。
2.2? DES算法的特點(diǎn)
??? DES算法具有以下特點(diǎn):
??? (1)DES的保密性?xún)H僅取決于對(duì)密鑰的保密,,算法公開(kāi)。
??? (2)在目前水平下,,不知道密鑰而在一定的時(shí)間內(nèi)要破譯(即解析出密鑰K或明文)是不可能的,,至少要建立256或264個(gè)項(xiàng)的表,這是現(xiàn)有資源無(wú)法實(shí)現(xiàn)的,。
??? (3)由于“雪崩效應(yīng)”,,無(wú)法分而破之,一位的變化將引起若干位同時(shí)變化,。
??? 綜上所述,,由DES算法構(gòu)建的藍(lán)牙安全機(jī)制是可靠的,采用窮舉方式攻擊是不現(xiàn)實(shí)的,。假設(shè)有一臺(tái)每秒完成一次DES加密的機(jī)器要用將近1000年的時(shí)間才能破譯這個(gè)密碼,。
??? 以上算法能夠保持?jǐn)?shù)據(jù)加密過(guò)程中與藍(lán)牙標(biāo)準(zhǔn)所需參數(shù)的一致性,它與藍(lán)牙算法產(chǎn)生的單元密鑰在時(shí)間實(shí)現(xiàn)上同處一個(gè)數(shù)量級(jí)別,,符合藍(lán)牙規(guī)范要求,。
??? 本文首先重點(diǎn)討論了藍(lán)牙信息安全的機(jī)制構(gòu)成,,對(duì)其各部分的算法及實(shí)現(xiàn)步驟進(jìn)行了詳細(xì)說(shuō)明。然后對(duì)現(xiàn)有藍(lán)牙規(guī)范安全性做了一定的評(píng)估,,并根據(jù)其不足提出了由DES算法構(gòu)建新的安全方案,,能夠給藍(lán)牙在安全性要求較高的應(yīng)用上提供一個(gè)安全設(shè)計(jì)的改進(jìn)參考。
參考文獻(xiàn)
1 The Bluetooth Special Interest Group(SIG). Bluetooth Specification Core V1-1. 2000,; http://www.bluetooth.org
2 Haartsen J. The Bluetooth Radio system [J]. IEEE Personal?Communications. 2000,; 7(1): 28~36
3 Gareth Barlow. Bluetooth security [C]. Network and internetwork security report, April, 2000:10~17.
4 Bellovin S M, Merritt M. Encrypted key exchange: passwordbased protocols secure against dictionary attacks [C]. Proceedings of the 1992 IEEE computer society conference on?research in security and privacy. 1992:72~84