家里電腦做網(wǎng)站服務(wù)器seo推廣怎么樣
原理
藍牙網(wǎng)絡(luò)中的“個人身份碼”攻擊傳統(tǒng)的藍牙設(shè)備,主要是指“藍牙規(guī)范2.1版”以前的各版藍牙設(shè)備,以及使用“安全簡化配對”(Secure SimplePairing,SSP)協(xié)議的藍牙設(shè)備。
這些傳統(tǒng)的藍牙設(shè)備僅僅依賴于“個人身份碼”( PersonalldentificationNumber,PIN)的有效性作為唯一的認(rèn)證規(guī)則,只要通信雙方的藍牙設(shè)備使用了相同的“個人身份碼",就認(rèn)為通過認(rèn)證,否則就認(rèn)為沒有通過認(rèn)證。
“個人身份碼”只是一個由1位到16位數(shù)字組成的一個號碼。
在很多產(chǎn)品中,“個人身份碼”都是在產(chǎn)品生產(chǎn)的時候,直接由產(chǎn)品靜態(tài)定義的,終端用戶也無法修改。在“安全簡化配對”的藍牙設(shè)備中,主要是指“基本速率藍牙”和“增強數(shù)據(jù)速率藍牙”,而二者在本章中統(tǒng)稱為“傳統(tǒng)藍牙”,并且,這兩種藍牙設(shè)備都支持多種認(rèn)證方式,主要有如下幾種。
“數(shù)字比較”認(rèn)證(NumericComparison)在兩個藍牙設(shè)備上顯示一個六位數(shù)字,提示用戶判斷兩個數(shù)字是否相同,相同就選“配對”(Yes),否則就選“不配對”(No)。
“只比較不確認(rèn)”認(rèn)證(Just Works)盡管這種認(rèn)證方式同“數(shù)字比較”的認(rèn)證方式使用了相同的認(rèn)證策略,但這種方式下并不提醒用戶來驗證這兩個六位數(shù)字是否相同。
“密碼輸入”認(rèn)證(PasskeyEntry)在特殊場景下的認(rèn)證方式,該場景中,一方設(shè)備有一個顯示器,而另一方有一個數(shù)字輸入鍵盤。這時,有顯示器的一方會在顯示器上顯示一串六位數(shù)字,然后要求用戶通過另一方設(shè)備的鍵盤上輸人所看到的這個六位數(shù)字來進行驗證。
“帶外認(rèn)證”〇OB認(rèn)證(Out ofBand)“帶外認(rèn)證"OOB 認(rèn)證利用第三方的技術(shù)交換“認(rèn)證數(shù)據(jù)和派生的密鑰”,這種第三方技術(shù)如:近場通信(NearFieldCommunicationNFC)。
“傳統(tǒng)藍牙”中,基于“安全簡化配對”功能的設(shè)備通常使用“數(shù)值比較”認(rèn)證方式“只比較不確認(rèn)”認(rèn)證方式,或者是“密碼輸入”認(rèn)證方式。無論是哪種認(rèn)證方式,都使用“Difie-Hellman 橢圓曲線密鑰”(Elliptic Curve Diffie-Hellman,ECDH)算法加密通信的數(shù)據(jù)以便防御偵聽攻擊。此外,“數(shù)值比較”認(rèn)證方式和“密碼輸人”認(rèn)證方式都對防御“中間人的畸形數(shù)據(jù)”(MitM)攻擊提供了保護措施,而“只比較不確認(rèn)”認(rèn)證方式并不能對防御“中間人的畸形數(shù)據(jù)”攻擊提供保護;“帶外認(rèn)證”認(rèn)證是否對防御“中間人的畸形數(shù)據(jù)”攻擊提供保護,則取決于所選用的第三方的“帶外認(rèn)證”協(xié)議是否對于被動式偵聽和“中間人的畸形數(shù)據(jù)”攻擊提供防御措施。
隨著“低功耗藍牙”的引人,“藍牙技術(shù)聯(lián)盟”(BluetoothSpecialInterest Group,SIG)簡化了對設(shè)備認(rèn)證的支持,其目的是為了降低“藍牙控制器”(Bluetoothcontroller)的成本并將“從設(shè)備”的復(fù)雜度降到最低。
“低功耗藍牙”設(shè)備上仍然還保留有“數(shù)值比較”“只比較不確認(rèn)”和“帶外認(rèn)證”等認(rèn)證方式,但“密碼輸人”認(rèn)證方式在“低功耗藍牙”上并不支持“安全簡化配對”功能。
雖然“低功耗藍牙”支持上面多種認(rèn)證方式,但是在“低功耗藍牙”設(shè)備上,由于不再支持“Difie-Hellman橢圓曲線密鑰”加密算法,所以缺乏對被動式偵聽攻擊的防御保護措施。
從實際開發(fā)的角度來看,藍牙“安全簡化配對”SSP功能是難以利用。在藍牙“安全簡化配對”SSP功能處理過程中,被動式偵聽也不能獲得足夠的信息可以發(fā)起一次還原“派生的加密主鍵”(derived encryptionkey)的攻擊,很顯然,這個“主鍵”正是數(shù)據(jù)可以解密的最關(guān)鍵元素。
盡管使用“Difie-Hellman橢圓曲線密鑰”加密算法,但藍牙“安全簡化配對”功能已在幾個實例中證明,該功能是容易受到“中間人的畸形數(shù)據(jù)”的攻擊的,主要是當(dāng)攻擊者可以干擾 2.4GHz頻譜,使原來處于活動狀態(tài)的一對藍牙設(shè)備不得不重新配對(re-pairing),加之在“只比較不確認(rèn)”認(rèn)證方式中,配對方式是“啞狀態(tài)”(dumb down)下進行的,所以“中間人的畸形數(shù)據(jù)”就可以通過強制雙方藍牙設(shè)備使用“只比較不確認(rèn)”認(rèn)證方式靜悄悄地完成攻擊,有時,這種合二為一的攻擊也稱為“BT-NINO-MITM攻擊”。雖然這種攻擊方式被幾個學(xué)術(shù)論文證明肯定是存在的,但到目前為止,還沒有公開的、實際的工具是可以直接拿來使用的。盡管存在這樣的限制,仍然有基于藍牙數(shù)據(jù)包捕獲的公開、可訪問的攻擊工具,可以用來攻擊“傳統(tǒng)藍牙”和“低功耗藍牙”設(shè)備上的數(shù)據(jù)交換。這里所說的數(shù)據(jù)包捕獲,主要是指超牙設(shè)備的數(shù)據(jù)包捕獲功能。
傳統(tǒng)藍牙中的個人身份碼攻擊
正如在第7章中所看到的一樣,兩個設(shè)備可以通過配對,派生出來的一個128位的連接密鑰(128-bit link key)。該密鑰用在認(rèn)證中,用于識別“呼叫設(shè)備”(claimant device)和加密所有通信的數(shù)據(jù)。這個“配對交換”(pairingexchange)只能在“傳統(tǒng)藍牙”中通過一個“個人身份碼”值進行保護。
兩個“傳統(tǒng)藍牙”設(shè)備之間的配對過程存在一個點的重大的漏洞,那就是攻擊者在觀察整個配對交換過程的前提下,可以加載一個離線的、針對“個人身份碼”選擇的暴力攻擊在配對過程完成后,后續(xù)的連接可以使用之前保存的128位的連接密鑰用于認(rèn)證和密鑰派生。這種技術(shù)在當(dāng)前對于攻擊來說是有點不切實際的。
為了破解“個人身份碼”的信息,攻擊者必須首先單獨地還原如下信息:
“發(fā)起隨機數(shù)”IN RAND,由“發(fā)起方”(initiator)向“響應(yīng)方”(responder)發(fā)送
兩個“COMB_KEY 值”,“發(fā)起方”和“響應(yīng)方”都會發(fā)送。
“認(rèn)證隨機數(shù)”AU RAND,由“認(rèn)證呼叫方”(auchentication claimant)發(fā)送
“簽署響應(yīng)”SRES(Signed Response),由“驗證確認(rèn)方”(authenticaLion verifier)發(fā)送
由于“傳統(tǒng)藍牙”的認(rèn)證機制屬于是“相互身份驗證”(mutual-authentication),也就是說“從設(shè)備”的身份由“主設(shè)備”進行認(rèn)證,反之亦然,所以攻擊者有兩次機會識別“發(fā)起隨機數(shù)”值和“簽署響應(yīng)”值。這時的攻擊者主要的精力全部放在完成認(rèn)證的操作上,對于“配對交互”本身,攻擊者反而不必關(guān)注太多,勢在必得的重要數(shù)據(jù)是“主設(shè)備”或者“從設(shè)備”的“藍牙設(shè)備地址”。
此外,攻擊者既要知道“從設(shè)備”的“藍牙設(shè)備地址”,也要知道“主設(shè)備”的“藍牙設(shè)備地址”,因為這兩個地址“配對交換”的過程中并不會進行無線傳送,所以只能通過上面“相互身份驗證”過程中,捕獲“發(fā)起隨機數(shù)”值和“簽署響應(yīng)”值。
使用 BTCrack 攻擊“個人身份碼”
要使用 BTCrack 軟件,首先要進行“配對交換”數(shù)據(jù)包的捕獲。在這一點上,可選的工具非常多,超牙系統(tǒng)、Wireshark 軟件、“前線藍牙協(xié)議分析器600通信探測”設(shè)備、Elisys公司的“藍牙資源管理器400”,都可以在兩個通信的藍牙設(shè)備之間捕獲“配對交換”數(shù)據(jù)包并從中識別出“發(fā)起隨機數(shù)”、兩個“COMB KEY值”、“認(rèn)證隨機數(shù)”、“簽署響應(yīng)”等值一旦這些字段的值被捕獲到或計算出,隨后就可以確定“個人身份碼”的最大長度,通過這個值,BTCrack軟件就可以發(fā)起一起還原“個人身份碼”的攻擊了。對于BTCrack程序來說,上面的操作只需要單擊“破解”(Crack)按鈕即可,隨后 Crack 程序就會通過暴力破解的方式對“個人身份碼”進行破解,直到最終破解成功,拿到“個人身份碼”的值;或者將字典中,所有可能的“個人身份碼”全部用完,仍然沒有正確的“個人身份碼”,這時就意味著破解失敗。