錦州市廣廈電腦維修|上門維修電腦|上門做系統(tǒng)|0416-3905144熱誠服務(wù),錦州廣廈維修電腦,公司IT外包服務(wù)
topFlag1 設(shè)為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務(wù)項目 服務(wù)報價 維修流程 IT外包服務(wù) 服務(wù)器維護 技術(shù)文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統(tǒng)|0416-3905144熱誠服務(wù)技術(shù)文章
Wi-Fi 新標(biāo)準(zhǔn) WPA3 蜻蜓 (Dragonfly) 密鑰交換協(xié)議分析

作者: 佚名  日期:2018-10-23 12:12:48   來源: 本站整理

 在2018年1月8日美國拉斯維加斯的國際消費電子展(CES)上,Wi-Fi聯(lián)盟發(fā)布了最新的WPA3加密協(xié)議,作為WPA2技術(shù)的的后續(xù)版本,并在2018年6月26日,WiFi聯(lián)盟宣布WPA3協(xié)議已最終完成。與WPA3相關(guān)的最核心的文檔為RFC7664,其中描述的是WPA3中最大的改進,就是將原來的四次握手協(xié)議換成了新的“蜻蜓秘鑰交換協(xié)議”(Dragonfly Key Exchange),該協(xié)議將認證和秘鑰交換兩個功能合成于一個協(xié)議。號稱可以解決WPA2中未解決的幾個安全問題:
1.離線密碼破解——獲得WPA2的四次握手包即可進行離線字典攻擊,破解無線密碼。
2.轉(zhuǎn)發(fā)安全(Forward Secracy)——已知4次握手和無線密碼的情況下,可以解密目標(biāo)的所有通信流量。
3.KRACK等其他已知攻擊方法。
由于WPA3還尚未普及,想來目前無論公眾還是相關(guān)研究人員對WPA3的協(xié)議的實施細節(jié)所知應(yīng)該并不多,所以筆者在仔細閱讀RFC7664文檔后,在此文中將做詳細的分析討論,以及指出可能的攻擊方法,供其他相關(guān)研究人員參考。
WPA3簡介
本節(jié)中我們簡單介紹一下WPA3相關(guān)的基本知識,在WPA2的基礎(chǔ)上討論在WPA3協(xié)議中做了哪些關(guān)鍵改進以及改進后在安全方面會有哪些提升。

根據(jù)Wi-Fi聯(lián)盟官方發(fā)布的文檔,WPA3仍然分為WPA3個人級和WPA3企業(yè)級兩種標(biāo)準(zhǔn),其中,WPA3企業(yè)級認證與WPA2相比差別不大,僅僅將密鑰長度增加到了192位(WPA2使用的是128位的加密密鑰)仍然采用EAP-SSL,EAP-SIM/EAP-AKA之類的基于認證服務(wù)器的認證方法。
那么此次協(xié)議改進最大的地方在哪里呢?沒錯,改動最大的地方就是WPA3個人級相對于WPA2個人級的改進,根據(jù)官方的說法,WPA3個人級有如下幾個提升:
1.更強的基于密碼的認證安全(官方聲稱即使用戶使用弱密碼,仍然可以得到良好的保護。)
2.使用等量同步認證——一種更安全的設(shè)備間密鑰交換協(xié)議,即蜻蜓協(xié)議,可以防止通通信流量被竊聽,即使被攻擊者獲取了握手過程,也無法解密流量。
3.密鑰長度擴展到192位。
其中官方宣稱的第1點建立的基礎(chǔ)就是因為引入了蜻蜓秘鑰交換協(xié)議,該協(xié)議作者在該協(xié)議的說明中聲稱可以避免離線字典攻擊,這一點應(yīng)該就是以上第1所述的可保護弱密碼的原理。至于3,其實128位的對稱密鑰已經(jīng)足夠,此處提升僅僅有理論上的安全提升。看來WPA3上最明顯的改進就是替換了密鑰交換算法,在接下來的章節(jié)中我們就著重分析一下這個蜻蜓算法。
WPA2-PSK回顧
在開始分析蜻蜓算法之前,為了更有效的對比WPA2和WPA3密鑰交換算法的差異,這里先簡單介紹一下WPA2協(xié)議中設(shè)備入網(wǎng)認證的過程,見下圖。

