藍(lán)牙安全的歷史
在解釋如今的藍(lán)牙安全問題之前,我們應(yīng)該回顧一下藍(lán)牙安全的歷史。藍(lán)牙是1989年發(fā)明的,但是真正開始廣泛使用要等到2000年以后。一開始,藍(lán)牙是沒有安全協(xié)議的,只是把不同的協(xié)議簡(jiǎn)單地拼湊在一起而已,且管理也僅由一個(gè)藍(lán)牙愛好小組即由藍(lán)牙特別興趣小組(Bluetooth Special Interest Group,BSIG)管理。藍(lán)牙特別興趣小組(BSIG)是一個(gè)監(jiān)管藍(lán)牙標(biāo)準(zhǔn)和藍(lán)牙技術(shù)和商標(biāo)的團(tuán)體,BSIG是一個(gè)非盈利、非現(xiàn)成公司成立于1998年9月。
目前,藍(lán)牙的最新協(xié)議是藍(lán)牙5(切記沒有5.0,只有5),是BSIG于2016年6月16日發(fā)布的新一代藍(lán)牙標(biāo)準(zhǔn)。雖然藍(lán)牙5比原來擁有更快的傳輸速度,更遠(yuǎn)的傳輸距離。但目前大多數(shù)設(shè)備使用的仍是4.0-4.2的協(xié)議。在后面我還會(huì)說到,更過分的是,目前很多物聯(lián)網(wǎng)供應(yīng)商都試圖支持藍(lán)牙2.0以前的傳統(tǒng)認(rèn)證協(xié)議,這些協(xié)議大大的放大了物聯(lián)網(wǎng)的安全。
藍(lán)牙的智能應(yīng)用
從藍(lán)牙4.0以來,BSIG就為藍(lán)牙的安全模型架構(gòu)了一個(gè)新的框架,低功耗藍(lán)牙(BLE)就是從藍(lán)牙4.0開始的。在很多人的印象中,開藍(lán)牙都會(huì)比較費(fèi)電,而且距離有限,并不穩(wěn)定,其實(shí)這是因?yàn)槲覀儗?duì)于藍(lán)牙的認(rèn)知還停留在2.0乃至以前。
目前絕大部分的智能手機(jī)都已經(jīng)支持藍(lán)牙4.0技術(shù),它具有更低的功耗,更遠(yuǎn)、更穩(wěn)定的傳輸。
隨著近年來手機(jī)、平板電腦、個(gè)人電腦、電視,甚至機(jī)頂盒以及游戲機(jī)的使用量爆發(fā)式增長,SIG在Bluetooth 4.0 版本規(guī)定了Bluetooth Smart及Bluetooth Smart Ready。
Bluetooth Smart Ready 設(shè)備是連接用戶正在使用的數(shù)以十億計(jì)藍(lán)牙設(shè)備—手機(jī)、平板電腦、個(gè)人電腦、電視,甚至機(jī)頂盒以及游戲機(jī)最有效的方式。這些設(shè)備可有效地接收傳統(tǒng)藍(lán)牙設(shè)備和藍(lán)牙智能設(shè)備發(fā)送的數(shù)據(jù)并傳送至應(yīng)用程序,從而將數(shù)據(jù)轉(zhuǎn)換為有用的信息。這些設(shè)備都是藍(lán)牙系統(tǒng)的中樞設(shè)備。
Bluetooth Smart設(shè)備主要用于收集特定類型的信息,家中的所有窗戶都關(guān)好了嗎?我的血糖是多少,我今天的體重是多少?然后將這些信息發(fā)送至藍(lán)牙智能就緒設(shè)備。這類設(shè)備具有無限的發(fā)展?jié)摿Γㄐ穆时O(jiān)測(cè)儀、血糖儀、智能手表、門窗安全感應(yīng)器、汽車遙控鑰匙和血壓護(hù)腕等。
Bluetooth Smart是2010年推出的一項(xiàng)創(chuàng)新技術(shù),為制造商、開發(fā)人員和消費(fèi)者帶來了許多新的好處。Bluetooth Smart是藍(lán)牙低耗能特征的品牌名稱,這個(gè)特征以藍(lán)牙核心規(guī)格4.0版首次推出。
Bluetooth Smart不僅具備低耗能的特點(diǎn),它還適合應(yīng)用創(chuàng)建。這項(xiàng)技術(shù)能耗較低,是因?yàn)樗哪芎倪h(yuǎn)遠(yuǎn)少于其它無線技術(shù)。在應(yīng)用創(chuàng)建時(shí),適合于藍(lán)牙智能傳感器的應(yīng)用成本較低,并可靈活選擇開發(fā)結(jié)構(gòu)。這使得開發(fā)人員能夠?qū)⑿穆时O(jiān)測(cè)儀、牙刷和鞋子等日常物品連入互聯(lián)世界,使這些物品與藍(lán)牙智能兼容智能手機(jī)、平板電腦或消費(fèi)者已擁有的類似設(shè)備中安裝的應(yīng)用進(jìn)行通信。
如果你有舊的藍(lán)牙2.0或3.0設(shè)備,Bluetooth Smart Ready仍然可以與之進(jìn)行通信。雖然 “Bluetooth Smart”和“Bluetooth Smart Ready”的應(yīng)用場(chǎng)景很多,也非常好用。但其中的安全問題不知有沒有人想過。例如,如何在計(jì)算機(jī)和健身追蹤器之間以安全的方式保持配對(duì),定期上傳數(shù)據(jù)?當(dāng)設(shè)備大部分時(shí)間處于睡眠模式時(shí),如何保護(hù)設(shè)備或確保設(shè)備所有者的隱私?
藍(lán)牙安全模式
目前藍(lán)牙有兩種安全模式:LE安全模式1和LE安全模式2。除此之外,還有四個(gè)編號(hào)為1到4的安全級(jí)別,其中4是最安全的級(jí)別。所以,在設(shè)置藍(lán)牙安全模式時(shí),你可以將這兩大種安全模式混合著使用。
先來看看編號(hào)為1到4的安全級(jí)別:
1.安全級(jí)別1支持沒有安全性的通信,并適用于任何藍(lán)牙通信;
2.在設(shè)備未配對(duì)的通信過程中,安全級(jí)別2支持AES-CMAC加密(又名AES-128,通過RFC 4493,符合FIPS);
3.安全級(jí)別3支持加密并需要設(shè)備配對(duì);
4.安全級(jí)別4支持所有的加密方式。
再來看看兩種安全模式:
安全模式1適用于沒有數(shù)據(jù)簽名的那些安全級(jí)別;
安全模式2與數(shù)據(jù)簽名類似,支持配對(duì)和不配對(duì)的通信。
將兩種安全模式混合是指設(shè)備需要同時(shí)支持安全模式1和2,即需要支持已簽名和未簽名的數(shù)據(jù)。
僅安全連接模式是具有安全級(jí)別4的安全模式1,這意味著藍(lán)牙設(shè)備中的所有傳入和傳出流量都只涉及經(jīng)過身份驗(yàn)證的連接和加密。如果你覺得復(fù)雜,那你也可以使用安全模式2而不是1來運(yùn)行安全連接模式,以確保所有數(shù)據(jù)都已簽名,但由于數(shù)據(jù)是加密的,且加密的計(jì)算需要更強(qiáng)的計(jì)算能力這也意味著更快的電池消耗,BSIG明顯感覺到?jīng)]有簽名的加密對(duì)于這種特定的模式來說已經(jīng)足夠了。
配對(duì)(Pairing)
配對(duì)對(duì)于藍(lán)牙BR/EDR是強(qiáng)制性的,而對(duì)于Bluetooth Smart則是選擇性的。比較簡(jiǎn)單的Bluetooth Smart應(yīng)用就有可能不需要配對(duì)。
在大家了解了安全模式和級(jí)別是什么后,我就可以開始回答一些關(guān)于在睡眠模式下維持配對(duì)的問題,或者在不一定總是彼此通信的設(shè)備之間的藍(lán)牙連接上強(qiáng)制保密。但是我們需要討論它們是如何實(shí)施的,這就得從配對(duì)開始。
配對(duì)過程幾乎涉及所有的安全環(huán)節(jié),需要事先決定。它的目的是確定兩臺(tái)設(shè)備的每一端的功能是否準(zhǔn)備好配對(duì),然后再?zèng)Q定是否可以互相通信。配對(duì)過程分三個(gè)階段進(jìn)行:
第一階段
在第一階段,這兩個(gè)裝置讓對(duì)方知道它們有能力做什么。它們首先閱讀的值是“歸因協(xié)議”(ATT)值,位于L2CAP第4層,通常不會(huì)被加密。這樣,在第二階段它們將決定使用哪種配對(duì)方法,以及設(shè)備可以做什么。例如,Bluetooth Smart Ready就與Bluetooth Smart 設(shè)備的ATT值不同。
第二階段
在第二階段,目的是生成一個(gè)短期密鑰(STK)。這是通過臨時(shí)密鑰(TK)與一些隨機(jī)數(shù)混合在一起的設(shè)備來完成的,這些隨機(jī)數(shù)給了他們STK。 STK本身不會(huì)在設(shè)備之間傳輸。通過STK,這通常被稱為LE傳統(tǒng)配對(duì)。但是,如果僅使用安全連接模式,則會(huì)在此階段(而不是STK)生成長期密鑰(LTK),這稱為LE安全連接。
第三階段
在第三階段,第二階段的密鑰被用來分配通信所需的其它密鑰。如果在第二階段沒有生成LTK,則在第三階段就要生成一個(gè)。數(shù)據(jù)簽名的連接簽名解析密鑰(CSRK)和專用MAC地址生成和查找的身份解析密鑰(IRK)等數(shù)據(jù)在此階段生成。
此時(shí)就會(huì)有四種不同的配對(duì)方法:
1. Numeric Comparison(數(shù)值比較),數(shù)值比較僅適用于低功耗安全連接,而不適用于傳統(tǒng)配對(duì)。因此這是一個(gè)較新的關(guān)聯(lián)模型。由于兩個(gè)設(shè)備會(huì)在其各自的屏幕或LCD顯示屏上顯示相同的六位數(shù)值,并確保它們匹配并點(diǎn)擊或單擊每個(gè)設(shè)備上的相應(yīng)按鈕。這不是為了防止中間人(MITM)攻擊,而是為了識(shí)別對(duì)方的設(shè)備。
2. Just Works (不鑒權(quán),直接使用),顯然,并非所有設(shè)備都有顯示器,如耳機(jī)或揚(yáng)聲器。因此,Just Works方法可能是最流行的方法。從技術(shù)上講,它與數(shù)值比較相同,但六位數(shù)值設(shè)置為全零。如果你正在執(zhí)行MITM攻擊,則“數(shù)值比較”需要一些即時(shí)數(shù)學(xué)運(yùn)算,但Just Works不提供MITM保護(hù)。
3. Passkey Entry(密碼輸入)。使用密鑰輸入,會(huì)在一個(gè)設(shè)備上顯示一個(gè)六位數(shù)的值,并將其輸入到另一個(gè)設(shè)備中。 如果發(fā)起設(shè)備和響應(yīng)設(shè)備都滿足一定的IO功能,它們就可以選擇低功耗傳統(tǒng)配對(duì)(Legacy Pairing)的Passkey Entry方法。如果發(fā)起設(shè)備和響應(yīng)設(shè)備的IO功能都不具備顯示功能,但都是“僅有鍵盤(Keyboard Only)”,那么用戶就需要確保發(fā)起設(shè)備和響應(yīng)設(shè)備之間的臨時(shí)密鑰是相同的,這是Passkey Entry進(jìn)入的一個(gè)特例。
4. Out Of Band (OOB),即非藍(lán)牙的傳輸方式,如NFC。Apple Watch是這個(gè)配對(duì)方法的一個(gè)很好的示范。另一個(gè)例子是在具有NFC功能的耳機(jī)和配對(duì)電話之間使用NFC。
確定安全模式和級(jí)別
你可以采取幾個(gè)步驟來確定藍(lán)牙設(shè)備的安全模式和級(jí)別:
1. 發(fā)起者或接收者,確定設(shè)備是發(fā)起者還是接收者。這個(gè)方法會(huì)被歸入Bluetooth Smart 或Bluetooth Smart Ready。你可以這樣想,在初始配對(duì)期間,啟動(dòng)藍(lán)牙連接的設(shè)備將成為Bluetooth Smart Ready設(shè)備,而被配對(duì)的設(shè)備將成為Bluetooth Smart 設(shè)備。然后你必須區(qū)分它們是Bluetooth Smart Ready還是Bluetooth Smart,因?yàn)檫@將有助于確定哪些數(shù)據(jù)包需要在藍(lán)牙協(xié)議監(jiān)控分析儀上查看BLE數(shù)據(jù)。
如果你正在探索的設(shè)備是Bluetooth Smart接收器,則可以從Bluetooth Smart Ready筆記本電腦啟動(dòng)配對(duì),并使用筆記本電腦的藍(lán)牙接口作為Wireshark(一個(gè)網(wǎng)絡(luò)封包分析軟件)中的分析源。
2. 配對(duì)說明(Instructions for pairing)。當(dāng)你獲得新的支持藍(lán)牙設(shè)備時(shí),通常會(huì)包含配對(duì)說明。顯然,如果設(shè)備的屏幕可以顯示值,你可以觀察到使用的Numeric Comparison或Passkey Entry。如果使用OOB,可能會(huì)更好,因?yàn)檫@是最安全的配對(duì)方法。如果你看到配對(duì)說明中包含“如果要求輸入密碼,請(qǐng)使用xxxx”(其中xxxx是四位數(shù)值),那么你就知道支持藍(lán)牙2.0傳統(tǒng)身份驗(yàn)證。
但是,大多數(shù)配對(duì)都涉及Just Works,這是因?yàn)锽luetooth Smart類別中的許多設(shè)備上沒有屏幕。如果不支持藍(lán)牙2.0傳統(tǒng)認(rèn)證,那并不意味著實(shí)現(xiàn)了額外的安全元素。
3. 掃描和探測(cè),使用藍(lán)牙掃描儀掃描設(shè)備可以幫助確定安全級(jí)別。你可以從掃描中獲得任何信息,包括所涉及的芯片組信息。如果你可以確定正在使用的芯片組,則可以查看芯片組的功能,例如“它最多可以處理八個(gè)連接,并且支持板載AES-128”。
注意MAC地址,如果地址是公共地址,并且OUI( 組織唯一標(biāo)識(shí)符)在數(shù)據(jù)庫中,則它們它們始終使用一個(gè)常量作為MAC地址。
如果你可以連接到設(shè)備進(jìn)行探測(cè),但是任何操作似乎都會(huì)讓你立即退出,此時(shí),很可能只有安全連接模式已經(jīng)就位。
4.嗅探配對(duì),通過藍(lán)牙嗅探器來檢測(cè)安全元素的實(shí)現(xiàn)可能看起來非常困難,但是一旦你了解了不同的安全模式以及如何使用這些安全模式,就可以輕松確定已經(jīng)實(shí)現(xiàn)的內(nèi)容,但前提是你進(jìn)行了分析跟蹤。
理想情況下,你最希望捕獲配對(duì)過程的分析痕跡。如果你正在檢查啟動(dòng)程序或Bluetooth Smart Ready設(shè)備,則需要“配對(duì)請(qǐng)求”數(shù)據(jù)包。相反,如果你正在檢查接收器或藍(lán)牙智能設(shè)備,則需要“配對(duì)應(yīng)答”數(shù)據(jù)包。
配對(duì)請(qǐng)求的操作碼將是0x01,配對(duì)回應(yīng)的操作碼將是0x02。 I/O容量(I/O capacity)將是下列之一:
0x00——僅顯示;
0x01——顯示是/否(顯示和指定是或否的方式);
0x02——僅限鍵盤;
0x03——無輸入或無輸出(例如耳機(jī));
0x04——鍵盤顯示(鍵盤和顯示屏);
0x05-0xFF——保留。
capacity指定了可以存儲(chǔ)在緩沖區(qū)中的最大數(shù)據(jù)容量,實(shí)際上,它指定了底層數(shù)組的大小,或者至少是指定了準(zhǔn)許我們使用的底層數(shù)組的容量。
OOB數(shù)據(jù)標(biāo)記將是0x00,對(duì)于OOB數(shù)據(jù)來說,沒有OOB數(shù)據(jù)或0x01。最大加密密鑰大小以octets(八進(jìn)制數(shù))的形式告訴加密密鑰的大小,并且啟動(dòng)器和響應(yīng)者密鑰分配字節(jié)都用標(biāo)記表示將分發(fā)的密鑰。
身份驗(yàn)證請(qǐng)求字節(jié)由五個(gè)字段組成,并使用各個(gè)位作為標(biāo)志。從最低有效位到最高有效位,以下就是這些字段:
1.綁定標(biāo)志,兩位,最低位為0或1,另一位保留。因此,0代表沒有結(jié)合,1代表結(jié)合。如果使用綁定,LTK將被交換,這意味著兩個(gè)設(shè)備可以配對(duì),而重新啟動(dòng)或休眠模式不會(huì)取消配對(duì)設(shè)備。如果要支持加密,則在配對(duì)之后進(jìn)行。
2.MITM標(biāo)志,一位,0表示不要求MITM保護(hù),1表示請(qǐng)求了MITM保護(hù)。
3.安全連接,一位。如果設(shè)置為1,則設(shè)備正在請(qǐng)求進(jìn)行安全連接模式,否則設(shè)置為0。
4.按鍵標(biāo)志,一位。如果設(shè)置為1,則表示需要使用密碼輸入,否則將忽略。
5.最后三位保留。
請(qǐng)注意,要時(shí)刻檢查你的工具,以確保你準(zhǔn)確地嗅探數(shù)據(jù),不要指望每個(gè)制造商都遵守協(xié)議規(guī)則。
LE PRIVACY
每當(dāng)藍(lán)牙設(shè)備需要傳輸時(shí),它就會(huì)進(jìn)入廣播模式,讓其它設(shè)備發(fā)現(xiàn)它。根據(jù)設(shè)備的性質(zhì),它會(huì)在廣播過程中使用MAC地址,以便其他設(shè)備可以與之通信。
但這會(huì)出現(xiàn)一個(gè)問題,攻擊者可以通過跟蹤MAC地址來跟蹤一個(gè)人的行蹤。因此,會(huì)有避免跟蹤的設(shè)備來定期地改變其MAC地址。不夠,這又會(huì)產(chǎn)生其他問題。如果地址不斷變化,配對(duì)的設(shè)備將如何知道它們配對(duì)成功呢?我怎樣才能將我的MAC地址限制在只有我信任的設(shè)備上,同時(shí)還能保護(hù)我自己不被追蹤?
這就是要用到LE PRIVACY的地方,這個(gè)解決方案是在創(chuàng)建Bluetooth Smart(4.0標(biāo)準(zhǔn))的基礎(chǔ)上引入的,它是解決這個(gè)問題的有效方法。在如上所述的第三階段的配對(duì)過程中,設(shè)備之間會(huì)交換各種密鑰。其中一個(gè)關(guān)鍵是身份解析密鑰(IRK),這個(gè)密鑰允許創(chuàng)建和解析在廣告數(shù)據(jù)包中使用的隨機(jī)MAC地址。
基本上,設(shè)備的真實(shí)MAC地址沒有真正改變。通過為設(shè)備的配對(duì)方提供IRK,你可以告訴被配對(duì)的設(shè)備如何“解析”MAC地址,以便稍后根據(jù)其隨機(jī)廣播地址來識(shí)別該設(shè)備。為確保設(shè)備重新連接,LE PRIVACY設(shè)備將創(chuàng)建一個(gè)廣播數(shù)據(jù)包,其中包含配對(duì)設(shè)備的目標(biāo)MAC地址和隨機(jī)MAC地址作,此時(shí)配對(duì)設(shè)備就知道快速解析MAC地址以確定其身份,因?yàn)樗赡芘c使用LE PRIVACY的多個(gè)設(shè)備進(jìn)行配對(duì)。
這就為配對(duì)的兩個(gè)設(shè)備提供了一個(gè)很好的方式,即使進(jìn)入睡眠模式,功率循環(huán)或設(shè)備之間的物理距離大于藍(lán)牙范圍而導(dǎo)致中斷,也仍然可以通過防止MAC地址跟蹤來確保用戶的隱私。
LE Privacy在測(cè)試中非常容易被發(fā)現(xiàn),你只需掃描MAC地址并隨時(shí)追蹤即可。通過在設(shè)備上使用LE Privacy進(jìn)行操作,便可可以產(chǎn)生流量,這樣會(huì)更容易發(fā)現(xiàn)。不過時(shí)間延遲會(huì)有所不同,這完全取決于制造商所設(shè)置的時(shí)間間隔。一般來說,從15到30分鐘不等,大多數(shù)實(shí)現(xiàn)LE Privacy的設(shè)備會(huì)在每個(gè)電源周期后都使用新的MAC地址。
總結(jié)
藍(lán)牙安全性是個(gè)非常復(fù)雜的話題,但是一旦你在設(shè)備的安全設(shè)置(如果存在)中進(jìn)行了一些嗅探和探索,你就可以將問題大大地簡(jiǎn)化。
評(píng)論