AP作为WLAN用户接入认证点的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,对于PEAP-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证书的合法性进行认证,即不能对网络进行认证。

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.生成算法请参阅引用[16]: IETF RFC2246,The TLS Protocol Version 1.0.

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或者SIM,下面由单独认证流程,如果是SIM认证,还需要跟HLR/AUC设备进行数据交互,并且使用AS作为认证服务器),在认证过程中,Radius Server会下发认证后用于生成空口数据加密密钥(包括单播、组播密钥)的PMK给Client.
16)     服务器认证客户端成功,会发送Access-Accept报文给AP,报文中包含了认证服务器所提供的MPPE属性。
17)     AP收到RADIUS-Access-Accept报文,会提取MPPE属性中的密钥做为WPA加密用的PMK,并且会发送EAP-success报文给客户端.
6 动态加密密钥安装
18)     WPA单播密钥安装(PTK):AP和Client使用获取到的PMK进行WPA单播密钥安装.(四步握手), 详细过程请参阅引用[5]:IEEE 802.11i, 2001, Standards for Local and Metropolitan Area Networks-Specific requirements-Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications: Medium Access Method (MAC) Security Enhancements

19)     组播密钥安装(GTK):AP和Client使用单播密钥安装中生成key(128~255bit)的保护下进行组播密钥安装.(2步握手),详细过程请参阅引用[5]

7 地址分配

20)     密钥安装成功后,客户端和AP间的空中数据报文进行加密传送,与AC进行DHCP流程交互,直至Client获取IP地址

8 计费开始
21)     AP通过RADIUS-Accounting-Request(Start)报文通知Radius Server开始进行计费,含有相关的计费信息。

22)    Radius Server向AP回应RADIUS-Accouting-Response(Start)报文,表示已开始计费。

9 强制Portal

23)     用户打开IE,访问某个网站,发起HTTP请求
24)     AC截获用户的HTTP请求,强制到Portal服务器,并在强制Portal URL中加入相关参数。
25)     Portal服务器返回门户页面     
10 密钥更新

26)     在AP和客户端的数据传输过程中,为了保证数据的安全WPA要求定时或定量(包的数目)进行更新单播密钥,当更新的时间或者数据传输的数目到了,AP会发起密钥更新]。

27)     在AP和客户端的数据传输过程中,为了保证数据的安全WPA要求定时或定量(包的数目)进行更新组播密钥,当更新的时间或者数据传输的数目到了,AP会发起密钥更新。

11 实时计费

28)    在用户上网过程中,为了保护用户计费信息,每隔一段时间AP就向Radius报一个实时计费信息,包括当前用户上网总时长,以及用户总流量信息。

29)     Radius回应AP确认报文。

30)     当AP收到下线请求时,向Radius发计费结束报文。

31)     Radius回应AP的计费结束报文。

证书主要用来进行终端和网络的相互认证。 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,对于PEAP-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证书的合法性进行认证,即不能对网络进行认证。

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.生成算法请参阅引用[16]: IETF RFC2246,The TLS Protocol Version 1.0.

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或者SIM,下面由单独认证流程,如果是SIM认证,还需要跟HLR/AUC设备进行数据交互,并且使用AS作为认证服务器),在认证过程中,Radius Server会下发认证后用于生成空口数据加密密钥(包括单播、组播密钥)的PMK给Client.

16)     服务器认证客户端成功,会发送Access-Accept报文给AP,报文中包含了认证服务器所提供的MPPE属性。

17)     AP收到RADIUS-Access-Accept报文,会提取MPPE属性中的密钥做为WPA加密用的PMK,并且会发送EAP-success报文给客户端.

6 动态加密密钥安装
18)     WPA单播密钥安装(PTK):AP和Client使用获取到的PMK进行WPA单播密钥安装.(四步握手), 详细过程请参阅引用[5]:IEEE 802.11i, 2001, Standards for Local and Metropolitan Area Networks-Specific requirements-Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications: Medium Access Method (MAC) Security Enhancements

19)     组播密钥安装(GTK):AP和Client使用单播密钥安装中生成key(128~255bit)的保护下进行组播密钥安装.(2步握手),详细过程请参阅引用[5]

7 地址分配
20)     密钥安装成功后,客户端和AP间的空中数据报文进行加密传送,与AC进行DHCP流程交互,直至Client获取IP地址

8 计费开始
21)     AP通过RADIUS-Accounting-Request(Start)报文通知Radius Server开始进行计费,含有相关的计费信息。

22)    Radius Server向AP回应RADIUS-Accouting-Response(Start)报文,表示已开始计费。

9 强制Portal
23)     用户打开IE,访问某个网站,发起HTTP请求

24)     AC截获用户的HTTP请求,强制到Portal服务器,并在强制Portal URL中加入相关参数。

25)     Portal服务器返回门户页面     

10 密钥更新
26)     在AP和客户端的数据传输过程中,为了保证数据的安全WPA要求定时或定量(包的数目)进行更新单播密钥,当更新的时间或者数据传输的数目到了,AP会发起密钥更新]。

27)     在AP和客户端的数据传输过程中,为了保证数据的安全WPA要求定时或定量(包的数目)进行更新组播密钥,当更新的时间或者数据传输的数目到了,AP会发起密钥更新。

11 实时计费
28)    在用户上网过程中,为了保护用户计费信息,每隔一段时间AP就向Radius报一个实时计费信息,包括当前用户上网总时长,以及用户总流量信息。
29)     Radius回应AP确认报文。

30)     当AP收到下线请求时,向Radius发计费结束报文。

31)     Radius回应AP的计费结束报文。


作者: shanfeng119   发布时间: 2010-11-12