1.概述
臨時密鑰完整性協議(TKIP)
計數模塊及密碼塊鏈消息認證碼協議(CCMP)
2.TKIP與WEP的差異
密鑰層次結構與自動密鑰管理
不同於WEP直接使用單一主密鑰(master key)的做法,TKIP使用到了多個主密鑰。最后用來加密幀的密鑰是從這些
主密鑰派生而來。另外,TKIP也提供密鑰管理操作。使得主密鑰的更新可以在安全的情況下進行。
每幀生成密鑰
它會為每個幀(從主密鑰)派生出特有的RC4密鑰。為每個幀准備獨特密鑰的過程稱為密鑰混合。
序列號計數器
為每個幀編序列號即可識別出次序錯亂的幀,如此便能防范所謂的重放攻擊(replay attack),亦即攻擊者先攔截
有效封包,等一段時間在予以重傳的攻擊。
新的消息完整性校驗
TKIP以一種比較牢靠的稱為Michael的完整性校驗散列算法,取代WEP所使用的線性散列算法。
3.TKIP的數據處理與操作
TKIP會以下列項目作為輸入項
· 幀
· 用來加密的臨時密鑰
· Michael用來保護幀的內容的MIC密鑰,TKIP與WEP的不同之處在於MIC使用了密鑰
· 發送端地址也會被當成TKIP的輸入項,因為必須用它來進行身份驗證
· 由驅動程序或固件所維護的序列號計數器
4.TKIP的密鑰混合過程與密鑰的構造
TKIP會為所傳送的每一個幀構造一把獨特的密鑰。此密鑰派生字初始向量/序列號計數器、幀的發送端地址(未必是幀的來源)以及臨時密鑰。
TKIP將混合密鑰的計算過程分為兩階段,第一階段以發送端地址、序列號的前32位及128位的臨時密鑰作為輸入項,輸出項則是一個長度為80位的值。
密鑰混合的第二階段必須對每個幀進行計算。第二階段所計算的結果、臨時密鑰與序列號的最后16位為輸入項。
密鑰混合過程第二階段的輸出值是128位的RC4密鑰,可以作為WEP的隨機數種子。最后16位則是用來產生一個WEP IV的高字節和低字節。WEP IV中間的字節是一個值固定的虛設字節,用來避免產生RC4弱密鑰。
5.TKIP的數據傳送
最前面的3字節記載了部分的TKIP序列號以及目前使用的密鑰編號。雖然TKIP支持多組密鑰,但實際上只有KeyID 0會被分配使用。至於Extended IV()
1.將802.11幀放在隊列中等待傳送。其中包含幀頭以及有效載荷(payload)
2.計算消息完整性校驗值(簡稱MIC)。
3.賦予每個幀一個序列號。TKIP的序列號計數器會隨每個幀片段累加。如果幀無需分段,那么只要編一個序列號即可,如果幀被分割為數個片段、計數器則會依片段數量累加。
4.每個幀均會以其獨有的WEP密鑰進行加密。通過密鑰混合過程,TKIP為每個幀產生WEP密鑰。每個幀所擁有的密鑰(per-frame key)將會傳給WEP以作為IV與密鑰之用。對每個幀而言,這兩者均會隨之變動。
5.幀本身加上步驟2所得到的Michael消息完整性校驗值以及步驟4所得到的RC4密鑰一並傳給WEP,由WEP進行幀封裝操作。這意味着受TKIP保護的幀將會同時包含WEP的成分。
6.TKIP的接收
1.一旦無線接口接收到幀,如果通過幀檢查確認它不曾損毀將會將其交付給TKIP做進一步的驗證。
2.TKIP采取的第一個步驟就是檢查序列號以防范重放攻擊。TKIP的重放攻擊保護機制要求幀的接收必須依循相當嚴格的次序。如果幀序列號小於或等於最近已接收到的有效幀,就會因為可能遭到重放攻擊而被摒棄。
3.還原用來加密封包的WEP隨機數種子。借由發送端地址,臨時密鑰以及序列號,接收端即可解鎖以恢復WEP隨機數種子。
4.WEP隨機數種子到手后,就可以除去幀外圍所包裹的WEP層,然后還原內容。在還原內容的過程中,WEP ICV必須接受校驗。雖然WEP的完整性校驗並不牢靠,但是還是可以用來防范一些無謂的攻擊。
5.如果涉及到幀分段,那么在重組完整有效載荷之前,必須等到所以片段接收完成。不過幀分段在802.11中並不常用。
6.幀重組之后,將會依賴內容計算其Michael值。如果計算出來的值與封包所記載的MIC值相符則會將幀傳遞給較上層協議並且將序列號設成幀當中所記載的序列號。如果無法通過MIC校驗,則會觸發對策。
7.計數器模式及密碼塊鏈消息認證碼協議(CCMP)
這個以AES為基礎的鏈路層安全協議稱為 Counter Mode with CBC-MAC Protocol(計數器模塊及密碼塊鏈消息認證碼協議,簡稱CCMP)
8.CCMP的數據處理
CCMP以下列項目作為輸入項
· 幀
· 臨時密鑰(temporal key)
· 密鑰標識符(key identifiter)
· 封包編號(packet number)
CCMP的數據傳輸
1.將802.11幀至於隊列中待傳(queued for transmission)。其中包含幀頭(frame header)以及有效載荷(payload)
2.賦予一個48位的封包號碼(Packet number,簡稱PN)。和TKIP序列號一樣,同樣一個臨時密鑰不會重復使用PN。每次傳送后PN就會累加,它同時也用來偵測重放攻擊。
3.構造附加認證數據(Additional Authentication Data,簡稱AAD)字段
4.下一步構造CCMP,所謂nonce,是指少數的數據位,以確保加密操作確實作用域某些獨特的數據。
5.接着,構建CCMP標頭。它會將構成PN(封包編號)的6個字節拆開,然后將Key ID(密鑰標識符)置於其中。和WEP一樣,CCMP中也包含4個密鑰槽。Extended IV(擴展初始化向量)位在CCMP中永遠被設為1,因為要能夠容納PN這么大的字段必定需要使用到8個字節的標頭。
6.至此,CCM加密引擎所需要的輸入項均已備齊。它以128位的臨時密鑰,步驟4所產生的nonce,步驟3所產生的附加認證數據(AAD)以及幀主體作為輸入項。所有這些數據是以長度為8字節的MIC(消息完整性檢查碼)來確保其真實性,幀主體與MIC也經過加密。
7.以原始的MAC標頭、CCMP標頭與步驟6中產生的加密數據來組成待傳送的加密幀,幀產生之后就會交付無線接口傳送。
9.CCMP的接收
CCMP的解密過程就是圖7-6的直接逆轉
1.一旦無線接口接收到幀,如果通過幀校驗序列(frame check sequence)確定它為曾受損,就會將其交付給CCMP進行驗證。
2.從所接受到的幀還原出AAD(附加認證數據)。其中只包含幀頭而且未經過加密。
3.從幀還原出CCMP nonce。其中包含封包編號、發送端地址以及QoS字段的內容,這三者均可自未加密的幀頭中取得。
4.接收端解讀密文。此時需要臨時密鑰、步驟3所還原nonce、步驟2所得到的認證數據、當然還有加密過的幀主體。此過程完成后,接收端就會得到一份經解密后的幀副本以及經解密后的完整性校驗碼。
完整性校驗是針對明文數據與附加認證數據進行計算的。如果計算出的完整性校驗值與步驟4所得到的完整性校驗值相符,就繼續進行,否則就終止過程。
6.由MAC標頭與步驟4所還原的數據組成明文幀。