針對藍牙PIN碼的最新***技術細節分析

最近,國內外多家網站紛紛刊登了一則關於針對藍牙PIN碼的最新***技術的新聞:通過強制兩個正在通訊的藍牙設備進行重新配對,並監聽配對信息,***者可以在0.063秒內破解一個4位(十進制)的PIN碼。今年6月上旬舉辦的世界無線技術會議也詳細討論了該***方法,securityfocus 甚至說“這種新的***技術令很多關注無線技術的信息安全專家非常的震驚,因爲以前關於***藍牙PIN碼的研究只涉及在不正確的藍牙配置或特定的環境下,而此次是第一次全面性描述***藍牙的技術”。針對這種藍牙***技術,娛樂與技術並重的WDA進行了跟蹤和探討,並寫出以下的***細節,希望與關注藍牙技術的愛好者共同討論。

  一、 概述

  藍牙(bluetooth)是一種實現多種設備之間短距離無線連接的協議,通訊速度快,廣泛應用於無線設備、圖像處理、安全產品、消費娛樂、汽車產品和家用電器等領域。做爲一種無線技術,藍牙技術提供了諸如密鑰管理、認證和保密等安全機制。然而,過去幾年,一些針對藍牙技術的***方法被提出,包括信息漏泄、數據竊取、假冒***等,藍牙技術的安全問題主要有以下幾點:

  1、整個藍牙系統的安全性依耐於PIN碼的保密性。由於安全意識不高,用戶所選擇的PIN碼長度通常較短,導致PIN碼被破解的可能性大大增加。

  2、 藍牙協議所使用的密碼算法是藍牙設計者自行發明的,這些密碼算法比較簡單。從密碼分析的角度看,一個成熟的密碼算法必須經過長期的實踐纔會被人們所認可,由於缺乏測試,新的密碼算法有可能隱含着某種缺陷。

  3 、藍牙適用於10米以內的短距離通訊,***者要想接近***目標確實比較困難。但設想在一個步行街上或者在一個堵車的環境中,***者通過啓動了藍牙功能的設備,是有可能搜索到周圍10米內的藍牙通訊。而且,最新的IEEE 802.11標準已經可以比較便宜的擴展藍牙通訊的距離。

  4、由於藍牙技術越來越普及,特別是藍牙軟件可以安裝在PDA和便攜式電腦上,存放在PDA和便攜式電腦上的信息也越來越引起***的興趣。

  二、 術語介紹

  配對:配對是指兩個藍牙設備首次通訊時,相互確認的過程。兩個藍牙設備之間一經配對之後,隨後的通訊連接就不必每次都要做確認,非常的方便。

  PIN(Personal Identification Number):個人識別碼,藍牙使用的PIN碼長度爲1-8個十進制位(8-128比特)。

  DB_ADDR: 藍牙設備地址。每個藍牙收發器被分配了唯一的一個48位的設備地址,類似於PC機網卡的MAC地址。兩個藍牙設備在通訊開始時通過詢問的方式獲取對方的DB_ADDR地址。


三、 藍牙配對和認證過程

 

  藍牙支持三種安全模式,第一種是設備沒有任何安全措施的"無安全操作"模式。第二種是信道建立之前不需啓動安全協議的"業務級安全模式"。第三種是要求終端在鏈路建立前就需啓動安全協議的"鏈路級安全模式"。其中,最後“鏈路級安全模式”安全級別最高,本文所討論的就是針對這種級別的***技術。

  1、配對和認證

  藍牙通訊初始化過程需要三個步驟:生成初始密鑰(Kinit)、生成鏈路密鑰(Kab)和雙方認證。接着,用加密密鑰來保護往後的通訊。在配對之前,需要事先將PIN碼輸入到藍牙設備中,在某些設備(像無線耳機),PIN是固定不可改變的。必須注意的是,兩邊的PIN必須匹配,否則不能通訊。下面我們將討論配對和雙方認證的細節。

  .生成初始密鑰(Kinit)

  初始密鑰Kinit t長度爲128位,由E22算法產生,圖1描述了生成Kinit密鑰的過程。首先提出通信要求的設備稱爲主設備(Master),用A表示;被動進行通信的設備稱爲從設備(Slave),用B表示。從圖中可以看到,E22算法的輸入(明文)由以下三部分組成:

  1)從設備的物理地址:BD_ADDR,在生成Kinit前,主設備通過詢問方式獲得從設備的地址BD_ADDR。

  2)PIN碼及其長度,PIN碼是雙方設備預先設定的。

  3)一個128位的隨機數(IN_RAND)。由主設備產生,並以明文方式傳送給從設備。

  由於主、從設備使用了相同的E22算法,如果雙方設備以上三部分的值都相等,那麼各自算出來的Kinit也應該相同。



圖1


.生成鏈路密鑰Kab

 

  見圖2,首先主設備A產生128位的隨機數LK_RANDA,從設備B也產生128位的隨機數LK_RANDB。在主設備A中,Kinit與LK_RANDA進行位比特邏輯異或運算,異或結果發送給B設備;同樣的,在B設備中,Kinit和LK_RANDB進行位比特邏輯異或運算,結果發送給A設備。通過這些交換後,A和B設備都具有相同的Kinit、LK_RANDA和LK_RANDB。按照圖2,設備A和B分別用E21算法將LK_RANDA和BD_ADDRA、LK_RANDB和BD_RANDRB加密,並將結果進行異或得到Kab。



 

圖2

  .雙向認證

  雙向認證採用challenge-response(挑戰-應答)方式。如圖3所示,主設備A爲應答方,從設備B爲請求方。做爲應答方的A設備產生一個128位的隨機數AU_RANDA,並以明文方式傳送至B設備。A、B設備都用E1算法將各自得到的AU_RANDA、Kab和BD_ANDRB加密運算分別生成32位的SRESA和SRESB。B設備將結果SRESB傳送給A設備,A設備比較SRESA和SRESB,如果相等,此次認證通過,否則認證不通過。執行完此次認證後,A設備和B設備的角色對換,即A設備做爲請求方,B設備做爲應答方,採用同樣的方式進行認證。

  以上就是配對和雙方認證過程,在這一過程中,我們提到了三個密碼算法E22、E21和E1,這三個算法都是根據SAFER+算法進行少量的修改而成的。SAFER+算法屬於分組算法,明文塊爲128位,提供了128、 192和256三種不同的密鑰長度,藍牙標準採用128位的密鑰。SAFER+包括:

  1、KSA 一個密鑰調度算法,它產生17個不同的128位的密鑰

  2、8輪運算

  3、輸出變換 由最後一輪運算的輸出和最後一個密鑰異或而成。

  有興趣的朋友可以參看有關介紹,這裏不詳細介紹。


 


圖3


四、 PIN***方法

 

  從第三部分對藍牙技術配對和雙方認證過程的分析,我們可以看出,藍牙技術所用的認證方

  式屬於簡單的弱認證方式,其安全性完全依賴於PIN碼的保密性。

  這一部分我們討論***者通過收集必要的消息是怎麼樣用暴力破解方式猜測PIN的。

  表中列出了在配對和認證過程中,兩個藍牙設備A和B之間交換的通訊消息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章