PEAP接入流程
轉載地址
1 證書獲取
證書主要用來進行終端和網絡的相互認證。 Radius服務器首先向CA證書頒發機構申請服務器證書,用來代表Radius服務器的合法性。 客戶端向CA證書頒發機構下載CA 根證書,用來驗證Radius服務器下發的證書是否合法(一般情況下,如果終端不需要對網絡進行認證的情況下,根證書可以不用下載和安裝)。
2 無線接入
客戶端通過開放系統接入的方法(OPEN SYSTEM)和AP之間建立好物理連接。
?
3 認證初始化
1)? Client向AP設備發送一個EAPoL-Start報文,開始802.1x接入的開始。(不一定有)
2)? AP向客戶端發送EAP-Request/Identity報文,要求客戶端將用戶信息送上來。
3)? Client回應一個EAP-Response/Identity給AP的請求,其中包括用戶的網絡標識。用戶ID,對于EAP-mschchap v2認證方式的用戶ID是由用戶在客戶端手動輸入或者配置的。用戶ID通常的格式是username@domain,其中username是運營商提供給用戶的身份ID,domain是運營商的域名(如“cmcc.com”)。
4)AP以EAP Over RADIUS的報文格式將EAP-Response/Identity發送給認證服務器Radius,并且帶上相關的RADIUS的屬性。
5)Radius收到客戶端發來的EAP-Response/Identity,根據配置確定使用EAP-PEAP認證,并向AP發送RADIUS-Access-Challenge報文,里面含有Radius發送給客戶端的EAP-Request/Peap/Start的報文,表示希望開始進行EAP-PEAP的認證。
6)? AP設備將EAP-Request/PEAP/Start發送給認證客戶端。
4????????? 建立TLS通道
7)? Client收到EAP-Request/Peap/Start報文后,產生一個隨機數、客戶端支持的加密算法列表、TLS協議版本、會話ID、以及壓縮方法(目前均為NULL),封裝在EAP-Response/Client Hello報文中發送給AP設備。
8):AP以EAP Over RADIUS的報文格式將EAP-Response/Client Hello發送給認證服務器Radius Server,并且帶上相關的RADIUS的屬性。
9):Radius收到Client發來的Client Hello報文后,會從Client 的Hello報文的加密算法列表中選擇自己支持的一組加密算法+Server產生的隨機數+Server 證書(包含服務器的名稱和公鑰)+證書請求+Server_Hello_Done屬性形成一個Server Hello報文封裝在Access-Challenge報文中,發送給Client.
10) AP把Radius報文中的EAP域提取,封裝成EAP-request報文發送給Client.
注:由于證書比較大,一個報文是無法承載的,所以在實際流程中第10,11完成后,后面還有3個續傳的IP分片報文,目的是把Server證書發送到客戶端.
11) Client收到報文后,進行驗證Server的證書是否合法(使用從CA證書頒發機構獲取的根證書進行驗證,主要驗證證書時間是否合法,名稱是否合法),即對網絡進行認證,從而可以保證Server的合法。如果合法則提取Server證書中的公鑰,同時產生一個隨機密碼串pre-master-secret,并使用服務器的公鑰對其進行加密,最后將加密的信息ClientKeyExchange+客戶端的證書(如果沒有證書,可以把屬性置為0)+TLS finished屬性封裝成EAP-Rsponse/TLS OK報文發送給認證點AP.如果client沒有安裝證書,則不會對Server證書的合法性進行認證,即不能對網絡進行認證。(一些手機終端,如lumia920有是否驗證服務器勾選項)
12) AP以EAP Over RADIUS的報文格式將EAP-Response/TLS OK發送給認證服務器Radius Server,并且帶上相關的RADIUS的屬性
13) Radius收到客戶端發了的報文后,用自己的證書對應的私鑰對ClientKeyExchange進行解密,從而獲取到pre-master-secret,然后將pre-master-secret進行運算處理,加上Client和Server產生的隨機數,生成加密密鑰、加密初始化向量和hmac的密鑰,這時雙方已經安全的協商出一套加密辦法了,至此TLS通道已經建立成功,以后的認證過程將使用協商出的密鑰進行加密和校驗。Radius Server借助hmac的密鑰,對要在TLS通道內進行認證的消息做安全的摘要處理,然后和認證消息放到一起。借助加密密鑰,加密初始化向量加密上面的消息,封裝在Access-Challenge報文中,發送給Client.
?5? 認證過程
14)AP把Radius報文中的EAP域提取,封裝成EAP-request報文發送給Client.
15)客戶端收到Radius server發來報文后,用服務器相同的方法生成加密密鑰,加密初始化向量和hmac的密鑰,并用相應的密鑰及其方法對報文進行解密和校驗,然后產生認證回應報文,用密鑰進行加密和校驗,最后封裝成EAP-response報文發送給AP,AP以EAP Over RADIUS的報文格式將EAP-Response發送給認證服務器Radius Server,并且帶上相關的RADIUS的屬性,這樣反復進行交互,直到認證完成(注:對于不同的認證方法交互流程不一致,通常的認證方法為:PEAP-MSCHAPV2或者GTC(IBM LDAP支持的,有關于PEAP-GTC的過程就是在認證的時候按照GTC/OTP的過程在PEAP添加的一個過程罷了,再注:在傳送完密碼后要傳一個長度為1的數據為0的包過去后才會得到SUCESS連通網絡),下面由單獨認證流程,如果是SIM認證,還需要跟HLR/AUC設備進行數據交互,并且使用AS作為認證服務器),在認證過程中,Radius Server會下發認證后用于生成空口數據加密密鑰(包括單播、組播密鑰)的PMK給Client.
16) 服務器認證客戶端成功,會發送Access-Accept報文給AP,報文中包含了認證服務器所提供的MPPE屬性。
17) AP收到RADIUS-Access-Accept報文,會提取MPPE屬性中的密鑰做為WPA加密用的PMK,并且會發送EAP-success報文給客戶端轉載于:https://www.cnblogs.com/fifa0329/archive/2013/01/07/4536691.html
總結
- 上一篇: 【转】使用PHP计算上一个月的今天
- 下一篇: [zz]struct epoll_eve