隨著計算機網(wǎng)絡和移動電話技術(shù)的迅猛發(fā)展,人們感到越來越迫切需要發(fā)展小范圍的無線數(shù)據(jù)與語音通信技術(shù)。于是愛立信、IBM、英特爾、諾基亞和東芝等公司在1998年聯(lián)合推出一項新的無線網(wǎng)絡技術(shù),即藍牙技術(shù)。藍牙技術(shù)可以解決小型移動設備間的無線互連問題,它的硬件市場非常廣闊,涵蓋了局域網(wǎng)中的各類數(shù)據(jù)及語音設備,如計算機、移動電話、小型個人數(shù)字助理(PDA)等。藍牙技術(shù)面向的是移動設備間的小范圍連接,從本質(zhì)上說它是一種代替電纜的技術(shù)。為了保證移動設備間數(shù)據(jù)傳輸?shù)陌踩,該技術(shù)持應用層和鏈路層的鑒權(quán)和加密,這也正是本文要討論的內(nèi)容。
一、藍牙應用協(xié)議棧
1999年12月1日,Bluetooth SIG(Special Interest Group)發(fā)布了藍牙標準的最新版:1.0B版。藍牙標準包括兩大部分:Core和Profiles。Core是藍牙的核心,它主要定義了藍牙的技術(shù)細節(jié),而Profiles部分則定義了在藍牙的各種應用中協(xié)議棧的組成。
藍牙標準主要定義的是底層協(xié)議,同時為保證和其它協(xié)議的兼容性,也定義了一些高層協(xié)議和相關接口。從ISO的OSI七層協(xié)議標準來看,藍牙標準主要定義的是物理層、鏈路層和網(wǎng)絡層的結(jié)構(gòu)。
1)射頻協(xié)議(RF/Radio Protocol):定義了藍牙發(fā)送器和接收器的各個參數(shù),包括發(fā)送器的調(diào)制特性,接收器的靈敏度、抗干擾性能、互調(diào)特性和接收信號強度指示等。
2)基帶/鏈路控制協(xié)議(Baseband/LC Protocol):定義了基帶部分協(xié)議和其它低層鏈路功能,是藍牙技術(shù)的核心。
3)鏈路管理協(xié)議(LMP):用于鏈路的建立、安全和控制,為此LMP定義了許多過程來完成不同的功能。
4)主機控制器接口(HCI:Host Controller Interface)協(xié)議:描述了主機控制接口功能上的標準,提供了一個基帶控制器和鏈路管理器(LM)得知硬件狀態(tài)和控制寄存器命令的接口,在藍牙中起著中間層的作用:向下給鏈路控制器協(xié)議和鏈路管理協(xié)議提供接口,提供一個訪問藍牙基帶的統(tǒng)一方法。HCI是在硬件和軟件都包含的部分。
5)邏輯蓮路控制和適配協(xié)議(L2CAP:Logical Link Control and Adaptation Protocol):支持高層協(xié)議復用、幀的組裝和拆分、傳送QoS信息。L2CAP提供面各連接和非連接兩種業(yè)務,允許高層最多達64kbit/s的數(shù)據(jù),以一種有限狀態(tài)機(FSM)的方式來進行控制,目前只支持異步無連接鏈路(ACL)。
6)服務發(fā)現(xiàn)協(xié)議(SDP:Service Discover Protocol):如何發(fā)現(xiàn)藍牙設備所提供服務的協(xié)議,使高層應用能夠得知可提供的服務。在兩個藍牙設備第一次通信時,需要通過SDP來了解對方能夠提供何種服務,并將自己可提供的服務通知對方。
7)高層協(xié)議:包括串口通信協(xié)議(RFCOMM)、電話控制協(xié)議(TCS)、對象交換協(xié)議(OBEX)、控制命令(AT-Command)、電子商務標準協(xié)議(vCard和vCalender)和PPP,IP,TCP,UDP等相關的Internet協(xié)議以及WAP協(xié)議。其中,串口通信協(xié)議是ETSI TS07.10標準的子集,并且加入了藍牙特有的部分;電話控制協(xié)議使用了一個以比特為基礎的協(xié)議,定義了在藍牙設備之間建立語音和數(shù)據(jù)呼叫的控制信令,對象交換協(xié)議提供了與IrDA協(xié)議系列相同的特性,并且使各種應用可以在IrDA協(xié)議棧和藍牙協(xié)議棧上使用。兩個藍牙設備必須具有相同的協(xié)議組成才能夠相互通信。例如要在藍牙實現(xiàn)WAP應用,則雙方都必須經(jīng)過基帶協(xié)議--L2CAP--RFCOMM--PPP---IP--UDP--WAP的路徑來實現(xiàn)。
二、藍牙系統(tǒng)安全性要求
由于藍牙系統(tǒng)簡單可靠,從而產(chǎn)生了各種不同的應用,例如電腦、鼠標、打印機、接入點、移動電話和話筒等都可以使用藍牙協(xié)議無線地連接在一起,進行語音和數(shù)據(jù)的交換。同時,還可以通過無線或有線的接入點(如PSTN、ISDN、LAN、XDSL)與外界相連。不同應用對各自的系統(tǒng)必然提出不同的要求,并且不是所有的系統(tǒng)都對安全性有很高的要求。
先介紹幾個概念:
1)藍牙設備地址(BD_ADDR):是一個對每個藍牙單元唯一的48位IEEE地址。
2)個人確認碼(PIN:Personal Identification Number):是由藍牙單元提供的1-16位(八進制)數(shù)字,可以固定或者由用戶選擇。一般來講,這個PIN碼是隨單元一起提供的一個固定數(shù)字。但當該單元有人機接口時,用戶可以任意選擇PIN的值,從而進入通信單元。藍牙基帶標準中要求PIN的值是可以改變的。
3)鑒權(quán)字:是長度為128位的數(shù)字,用于系統(tǒng)的鑒權(quán)。
4)加密字:長度8-128位,可以改變。這是因為不同的國家有許多不同的對加密算法的要求,同時也是各種不同應用的需要,還有利于算法和加密硬件系統(tǒng)的升級。
區(qū)分鑒權(quán)字和加密字的目的是在不降低鑒權(quán)過程作用的前提下使用更短的加密字。
雖然藍牙系統(tǒng)的跳頻機制對于來自系統(tǒng)內(nèi)部其它設備的偶然傳輸干擾起到了一定的保護作用,但是很顯然僅有這種保護是不夠的。它不能防止有人在兩個傳輸單元之間對數(shù)據(jù)的竊聽和偷取,尤其在無線傳輸數(shù)據(jù)時,竊取數(shù)據(jù)者可以輕松地屏蔽自己而不讓用戶發(fā)現(xiàn),因此藍牙系統(tǒng)需要加入相應的安全機制。在一般的系統(tǒng)中,通常對所傳輸?shù)臄?shù)據(jù)包進行加密,但僅有這種做法是不夠的。更重要的是在通信連接建立以前,確保通信單元的安全性。例如用戶相同時跟幾個用戶通信,就需要對這些用戶進行確認。因此,在藍牙系統(tǒng)中間時運用了鑒權(quán)和加密技術(shù)。
三、藍牙安全機制
1、字管理機制
藍牙鏈字是長度為128位的隨機數(shù),它是藍牙系統(tǒng)鑒權(quán)和加密的基礎。為了支持不同階段、模式的要求,藍牙系統(tǒng)在鏈路層上用了4種不同的字來保證系統(tǒng)的安全性。包括單元字KA組合字是KAB,臨時字Kmaster及初始化字Kinit。
單元字KA與組合字KAB僅產(chǎn)生方式不同,執(zhí)行的功能是完全相同的。也就是說,KAB是由兩個單元A,B共同產(chǎn)生的,而KA僅由一個單元A產(chǎn)生,因此KA在初始化階段產(chǎn)生后就基本不變了。系統(tǒng)的內(nèi)存比較小時通常選擇KA,而系統(tǒng)對穩(wěn)定性要求比較高時選擇KAB。
臨時字Kmaster只是臨時取代原始字。例如,當主機想與多個子機通信時主機將用同一個加密字,因此把它存放在臨時字中,以便于使用。
初始化字Kinit僅僅在初始化階段有效,也主是單元字KA,KAB產(chǎn)生的階段,它不僅僅是初始化階段的一個臨時字,其產(chǎn)生需要一個PIN。
半永久性的鏈接字在特定的時間內(nèi)被稱作當前鏈接字。當前鏈接字和其它鏈接字一樣,用于鑒權(quán)和加密過程。此外,還用到了加密字KC,加密字被LM的命令激活后將自動被改變。
另外,鑒權(quán)字和加密字在不同的階段執(zhí)行不同的功能。例如:在兩個單元沒有建立連接的階段和已經(jīng)建立連接的階段有很大的不同,前者必須首先產(chǎn)生加密字,而后者可以繼續(xù)使用上次通信的加密字。相應地不同的階段對字的管理是不一樣的。此外當主機想廣播消息,而不是一個一個地傳送消息時,需要特殊的字管理方法。正是藍牙系統(tǒng)有力的字管理機制,才使得系統(tǒng)具有很好的安全性,而且支持不同的應用模式。
2.鏈接字的產(chǎn)生
初始化字Kunit的值以申請者的藍牙設備地址、一個PIN碼、PIN碼的長度和一個隨機數(shù)作為參數(shù),通過E22
算法產(chǎn)生。而申請者相對校驗者而言是需要通過驗證的一方。因此,申請者需要正確的PIN碼和PIN碼的長度。一般來講,由HCI決定誰是申請者,誰是校驗者。
當PIN的長度少于16個八進制數(shù)時,可以通過填充藍牙設備地址的數(shù)據(jù)使其增大,因此如果循環(huán)使用E22可以使鏈接字的長度增長為128位。
初始化鏈接字Kint產(chǎn)生后,該單元將產(chǎn)生一個半永久字KA或KAB。如果產(chǎn)生的是一人KAB,則該單元將用一個隨機數(shù)LK_RAND周期性地加密藍牙設備地址,加密后的結(jié)果為LK_KA,而各自產(chǎn)生的LK_RAND與當前的鏈接字進行異或運算后,分別產(chǎn)生新值,永為CA和CA,然后互相交換,從而得到了對方的LK_RAND,并以對方的LK_RAND和藍牙設備地址作為參數(shù),用E21函數(shù)產(chǎn)生新值LK_KB的異或運算得到組合字KAB。當KAB產(chǎn)生后,首先單向鑒權(quán)一次,看KAB變?yōu)楫斍版溄幼,而丟棄原先的鏈接字K。E22的工作原理與E21類似。
3.藍牙單元鑒權(quán)
在鑒權(quán)過程中,LM決定誰是校驗者,誰是申請者。申請者和校驗者必須同時擁有一個共同的當前鏈接字。而這種口令-應答方式的鑒權(quán)實際上是申請者發(fā)送一個隨機數(shù)RAND,隨后校驗者用當前密鑰字、申請者的藍牙設備地址和RAND作為加密算法的參數(shù)得到新值,記為SRES’。申請者以同樣的參數(shù)、算法得到的新值記為SRES。然后,申請者將SRES傳送給校驗者,比較SRES’和SRES是否相等。如果相等,則鑒權(quán)通過;否則鑒權(quán)失敗。在間隔一定時間后系統(tǒng)重新鑒權(quán)。鑒權(quán)機制的安全性是相當高的。更保險的做法是采用雙向鑒權(quán),即一次鑒權(quán)成功后,調(diào)整申請者和校驗者的角色,再次鑒權(quán)。鑒權(quán)成功以后,產(chǎn)生了鑒權(quán)編碼補償(ACO),以用于加密字的產(chǎn)生。
4.加密
為了保證藍牙系統(tǒng)的安全性,必須采用加密技術(shù)。但藍牙系統(tǒng)對數(shù)據(jù)包頭和控制字段并不加密。藍牙系統(tǒng)通過一個再同步的流加密算法對每一個負載加密,由LM最終決定是否加密。
最后需要注意的是,不僅要對數(shù)據(jù)包加密,而且要對加密過程的中間數(shù)據(jù)進行加密,例如對鑒權(quán)編碼補償進行加密,這樣才能防止系統(tǒng)被攻擊和數(shù)據(jù)被竊取。
四、簡單的使用例子
通過藍牙技術(shù)可以在無線耳機和移動電話之間建立通信。由于耳機沒有人機接口,因上耳機在生產(chǎn)的時候載入了一個固定的PIN,它是一個隨機的數(shù)字。在初始化階段,用戶從手機菜單中選取初始化耳機的命令,隨后耳機將自動發(fā)現(xiàn)手機并建立連接。此時用戶必須輸入耳機的PIN。如果輸入的PIN正確,則建立連接;否則不能建立連接。如果用戶不想讓每個人都與耳機建立通信,那么可以通過軟件要求使用耳機必須通過鑒權(quán)。
五、結(jié)語
藍牙系統(tǒng)提供了幾種內(nèi)在的安全機制,從而在一個比較廣泛的范圍內(nèi)保證了藍牙系統(tǒng)的安全性。這不僅對產(chǎn)品開發(fā)商有利,而且給用戶帶來很大的方便。藍牙技術(shù)把便攜式電腦、蜂窩移動電話和家用電器等用無線鏈路連接起來,將計算機與通信更加密切地結(jié)合起來,使人們能隨時隨地進行數(shù)據(jù)信息的交換與傳輸。我們相信,藍牙技術(shù)將掀起無線連接與通信的革命。據(jù)預測,在最近幾年內(nèi)無線數(shù)據(jù)通信業(yè)務將迅速增長,因此電信業(yè)、計算機業(yè)、家電業(yè)都對藍牙技術(shù)很重視,認為它將對未來的無線數(shù)據(jù)通信業(yè)務產(chǎn)生巨大的促進作用。藍牙技術(shù)是無線數(shù)據(jù)通信最為重大的進展之一,對藍牙安全機制的研究和應用具有重要的意義。