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