其他分享
首页 > 其他分享> > 邓凡平WIFI学习笔记3: WiFi 协议安全部分

邓凡平WIFI学习笔记3: WiFi 协议安全部分

作者:互联网

原文链接:https://blog.csdn.net/Innost/article/details/20651445

安全是无线网络技术中一个很重要的部分,它主要有三个保护点。

·数据的完整性(Integrity):用于检查数据在传输过程中是否被修改。

·数据的机密性(Confidentiality):用于确保数据不会被泄露。

·身份验证和访问控制(Authentication and Access Control):用于检查受访者的身份。

 

安全知识点中会经常见到Key(密钥)和Password(密码,也叫Passphrase)这两个词。它们本质意思都一样,只不过Password代表可读(human readable,如字符串、数字等)的Key,而Key一般指由算法生成的不可读(如二进制、十六进制数据等)的内容

 

802.11规则首先提出了WEP(Wired Equivalent Privacy,有线等效加密)

人们发现WEP很容易破解。在802.11规范提出新解决方案之前,WFA

提出了一个中间解决方案,即WPA(Wi-Fi Protected Access)。这个方案后来成为802.11i草案的一部分。

·802.11i专门用于解决无线网络的安全问题。该规范提出的最终解决方案叫RSN(Robust Security Network,强健安全网络),而WFA把RSN称为WPA2。

 

  1. WEP介绍

保护数据Confidentiality的一个主要方法就是对所传输的数据进行加密,而WEP采用了流密码(Stream Cipher)对数据进行加密。

·源数据通过Key Stream(密钥流)进行加密,加密方式就是异或(XOR),得到密文。

·接收端得到密文后,再用相同的Key Stream进行异或操作,这样就能得到目标数据。两次异或操作,Key Stream又一样,所以目标数据就是源数据。

·整个过程中,只要Key Stream保证随机性,那么不知道Key Stream的人理论上就无法破解密文。

用户输入一个Secret Key(即密码)到伪随机数生成器(PseudoRandom Number Generator,PRNG)中,而PRNG会根据这个Secret Key生成密钥流。

 

WEP加密过程如下。

·左上角PRNG的输入(即随机数种子),包括一个IV(Initialization Vector,初始向量,长24位)和WEP Key(Key长度有40、104和128位。位数越多,安全性越高)。IV的值由设

备厂商负责生成。PRNG最终输出Key Stream。

·XOR(即加密)操作的一方是Key Stream,另一方是数据和ICV(Integrity Check Value,完整性校验值)。ICV长32位,其值由CRC-32方法对Data进行计算后得到。XOR操作后的数据即图3-29所示的Encrypted部分。可知Data和ICV都经过了加密。

·最终的MAC帧数据(frame payload)包括IV以及加密后的Data以及ICV。

 

WEP身份验证有以下两种。

·开放系统身份验证(Open System Authentication):这种验证其实等同于没有验证,因为无论谁来验证都会被通过。

·共享密钥身份认证(Shared Key Authentication):Shared Key这个词以后还会经常碰到,它表示共享的密码。

 

Shared Key验证的方法包括四次帧交互。

·STA(即图中的Client)发送Authentication请求给AP。

·AP收到请求后,通过Authentication Response发送一个质询明文(Challenge Text,长度为128字节)给STA。

·STA取出Challenge Text,通过图3-31所示的WEP加密方法利用自己设置的密钥对质询文进行加密,然后再次发送Authentication Request给AP。

 

·AP收到第二次Authentication Request帧后,会利用AP的密钥进行解密,同时还要验证数据完整性。如果ICV正确,并且解密后的译文等于之前发送的质询文,则可知STA拥有正确的密码,故STA身份验证通过。

·AP返回验证处理结果给STA。如果成功,STA后续将通过Association请求加入该无线网络。

 

 

·WPA采用了新的MIC(Message Integrity Check,消息完整性校验)算法用于替代WEP中的CRC算法。新算法名为Michael。

·采用TKIP(Temporal Key Integrity Protocol,临时密钥完整性协议)用于为每一个MAC帧生成不同的Key。这种为每帧都生成单独密钥的过程称为密钥混合(Key Mixing)。

TKIP将为每一帧数据都使用不同的密钥进行加密,故其安全性比WEP要高。另外,由于生成密钥和计算完整性校验时会把MAC地址(如DA、SA、TA)等信息都考虑进去,所以它可以抵抗几种不同类型的网络攻击。不过,从加密本身来考虑,TKIP和WEP一样都属于流密码加密。

 

CCMP出现在WPA2中,它比TKIP更安全,因为它采用了全新的加密方式CCMP(Counter Mode with CBC-MAC Protocol,计数器模块及密码块链消息认证码协议),这是一种基于AES(Advanced Encryption Standard,高级加密标准)的块的安全协议。

 

 

 

