1、 概述算法
藍牙(bluetooth)是一種實現多種設備之間短距離無線鏈接的協議,通信速度快,普遍應用於無線設備、圖像處理、安全產品、消費娛樂、汽車產品和家用電器等領域。作爲一種無線技術,藍牙技術提供了諸如密鑰管理、認證和保密等安全機制。然而,過去幾年,一些針對藍牙技術的***方法被提出,包括信息漏泄、數據竊取、假冒***等,藍牙技術的安全問題主要有如下幾點:安全
一、整個藍牙系統的安全性依耐於PIN碼的保密性。因爲安全意識不高,用戶所選擇的PIN碼長度一般較短,致使PIN碼被破解的可能性大大增長。ide
二、 藍牙協議所使用的密碼算法是藍牙設計者自行發明的,這些密碼算法比較簡單。從密碼分析的角度看,一個成熟的密碼算法必須通過長期的實踐纔會被人們所承認,因爲缺少測試,新的密碼算法有可能隱含着某種缺陷。測試
3 、藍牙適用於10米之內的短距離通信,***者要想接近***目標確實比較困難。但設想在一個步行街上或者在一個堵車的環境中,***者經過啓動了藍牙功能的設備,是有可能搜索到周圍10米內的藍牙通信。並且,最新的IEEE 802.11標準已經能夠比較便宜的擴展藍牙通信的距離。網站
四、因爲藍牙技術愈來愈普及,特別是藍牙軟件能夠安裝在PDA和便攜式電腦上,存放在PDA和便攜式電腦上的信息也愈來愈引發***的興趣。this
2、 術語介紹加密
配對:配對是指兩個藍牙設備首次通信時,相互確認的過程。兩個藍牙設備之間一經配對以後,隨後的通信鏈接就沒必要每次都要作確認,很是的方便。設計
PIN(Personal Identification Number):我的識別碼,藍牙使用的PIN碼長度爲1-8個十進制位(8-128比特)。3d
DB_ADDR: 藍牙設備地址。每一個藍牙收發器被分配了惟一的一個48位的設備地址,相似於PC機網卡的MAC地址。兩個藍牙設備在通信開始時經過詢問的方式獲取對方的DB_ADDR地址。blog
藍牙支持三種安全模式,第一種是設備沒有任何安全措施的"無安全操做"模式。第二種是信道創建以前不需啓動安全協議的"業務級安全模式"。第三種是要求終端在鏈路創建前就需啓動安全協議的"鏈路級安全模式"。其中,最後「鏈路級安全模式」安全級別最高,本文所討論的就是針對這種級別的***技術。
一、配對和認證
藍牙通信初始化過程須要三個步驟:生成初始密鑰(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
見圖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設備作爲應答方,採用一樣的方式進行認證。
以上就是配對和雙方認證過程,在這一過程當中,咱們提到了三個密碼算法E2二、E21和E1,這三個算法都是根據SAFER+算法進行少許的修改而成的。SAFER+算法屬於分組算法,明文塊爲128位,提供了12八、 192和256三種不一樣的密鑰長度,藍牙標準採用128位的密鑰。SAFER+包括:
一、KSA 一個密鑰調度算法,它產生17個不一樣的128位的密鑰
二、8輪運算
三、輸出變換 由最後一輪運算的輸出和最後一個密鑰異或而成。
有興趣的朋友能夠參看有關介紹,這裏不詳細介紹。
圖3
從第三部分對藍牙技術配對和雙方認證過程的分析,咱們能夠看出,藍牙技術所用的認證方
式屬於簡單的弱認證方式,其安全性徹底依賴於PIN碼的保密性。
這一部分咱們討論***者經過收集必要的消息是怎麼樣用暴力破解方式猜想PIN的。
表中列出了在配對和認證過程當中,兩個藍牙設備A和B之間交換的通信消息。