WPA RSN四次握手和PTK

2021-06-21 23:41:25 字數 1927 閱讀 5679

wpa/rsn使用四次握手(4-way handshake)的方式生成所需的金鑰。

作用

四次握手通過一系列的互動,從pmk(pairwise master key)生成ptk(pairwise transient key)。pmk來自msk(master session key),是msk的前256位,32位元組。

本文的主要目的是講ptk,所以暫時忽略pmk和msk。

ptk的內容

ptk包含3個部分,kck(key confirmation key),kek(key encryption key),tk(temporal key)。

ptk的總長度根據加密方式不同而不同。

當加密方式是tkip時,ptk長512位,按順序分別為kck佔128位,kek佔128位,tk佔256位。

當加密方式是ccmp時,ptk長384位,按順序分別為kck佔128位,kek佔128位,tk佔128位。

kek和kck是給eapol-key,也就是四次握手時,加密和完整性驗證用的。tk用於後續的資料加密。

四次握手的報文都是基於eapol-key的。eapol-key的結構如下:

ptk的生成

生成ptk,需要5個必要元素,pmk,anonce(nonce 1),snonce(nonce 2),authenticate mac(mac 1),supplicant mac(mac 2)。如下圖:

2個nonce分別是authenticator和supplicant生成的隨機數。

這張圖里的輸出包含4個部分,其實data encr和data mic合起來就是前面提到的tk。而eapol encr/mic分別對應前面的kek和kck。

四次握手的互動過程

下面的互動僅僅是乙個流程,對內部的一些資料的處理就不細說了。

1/4:authenticator -> supplicant

authenticator把anonce送給supplicant。supplicant收到1/4後,就有了生成ptk的所有元素。因為1/4裡同時也包含了authenticator的mac位址。

2/4:supplicant -> authenticator

supplicant計算出ptk,把snonce和自己的mac位址送給authenticator。同時,從2/4報文開始,後面的每個報文都會有mic。1/4沒有。

3/4:authenticator -> supplicant

authenticator向supplicant證明自己有有效的,同樣有mic加入其中

4/4:supplicant -> authenticator

僅是對3/4的乙個ack。說明ptk已經裝好,後面的資料可以加密了。

第一次握手ap-->sta,pmk已經預設好了,這個ap時候傳送乙個隨機產生的nonce數。

第二次握手sta-->ap,sta根據接收到的隨機數,自己也生成乙個隨機數,以及pmk,經過一系列演算法aes...直接就產生了ptk了,然後把ptk拆分成5各部分,每個不同部分用於不同的加密。然後把隨機數發給ap

第三次握手,ap接收到這個隨機數後,使用相同的方法生成ptk,並取出其中的mic金鑰對第二次握手包進行較驗,如果相同,那麼ap知道這個時候sta擁乙個跟它一樣的pmk。這個時候ap有了ptk後就可以對它第一次握手生成的eap包進行檢驗生成乙個mic序列號,並傳送給sta

第四次握手,sta接收到這個包後,同樣執行跟ap的檢驗操作以確認ap擁有跟自己一樣的pmk。然後傳送確實安裝pmk

WPA RSN四次握手和PTK

wpa rsn使用四次握手 4 way handshake 的方式生成所需的金鑰。作用 四次握手通過一系列的互動,從pmk pairwise master key 生成ptk pairwise transient key pmk來自msk master session key 是msk的前256位,...

tcp三次握手和四次握手

建立tcp需要三次握手才能建立,而斷開連線則需要四次握手。整個過程如下圖所示 先來看看如何建立連線的。首先client端傳送連線請求報文,server段接受連線後回覆ack報文,並為這次連線分配資源。client端接收到ack報文後也向server段發生ack報文,並分配資源,這樣tcp連線就建立了...

TCP三次握手和四次握手

ip 網路層 不穩定性。硬體聯絡緊密 傳輸層 1.完全不彌補 udp 無連線不可靠報文傳輸 2.完全彌補 tcp 面向連線的可靠資料報傳遞 tcp傳送資料就包含了tcp三次握手建立連線和關閉連線的四次握手 建立連線用syn傳送,用ack應答 所謂三次握手就是客戶端與伺服器之間的三次應答。伺服器是一直...