網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來(lái)的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲(chǔ)資源、數(shù)據(jù)資源、信息資源、知識(shí)資源、專家資源、大型數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 最近,國(guó)內(nèi)外多家網(wǎng)站紛紛刊登了一則關(guān)于針對(duì)藍(lán)牙PIN碼的最新攻擊技術(shù)的新聞:通過(guò)強(qiáng)制兩個(gè)正在通訊的藍(lán)牙設(shè)備進(jìn)行重新配對(duì),并監(jiān)聽配對(duì)信息,攻擊者可以在0.063秒內(nèi)破解一個(gè)4位(十進(jìn)制)的PIN碼。今年6月上旬舉辦的世界無(wú)線技術(shù)會(huì)議也詳細(xì)討論了該攻擊方法,securityfocus 甚至說(shuō)“這種新的攻擊技術(shù)令很多關(guān)注無(wú)線技術(shù)的信息安全專家非常的震驚,因?yàn)橐郧瓣P(guān)于攻擊藍(lán)牙PIN碼的研究只涉及在不正確的藍(lán)牙配置或特定的環(huán)境下,而此次是第一次全面性描述攻擊藍(lán)牙的技術(shù)”。針對(duì)這種藍(lán)牙攻擊技術(shù),娛樂(lè)與技術(shù)并重的WDA進(jìn)行了跟蹤和探討,并寫出以下的攻擊細(xì)節(jié),希望與關(guān)注藍(lán)牙技術(shù)的愛好者共同討論。 一、 概述 藍(lán)牙(bluetooth)是一種實(shí)現(xiàn)多種設(shè)備之間短距離無(wú)線連接的協(xié)議,通訊速度快,廣泛應(yīng)用于無(wú)線設(shè)備、圖像處理、安全產(chǎn)品、消費(fèi)娛樂(lè)、汽車產(chǎn)品和家用電器等領(lǐng)域。做為一種無(wú)線技術(shù),藍(lán)牙技術(shù)提供了諸如密鑰管理、認(rèn)證和保密等安全機(jī)制。然而,過(guò)去幾年,一些針對(duì)藍(lán)牙技術(shù)的攻擊方法被提出,包括信息漏泄、數(shù)據(jù)竊取、假冒攻擊等,藍(lán)牙技術(shù)的安全問(wèn)題主要有以下幾點(diǎn): 1、整個(gè)藍(lán)牙系統(tǒng)的安全性依耐于PIN碼的保密性。由于安全意識(shí)不高,用戶所選擇的PIN碼長(zhǎng)度通常較短,導(dǎo)致PIN碼被破解的可能性大大增加。 2、 藍(lán)牙協(xié)議所使用的密碼算法是藍(lán)牙設(shè)計(jì)者自行發(fā)明的,這些密碼算法比較簡(jiǎn)單。從密碼分析的角度看,一個(gè)成熟的密碼算法必須經(jīng)過(guò)長(zhǎng)期的實(shí)踐才會(huì)被人們所認(rèn)可,由于缺乏測(cè)試,新的密碼算法有可能隱含著某種缺陷。 3 、藍(lán)牙適用于10米以內(nèi)的短距離通訊,攻擊者要想接近攻擊目標(biāo)確實(shí)比較困難。但設(shè)想在一個(gè)步行街上或者在一個(gè)堵車的環(huán)境中,攻擊者通過(guò)啟動(dòng)了藍(lán)牙功能的設(shè)備,是有可能搜索到周圍10米內(nèi)的藍(lán)牙通訊。而且,最新的IEEE 802.11標(biāo)準(zhǔn)已經(jīng)可以比較便宜的擴(kuò)展藍(lán)牙通訊的距離。 4、由于藍(lán)牙技術(shù)越來(lái)越普及,特別是藍(lán)牙軟件可以安裝在PDA和便攜式電腦上,存放在PDA和便攜式電腦上的信息也越來(lái)越引起黑客的興趣。 二、 術(shù)語(yǔ)介紹 配對(duì):配對(duì)是指兩個(gè)藍(lán)牙設(shè)備首次通訊時(shí),相互確認(rèn)的過(guò)程。兩個(gè)藍(lán)牙設(shè)備之間一經(jīng)配對(duì)之后,隨后的通訊連接就不必每次都要做確認(rèn),非常的方便。 PIN(Personal Identification Number):個(gè)人識(shí)別碼,藍(lán)牙使用的PIN碼長(zhǎng)度為1-8個(gè)十進(jìn)制位(8-128比特)。 DB_ADDR: 藍(lán)牙設(shè)備地址。每個(gè)藍(lán)牙收發(fā)器被分配了唯一的一個(gè)48位的設(shè)備地址,類似于PC機(jī)網(wǎng)卡的MAC地址。兩個(gè)藍(lán)牙設(shè)備在通訊開始時(shí)通過(guò)詢問(wèn)的方式獲取對(duì)方的DB_ADDR地址。 [page_break]三、 藍(lán)牙配對(duì)和認(rèn)證過(guò)程 藍(lán)牙支持三種安全模式,第一種是設(shè)備沒(méi)有任何安全措施的"無(wú)安全操作"模式。第二種是信道建立之前不需啟動(dòng)安全協(xié)議的"業(yè)務(wù)級(jí)安全模式"。第三種是要求終端在鏈路建立前就需啟動(dòng)安全協(xié)議的"鏈路級(jí)安全模式"。其中,最后“鏈路級(jí)安全模式”安全級(jí)別最高,本文所討論的就是針對(duì)這種級(jí)別的攻擊技術(shù)。 1、配對(duì)和認(rèn)證 藍(lán)牙通訊初始化過(guò)程需要三個(gè)步驟:生成初始密鑰(Kinit)、生成鏈路密鑰(Kab)和雙方認(rèn)證。接著,用加密密鑰來(lái)保護(hù)往后的通訊。在配對(duì)之前,需要事先將PIN碼輸入到藍(lán)牙設(shè)備中,在某些設(shè)備(像無(wú)線耳機(jī)),PIN是固定不可改變的。必須注意的是,兩邊的PIN必須匹配,否則不能通訊。下面我們將討論配對(duì)和雙方認(rèn)證的細(xì)節(jié)。 .生成初始密鑰(Kinit) 初始密鑰Kinit t長(zhǎng)度為128位,由E22算法產(chǎn)生,圖1描述了生成Kinit密鑰的過(guò)程。首先提出通信要求的設(shè)備稱為主設(shè)備(Master),用A表示;被動(dòng)進(jìn)行通信的設(shè)備稱為從設(shè)備(Slave),用B表示。從圖中可以看到,E22算法的輸入(明文)由以下三部分組成: 1)從設(shè)備的物理地址:BD_ADDR,在生成Kinit前,主設(shè)備通過(guò)詢問(wèn)方式獲得從設(shè)備的地址BD_ADDR。 2)PIN碼及其長(zhǎng)度,PIN碼是雙方設(shè)備預(yù)先設(shè)定的。 3)一個(gè)128位的隨機(jī)數(shù)(IN_RAND)。由主設(shè)備產(chǎn)生,并以明文方式傳送給從設(shè)備。 由于主、從設(shè)備使用了相同的E22算法,如果雙方設(shè)備以上三部分的值都相等,那么各自算出來(lái)的Kinit也應(yīng)該相同。
[page_break].生成鏈路密鑰Kab 見圖2,首先主設(shè)備A產(chǎn)生128位的隨機(jī)數(shù)LK_RANDA,從設(shè)備B也產(chǎn)生128位的隨機(jī)數(shù)LK_RANDB。在主設(shè)備A中,Kinit與LK_RANDA進(jìn)行位比特邏輯異或運(yùn)算,異或結(jié)果發(fā)送給B設(shè)備;同樣的,在B設(shè)備中,Kinit和LK_RANDB進(jìn)行位比特邏輯異或運(yùn)算,結(jié)果發(fā)送給A設(shè)備。通過(guò)這些交換后,A和B設(shè)備都具有相同的Kinit、LK_RANDA和LK_RANDB。按照?qǐng)D2,設(shè)備A和B分別用E21算法將LK_RANDA和BD_ADDRA、LK_RANDB和BD_RANDRB加密,并將結(jié)果進(jìn)行異或得到Kab。
.雙向認(rèn)證 雙向認(rèn)證采用challenge-response(挑戰(zhàn)-應(yīng)答)方式。如圖3所示,主設(shè)備A為應(yīng)答方,從設(shè)備B為請(qǐng)求方。做為應(yīng)答方的A設(shè)備產(chǎn)生一個(gè)128位的隨機(jī)數(shù)AU_RANDA,并以明文方式傳送至B設(shè)備。A、B設(shè)備都用E1算法將各自得到的AU_RANDA、Kab和BD_ANDRB加密運(yùn)算分別生成32位的SRESA和SRESB。B設(shè)備將結(jié)果SRESB傳送給A設(shè)備,A設(shè)備比較SRESA和SRESB,如果相等,此次認(rèn)證通過(guò),否則認(rèn)證不通過(guò)。執(zhí)行完此次認(rèn)證后,A設(shè)備和B設(shè)備的角色對(duì)換,即A設(shè)備做為請(qǐng)求方,B設(shè)備做為應(yīng)答方,采用同樣的方式進(jìn)行認(rèn)證。 以上就是配對(duì)和雙方認(rèn)證過(guò)程,在這一過(guò)程中,我們提到了三個(gè)密碼算法E22、E21和E1,這三個(gè)算法都是根據(jù)SAFER+算法進(jìn)行少量的修改而成的。SAFER+算法屬于分組算法,明文塊為128位,提供了128、 192和256三種不同的密鑰長(zhǎng)度,藍(lán)牙標(biāo)準(zhǔn)采用128位的密鑰。SAFER+包括: 1、KSA 一個(gè)密鑰調(diào)度算法,它產(chǎn)生17個(gè)不同的128位的密鑰 2、8輪運(yùn)算 3、輸出變換 由最后一輪運(yùn)算的輸出和最后一個(gè)密鑰異或而成。 有興趣的朋友可以參看有關(guān)介紹,這里不詳細(xì)介紹。
[page_break]四、 PIN攻擊方法 從第三部分對(duì)藍(lán)牙技術(shù)配對(duì)和雙方認(rèn)證過(guò)程的分析,我們可以看出,藍(lán)牙技術(shù)所用的認(rèn)證方 式屬于簡(jiǎn)單的弱認(rèn)證方式,其安全性完全依賴于PIN碼的保密性。 這一部分我們討論攻擊者通過(guò)收集必要的消息是怎么樣用暴力破解方式猜測(cè)PIN的。 表中列出了在配對(duì)和認(rèn)證過(guò)程中,兩個(gè)藍(lán)牙設(shè)備A和B之間交換的通訊消息。
第一步、列舉出所有可能的PIN值,如果假定PIN長(zhǎng)度為4位,那么可能的PIN取值從0000到9999之間。 第二步、按照順序取PIN列表中的第一個(gè)值,并取得消息IN_RAND和BD_ADDR,就可以通過(guò)E22(注意:E22算法是公開的)算法,計(jì)算得到Kinit。 第三步、根據(jù)消息2和消息3,由上面計(jì)算得到的Kinit,反推計(jì)算出LK_RANDA和LK_RANDB 第四步、根據(jù)LK_RANDA和LK_RANDB以及兩個(gè)設(shè)備的物理地址等信息,計(jì)算得到Kab。 第五步、由Kab和消息4(AU_RANDA),計(jì)算得到SRES,并與信息5的SRES比較。 同樣的,用Kab和AU_RANDB,計(jì)算得到SRES,并與信息7進(jìn)行比較。 第六步、如果第五步的消息比較相等,則給定的PIN是正確的;如果不匹配,回到第二步,取PIN列表的下一個(gè)PIN,重復(fù)第二步后的步驟,直到找到個(gè)正確的PIN為止。 [page_break]五、 破解效率 在破解密碼實(shí)踐中,破解效率是很重要的。試想,如果攻擊一個(gè)藍(lán)牙PIN碼需要幾天的時(shí)間, 意義就不大了。成功破解PIN的效率與攻擊所用機(jī)器的性能和所采用的攻擊方法有關(guān)。研究人員選取了以下的測(cè)試環(huán)境: 1、硬件:奔騰III 450MHz,個(gè)人PC機(jī) 2、操作系統(tǒng):win98 3、編譯器:VC++ 注意到,這個(gè)測(cè)試環(huán)境的性能是很一般的。研究人員采用了五種攻擊方法,分別是as-is version、Basic Version、KSA+ Expansion、PHT Lookup Table和Algebraic Manipulation。對(duì)于每一種攻擊方法,都選取4、5、6、7位不同的PIN做測(cè)試。測(cè)試結(jié)果令人驚訝,破解4位的PIN最快只需要0.27秒(使用Algebraic Manipulation攻擊方式)。研究人員又在一臺(tái)奔騰IV3GMHz的機(jī)器上進(jìn)行測(cè)試,測(cè)試結(jié)果顯示,破解4位的PIN僅僅需要0.063秒,比奔騰III環(huán)境測(cè)試快了4倍。 六、 強(qiáng)制配對(duì)攻擊 我們?cè)诘谒牟糠炙治龅摹癙IN攻擊方法”屬被動(dòng)攻擊,存在一定的局限性,攻擊者必須在 兩個(gè)藍(lán)牙設(shè)備配對(duì)和認(rèn)證過(guò)程中監(jiān)聽到所有的消息才可以進(jìn)行下一步的破解,而配對(duì)和認(rèn)證過(guò)程通常很短,這種情況給攻擊者帶來(lái)很多麻煩。 為消除這種局限性,研究人員想到了一種主動(dòng)攻擊方法,與其守候配對(duì)時(shí)期的到來(lái),不如強(qiáng)制藍(lán)牙設(shè)備進(jìn)行配對(duì)。這種強(qiáng)制配對(duì)攻擊的方法使得PIN破解成為隨心所欲的事。 我們來(lái)分析這種方法,如果兩臺(tái)設(shè)備已進(jìn)行了配對(duì),這就意味著雙方已創(chuàng)建并保存了鏈路密鑰(Kab),以后的通訊并不需要?jiǎng)?chuàng)建Kab,而是直接進(jìn)入認(rèn)證階段。根據(jù)藍(lán)牙設(shè)備內(nèi)核的不同,有三種強(qiáng)制重新配對(duì)的攻擊方法。 方法一:根據(jù)前面所述,配對(duì)完成后,接下來(lái)的通訊不需要再進(jìn)行配對(duì),而是直接進(jìn)行雙方認(rèn)證,此時(shí),主設(shè)備A發(fā)送AU_RAND給從設(shè)備B,并等待B設(shè)備發(fā)來(lái)SRES,以便進(jìn)行比較和認(rèn)證。藍(lán)牙技術(shù)標(biāo)準(zhǔn)規(guī)定:如果藍(lán)牙設(shè)備丟失鏈路密鑰(Kab),應(yīng)發(fā)送LMP_not_accepted消息告知對(duì)方,對(duì)方收到此消息后會(huì)自動(dòng)進(jìn)行重新配對(duì)。如果在主設(shè)備A發(fā)送AU_RAND給從設(shè)備B后,攻擊者立即發(fā)送偽造了的LMP_not_accepted消息給設(shè)備A,設(shè)備A誤認(rèn)為此消息是設(shè)備B發(fā)來(lái),并進(jìn)入重新配對(duì)。 方法二:在認(rèn)證階段,攻擊者在A設(shè)備向B設(shè)備發(fā)送AU_RAND前,偽造A設(shè)備向B設(shè)備發(fā)送IN_RAND消息。B設(shè)備誤以為A設(shè)備丟失了鏈路密鑰Kab,于是迫使配對(duì)過(guò)程重新開始。 方法三:同樣是在認(rèn)證階段,主設(shè)備A發(fā)送AU_RAND消息給從設(shè)備B,并等待從設(shè)備返回SRES。如果在主設(shè)備收到B設(shè)備返回SRES之前,攻擊者仿造從設(shè)備向主設(shè)備發(fā)出一個(gè)隨機(jī)的SRES,主設(shè)備將收到的SRES與設(shè)備自身計(jì)算的SRES進(jìn)行比較,比較結(jié)果不一樣,主設(shè)備于是重新要求認(rèn)證,當(dāng)認(rèn)證失敗次數(shù)達(dá)到一定數(shù)量時(shí),配對(duì)過(guò)程會(huì)重新啟動(dòng)。 七、防范建議 至此,我們介紹了藍(lán)牙技術(shù)的配對(duì)和認(rèn)證過(guò)程,并分析了PIN破解和三種強(qiáng)制重新配對(duì)攻擊 的原理、細(xì)節(jié)。比起互聯(lián)網(wǎng)黑客工具的泛濫,藍(lán)牙攻擊的實(shí)例并不多,到目前為此,針對(duì)本文所介紹的攻擊方法的工具還沒(méi)有出現(xiàn),但隨著藍(lán)牙應(yīng)用的普及,我們有理由相信,針對(duì)藍(lán)牙技術(shù)和藍(lán)牙設(shè)備的攻擊工具會(huì)越來(lái)越多。因此,一方面,我們希望藍(lán)牙設(shè)計(jì)者增強(qiáng)藍(lán)牙技術(shù)的安全性;另一方面,終端用戶應(yīng)該提高安全意識(shí),做到以下幾點(diǎn): 1、 使用大于4位十進(jìn)制數(shù)字的PIN。 2、 當(dāng)出現(xiàn)藍(lán)牙設(shè)備要求重新輸入PIN的情況,要非常的小心,因?yàn)檫@可能是黑客正在進(jìn)行強(qiáng)制重新配對(duì)攻擊。 3、大數(shù)的藍(lán)牙設(shè)備將在配對(duì)過(guò)程中生成的Kab保存在非易失的內(nèi)存中,以后的的通訊都使用這個(gè)Kab,此種模式減少了配對(duì)的次數(shù)。然后藍(lán)牙標(biāo)準(zhǔn)還提供了另一種模式,要求每次通訊都需要進(jìn)行配對(duì),這種模式提高了配對(duì)過(guò)程中交換的消息被竊聽的風(fēng)險(xiǎn),建議不要使用這種配對(duì)方式 網(wǎng)絡(luò)的神奇作用吸引著越來(lái)越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來(lái)越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項(xiàng)技術(shù)都需要適時(shí)應(yīng)勢(shì),對(duì)應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!