事實上一次完整的WPA2入網(wǎng)過程中,在上圖所述的密鑰交換過程之前還需要3次交互,分別是客戶端發(fā)送Probe Request,服務(wù)器回應(yīng)Probe Response,客戶端發(fā)送Authentication Request服務(wù)器回應(yīng)Authentication Response,接著客戶端發(fā)送Association Request,服務(wù)器回應(yīng)Association Response,接著開始上圖所示密鑰交換過程。密鑰交換過程分為如下幾步:
1.AP發(fā)送一個隨機數(shù)AP Nonce給STA,STA通過AP的ESSID,以及自己的MAC地址,AP的MAC地址,PSK,AP發(fā)送的隨機數(shù)以及自己生成的STA Nonce,這6個參數(shù)生成PMK和PTK。
2.STA發(fā)送第1步生成的隨機數(shù)STA Nonce給AP,并使用上一步生成的PTK生成該數(shù)據(jù)包的消息校驗值MIC附在數(shù)據(jù)包后面發(fā)送給AP,AP通過包括STA Nonce在內(nèi)的同樣6個參數(shù)生成自己的PMK和PTK,并用PTK校驗STA發(fā)送的數(shù)據(jù)包的MIC值是否匹配,如果匹配則說明PSK正確認證通過。
3.AP將組密鑰(即GTK用于加密廣播以及組播包的密鑰)用PMK加密并附上MIC發(fā)送給STA。
4.STA校驗MIC后裝入GTK并回復(fù)ACK,密鑰交換結(jié)束開始加密通信。
如果你覺得以上寫的太糾結(jié),為了照顧大家特此附上代碼:
#!/usr/bin/env python
import hmac
from hashlib import pbkdf2_hmac,sha1,md5
def PRF(key,A,B):
    nByte = 48
    i = 0
    R = ''
    while ( i 8 + 159)/160)):
        hmacsha1 = hmac.new(key,A+"\x00" + B + chr(i),sha1)
        R += hmacsha1.digest()
        i += 1
    return R[0:nByte]
def MakeAB(aNonce,sNonce,apMac,cliMac):
    A = "Pairwise key expansion"
    B = min(apMac,cliMac) + max(apMac,cliMac) + min(aNonce, sNonce) + max(aNonce, sNonce)
    return (A,B)
def MakeMIC(pwd,ssid,A,B,data,wpa = False):
    pmk = pbkdf2_hmac('sha1',pwd,ssid,4096,32)
    ptk = PRF(pmk,A,B)
    hmacFunc = md5 if wpa else sha1
    mics = [hmac.new(ptk[0:16],i,hmacFunc).digest() for i in data]
    return (mics,ptk,pmk)
def calcKey(essid,psk,apMac,cliMac,data0,data1,data2,data3):
    ssid = essid
    #print ssid
    aNonce = data0[17:17+32]
    #print aNonce.encode('hex')
    sNonce = data1[17:17+32]
    #print sNonce.encode('hex')
    apMac = apMac.replace(':','').decode("hex")
    cliMac = cliMac.replace(':','').decode("hex")    mic1 = data1[81:81+16]
    data1 = data1.replace(mic1,'\x00'*16)
    mic2 = data2[81:81+16]
    data2 = data2.replace(mic2,'\x00'*16)
    mic3 = data3[81:81+16]
    data3 = data3.replace(mic3,'\x00'*16)
    A,B = MakeAB(aNonce,sNonce,apMac,cliMac)
    mics,ptk,pmk = MakeMIC(psk,ssid,A,B,[data1,data2,data3])
    print "pmk:",pmk.encode('hex')
    print "ptk:",ptk.encode('hex'),"len:",len(ptk)*8
    print "desired mic1:",mic1.encode('hex')
    print "acture mic1:",mics[0].encode('hex')[:-8]
    if (mic1==mics[0][:-4]):
        print "MIC1 MATCHED"
    print "desired mic2:",mic2.encode('hex')
    print "acture mic2:",mics[1].encode('hex')[:-8]
    if (mic2==mics[1][:-4]):
        print "MIC2 MATCHED"
    print "desired mic3:",mic3.encode('hex')
    print "acture mic3:",mics[2].encode('hex')[:-8]
    if (mic3==mics[2][:-4]):
        print "MIC3 MATCHED"
    return ptk
