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

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

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

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

事實上一次完整的WPA2入網過程中,在上圖所述的密鑰交換過程之前還需要3次交互,分別是客戶端發(fā)送Probe Request,服務器回應Probe Response,客戶端發(fā)送Authentication Request服務器回應Authentication Response,接著客戶端發(fā)送Association Request,服務器回應Association Response,接著開始上圖所示密鑰交換過程。密鑰交換過程分為如下幾步:
1.AP發(fā)送一個隨機數AP Nonce給STA,STA通過AP的ESSID,以及自己的MAC地址,AP的MAC地址,PSK,AP發(fā)送的隨機數以及自己生成的STA Nonce,這6個參數生成PMK和PTK。
2.STA發(fā)送第1步生成的隨機數STA Nonce給AP,并使用上一步生成的PTK生成該數據包的消息校驗值MIC附在數據包后面發(fā)送給AP,AP通過包括STA Nonce在內的同樣6個參數生成自己的PMK和PTK,并用PTK校驗STA發(fā)送的數據包的MIC值是否匹配,如果匹配則說明PSK正確認證通過。
3.AP將組密鑰(即GTK用于加密廣播以及組播包的密鑰)用PMK加密并附上MIC發(fā)送給STA。
4.STA校驗MIC后裝入GTK并回復ACK,密鑰交換結束開始加密通信。
如果你覺得以上寫的太糾結,為了照顧大家特此附上代碼:
#!/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
從上面的過程可以看出,其中最重要的參數就是PTK,每個STA和AP之間通信的PTK是不同的,這也意味著一旦PTK被獲知,就可以解密該STA和AP之間通信的所有流量。那么縱觀整個交換過程,最重要的參數就是PSK,PSK參與了密鑰的計算,且AP和STA對于PTK密鑰的計算算法是對稱的,這或許就是WPA2不提供轉發(fā)安全的最重要原因,那就是,只要握手過程被獲取,任何知道PSK的人都可以計算出PTK,從而解密所有通信流量。并且,由于算法是對稱的,只要抓取握手包,就可以通過離線校驗MIC的方式來驗證PSK的正確性,這就是aircrack-ng抓取握手包跑包破解WIFI密碼的原理。
好了,至此我們可以看出,對稱的密鑰生成算法或許是WPA2安全性的最大缺陷!因為這一點,導致WPA2可以被離線字典攻擊,同時,在PSK公開的網絡中,例如星巴克,酒店之類的場景,PSK被很多人都知道,且一旦密鑰被攻擊者獲取,就無法保證用戶的數據安全!
WPA3 Dragonfly(蜻蜓)密鑰交換算法
在大致了解了WPA3的改進以及WPA2優(yōu)劣后,我們可以進入正題,分析WPA3中最核心的算法——蜻蜓秘鑰交換算法,分析的過程中會牽扯到一些非對稱加密的知識,后面我會一一說明。
蜻蜓算法從本質上說也是一個基于離散對數這個難解問題的算法,也就是說蜻蜓算法可以使用普通的整數有限域或者橢圓曲線來實現,由此可見,蜻蜓算法和Diffie-Hellman算法十分相似。我們可以很容易的先對比D-H算法中的離散對數,為了簡單起見,下面的討論我們以有限域上的情況來做例子,橢圓曲線的實現同理可以類比。首先我們取一個大質數p,通常1024位以上,我們通常記Z_p^表示模p的剩余類乘法群,Q是一個Z_p^上的q階(q也是素數)子群。那么蜻蜓算法的密鑰交換和認證過程如下:
前3次交互,即Probe+Authentication+Association過程同WPA2。密鑰交換第一步,對于一次正常的認證過程,AP和STA共享了同樣的一個PSK,我們首先要將這個PSK映射為Q上的一個元素P,映射算法有很多種,可以保證PSK到P的唯一映射,具體方法這里不做詳細討論,即我們只要知道映射完成之后,我們可以通過PSK得到一個唯一的整數P即可。
第二步,AP生成隨機的兩個參數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是一個密鑰導出算法。
第五步,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計算參數A=H(kck|sA|sB|EA|EB|idA)發(fā)送給STA,其中H是一個hash算法。其中idA是AP的發(fā)送方標識,可以通過密碼以及雙方參數通過固定算法計算所得。
第七步,STA計算參數B=H(kck|sB|sA|EB|EA|idB)發(fā)送給AP,idB同理
第八步,AP和STA分別使用自己的參數計算對方的hash的值,并與對方發(fā)送過來的值想比較,如果相等,則通過認證,否則斷開連接。
第九步,若第八步的驗證通過,則雙方交換的相同密鑰為第5,6步中mk。
更直觀的過程大家看下圖:

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

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


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

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

    技術支持:微軟等
    主站蜘蛛池模板: 精品久久亚洲中文无码| 亚洲国产精品无码久久一线| 亚洲AV无码一区二区乱子仑 | 久久无码AV一区二区三区| 亚洲国产成人精品无码区在线网站| 黑人巨大无码中文字幕无码| 日韩精品无码免费专区午夜不卡| 无码国产精品一区二区免费式影视 | 人妻丰满熟妇AV无码区乱| 午夜亚洲av永久无码精品| 无码人妻视频一区二区三区| 一本大道久久东京热无码AV| 久久无码高潮喷水| 人妻丰满熟妇AV无码区HD| 无码精油按摩潮喷在播放| 国产精品VA在线观看无码不卡| 伊人无码精品久久一区二区| 亚洲AV无码第一区二区三区| 中文字幕在线无码一区| 亚洲高清无码综合性爱视频| 亚洲AV无码成人精品区狼人影院| 久久精品成人无码观看56| 免费无码又爽又刺激网站| 国产自无码视频在线观看| 无码人妻精一区二区三区| 精品久久久久久无码人妻中文字幕| 无码精品一区二区三区免费视频| 国产真人无码作爱视频免费| 欧洲精品无码一区二区三区在线播放| 粉嫩大学生无套内射无码卡视频 | 午夜无码熟熟妇丰满人妻| 亚洲日韩精品A∨片无码加勒比| 日韩乱码人妻无码中文字幕| 国产成人无码AⅤ片在线观看| 成人无码AV一区二区| 潮喷失禁大喷水无码| 国产亚洲精品无码成人| 亚洲AV无码一区东京热| 无码国产精品一区二区免费式芒果| 中文字幕乱妇无码AV在线| 无码精品国产VA在线观看|