ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-08-24 17:43:23  阅读:688  来源: 互联网

标签:WIFI STA Supplicant WiFi Authenticator AP Key 邓凡平 EAP


原文链接: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有