從上面的過程可以看出,其中最重要的參數(shù)就是PTK,每個STA和AP之間通信的PTK是不同的,這也意味著一旦PTK被獲知,就可以解密該STA和AP之間通信的所有流量。那么縱觀整個交換過程,最重要的參數(shù)就是PSK,PSK參與了密鑰的計算,且AP和STA對于PTK密鑰的計算算法是對稱的,這或許就是WPA2不提供轉(zhuǎn)發(fā)安全的最重要原因,那就是,只要握手過程被獲取,任何知道PSK的人都可以計算出PTK,從而解密所有通信流量。并且,由于算法是對稱的,只要抓取握手包,就可以通過離線校驗MIC的方式來驗證PSK的正確性,這就是aircrack-ng抓取握手包跑包破解WIFI密碼的原理。
好了,至此我們可以看出,對稱的密鑰生成算法或許是WPA2安全性的最大缺陷!因為這一點,導(dǎo)致WPA2可以被離線字典攻擊,同時,在PSK公開的網(wǎng)絡(luò)中,例如星巴克,酒店之類的場景,PSK被很多人都知道,且一旦密鑰被攻擊者獲取,就無法保證用戶的數(shù)據(jù)安全!
WPA3 Dragonfly(蜻蜓)密鑰交換算法
在大致了解了WPA3的改進以及WPA2優(yōu)劣后,我們可以進入正題,分析WPA3中最核心的算法——蜻蜓秘鑰交換算法,分析的過程中會牽扯到一些非對稱加密的知識,后面我會一一說明。
蜻蜓算法從本質(zhì)上說也是一個基于離散對數(shù)這個難解問題的算法,也就是說蜻蜓算法可以使用普通的整數(shù)有限域或者橢圓曲線來實現(xiàn),由此可見,蜻蜓算法和Diffie-Hellman算法十分相似。我們可以很容易的先對比D-H算法中的離散對數(shù),為了簡單起見,下面的討論我們以有限域上的情況來做例子,橢圓曲線的實現(xiàn)同理可以類比。首先我們?nèi)∫粋大質(zhì)數(shù)p,通常1024位以上,我們通常記Z_p^表示模p的剩余類乘法群,Q是一個Z_p^上的q階(q也是素數(shù))子群。那么蜻蜓算法的密鑰交換和認證過程如下:
前3次交互,即Probe+Authentication+Association過程同WPA2。密鑰交換第一步,對于一次正常的認證過程,AP和STA共享了同樣的一個PSK,我們首先要將這個PSK映射為Q上的一個元素P,映射算法有很多種,可以保證PSK到P的唯一映射,具體方法這里不做詳細討論,即我們只要知道映射完成之后,我們可以通過PSK得到一個唯一的整數(shù)P即可。
第二步,AP生成隨機的兩個參數(shù)r_A和m_A,(1
第三步,STA同樣生成r_B和m_B,(1
第四步,AP計算ss=〖(P^(s_B ) E_B)〗^(r_A )=P^(r_A r_B ) mod p。kck|mk=KDF-n(ss,”Dragonfly Key Derivation”), KDF-n是一個密鑰導(dǎo)出算法。
第五步,STA計算ss=〖(P^(s_A ) E_A)〗^(r_B )=P^(r_A r_B ) mod p,kck|mk=KDF-n(ss,”Dragonfly Key Derivation”) 。
第六步,AP計算參數(shù)A=H(kck|sA|sB|EA|EB|idA)發(fā)送給STA,其中H是一個hash算法。其中idA是AP的發(fā)送方標(biāo)識,可以通過密碼以及雙方參數(shù)通過固定算法計算所得。
第七步,STA計算參數(shù)B=H(kck|sB|sA|EB|EA|idB)發(fā)送給AP,idB同理
第八步,AP和STA分別使用自己的參數(shù)計算對方的hash的值,并與對方發(fā)送過來的值想比較,如果相等,則通過認證,否則斷開連接。
第九步,若第八步的驗證通過,則雙方交換的相同密鑰為第5,6步中mk。
更直觀的過程大家看下圖:

上面就是WPA3中蜻蜓密鑰交換算法的主要內(nèi)容了,由于WPA3尚未大規(guī)模商用,因此有很多實現(xiàn)細節(jié)還尚不清楚,要真正的實際使用還有很多工程方面的工作需要考慮,這些不是本文所關(guān)心的。因此后面我們僅做一個理論性的討論,上面的過程是對RFC7664里面所述協(xié)議的簡化模型,源文檔寫的非常冗長,但核心就在上面的過程里,如果對協(xié)議細節(jié)有興趣可以參考原文檔。
蜻蜓算法安全性分析
從上面的密鑰交換過程可見,這個算法確實如之前介紹所說,將認證和密鑰交換兩個功能合二為一,首先進行PSK認證,認證通過了密鑰才會生成,而對于WPA2,前兩次握手已經(jīng)計算出密鑰了,后第3第4次握手是在對密鑰是否一致進行校驗,由此可見WPA3的新協(xié)議確實對于提高安全性有一定幫助。
關(guān)于轉(zhuǎn)發(fā)安全的分析
而對于轉(zhuǎn)發(fā)安全的保證在于,即使知道PSK,攻擊者可以推知P,但由于攻擊者并不知道r_A或者r_B,因此攻擊者無法通過E_A或者E_B計算ss,因為要知道r_A或r_B必須先知道m(xù)_A或m_B,而通過E_A求m_A是一個離散對數(shù)問題,這是個難解問題,知道m(xù)_A求E_A很容易,但是反過來很難,用這個非對稱性質(zhì)來保證即使攻擊者知道PSK也無法根據(jù)握手過程計算出K,從而保證轉(zhuǎn)發(fā)安全。

關(guān)于中間人攻擊
從以上密鑰交換算法的細節(jié)可以看出,對于同樣知道PSK的攻擊者來說,這種算法也存在D-H密鑰交換算法的毛病,就是無法防止中間人攻擊!不過考慮到無線信道想要完成中間人劫持并不容易,所以這樣考慮也尚且合情合理,不過話說回來,WiFi網(wǎng)絡(luò)里中間人攻擊并不是完全不可能的,只是實施有一定條件而已,因此在這一點上,我認為仍然重蹈了WPA2中“只能保證PSK不泄露情況下安全”的覆轍。
關(guān)于離線字典攻擊
接下來我們來看看字典攻擊的情況,事實上蜻蜓算法的作者并沒有給出蜻蜓算法可以杜絕離線字典攻擊的嚴(yán)格證明,僅僅給出了一個主觀性的分析:
首先,作為攻擊者只能被動監(jiān)聽流量的情況,則如上面所說的,攻擊者無法得知r_A和r_B,要得到r_A和r_B需要計算離散對數(shù),這是一個難解的問題,缺少這兩個參數(shù)使得攻擊者無法做僅僅代入密碼驗證的方式,因此,僅僅抓取握手包,字典攻擊無法進行。
然后,討論主動的攻擊者,攻擊者此時能夠主動和AP或者STA進行虛假的交互,此時作者假設(shè)攻擊者會選擇一個隨機的m_B值,計算P=G^(m_B )發(fā)送給AP,其中G是Q的一個群生成元,這時候密碼可以表示成G的某個冪次,這時候AP計算的ss值則是密碼P的某個冪次,這時候假設(shè)攻擊者期望代入P進行校驗,即使成功求出正確的ss,要計算密碼也需要計算離散對數(shù),這是個難解問題,因此作者認為此時離線字典攻擊也沒有意義。
最后,我們再看看在D-H算法中的小子群攻擊對蜻蜓算法是否有效,小子群攻擊也需要攻擊者主動發(fā)起一次交互,類比D-H算法中的小子群攻擊的思想,我們知道,如果用S表示Q的一個小子群Q’中的元素,那么S的任意次方也是Q’中的元素,因為Q是質(zhì)數(shù)階群,所以子群一定存在,只要我們能找到一個元素個數(shù)足夠小的子群,取元素S,并且隨機選擇s_B,將E_B=S發(fā)送給AP,這時候AP會計算ss=〖(P^(s_B ) E_B)〗^(r_A )=P^(s_B r_A ) S^(R_A )=〖(P^(r_A ))〗^(s_B ) R的哈希值,并發(fā)送給STA,上式中,由于S是子群元素,所以S的r_A次方我們記作R,仍然是小子群中元素,而r_A雖然不知道,但是P^(r_A )=P^(s_A-m_A )=P^(s_A ) E_A,即可以使用s_A和E_A來計算,這時候我們未知的參數(shù)只有P和R,我們可以通過PSK生成離線字典P,然后計算ss的值,并且作hash比較,直至找出P,只要S的規(guī)模足夠小,這種離線攻擊方式還是有實施的可能性的,只不過要完成這種攻擊,攻擊者需要主動和STA或者AP完成至少一次交互,提高了攻擊成本。但實際上對于弱密碼來說,仍然是不安全的!
結(jié)論
本文詳細分析了WPA3中的蜻蜓密鑰交換算法,雖然對于工程化的實施細節(jié)尚不明確,本文從理論角度對于其安全性得出的結(jié)論總結(jié)如下:
1.WPA3使用蜻蜓算法,可以防止被動的攻擊者竊取數(shù)據(jù),即可以提供轉(zhuǎn)發(fā)安全。
2.因為WPA3個人級并不建立在公鑰信任的基礎(chǔ)上,因此對于同樣知道PSK的攻擊者來說,無法防止中間人攻擊。
3.無法完全防止離線字典攻擊,一定條件下字典攻擊是可以實施的,不過相比WPA2,提高了攻擊成本,但如果期待WPA3協(xié)議能很好的保護12345678這種弱密碼,那還是想多了。
4.至于對KRACK之類的密鑰重裝攻擊的防御,由于對握手過程的丟包處理機制細節(jié)還不明確,因此不確定能否防止此類攻擊,但從中間人攻擊的角度,此類攻擊在WPA3中仍然存在可能性。


熱門文章
  • 機械革命S1 PRO-02 開機不顯示 黑...
  • 聯(lián)想ThinkPad NM-C641上電掉電點不...
  • 三星一體激光打印機SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數(shù)和判...
  • IIS 8 開啟 GZIP壓縮來減少網(wǎng)絡(luò)請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機始終停留在開機界面...
  • 常見打印機清零步驟
  • 安裝驅(qū)動時提示不包含數(shù)字簽名的解...
  • 共享打印機需要密碼的解決方法
  • 圖解Windows 7系統(tǒng)快速共享打印機的...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯(lián)系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務(wù)區(qū)域: 遼寧錦州市區(qū)
    主要業(yè)務(wù): 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網(wǎng)設(shè)置,IT服務(wù)外包,局域網(wǎng)組建,ADSL共享上網(wǎng),路由器設(shè)置,數(shù)據(jù)恢復(fù),密碼破解,光盤刻錄制作等服務(wù)

    技術(shù)支持:微軟等
    主站蜘蛛池模板: 国产精品免费无遮挡无码永久视频 | 熟妇人妻中文字幕无码老熟妇| 亚洲成a人在线看天堂无码 | 久久久无码精品亚洲日韩蜜桃| 国产精品va无码一区二区| 少妇无码一区二区三区免费| 成人无码Av片在线观看| 亚洲国产精品成人精品无码区在线| 久久久久久国产精品无码超碰| 免费A级毛片无码久久版| 久久国产精品无码一区二区三区 | 曰韩精品无码一区二区三区| 亚洲精品无码av中文字幕| 四虎成人精品无码| 国产成年无码AV片在线韩国| 国产精品无码专区AV在线播放 | 亚洲看片无码在线视频| 波多野结AV衣东京热无码专区| 人妻少妇看A偷人无码精品视频| 无码人妻AV一二区二区三区| 中文字幕无码第1页| 国产精品亚洲专区无码不卡| 在人线av无码免费高潮喷水| 无码精品视频一区二区三区 | 精品无码久久久久久午夜| 国产高清无码视频| 一本大道无码日韩精品影视_| 久久久国产精品无码一区二区三区 | 久久精品无码一区二区无码| 亚洲欧洲日产国码无码久久99| 黑人无码精品又粗又大又长| 国产成人无码网站| 国产免费av片在线无码免费看| 无码人妻一区二区三区av| 久久人午夜亚洲精品无码区| 久久亚洲精品无码网站| 精品无码av无码专区| 久久久久亚洲AV无码专区桃色| 中文字幕人妻三级中文无码视频| 精品无人区无码乱码大片国产| 中文无码AV一区二区三区|