WPA/WPA2企业和个人用法的简单公式如下
WPA-企业=802.1X+EAP+TKIP
WPA2-企业=802.1X+EAP+CCMP
WPA-个人=PSK+TKIP
WPA2-个人=PSK+CCMP
其中EAP和PSK是用于身份验证的,就是建立真正连接需要的密钥,也代表了这个身份验证的过程,就是说EAP在认证方面是更加健全的,如果使用PSK,那么这个AP更容易被侵入或者破解,而使用EAP,是企业级的认证,认证过程使用到了认证服务器,非法的用户就很难通过这个认证。而TKIP和CCMP是对认证后的数据传输安全负责的,TKIP和CCMP,TKIP和CCMP加密方式都是不是直接使用psk加密的,而是派生的临时密钥,而CCMP比TKIP更安全。还有TKIP和CCMP除了定义了加密方式,还定义了对数据完整性的校验方法。
CCMP(Counter CBC-MAC Protocol)
计数器模式密码块链消息完整码协议。CCMP主要是两个算法所组合而成的,分别是CTR mode以及CBC-MAC mode。CTR mode为加密算法,CBC-MAC用于讯息完整性的运算。
TKIP(Temporal Key Integrity Protocol)(临时密钥完整性协议)
TKIP使用的RC4作为其密码。在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。TKIP实现了一个64位的消息完整性检查(MIC)。
PSK(pre-shared key)
预共享密钥模式,即我们平时连接wifi时输入的密码。
RSN与PSK,TKIP,CCMP的关系
RSN的四次握手的过程中,正是基于psk去生成和交换临时通信密钥。
安全知识点中会经常见到Key(密钥)和Password(密码,也叫Passphrase)这两
个词。它们本质意思都一样,只不过Password代表可读(human readable,如字符串、数字
等)的Key,而Key一般指由算法生成的不可读(如二进制、十六进制数据等)的内容
安全是无线网络技术中一个很重要的部分,它主要有三个保护点。
*数据的完整性(Integrity):用于检查数据在传输过程中是否被修改。
*数据的机密性(Confidentiality):用于确保数据不会被泄露。
*身份验证和访问控制(Authentication and Access Control):用于检查受访者的身份。
下面就围绕连接AP时的认证及RSN(RSNA)过程。
安全协议主要有:
WEP:WEP弱点很多,其最主要的一个问题就是所有数据都使用同一个WEP Key进行加密。这个弱点是后面发展安全协议主要
解决点。这个安全协议的认证和WPA-PSK的个人版差不多。
WEP身份验证有以下两种。
·开放系统身份验证(Open System Authentication):这种验证其实等同于没有验证,因
为无论谁来验证都会被通过。那它有什么用呢?规范规定,如果想使用更先进的身份验证
(如RSNA),则STA在发起Authentication请求时,必须使用开放系统身份验证。由于开放系
统身份验证总是返回成功,所以STA将接着通过Association请求进入图3-29中的State 3然后开
展RSNA验证。
·共享密钥身份认证(Shared Key Authentication):Shared Key这个词以后还会经常碰
到,它表示共享的密码。例如在小型办公及家庭网络(Small Office/Home Office,SOHO)环
境中,AP的密码一般很多人(即很多STA)都知道。
提示 初看上去,共享密钥身份验证的安全性比开放系统要强,但实际却恰恰相反。因
为使用了共享密钥身份验证就不能使用更为安全的RSNA机制。
注意以上所说的只是针对WEP协议,而不包括WPA/WPA2
WPA:WPA是802.11i规范正式发布前用于替代WEP的一个中间产物。相比WEP,WPA做了如下改动:
*WPA采用了新的MIC(Message Integrity Check,消息完整性校验)算法用于替代WEP中的CRC算法。新算法名为Michael。
*采用TKIP(Temporal Key Integrity Protocol,临时密钥完整性协议)用于为每一个MAC帧生成不同的Key。这种为每帧都生成单独密钥的过程称为密钥混合(Key Mixing)。TKIP将为每一帧数据都使用不同的密钥进行加密,故其安全性比
WEP要高,由于生成密钥和计算完整性校验时会把MAC地址(如DA、SA、TA)等信息都考虑进去,所以它可以抵抗几种不同类型的网络攻击[30]。不过,从加密本身来考虑,TKIP和WEP一样都属于流密码加密。
*WPA继承了WEP的基本原理而又弥补了WEP的缺点:WPA加强了生成加密密钥的算法,因此即便收集到分组信息并对其进行解析,也几乎无法计算出通用密钥;WPA中还增加了防止数据中途被篡改的功能和认证功能。 WPA-PSK(预先共享密钥Wi-Fi保护访问)
WPA2:即RSN的别称。CCMP出现在WPA2中,它比TKIP更安全,因为它采用了全新的加密方式CCMP(Counter Mode with CBC-MAC Protocol,计数器模块及密码块链消息认证码协议),这是一种基于AES(Advanced Encryption Standard,高级加密标准)的块的安全协议。
认证协议
EAP:目前身份验证方面最基础的安全协议就是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实现。
Supplicant通过EAPOL(EAP Over LAN,基于LAN的扩展EAP协议)发
送身份验证请求给Authenticator。图中的身份验证由后台验证服务器完成。如果验证成
功,Supplicant就可正常使用网络了
Supplicant通过EAPOL(EAP Over LAN,基于LAN的扩展EAP协议)发送身份验证请求给Authenticator。图中的身份验证由后台验证服务器完成。如果验证成功,Supplicant就可正常使用网络了。(虽然认证完后,还有association和RSN过程,但是那些一般都可以完成的,只要STA和AP都正常工作)
EAP协议格式
EAP协议格式
·Code:EAP协议第一字节,目前仅有四种取值,分别为1(Request)、2(Response)、
3(Success)、4(Failure)。
·Identifier:消息编号(ID),用于配对Request和Response。
·Length:2字节,用于表示EAP消息包长度(包括EAP头和数据的长度)。
·Data:EAP中具体的数据(Payload)。当Code为Request或Response的时候,Data字段还
可细分为Type以及Type Data。Type就是图3-37中的EAP Method Type。
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,一次性密码)。这是目前最安全的
身份验证机制。相信网购过的读者都用过它,例如网银付费时系统会通过短信发送一个密
码,这就是OTP。
·6:代表身份验证方法为GTC(Generic Token Card,通用令牌卡)。GTC和OTP类似,
只不过GTC往往对应一个实际的设备,例如许多国内银行都会给申请网银的用户一个动态口
令牌。它就是GTC。
EAP交互图
如上图所示为一个简单的EAP交互。第三和第四步时,Authenticator要求使用MD5质询法进行身份验证,但Supplicant不支持,故其回复NAK消息,并通知Authenticator使用GTC方法进行身份验证。第六步中,如果Supplicant回复了错误的GTC密码时,Authenticator可能会重新发送Request消息以允许Supplicant重新尝试身份验证。一般认证失败超过3次才会回复Failure消息。
安全协议应该包含认证方法,或者根据具体情况,选择一种认证方法。
RSNA(Robust Secure Network Association,强健安全网络联合)是802.11定义的一组保
护无线网络安全的过程。
RSNA过程
1)RSNA网络发现阶段。当STA扫描无线网络时,需检查Beacon帧或Probe Response帧
中是否有RSNE信息元素。如果有,STA根据RSNE处理原则选择合适的AP并完成802.11
Authentication(设置认证类型为Open System Authentication)和Association。
2)上一步建立的安全保护机制非常弱,所以RSNA的第二步工作是开展802.1X认证。目
的是利用802.1X认证机制实现有效安全的认证用户身份,同时还需要分配该次会话所需要的
一系列密钥用于后续通信的保护。
3)RSNA通过4-Way Handshake和Group Key Handshake协议完成RSNA中的密钥管理工
作。密钥管理工作主要任务是确认上一阶段分配的密钥是否存在,以及确认所选用的加密套
件,并生成单播数据密钥和组播密钥用于保护数据传输。
当上面三个步骤都完成后,RSNA网络就建立成功。由上所述,我们发现RSNA包括两
个主要部分。
·在数据加密和完整性校验方面,RSNA使用了前面章节提到的TKIP和CCMP。TKIP和
CCMP中使用的TK(Temporary Key)则来自于RSNA定义的密钥派生方法。
·密钥派生和缓存。RSNA基于802.1X提出了4-Way Handshake(四次握手协议,用于派生
对单播数据加密的密钥)和Group Key Handshake(组密钥握手协议,用于派生对组播数据加
密的密钥)两个新协议用于密钥派生。另外,为了加快认证的速度,RSNA还支持密钥缓
存。
为什么要进行密钥派生呢?它涉及密码安全方面的问题,不过其目的并不难理解。在
WEP中,所有STA都使用同一个WEP Key进行数据加密,其安全性较差。而RSNA中要求不
同的STA和AP关联后使用不同的Key进行数据加密,这也就是RSNA中Pairwise(成对)概念
的来历。
现实生活中,我们关联多个STA到同一个AP时使用的都是相同的密码,如何解决不同STA使用不同密码的问题呢?原来,我们在STA中设置的密码叫PMK(Pairwise Master Key,成对主密钥),其来源有两种:
·在SOHO网络环境中,PMK来源于预共享密钥(Pre-Shared Key,PSK)。
·在企业级环境中,PMK和Authenticator Server(如RADIUS服务器)有关,需要通过EAPOL消息和后台AS经过多次交互来获取。这种情况多见于企业级应用。
在WPA/WPA2协议中,Personal模式和Enterprise模式中PMK的来源如下图所示
由上图可知,不只是Open System Authentication认证方式才有four-way handshake和Group key handshake(分别和单播、组播的数据加密有关),WPA/WPA2也有这过程。把RSNA抽出来主要是补充Open System Authentication的通信安全性。
密钥派生的作用:WEP中,网络中传输的是用同一个Key加密后的数据,其破解的可能性较大。而TKIP和CCMP则把PMK保存在AP和STA中,实际数据加密解密时只是使用PMK派生出来的Key,即PTK。
由于密钥派生时需要STA和AP双方的Nonce等其他一些信息,所以二者还需通过4-WayHandshake以交换双方的信息
4-Way Handshake流程
4-Way Handshake工作过程如下:
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(IntegrityGTK)用于加解密组播地址收发的管理帧,本书不讨论。
4)Supplicant最后发送一次EAPOL-Key给Authenticator用于确认。
5)此后,双方将安装(Install)Key。Install的意思是指使用它们来对数据进行加密。Supplicant和Authenticator就此完成密钥派生和组对,双方可以正常进行通信了。
802.11还支持“混合加密”,即单播和组播使用不同的加密方法,例如单播数据使用CCMP而组播数据使用TKIP进行加密。注意,有些加密方法不能混合使用,例如组播数据使用CCMP加密,单播数据就不能使用TKIP。混合加密的主要目的是为了解决新旧设备的兼容性问题。它对应的应用场景如下:
1)AP支持TKIP和CCMP,属于新一代的设备。
2)一些老的STA只支持TKIP,而一些新的STA支持TKIP和CCMP。
对于单播数据来说,AP和STA的密钥是成对的。所以对于老STA,AP和它们协商使用
TKIP。对于新STA,AP和它们协商使用CCMP。而对于组播数据来说,所有STA、AP都使用
同一个密钥,加解密方法也只能是一样的。在这种情况下,大家只能使用TKIP而不能使用
CCMP对组播数据进行加解密了。
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协商步骤。
无线网络安全相关知识总结
规范最早定义的WEP本来目的是解决数据完整和机密性的问题,后来WEP中附带完成了Authentication检查。不过整体保护机制非常弱。
·在802.11i正式出台前,WFA提供了安全机制比WEP强的TKIP。注意,TKIP本身只能解决数据完整和机密性问题。而802.11i出台后,又增加了一个更强健的加密算法CCMP(有时候也叫AES)。AES和TKIP都用于解决数据完整和机密性问题。
·为了解决Authentication问题,规范借鉴802.1X,从而引出RSNA,它包括密钥派生、缓存等内容。