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