無線與物聯網project題目和解答
課程專案:重安裝鍵攻擊
- 專案簡介 1.1 專案背景 WPA2是經由Wi-Fi聯盟驗證過的IEEE 802.11i標準的認證形式。它是目前應用最為廣泛的保護無線網路安全的協議。 2017年,比利時魯汶大學的安全研究員發表了針對WPA2協議的重安裝鍵攻擊 (Key Reinstallation Attacks)。該攻擊通過重放Client 和 Access Point (AP) 之間傳遞的資訊,迫使Client多次使用原本應為一次性的隨機數,進而破壞加密方案的安全性。通過該攻擊,攻擊者可以竊聽或篡改Client和AP之間的所有通訊流量,進而竊取信用卡、密碼、聊天訊息、電子郵件、照片等資訊。 1.2 專案目標 通過模擬的方式實現簡化版的WPA2協議並重現重安裝鍵攻擊。 1.3 開發環境 C,C++ 或 Java。
- WPA2實現 2.1 系統模型
i. Client: 一個命令列程式,負責將使用者提供的資料通過加密的方式傳輸給AP。 Client程式接收四個命令列引數:
- 目標AP的IP地址。
- 目標AP的埠。
- 目標AP的密碼 (MasterKey)。
- 需要傳遞的資料(文字文件,與Client程式在同一目錄下)。 例如,如果程式命名為Client, 則啟動命令如下 ./Client 192.168.0.35 1234 z3dg35dg Packet.txt ii. AP: 一個命令列程式,負責驗證Client的身份以及資料的接收 AP程式接收兩個命令列引數:
- 密碼 (MasterKey)
- 埠 例如,如果程式命名為AP, 則啟動命令如下 ./AP z3dg35dg 1234 iii. Channel: Client 與 AP 通過TCP Socket 進行互動。 2.2 協議流程 在WPA2中,Client和AP通過四步握手流程生成一個共享的金鑰TK。該TK用於加密/解密之後傳輸的資料。 為了便於理解和實現,本專案僅要求實現簡化版WPA2流程。此流程省去了部分細節(例如GroupKey),且只考慮一種異常,即Msg4 丟失。完整版WPA2流程可參考論文。簡化版的流程如下:
2.2.1 正常流程 在不考慮資料包丟失且無攻擊者干擾的情況下,Client與AP的互動流程如下 Client向AP發出驗證請求,這裡驗證請求可以設定為任意字串,例如Authentication_Request. AP收到請求後,生成一個隨機數ANonce。 AP將ANonce和r傳送給Client,這裡r為計數器,AP每傳送一次資訊給Client, r 增加1 (四步握手第一步)。 Client 收到 ANonce後,生成另外一個隨機數CNonce。 Client 根據ANonce, CNonce以及MasterKey (見2.1), 計算出傳輸金鑰TK。TK將被用於加密使用者想要上傳的資料包。 Client將CNonce和r傳送給AP, 這裡的r即是AP在四步握手的第一步使用的r(四步握手第二步)。 AP收到CNonce後,和已有的ANonce和MasterKey一起,計算出傳輸金鑰TK。這裡算出的TK應與Client算出的TK相同。 AP傳送ACK和r+1 給Client。r+1表示這是AP傳送的第二條資訊。ACK為一個字串,用於告知Client,已經收到CNonce。(四步握手第三步)。 Client收到ACK後,傳送ACK和r+1 給AP。r+1表示這是Client傳送的第二條資訊。ACK為一個字串,用於告知AP,四步握手完成。(四步握手第四步)。 Client和AP各自初始化加密需要用到的兩個引數(細節見2.3)。 EncryptionKey = TK Nonce = 0 Client 開始使用設定好的引數加密並傳輸資料。每加密一次資料,Nonce增加1。 2.2.2 Msg 4 丟失 Client 傳送ACK和r+1給AP, 但是資料包丟失了。 由於AP未收到資訊,只有Client開始初始化加密引數。 Client開始使用設定好的引數加密並傳輸資料。 AP長時間未收到Msg4,觸發等待超時。這裡的計時從第8步發出Msg 3後開始,經過一定時間未收到Msg 4 則進入步驟13。實現時可自行選擇合理的AP等待時間。 AP重發Msg 3。在重發的Msg 3中,計數器變為r+2,表示這是重發的Msg 3。 Client 收到重發的Msg 3後, 重發Msg 4。這裡Msg4的計數器也變為r+2.(四步握手第四步)。 Client重新進行引數初始化,EncryptionKey 不變,Nonce 歸0。如果AP收到了Msg 4,則也進行引數初始化。如果AP仍未收到Msg 4,等待超時後,重新發送Msg 3, 計數器變為r+3。 Client繼續資料傳輸(並非重新傳輸)。 2.3 加密演算法 2.3.1 生成TK TK是一個長度為128bit的金鑰,用於加密使用者想要傳輸的資料。它由ANonce, CNonce和MasterKey產生。在本專案中,簡便起見,可直接將ANonce, CNonce和MasterKey字串串聯後,計算所得字串的雜湊值。將所得雜湊值作為TK使用。 2.3.2 使用TK進行資料加密 WPA2中應用最廣泛的加密演算法是CCMP。它採用的是一種計數器模式下的AES。在本次專案中,我們採用簡化版實現,忽略AES中的細節:
加密流程如下:
-
獲取本機MAC地址,如84-3A-72-3D-3A
-
將MAC和當前Nonce串聯,作為IV使用。
-
通過IV和TK生成本次加密的流密碼(128bit)。簡便起見,可直接將IV和TK串聯,計算所得字串的雜湊值。
-
將所得雜湊值作為流密碼與本次加密的明文異或,生成密文。這裡明文的長度也為128bit。當需要傳送超過128bit的資料時,應將資料分成多個128bit的塊(不足128bit的塊在末尾補0),分塊加密。由於Nonce每次使用過後都會增加1,因此加密每個資料塊的流密碼都不同。 2.4 實現要求 實現以上協議並按照以下要求將輸出列印至命令列視窗: 在四步握手階段,Client程式和AP程式應將每一步傳送和接收的資料包打印出來。 在資料傳輸階段,Client 程式將傳送出去的密文和對應的明文列印到命令列視窗。AP程式將收到的密文打印出來。如果此時四步握手已經成功,則AP還應將解密後的明文打印出來。 Note: 在資料傳輸階段,應限制Client傳送資料的速度,例如在每傳送一條資料後Sleep 1秒。這樣可以幫助控制Client 在AP重發Msg 3前傳送的加密資料的條數(方便後續Adversary程式的設計)。
-
重安裝鍵攻擊 3.1 攻擊原理 重安裝鍵攻擊主要針對的是四步握手協議的第四步。如上所述,當Msg 4丟失時,AP會重發Msg 3給Client,導致Client將Nonce的值重置為0。如果Client在收到重發的Msg 3之前已經發送了一些加密的資料,那麼接下來的資料傳輸就會重用部分Nonce。 舉例來說,Client在發出Msg 4後,又使用TK加密併發送了三條資訊M1, M2, 和M3。根據上述加密演算法,它們對應的流密碼分別為Hash(TK||0), Hash(TK||1)和Hash(TK||2),密文為M1⊕Hash(TK||0), M2⊕Hash(TK||1) , 以及 M3⊕Hash(TK||2)(這裡A||B表示A與B進行字串串聯)。此時,AP由於未收到Msg4,觸發超時並重發Msg 3。Client 收到重發的Msg 3後,將Nonce值重置為0。接下來,Client又使用TK加密併發送了三條資訊M4, M5 和 M6。由於Nonce 被重置,這三條資訊會重用流密碼Hash(TK||0), Hash(TK||1)和Hash(TK||2)。對應的密文為M4⊕Hash(TK||0), M5⊕Hash(TK||1) , 以及 M6⊕Hash(TK||2)。 在WPA2中,由於明文是通過與流密碼異或進行加密的,Nonce的重用將導致嚴重的後果。例如,攻擊者獲取到了 M1⊕Hash(TK||0)和M4⊕Hash(TK||0)。通過將兩者進行簡單地異或,則可以得到M1⊕M4。而M1和M4這類明文資料通常會符合特定的語言規律。在已知M1⊕M4的情況下,攻擊者可以通過字典攻擊,找出M1和M4, 進而計算出流密碼Hash(TK||0)。 3.2 攻擊模型
Adversary: 一個命令列程式,作為中間人轉發Client與AP之間傳遞的資料包。 Client程式接收三個命令列引數:
- 目標AP的IP地址。
- 目標AP的埠(用於建立與AP之間的互動)
- 本程式監聽的埠(用於接收使用者資料包) 例如,如果程式命名為Adversary, 則啟動命令如下 ./Adversary 192.168.0.35 1234 4567 Client: 採用之前實現的Client程式。在實際應用中,攻擊者需要欺騙Client將自己當成AP,從而實現中間人攻擊。在本專案中的攻擊模型中,簡化起見,我們假設Client在啟動時輸入的就是Adversary的IP和埠。即用Adversary的IP地址和埠替代AP的IP地址和埠。 AP: 採用之前實現的AP程式,使用正常的引數啟動。
3.3 實現要求: 根據上述攻擊原理,設計並實現Adversary程式。所設計的Adversary 程式應當能夠: 轉發Client與AP之間的資訊。(10分) 獲取到多組由相同Nonce加密的資料(例如3.1例子中的 M1⊕Hash(TK||0)和M4⊕Hash(TK||0))。(15分) 根據獲取到的密文,分析出對應的明文和流密碼。如根據3.1例子中的 M1⊕Hash(TK||0)和M4⊕Hash(TK||0))分析出M1, M4以及Hash(TK||0)。這裡假設Adversary已知Client傳送的所有資料均由五個特定詞彙排列組合而成:POST, GET, HTTP, INPUT, OUTPUT。(15分) 4.提交內容 Client 程式原始碼 AP 程式原始碼 Adversary程式原始碼 電子版Report,包含以下內容 程式執行說明 WPA2協議正常執行的截圖。 重安裝鍵攻擊具體設計 重安裝攻擊執行截圖及效果分析 5.評分標準 所有提交的程式碼均會進行查重,抄襲0分
- WPA2協議實現: 40 分
- 重安裝鍵攻擊:40分
- Report:20分
- 參考文獻 [1] Vanhoef, M., & Piessens, F. (2017, October). Key reinstallation attacks: Forcing nonce reuse in WPA2. In Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security (pp. 1313-1328). ACM. 解答: 答案就不公開放出來了,不會的可以提問