3.EAP和802.1X介绍

目前身份验证方面最基础的安全协议就是EAP(Extensible Authentication Protocol),协议文档定义在RFC3748中。EAP是一种协议,更是一种协议框架。

·Authenticator(验证者):简单点说,Authenticator就是响应认证请求的实体(Entity)。对无线网络来说,Authenticator往往是AP。

·Supplicant(验证申请者①)发起验证请求的实体。对于无线网络来说,Supplicant就是智能手机。

·BAS(Backend Authentication Server,后端认证服务器):某些情况下(例如企业级应用)Authenticator并不真正处理身份验证,它仅仅将验证请求发给后台认证服务器去处理。

正是这种架构设计拓展了EAP的适用范围。

·AAA(Authentication、Authorization and Accounting,认证、授权和计费):另外一种基于EAP的协议。实现它的实体属于BAS的一种具体形式,AAA包括常用的RADIUS服务器

等。在RFC3748中,AAA和BAS的概念可互相替代。

·EAP Server:表示真正处理身份验证的实体。如果没有BAS,则EAP Server功能就在Authenticator中,否则该功能由BAS实现。

 

 

EAP没有强制定义位于最底层(Lower Layer,LL)的传输层。目前支持EAP协议的网络有PPP、有线网(EAPOL,也就是802.1X协议)、无线网络(即802.11WLAN)、TCP、UDP等

·Code:EAP协议第一字节,目前仅有四种取值,分别为1(Request)、2(Response)、3(Success)、4(Failure)。

·Identifier:消息编号(ID),用于配对Request和Response。

EAP Method Type取值如下。

·1:代表Identity。用于Request消息中。其Type Data字段一般将携带申请者的一些信息。一般简写为EAP-Request/Identity或者Request/Identity。

·2:代表Notification。Authenticator用它传递一些消息(例如密码已过期、账号被锁等)给Supplicant。一般简写为Request/Notification。

·3:代表Nak,仅用于Response帧,表示否定确认。例如Authenticator用了Supplicant不支持的验证类型发起请求,Supplicant可利用Response/Nak消息以告知Authenticator其支持的验证类型。

·4:代表身份验证方法中的MD5质询法。Authenticator将发送一段随机的明文给

Supplicant。Supplicant收到该明文后,将其和密码一起做MD5计算得到结果A,然后将结果A

返回给Authenticator。Authenticator再根据正确密码和MD5质询文做MD5计算得到结果B。A和

B一比较就知道Supplicant使用的密码是否正确。

·5:代表身份验证方法为OTP(One Time Password,一次性密码)。

·6:代表身份验证方法为GTC(Generic Token Card,通用令牌卡)。GTC和OTP类似,只不过GTC往往对应一个实际的设备,例如许多国内银行都会给申请网银的用户一个动态口令牌。它就是GTC。

 

·0x888e代表EAPOL在802.11帧中的类型。

·Key Descriptor Type值为2,表示EAPOL RSN Key。

·Descriptor Body的内容就是大括号中所包含的信息。

 

Supplicant主动向Authenticator发送EAPOL-Start消息来触发认证。注意,EAPOL-Start消息不是必需的。

·Authenticator收到EAPOL-Start消息后,将发出EAP-Request/Identity消息以要求Supplicant输入用户名。由于EAPOL-Start消息不是必需的,所以一个未经验证的Supplicant发送了其他数据包也将触发Authenticator发送EAP-Request/Identity消息。

·Supplicant将用户名信息通过EAP-Response/Identity消息发送给Authenticator。Authenticator再将它经过封包处理后(转换成RADIUS Access-Request消息)送给AS(Authenticator Server)进行处理。

·AS收到Authenticator转发的用户名信息后,将其与数据库中的用户名表对比,找到该用户名对应的密码信息。然后随机生成的一个MD5质询文并通过RADIUS Access-Challenge消息发送给Authenticator,最后再由Authenticator转发给Supplicant。

·Supplicant收到EAP-Request/MD5 Challenge消息后,将结合自己的密码对MD5质询文进行处理,处理结果最终通过EAP-Response/MD5 Challenge消息经由Authenticator返回给AS。

·AS将收到RADIUS Access-Request消息和本地经过加密运算后的密码信息进行对比,如果相同,则认为该Supplicant为合法用户,然后反馈认证成功消息(RADIUS Access-Accept和

EAP-Success)。

·Authenticator收到认证通过消息后将端口改为授权状态,允许Supplicant访问网络。注意,有些Supplicant还会定期向Supplicant发送握手消息以检测Supplicant的在线情况。如果Supplicant状态异常,Authenticator将禁止其上线。

