概述
之前802.1X解決了無線區域網路的身份驗證問題,而802.11i則是為了解決之前WEP鍊路層資料加密問題,有2種方式:
- Temporal Key Integrity Protocol(臨時密鑰完整性協定,簡稱 TKIP)
- Counter Mode with CBC-MAC Protocol(計數器模式及密碼塊鍊消息認證碼協定,檢稱CCMP)
臨時密鑰完整性協定(TKIP)
TKIP是為了彌補WEP缺陷的臨時性協定,是在WEP的更新檔,采用和WEP同樣硬體,這樣老的支援WEP的裝置就可以通過軟體更新到支援TKIP。
TKIP與WEP差異
可以把TKIP了解成用軟體的方式在WEP外包了再一層,提高安全性。
密鑰層次結構與自動密鑰管理
WEP直接使用單一主密鑰(master key),TKIP使用多個主密鑰,而最後用來加密幀的密鑰是從這些主密鑰派生而來。且TKIP提供了密鑰管理操作來安全的跟新主密鑰。
每幀生産密鑰(per-frame keying)
TKIP會為每個幀(從主密鑰)派生出特有RC4密鑰,這個過程稱為密鑰混合(key mixing)
序列号計數器(sequence counter)
為每個幀都标上序列号以此來識别次序錯亂的幀,防止重播攻擊(replay attack)
新的消息完整性校驗(message integrity check,簡稱MIC)
TKIP采用稱為Michael的完整性校驗算法,取代WEP使用的線性算法,源位址、目标位址、MSDU priority、和沒有加密的MSDU通過Michael算計計算的結果,8個自己标記M0~M7
消息完整性校驗失敗對策
當MIC校驗失敗是,TKIP設計了對策(countermeasure)來應對。
TKIP初始向量的使用與密鑰混合
TKIP将IV從24位增加至48位,再通過密鑰混合生産不同的RC4密鑰來加密幀,密鑰混合會加入傳送者MAC位址,這樣即使IV相同,也會有不同的RC4密鑰
TKIP序列計數器與重播攻擊保護
TKIP的IV也充當序列号計數器作用,每次有新的主密鑰,初始向量/序列号計數器會被重置位1,每穿一個幀,序列号計數器随之加1.
序列号計數器也可以防範重播攻擊,當收到幀的序列号大于目前值就給予接受,否則丢棄。
TKIP加密解密
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB1UMRpWTzUFVNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zRQpkLyQDN4IjMzMjM2EDOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
- TSC0-TSC5,分别是TSC的每個位元組,TSC由TKIP序列計數器生成,為每一個MPDU遞增生成6位元組TSC序列号。
- TK(temporal key)臨時密鑰,由PTK或者GTK派生而來,PTK是由SSID和預設共享密鑰計算出來的
- TA 發射位址
- keyplaintext MSDU,還沒加密的MSDU(就是frame body)
-
MIC key,從TK中取出指定位,
A STA shall use bits 128–191 of the temporal key as theMichael key for MSDUs from the Authenticator’s STA to the Supplicant’s STA.
A STA shall use bits 192–255 of the temporal key as the Michael key for MSDUs from the Supplicant’s STA to the Authenticator’s STA.
- SA 源位址
- DA目地位址
把MIC追加到MSDU尾部,看作MSDU’ 如果需要分片,則将MSDU’ 分片,那麼plaintext MSDU和MIC就可能分别再2個MPDU被發送出去,接收端會将MPDU重組生成原來的MSDU’ 。每個分片的MPDU使用相同的extended IV,但是每個MPDU的TSC會單調遞增。
和WEP一樣,會在每個MPDU後加上ICV
TKIP通過phase1和phase2 生産WEP seed
組後将keystream和plainte MPDU,ICV,IV(TSC0,TSC1 Key ID),extended IV, MIC進行異或計算生成最後用于發送的Encrypted MPDU
下面是經過TKIP加密以後生成的加密MPDU:
從圖中可以看到,該幀主要由802.11 MAC Header(前32個位元組)、Frame Body 和CRC三個部分構成,Frame Body部分主要由以下5部分組成:
(a)IV/Key ID
(b)Extended IV
(c)MSDU payload
(d)MIC
(e)ICV
(1)第一部分是802.11 MAC Header(前32個位元組),可以看出頭部并沒有作任何改動
(2)IV/Key ID : 它的長度是4個位元組,和WEP加密中的IV長度一樣,但是其中的内容并不一樣,它的前三個位元組分别是TSC1,WEP Seed和 TSC0 (TSCn後面分析);最後一個位元組分别由Reserved(5bit),EXT IV 1bit,Key ID 2bit; EXT IV是用來指定是否傳送後面的Extended IV,對于WEP來說不需要這部分,是以設為0,對于TKIP加密來說,Extended IV是必須的,所必須設為1;Key ID是key index縮寫,是從WEP繼承而來的,在WEP中可以用于指定使用第幾個key,但是在TKIP中一般設為0。
TSC5是TSC最高有效位,而TSC0是TSC最低有效位。
WEP Seed是(TSC1 | 0x20) & 0x7f的結果
(3)Extended IV: 它的長度4個位元組,它是從48-bit TKIP sequence counter (TSC2 through TSC5)派生而來的;從圖中可以看出IV/Key ID和Extended IV字段都是沒有加密的,我們也可将這兩個字段一共8個位元組看成TKIP的頭部
(4)接下來是加密的payload MSDU
(5)MSDU後面是MIC,8個位元組,當它追加到MSDU後面時,就成了MSDU的一部分,用于後面的MPDU分片
(6)Frame Body的最後是Integrity Check Value (ICV),4個位元組,它是通過計算整個MPDU而來的。MSDU upper-layer payload和 MIC及ICV一樣,都有進行加密
(7)幀的最後一部分是CRC,它是4個位元組的FCS,它是通過計算全部的幀頭和幀體部分得來的(calculated over all the fields of the header and frame body )
由于額外的IV(4位元組),Extended IV(4位元組),MIC(8位元組)和ICV(4位元組),一共20個位元組。也就是說TKIP加密額外的給資料幀體添加了20個位元組,那麼TKIP加密的資料幀中MSDU‘ 的最大值将會達到2324位元組(802.11規定一個幀中MSDU的最大size是2304位元組)。
上圖a是計算mic需要參數,b是MSDU需要分片時的情況。
TKIP頭部(8位元組)和MIC(8位元組)和WEP ICV部分是基于原來的幀多出部分,當開啟TKIP加密的時候,那麼MPDU的frame body部分将會增大20個位元組,這樣所允許的最大frame body将是2304+20=2324個位元組。
下面時TKIP的解密,主要時輸入TA、TK、TSC和已經加密的MPDU
CCMP(計數器子產品及密碼塊鍊消息認證碼協定)
CCMP以AES算法取代WEP、TKIP中的RC4,其中AES密鑰和使用128bits
主要輸入有
- MAC header:802.11 MAC 頭部(WEP、TKIP都沒有)
- plaintext Data(MSDU): 需要發送的playload
- PN(packet number),長度128bits,和KTIP中TSC相似,防止回放和注入攻擊
- TK(temporal key):和TKIP加密一樣,CCMP也有一個128bit的TK,它可能是由SSID+passphase計算來的PTK(pairwise transient key ),也可能是GTK(group temporal key ),兩者分别用于單點傳播資料加密群組播資料加密
- Key ID: 和TKPIP中的一樣,用于指定加密用的key,注意這個ID是index的縮寫,一般設為0
- Nonce:他是一個随機數,而且隻生成一次,它一共長104bit,是由PN(packet number,48bit), Qos中的優先級字段(8bit)和TK(transmitter address , 48bit)這三個字段組合來的,需要注意,不要和4路握手的Nonce混淆
-
AAD Additional authentication data (AAD):它是由MPUD的頭部建構而來的,它用于確定MAC頭部的資料完整性,接收端會使用這個字段來檢驗MAC頭部
下面時CCMP加密
下圖是CCMP MPDU的幀格式:802.11無線權威指南讀書筆記(7)802.11:RSN、TKIP、CCMP 802.11無線權威指南讀書筆記(7)802.11:RSN、TKIP、CCMP CCMP頭部(8位元組)和MIC(8位元組)部分是基于原來的幀多出部分,當開啟CCMP加密的時候,那麼MPDU的frame body部分将會增大16個位元組,這樣所允許的最大frame body将是2304+16=2320個位元組。
下面是CCMP的解密過程:
802.11無線權威指南讀書筆記(7)802.11:RSN、TKIP、CCMP