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