·Supplicant也可以发送EAPOL-Logoff消息给Authenticator以主动要求下线。

 

4.RSNA介绍

 

为什么要进行密钥派生呢?它涉及密码安全方面的问题,不过其目的并不难理解。在WEP中,所有STA都使用同一个WEP Key进行数据加密,其安全性较差。而RSNA中要求不同的STA和AP关联后使用不同的Key进行数据加密,这也就是RSNA中Pairwise(成对)概念

的来历。

如何解决不同STA使用不同密码的问题呢?原来,我们在STA中设置的密码叫PMK(Pairwise Master Key,成对主密钥),其来源有两种。

·在SOHO网络环境中,PMK来源于预共享密钥(Pre-Shared Key,PSK)。Shared Key概念在3.3.7节介绍WEP身份验证时提到过,即在家用无线路由器里边设置的密码,无须专门的验证服务器,对应的设置项为"WPA/WPA2-PSK"。由于适用家庭环境,所以有些无线路由器设置界面中也叫"WPA/WPA2-个人"(WFA认证名为"WPA/WPA2-Personal")。

·在企业级环境中,PMK和Authenticator Server(如RADIUS服务器)有关,需要通过EAPOL消息和后台AS经过多次交互来获取。这种情况多见于企业级应用。读者可在无线路由器设置界面中见到"WPA/WPA2-企业"(有时叫“WPA或WPA2”,WFA认证名为"WPA/WPA2-Enterprise")的安全类型选项,并且会要求设置RADIUS服务器地址。

·Personal模式不需要RADIUS服务器参与。AP和STA双方的Key属于PSK,即事先就配置好了。

·Enterprise模式下,STA、AP和RAIDUS的PMK通过多次EAPOL消息来获取。获取的方法和具体的EAP Method有关。显然,相比Personal模式,这种方式更加安全,但其耗费的时间也较长。

·STA和AP得到PMK后,将进行密匙派生以得到PTK。最后,PTK被设置到硬件中,用于数据的加解密。

·由于AP和STA都需要使用PTK,所以二者需要利用EAPOL Key帧进行信息交换。这就是4-Way Handshake的作用。

有了PMK后,AP和STA将进行密钥派生,正是在派生的过程中,AP和不同STA将生成独特的密钥。这些密钥用于实际的数据加解密。由于STA每次关联都需要重新派生这些Key,所以它们称为PTK(Pairwise Transient Key,成对临时Key)

1)Authenticator生成一个Nonce(ANonce),然后利用EAPOL-Key消息将其发给Supplicant。

2)Supplicant根据ANonce、自己生成的一个Nonce(SNonce)、自己所设置的PMK和Authenticator的MAC地址等信息进行密钥派生。Supplicant随后将SNonce以及一些信息通过第

二个EAPOL-Key发送给Authenticator。Message 2还包含一个MIC值,该值会被图3-48中的KCK加密。接收端Authenticator取出Message 2中的SNonce后,也将进行和Supplicant中类似的

计算来验证Supplicant返回的消息是否正确。如果不正确,这将表明Supplicant的PMK错误,于是整个握手工作就此停止。

3)如果Supplicant密钥正确,则Authenticator也进行密钥派生。此后,Authenticator将发送第三个EAPOL-Key给Supplicant,该消息携带组临时密码(Group Transient Key,GTK,用于后续更新组密钥,该密钥用图3-48中的KEK加密)、MIC(用KCK加密)。Supplicant收到Message 3后也将做一些计算,以判断AP的PMK是否正确。注意,图中的IGTK(Integrity

GTK)用于加解密组播地址收发的管理帧

4)Supplicant最后发送一次EAPOL-Key给Authenticator用于确认。

5)此后,双方将安装(Install)Key。Install的意思是指使用它们来对数据进行加密。

Supplicant和Authenticator就此完成密钥派生和组对,双方可以正常进行通信了。

 

根据802.11规范,PMK缓存信息的名称叫PMKSA(PMK Security Association),它包括AP的MAC地址、PMK的生命周期(lifetime),以及PMKID(PMK IDentifier,用于标示这个

PMKSA,其值由PMK、AP的MAC地址、STA的MAC地址等信息用Hash计算得来)。

当STA和AP进行关联(或重关联)时:

·STA首先根据AP的MAC地址判断自己是否有缓存了的PMKSA,如果有则把PMKID放在RSNE中然后通过Association/Reassociation Request发送给AP。

·AP根据这个PMKID再判断自己是否也保持了对应的PMKSA。如果是,双方立即进入4-Way Handshake过程,从而避免802.1X协商步骤。

 

标签:WIFI,STA,Supplicant,WiFi,Authenticator,AP,Key,邓凡平,EAP
来源: https://blog.csdn.net/kv110/article/details/99778317