李 延,耿震磊,袁艷芳,張 磊,楊 峰
(北京智芯微電子科技有限公司,北京 102299)
藍(lán)牙技術(shù)是一種工作在2.4 GHz ISM免授權(quán)頻段的短距離無線個人局域網(wǎng)(Wireless Personal Area Network,WPAN)技術(shù),目前廣泛應(yīng)用于各類個人智能設(shè)備中,可實現(xiàn)固定設(shè)備與移動設(shè)備之間的數(shù)據(jù)交換功能。藍(lán)牙標(biāo)準(zhǔn)在信息安全方面依靠配對機(jī)制可以在主從設(shè)備之間快速建立連接,連接建立以后可以避免第三方的竊聽和篡改。如今,藍(lán)牙已經(jīng)成為多種消費電子產(chǎn)品的標(biāo)配,同時,藍(lán)牙技術(shù)被應(yīng)用于各類工業(yè)物聯(lián)網(wǎng)終端中。工業(yè)物聯(lián)網(wǎng)場景對信息安全的要求遠(yuǎn)高于消費領(lǐng)域[1],因此,藍(lán)牙技術(shù)信息安全也成為工業(yè)物聯(lián)網(wǎng)應(yīng)用必須研究的問題。本文針對藍(lán)牙技術(shù)的安全機(jī)制進(jìn)行研究,分析了藍(lán)牙協(xié)議的安全防護(hù)機(jī)制與工業(yè)物聯(lián)網(wǎng)場景的安全需求差別。本文在兼容藍(lán)牙安全機(jī)制整體框架的基礎(chǔ)上,應(yīng)用國密標(biāo)識密碼算法,實現(xiàn)了基于身份的藍(lán)牙分布式接入控制方案,為藍(lán)牙技術(shù)在工業(yè)物聯(lián)網(wǎng)領(lǐng)域的安全應(yīng)用和標(biāo)準(zhǔn)化提供了解決思路。
藍(lán)牙安全技術(shù)隨著藍(lán)牙版本的演進(jìn)而變化,各版本的藍(lán)牙在安全方案中又細(xì)分為不同的安全模式和操作方法。
藍(lán)牙技術(shù)標(biāo)準(zhǔn)由藍(lán)牙技術(shù)聯(lián)盟(Bluetooth Special Interest Group,SIG)管理,目前最新版本為藍(lán)牙5.1。藍(lán)牙各版本的安全機(jī)制不盡相同,一般將藍(lán)牙3.0及其之前版本稱為傳統(tǒng)藍(lán)牙。2010年藍(lán)牙推出4.0版本,藍(lán)牙4.0及其以后的版本稱為低功耗藍(lán)牙(Low Energy,LE),傳統(tǒng)藍(lán)牙與低功耗藍(lán)牙的安全機(jī)制在安全算法、密鑰體系上存在較大差異。低功耗藍(lán)牙與傳統(tǒng)藍(lán)牙相比在安全算法強(qiáng)度和隱私特性上有較大提升[2],目前,在主流終端中常以低功耗藍(lán)牙應(yīng)用為主,因此,本文以低功耗藍(lán)牙作為研究對象。
藍(lán)牙安全的應(yīng)用場景設(shè)定為兩個互不信任的藍(lán)牙設(shè)備,在操作人員的控制下,可以快速、簡單地建立連接,連接通道可以防止中間人攻擊、防止空口報文被竊聽和篡改[3]。藍(lán)牙安全機(jī)制包括配對、綁定、設(shè)備鑒權(quán)、加密和完整性保護(hù)5個安全流程。在藍(lán)牙協(xié)議棧中,與藍(lán)牙安全強(qiáng)相關(guān)的模塊為SM(安全管理)和鏈路層。其中SM負(fù)責(zé)配對、綁定和鑒權(quán)的流程管理,并在上述流程中生成一系列的過程密鑰;鏈路層負(fù)責(zé)接收SM的指令,按照SM指令和密鑰進(jìn)行數(shù)據(jù)的加解密、完整性保護(hù)的封裝操作。
配對環(huán)節(jié)是低功耗藍(lán)牙安全的關(guān)鍵環(huán)節(jié),兩個藍(lán)牙設(shè)備只有在完成配對后才能進(jìn)行通信。由于藍(lán)牙版本的差異,低功耗藍(lán)牙配對分為傳統(tǒng)模式和安全連接模式兩種模式。
配對環(huán)節(jié)分為3個階段,如圖1所示[4]。第一階段,配對雙方通過協(xié)商消息進(jìn)行協(xié)商,最終確定采用傳統(tǒng)模式或者安全連接模式。第二階段,根據(jù)第一階段的協(xié)商結(jié)果進(jìn)行簡單的可選擇的認(rèn)證,并生成鏈路密鑰。第三階段,采用第二階段生成的鏈路密鑰進(jìn)行會話密鑰的分散派生。完成配對后,配對雙方將一個長期密鑰(Long-Term Key,LTK)存儲在Flash中,此后這兩個設(shè)備可以省略配對過程,直接采用LTK進(jìn)行會話密鑰的生成。兩個設(shè)備完成LTK共享后,稱為兩個設(shè)備已經(jīng)綁定。
圖1 配對環(huán)節(jié)流程框架
每種配對模式,均可采用多種密鑰協(xié)商方式,協(xié)商方式的選擇依據(jù)藍(lán)牙設(shè)備的安全需求及設(shè)備的輸入/輸出能力。
藍(lán)牙設(shè)備的輸入能力包括無輸入、YES/NO、鍵盤輸入3種。無輸入指設(shè)備沒有任何的人機(jī)交互輸入接口。YES/NO指設(shè)備允許操作員進(jìn)行YES或者NO的選擇輸入,比如一個藍(lán)牙耳機(jī)有一個按鍵,操作員按下按鍵表示YES,操作員不按表示NO。鍵盤輸入指設(shè)備具備數(shù)字鍵盤類輸入能力,可以是硬件或者軟件鍵盤。
藍(lán)牙設(shè)備的輸出能力包括無輸出和數(shù)字輸出兩種。無輸出指藍(lán)牙設(shè)備不具備操作員肉眼可見的顯示和指示能力,比如藍(lán)牙鼠標(biāo)沒有任何顯示和指示能力。數(shù)字輸出能力指藍(lán)牙設(shè)備具備數(shù)字顯示的能力,比如帶屏幕的藍(lán)牙設(shè)備。
綜上所述,每個設(shè)備的輸入/輸出能力一共包含了6種情況,詳見表1。
表1 輸入/輸出能力表
傳統(tǒng)模式分為3種協(xié)商方式,安全連接模式分為4種協(xié)商方式,因此,低功耗藍(lán)牙安全具有7種配對方式,如圖2所示。
圖2 低功耗藍(lán)牙配對分類
(1)Just Work:該方式適用于配對的一方?jīng)]有任何的輸入能力和顯示能力。該方式無認(rèn)證能力,無中間人攻擊抵御能力。
(2)密碼輸入:該方式要求一方具備數(shù)字輸入能力,另一方具備顯示能力或數(shù)字輸入能力。
(3)帶外安全:帶外安全即OOB(Out of Band,OOB)方式,要求通信雙方都具備藍(lán)牙通道以外的安全通信方式,比如NFC(Near Field Communication,NFC),帶外NFC用來傳輸配對的機(jī)密信元。配對方式為操作人員操作兩個待連接設(shè)備進(jìn)行NFC觸碰通信,從而觸發(fā)藍(lán)牙配對。
(4)數(shù)字比較:該方式要求一方具備YES/NO的輸入能力和顯示能力,另一方具備數(shù)字輸入能力和顯示能力。
上述各種配對方式的流程既有不同點,又有共同點。本文選擇一種較為安全的方式,傳統(tǒng)模式—密碼輸入?yún)f(xié)商方式進(jìn)行詳細(xì)分析。
在密碼輸入方式的應(yīng)用場景中,操作員在兩個設(shè)備上分別操作,確保兩端設(shè)備共享一個6位十進(jìn)制的認(rèn)證密碼ra和rb,如果ra=rb則認(rèn)證成功,否則認(rèn)證失敗。其流程如圖3所示[5]。
圖3 傳統(tǒng)模式—密碼輸入配對模式
(1)步驟1,該階段主、從設(shè)備完成了配對模式、協(xié)商方式的協(xié)商。
(2)步驟2,主、從設(shè)備分別生成自己的隨機(jī)數(shù)Mrand和Srand,隨機(jī)數(shù)將參與鑒權(quán)計算,以確保在配對過程中能夠防止重放攻擊。
(3)步驟3,操作人員通過對主、從設(shè)備的正確操作,確保兩端配對臨時密鑰TK的賦值相同,即TKA=ra=TKB=rb。比如,設(shè)備A顯示輸出一個6位數(shù)字ra,操作員將該數(shù)字通過鍵盤輸入設(shè)備B中。操作人員需要保證ra和rb是相同的,以便后續(xù)認(rèn)證流程可以成功。
(4)步驟4a,主設(shè)備A計算生成Mconfirm值。Mconfirm是以TKA=ra為密鑰的加密運算結(jié)果,被加密消息包括步驟1的協(xié)商消息、步驟2a生成的隨機(jī)數(shù)Mrand及雙方藍(lán)牙MAC地址信息。
步驟4b,從設(shè)備B計算生成Sconfrim值。Sconfirm是以TKB=rb為密鑰的加密運算結(jié)果,被加密消息包括步驟1的協(xié)商消息、步驟2b生成的隨機(jī)數(shù)Srand及雙方藍(lán)牙MAC地址信息。
(5)步驟5,主設(shè)備A將Mconfirm值發(fā)送給設(shè)備B。
(6)步驟6,從設(shè)備B將Sconfirm值發(fā)送給設(shè)備A。
(7)步驟7,主設(shè)備A將自己生成的隨機(jī)數(shù)Mrand發(fā)送給設(shè)備B。
(8)步驟8,設(shè)備B用收到的Mrand和操作人員輸入的rb,驗證收到的Mconfirm值是否正確。驗證相同,則繼續(xù)配對流程,否則配對失敗。
(9)步驟9,設(shè)備B將自己生成的隨機(jī)數(shù)Srand發(fā)送給設(shè)備A。
(10)步驟10,設(shè)備A用收到的Srand和操作員的輸入ra,驗證收到的Sconfirm值是否正確。驗證相同,則配對驗證完成,進(jìn)入密鑰生成流程。
上述流程中的加密流程引入了隨機(jī)數(shù)和共享臨時密鑰TK,可以很好地保護(hù)后續(xù)密鑰協(xié)商的機(jī)密性,并可以防御重放攻擊。
從上述配對的流程可知,配對過程中需要存在一個操作人員,可以同時對兩個配對設(shè)備進(jìn)行操作,并確保雙方的TK賦值相同。
藍(lán)牙其他帶認(rèn)證功能的協(xié)商方式——數(shù)字比較和帶外安全,同樣需要操作人員的判斷和操作。數(shù)字比較需要操作人員對比配對雙方的顯示數(shù)字,做出判斷后進(jìn)行連接確認(rèn)。而帶外安全(以NFC帶外為例)需要操作人員對配對雙方進(jìn)行觸碰操作。各種場景都要求存在操作人員進(jìn)行人為的輸入操作或者判斷。Just Work雖然簡化了操作,但是不具備認(rèn)證功能,其安全等級最低。
藍(lán)牙依靠操作人員的配對流程和相應(yīng)的安全機(jī)制,可以有效應(yīng)對個人域消費電子場景的安全需求,卻難以滿足無人值守(或無人操作)的工業(yè)物聯(lián)網(wǎng)場景。
具有藍(lán)牙需求的工業(yè)物聯(lián)網(wǎng)終端種類眾多,在兩個工業(yè)物聯(lián)網(wǎng)終端通過藍(lán)牙進(jìn)行通信時,通常通信雙方至少有一方處于無人值守的狀態(tài),常見的通信場景包括:
(1)物聯(lián)設(shè)備之間的數(shù)據(jù)通信。比如各類傳感設(shè)備和傳感設(shè)備網(wǎng)關(guān)之間的通信。
(2)手持設(shè)備與物聯(lián)設(shè)備之間的通信。此場景多為巡檢或操作人員手持巡檢設(shè)備與無人值守的物聯(lián)網(wǎng)終端進(jìn)行短距離通信。
在上述場景中,處于無人值守的藍(lán)牙物聯(lián)網(wǎng)終端需要對嘗試連接的對端藍(lán)牙設(shè)備進(jìn)行身份驗證,以便進(jìn)行藍(lán)牙通信的接入控制,才能保障物聯(lián)設(shè)備本體安全及數(shù)據(jù)安全,工業(yè)物聯(lián)網(wǎng)藍(lán)牙的應(yīng)用場景及安全需求與藍(lán)牙協(xié)議側(cè)重的個人域消費電子場景有如表2所示的差異。
表2 工業(yè)物聯(lián)網(wǎng)藍(lán)牙與消費藍(lán)牙安全差異
無人值守工業(yè)物聯(lián)網(wǎng)終端的藍(lán)牙模塊是否允許對端藍(lán)牙配對連接,應(yīng)該是基于對端藍(lán)牙設(shè)備是否擁有業(yè)主運維部門的授權(quán),而不是現(xiàn)場人員的操作意愿,這是工業(yè)物聯(lián)網(wǎng)場景與消費藍(lán)牙的重要區(qū)別。
藍(lán)牙通信早期版本的拓?fù)浣Y(jié)構(gòu)為短距離點對點方式,但是隨著藍(lán)牙技術(shù)的發(fā)展,藍(lán)牙5.1已經(jīng)達(dá)到300 m覆蓋,并且可以支持IPv6星型組網(wǎng)和Mesh組網(wǎng),其組網(wǎng)能力和覆蓋能力已經(jīng)達(dá)到了WiFi(無線局域網(wǎng))水平。藍(lán)牙組網(wǎng)能力及覆蓋能力的增強(qiáng)為藍(lán)牙安全接入帶來了新的挑戰(zhàn)。在工業(yè)物聯(lián)網(wǎng)終端場景下,為了防止無關(guān)人員和惡意攻擊者通過藍(lán)牙連接工業(yè)物聯(lián)網(wǎng)終端,工業(yè)物聯(lián)網(wǎng)藍(lán)牙應(yīng)具備基于可信身份的分布式鑒權(quán)能力。
工業(yè)物聯(lián)網(wǎng)終端對藍(lán)牙通信的需求日益強(qiáng)烈,亟需研究適應(yīng)工業(yè)物聯(lián)網(wǎng)場景的藍(lán)牙安全機(jī)制及產(chǎn)品。
工業(yè)物聯(lián)網(wǎng)終端藍(lán)牙如果采用藍(lán)牙協(xié)議內(nèi)生的配對模式,即依靠操作人員主觀操作進(jìn)行接入控制,將給工業(yè)物聯(lián)網(wǎng)終端帶來潛在的風(fēng)險。攻擊者可以通過很低的成本搭建“無線公網(wǎng)+藍(lán)牙”的攻擊硬件,輕易地進(jìn)行藍(lán)牙通信層連接,進(jìn)而對工業(yè)物聯(lián)網(wǎng)終端和應(yīng)用層協(xié)議進(jìn)行持續(xù)的攻擊嘗試,如圖4所示。
圖4 遠(yuǎn)程藍(lán)牙攻擊模型
《CNNVD關(guān)于多個藍(lán)牙協(xié)議安全漏洞情況的通報》[6]指出,藍(lán)牙各版本都存在一些安全漏洞,絕大多數(shù)漏洞在新版本會被修復(fù),但是也存在各版本共存的一些脆弱點,包括:
(1)連接密鑰的存儲不當(dāng):如果連接密鑰的存儲沒有訪問控制機(jī)制,可能會被非法讀取或修改,從而影響連接的安全性。
(2)偽隨機(jī)數(shù)安全:藍(lán)牙安全需要大量的隨機(jī)數(shù)參與安全運算,如果隨機(jī)數(shù)發(fā)生器安全性不足將會影響藍(lán)牙的安全。
本文同時指出藍(lán)牙進(jìn)程在所有操作系統(tǒng)都具有最高權(quán)限,攻擊者如果成功控制藍(lán)牙模塊,將會對整個物聯(lián)網(wǎng)終端的信息安全產(chǎn)生影響。
國密SM9算法是一種基于標(biāo)識的非對稱密碼算法,該算法可以實現(xiàn)以設(shè)備的ID為公鑰,避免了公鑰的驗證步驟[7],非常適合分布式設(shè)備的互相認(rèn)證。采用支持SM9算法的安全芯片與藍(lán)牙芯片進(jìn)行合封或集成,形成安全藍(lán)牙模塊,可以解決藍(lán)牙技術(shù)在工業(yè)物聯(lián)網(wǎng)場景的接入安全問題。
工業(yè)物聯(lián)網(wǎng)業(yè)主負(fù)責(zé)搭建基于標(biāo)識算法的服務(wù)器,進(jìn)行安全藍(lán)牙模塊的密鑰發(fā)行,從而實現(xiàn)系統(tǒng)內(nèi)的藍(lán)牙互信關(guān)系,相關(guān)流程如圖5所示:
圖5 基于標(biāo)識的身份鑒權(quán)機(jī)制
(1)步驟1,藍(lán)牙設(shè)備運營方通過身份標(biāo)識算法(SM9)密鑰管理服務(wù)器進(jìn)行基于身份的密鑰管理和發(fā)行。服務(wù)器根據(jù)藍(lán)牙芯片的MAC地址作為對應(yīng)安全芯片的身份標(biāo)識,進(jìn)行密鑰初始化。
(2)步驟2a,安全芯片A的初始化參數(shù)包括加密主公密鑰P、加密私鑰deA和身份標(biāo)識MAC-A;步驟2b,安全芯片B的初始化參數(shù)包括加密主公密鑰P、加密私鑰deB和身份標(biāo)識MAC-B。
(3)步驟3,根據(jù)藍(lán)牙協(xié)議流程,雙方在連接發(fā)現(xiàn)階段會互相獲得對方的藍(lán)牙MAC地址。
(4)步驟4,雙方設(shè)置SM9密鑰交換協(xié)議參數(shù)。安全芯片A設(shè)置自身標(biāo)識為MAC-A,設(shè)置對方標(biāo)識為MAC-B;安全芯片B設(shè)置自身標(biāo)識為MAC-B,設(shè)置對方標(biāo)識為MAC-A。
(5)步驟5,雙方安全芯片以藍(lán)牙鏈路層為通道,以步驟4設(shè)置的參數(shù)啟動SM9密鑰交換流程。如果協(xié)商認(rèn)證失敗,則藍(lán)牙配對流程失敗。
(6)步驟6,如果協(xié)商成功,雙方則會產(chǎn)生相同的共享密鑰SKA=SKB。安全芯片A將密鑰協(xié)商結(jié)果SKA發(fā)送給藍(lán)牙芯片A;安全芯片B將密鑰協(xié)商結(jié)果SKB發(fā)送給藍(lán)牙芯片B。SM9密鑰交換協(xié)議保障了SKA與SKB的機(jī)密性。
(7)步驟7,雙方藍(lán)牙啟動傳統(tǒng)配對模式。藍(lán)牙芯片A將SKA賦值給配對臨時密鑰TKA,藍(lán)牙芯片B將SKB賦值給配對臨時密鑰TKB。TKA=TKB=SKA=SKB作為配對臨時密鑰,確保了配對流程可以校驗成功。
(8)步驟8,藍(lán)牙A與藍(lán)牙B通過各自的TK值進(jìn)行后續(xù)的配對流程,后續(xù)流程如圖3步驟4a/4b。
安全藍(lán)牙模組中預(yù)制標(biāo)識密碼算法密鑰,巧妙地采用藍(lán)牙MAC地址作為標(biāo)識算法的公鑰,將標(biāo)識信息的交換與藍(lán)牙報文地址緊密地耦合,既減少了交互流程,又增強(qiáng)了安全性。基于MAC地址的標(biāo)識認(rèn)證流程,可以讓藍(lán)牙模組支持基于合法身份的分布式鑒權(quán),進(jìn)而實施接入控制,可以有效解決基于操作人員的主觀意識進(jìn)行接入認(rèn)證的問題。
基于標(biāo)識密碼算法可以完美解決分布式的終端間、離線狀態(tài)的相互認(rèn)證問題。傳統(tǒng)的對稱密碼算法在工業(yè)物聯(lián)網(wǎng)中應(yīng)用較為廣泛,比如電網(wǎng)的計量系統(tǒng),其密鑰分散采用自上而下的分散方式,終端側(cè)密鑰一般根據(jù)服務(wù)側(cè)根密鑰與終端ID分散而來[8],適用于服務(wù)器同終端之間一對多的認(rèn)證與加密,難以實現(xiàn)分布式終端間的互認(rèn)證。利用數(shù)字證書技術(shù)解決分布式的互信也存在很多困難,比如證書的成本問題及證書的離線驗證問題,數(shù)字證書技術(shù)公鑰為隨機(jī)數(shù),無法使用特定的藍(lán)牙MAC地址作為公鑰[9]。
支持標(biāo)識密碼算法的安全芯片承載標(biāo)識算法運算及真隨機(jī)數(shù)生成,最終為藍(lán)牙配對過程提供TK密鑰共享服務(wù),方案并未更改藍(lán)牙協(xié)議的安全框架,因此降低了對標(biāo)準(zhǔn)藍(lán)牙芯片內(nèi)核的改動。標(biāo)識算法安全模組一般都具備安全存儲功能,不但可以保證預(yù)制密鑰的安全,也可以為藍(lán)牙配對流程后續(xù)產(chǎn)生的連接密鑰提供安全的存儲環(huán)境和訪問控制機(jī)制。
藍(lán)牙技術(shù)在無線個人域通信領(lǐng)域得到廣泛應(yīng)用,產(chǎn)業(yè)鏈蓬勃發(fā)展,芯片成本不斷下降,可以有效解決工業(yè)物聯(lián)網(wǎng)終端的短距離通信需求。本文首先分析了藍(lán)牙標(biāo)準(zhǔn)的安全機(jī)制及應(yīng)用場景;其次分析了工業(yè)物聯(lián)網(wǎng)場景對短距離無線通信的安全需求,解析了藍(lán)牙安全機(jī)制與工業(yè)物聯(lián)網(wǎng)通信安全需求之間的差異;最后結(jié)合國密標(biāo)識安全算法,為藍(lán)牙基于可信身份的分布式、離線鑒權(quán)提出了可行的方案。
本文的研究成果已經(jīng)在國家電網(wǎng)配電終端與巡檢掌機(jī)間試點應(yīng)用,可為無人值守的配電終端與巡檢掌機(jī)提供安全的藍(lán)牙通信通道。本方案也可適用于其他無人值守的工業(yè)物聯(lián)網(wǎng)終端的藍(lán)牙應(yīng)用場景,可以為行業(yè)用戶藍(lán)牙技術(shù)的安全應(yīng)用規(guī)范和技術(shù)標(biāo)準(zhǔn)提供參考。