IEEE 802.11i 是針對 IEEE802.11 提出一個進階的安全解決方案。目的是加強無線區 域網路的安全性,並且改善已知的安全漏洞。其中 IEEE802.11i 定義了一個新的安全模 式,稱為 RSN(Robust Security Network)。此外為了讓舊有的無線設備在不需更換硬體 的前題下,亦定義了一個 TSN(Transitional Security Network)模式。在本章節 2.1 至 2.6,將針對 RSN 部份的特色,包括 802.1x、EAP、金鑰的管理、四向交握協定、PMK 快取以及預先認証做一個概略的介紹。在 2.7 節中則是針對 Needham-Schroeder 認証協 定做個簡介。2.8 節則會說明 STA 漫遊的決策機制。
2.1 IEEE 802.1x 簡介
存取控制在網路安全的領域中是相當重要的一環。802.1x 定義了連接埠控管協定 (port-based access control protocol),可有效阻隔未經認証的使用者使用網路資源 或佔用網路頻寬。802.1x 已廣泛的被使用在區域網路上的設備,其中包括最常見到的網 路交換器(Switch Hub)。早期 IEEE 802.11 標準中關於認証的功能僅提供簡昜的 SSID 識別與共享金鑰認証,若採用 802.1x 的架構,它會在允許存取無線網路之前,對無線 工作站(STA)強制進行以使用者為基礎的憑證驗證,並依據所採用的驗證方法,動態的 產生無線通訊所需的加密金鑰。無線區域網路的環境中,雖然沒有像網路交換器(Switch Hub)一樣有實體埠的存在,但我們可以將每一個 STA 與 AP 之間的鏈結狀態視為一個虛 擬的連接埠(如圖 2.1)。
圖 2.1 Logical Port in 802.11 AP
Wireless STA1
Wireless STA2
Logical Port1
Authenticator
Logical Port2
2.1.1 802.1x 的組成
802.1x 的架構主要由三個不同的角色所組成(圖 2.2),分別說明如下:
驗證者(Authenticator)
主要負責驗證把關的工作,根據認証的結果來決定是否允許透過這個連接埠進行網路存 取的服務。對於無線區域網路而言,驗證者就是 AP 上的邏輯連接埠;在這個基礎結構 中運作的無線用戶端必須透過它才能存取有線網路。
請求者(Supplicant)
主要負責向驗證者提出存取服務要求。對於無線連線而言,請求者就是在無線網路介面 卡上要求存取有線網路的邏輯連接埠。不論是使用於無線連線或有線連線,請求者與驗 證者都是由邏輯或實體點對點所連接。
認證伺服器(Authentication Server)
為了驗證請求者的身份,驗證者會向認證伺服器查詢。認證伺服器負責執行認證的功能 以檢查請求者的身份,並向驗證者指示該請求者是否獲得認證伺服器的授權。儘管 802.1X 並沒有強制要求使用遠端認證撥入用戶服務(RADIUS),但 RADIUS Protocol 事實 上已經成為驗證者和認證伺服器之間最常用的協議。
圖 2.2 802.1x 的架構與流程
Supplicant
Authenticator
STA
AP
AS
LAN
Authentication Server (RADIUS Server)
1 2
3
2.1.2 802.1x 的運作流程
透過(圖 2.2)簡單描述 802.1x 的基本運作流程。
(1). STA 與 AP 建立一個邏輯埠之後,會送出一個使用網路的要求,AP 則要求 STA 傳送 身份証明;當 STA 未完成認証程序時,AP 僅允許認証的封包(EAP)通過。
(2). STA 開始與 AS 進行認証程序,此時 AP 會將 EAP 的資訊,轉成 RADIUS 封包格式送 給 AS。在整個認証程序的過程中,AP 會持續擔任轉送封包的角色。
(3). 當完成驗成程序時,AS 會傳遞一個成功的訊息給 AP,AP 則將邏輯埠的狀態設為已 授權(Authorized),STA 即可開始傳送與接收其他的封包。
2.2 擴充式認証通訊協定(EAP)
在上節所提到的 802.1x,主要是提供一個基於連接埠的控管平台,本身並沒有規範 認証的方法。而 EAP(RFC 2284)源自於點對點通訊協定(PPP),目的是提供一個認証擴充 的基礎。EAP 本身定義了一組訊息封包(圖 2.3),可將上層認証的資訊依照不同 RFC 所 定義的 EAP 型態進行交換(例如 EAP-PEAP、EAP-TLS…),直到完成整個認証的過程。因 此藉由 EAP 的協助,請求者可彈性的選擇不同的認証方式,也可以很快速的發展新的認 証演算法套用在 802.1x 環境。此外 802.1x 亦定義了 EAPOL(EAP over LAN)的通訊協定,
以便讓 EAP 的訊息可以在區域網路及無線區域網路上傳送。
圖 2.3 EAP 封包的格式
1 Byte 1 Byte 2 Byte Variable Length
Code (1 Byte) 1 = Request 2 = Response 3 = Success 4 = Failure
Length (2 Bytes)
Identifier (1 Bytes)
Authentication Data
2.3 金鑰的管理
無線網路使用兩種不同用途的金鑰,一種是用於點對點(Unicast)通訊,稱為 Pairwise Key。另一種則是用於廣播(Broadcast)通訊,稱為 Group Key。AP 與每台 STA 之間均擁有一把金鑰做為 Unicast 封包加密使用且是唯一的,而 AP 與所有跟自已相連
Supplicant Authenticator Authentication Server (RADIUS Server)
Master Key Master Key
PMK PMK Moves Key
PTK
2.3.2 金鑰的階層架構
在下列的圖示中(圖 2.5),分別列出 AES 與 TKIP 在產生其他金鑰時的相對關係,其 中包含了金鑰的用途及長度。
[ 保護交握的封包 ] [ 保護一般的資料封包 ] [ 保護廣播封包 ]
[ 保護交握的封包 ] [ 保護一般的資料封包 ] [ 保護廣播封包 ]
圖 2.5 金鑰的階層架構 (1)TKIP Pairwise Key Hierarchy (2)TKIP Group Key Hierarchy (3)AES Pairwise Key Hierarchy (4)AES Group Key Hierarchy
2.4 四向交握協定(4-Way-HandShake)
在上節所提到的金鑰架構中,我們可以發現,在上層的 PMK 並沒有直接被使用在資 料傳輸的加密過程中,反而衍生成一組包含四把金鑰的集合稱為 PTK,以提供請求者與 驗證者之間一個安全加密的通道。其中兩把金鑰(KCK、KEK)做為握手交換過程中,加密 (Encryption)與一致性(Integrity)的用途,另外兩把金鑰(TK1、TK2)則做為 STA 與 AP 之間傳送一般資料時,加密(Encryption)與一致性(Integrity)的使用,如圖 2.6 所示。
Pairwise Master Key (PMK) 256 bits
Pairwise Transient Key (PTK) 512 bits
EAPOLMICKey 128 bits
Group Master Key (GMK) 128 bits
Group Transient Key (GTK) 256 bits
EAPOLEncKey
128 bits DataEncKey
128 bits DataMICKey
128 bits DataEncKey
128 bits DataMICKey 128 bits
Pairwise Master Key (PMK)
256 bits Group Master Key (GMK)
128 bits
(1) (2)
(3) (4)
Pairwise Transient Key (PTK) 384 bits
EAPOLMICKey
128 bits EAPOLEncKey
128 bits DataEnc/MICKey 128 bits
Group Transient Key (GTK) 128 bits
DataEnc/MICKey 128 bits
(1). 確認 STA 與 AP 彼此的 PMK 是相同的。
(2). 間接確認 AP 是否為合法的身份。
(3). 確認彼此使用的密鑰組合(Cipher suit)是否一致。
(4). 建立具有時效性暫時的金鑰以供安全加密使用。
(5). AP 傳送 GTK 給 STA (RSN 模式)。
圖 2.6 四向交握的訊息流程
(1). 訊息一: AP 送一個亂數(ANonce)給 STA。
(2). 訊息二: STA 回送一個亂數(SNonce)給 AP,這時 STA 已經可以透過 PMK、ANonce、
SNonce、以及雙方的 MAC Address 產生 PTK,並將 Association Request 中所使用到的 RSN IE 放在 Key Data 欄位,最後用 PTK 中的 KCK 對整個封包加密產生一個 MIC 值,隨 訊息一起送出。
(3). 訊息三: AP 收到 SNonce 之後,亦可衍生出相同的 PTK,進而確認訊息三的正確性;
比對 STA 送過來的 RSN IE 之後,將 Beacon 中的 RSN IE 放在訊息三的 Key Data 欄位的 前面,用 PTK 中的 KEK 對 GTK 加密後放在 Key Data 中,最後用 KCK 對整個封包加密產 生一個 MIC 值,隨訊息一起送出。
(4). 訊息四: STA 回應 AP,告知開始使用加密的方式傳送資料。
EAPOL-Key [MIC]
EAPOL-Key [MIC,RSN IE, Encrypted GTK]
EAPOL-Key [SNonce,MIC,RSN IE]
EAPOL-Key [ANonce]
STA AP
Supplicant Authenticator
SNonce = Random ANonce = Random
Calculate PTK with ANonce SNonce
Calculate PTK with ANonce SNonce
Install PTK and GTK Install PTK
2.5 PMK 快取
802.1x 認証的目得是為了確認 STA 的身份是否合法,並且在完成認証之後讓 STA 與 AP 之間擁有相同的 PMK。但在這個認証過程中,AP 必須持續擔任轉送認証封包的工作,
勢必會增加整個認証的時間。假如 STA 與 AP 兩者可以保留之前認証所產生的 PMK,則當 STA 與 AP 重新連線時,就可直接進入四手交握協定的過程,加速連線的過程。其過程描 述如下(圖 2.7):
當 STA 發現目前預連線的對像(AP),在其暫存區中有相對應的 PMKSA 記錄時,會在 (Re)Association Request 的封包內附上此筆記錄相對應的 PMKID。當 AP 收到此封包時,
會先依照 PMKID 比對自已暫存區的資料是否存在相同且合法的 PMKID; 若有則在完成 Association 程序後跳過與後端認証伺服器確認的過程直接進行四手交握協定,AP 亦會 在四手交握協定過程中,將 PMKID 加入在第一個訊息的金鑰資料欄位,以供 STA 查核。
反之則要求連線的 STA 必需進行完整的 802.1x/EAP 認証程序。
圖 2.7 PMK 快取的訊息流程
Association Request (PMKID)
First 4 Way Hand-Shake (PMKID)
Others 4 Way Hand-Shake \ Group Key Association Response (Success)
AP STA
2.6 預先認証(Pre-Authentication)
預先認証的功能允許 STA 可以在相同的時間對多個 AP 進行認証的動作,即使在尚未 完成 Association 的情況下。其目的是讓 STA 發生漫遊之前,就先對鄰近 AP 進行完整 802.1x/EAP 認証,並利用 PMK 快取的功能將 PMK 及相關資訊快取保存下來;當 STA 與已 完成預先認証的 AP 連線時,即可直接進行四手交握協定。
支援預先認証功能的 AP,利用信標(Beacon)和探測回應(Probe Response)封包中的 RSN 資訊對外廣播。當 STA 偵測到附近有支援預先認証的 AP 時,即送出預先認証的封包,
透過連線中的 AP(Old AP)經由有線的網路與 AP(New AP)進行 802.1x/EAP 的認証(圖 2.7)。
圖 2.7 預先認証流程
New AP Old AP
RADIUS Server
STA
Pre-Authentication Packet (Ether Type = 88c7)
RADIUS Protocol Packet
PMK
PMK
STA
PMK
4-Way-Handshake
2.7 Needham-Schroeder 認証協定
Needham-Schroeder[9]是一種網路認証的協定,是由 Roger Needham 與 Michael Schroeder 兩人於 1978 年所發明的,其方式是透過信任的第三者,例如認証伺服器 (Authentication Server),對合法的用戶端(Client)與伺服器(Server),提供一個安 全的存取環境。
在此架構下,每個用戶端、伺服器與認証伺服器之間皆分別共有一把通訊用的秘密 金鑰(Shared Key),這把金鑰是彼此雙方事先得知。當任何一方(用戶端或伺服器)欲與 認証伺服器進行溝通,則會採用這把金鑰加密以此確認彼此的身份。當用戶端向伺服器 要求連線服務前,必需先向認証伺服器取得通行証(Token),而用戶端不需經過伺服器 的認証,即可以此通行証(Token)與伺服器進行通訊。
整個認証流程包含了三個主要的訊息如圖 2.8,
(1).首先用戶端先向認証伺服器傳送對伺服器的連線請求,在此訊息中包含了用戶端資 訊(C)、伺服器資訊(S)以及一個亂數(IA),其中的亂數是用以分辨請求訊息,讓用戶端 確認收到回傳訊息的正確性。
(2).認証伺服器收到請求之後,會隨機產生一把金鑰(Kcs)以供用戶端與伺服器之間通 訊時加解密之用。接下來,認証伺服器會將此把金鑰(Kcs)與用戶端相關資訊(C)用伺服 器與認証伺服器之間共享的金鑰(Ks)加密產生通行証(Token = {Kcs + C}Ks)。最後將 此通行証與伺服器相關資訊加上在請求訊息中的亂數(IA)以用戶端與認証伺服器之間 共享的金鑰(Kc)加密,回傳給用戶端。
(3).用所端收到回傳的訊息,首先用金鑰(Kc)解開訊息,比對亂數 IA 是否與原先送出 的 IA 是相同的,若是則可確認此封包中內含金鑰(Kcs)的正確性。用戶端在收到通訊用 的金鑰(Kcs)之後,接著根據伺服器的資訊,將通行証送給伺服器。伺服器用金鑰(Ks) 解開通行証之後,獲得與用戶端通訊用的金鑰(Kcs)與用戶端資訊之後,用戶端與伺服
器之間即可開始使用金鑰(Kcs)進行安全的通訊。
1.用戶端->認証伺服器: C || S || IA
2.認証伺服器->用戶端: { S || IA || Kcs || { C || Kcs}Ks }Kc 3.用戶端->伺服器: { C || Kcs }Ks
4.用戶端<-> 伺服器: { Data }Kcs
圖 2.8 Needham-Schroeder 認証流程
認証伺服器(AS)
用戶端(C): Kc 伺服器(S): Ks Random Key: Kcs
用戶端(C) 伺服器(S)
1 2
3 4