802.11无线权威指南第五章学习笔记

目录

WEP的密码学背景

WEP的加密操作

关于WEP的种种问题

动态WEP


无线网络使用开放性媒介,如果传输链路未采取适当的加密保护,使用时的风险会大幅增加

防止数据被拦劫属于加密协议的范畴。当帧经过空气时,必须加以保护才能免遭毒手。保护有好几种形式,不过最常被引用的两种非正式目的,就是维护网络数据的保密性以及确保数据未被改动。起初,有线等效加密(WEP)标准被视为无线安全的解决方案。不过在802.11问世的前4年,研究人员发现WEP并不安全

不过有些时候,某些特殊设备只支持WEP况且WEP的设计相当容易实现有些老的设备缺乏足够的处理能力而无法运行得更为顺畅,因此WEP已经算是最佳选择。此外,较新的技术,如TKIP,仍旧会用到WEP的帧处理操作,因此了解WEP也就十分重要了

WEP(有线等效加密)密码学背景

WEP用以保护数据RC4密码(cipher)属于对称性(密钥)流密码(stream cipher)。

RC4密码具备所有流密码的共同特性,一般而言,流密码会用到称为密钥流(keystream)的位流。

密钥流随后会与信息结合,产生密文( ciphertext)。为了还原原始信息,接收端会以相同的密钥流处理密文。RC4密码会利用异或运算结合密钥流与密文。图5-1说明了整个过程

source:源                    Destination:目的地

Keystream:密钥流      cipher stream:流密码

流密码的运作方式通常是会先选用一把较短的密钥,然后将之展开为与信息等长的伪随机数密钥流。此过程如图5-2所示。伪随机数生成器(pseudorandom number generator,简称PRNG)是一组用来将密钥展开为密钥流(keystream)的规则。为了还原数据双方必须拥有相同的秘钥(secret key),并且使用相同的算法将密钥展开为伪随机数序列( pseudorandom sequence)。

既然流密码的安全性完全取决于密钥流的随机程度,因此密钥如何展开为密钥流(key-to-keystream expansion)在设计上就极为重要。当802.11工作组决定采用它时,RC4看似十分安全。不过当RC4被选为WEP的加密引擎后,其所带动的一连串相关研究发现RC4密码锁本身隐含了极大的瑕疵,我们将于稍后提及。

密文( ciphertext)

流密码的安全性

一个完全随机的密钥流通常称为一次性密码本(one-time pad),它是经过数学证明的目前已知的唯一可以防范任何攻击的加密方式。一次性密码本很少被使用,因为除了密钥流必须完全随机并与受保护的数据等长,而且还不得重复使用

可能遭受攻击的对象不只是底层所使用的密码。加密系统中的任何弱点都可能让攻击者乘虚而入。

流密码锁是安全与实际考虑下的折中产物。一次性密码本所具备的完全随机性(以及绝对安全性)虽然吸引人,但考虑到实际的困难以及产生与传递解密文件的成本,若非要求绝对安全的信息,实际上它并不值得采用。流密码使用密钥流的随机程度虽然较低,但已足以应付绝大多数的应用

密码政治学

密码学的讨论如果未能交代围绕其应用的种种法律与管理上的考虑,就不能称得上完整。WEP(有线等效密钥)的应用有三项主要议题,虽然这些议题的效应将会随着时间的推移而递减

WEP需要通过RC4(cipher)密码来加密帧。设备驱动程序只需负责将WEP密钥交付硬件处理。让网卡硬件处理加密事宜,意味着软件无需顾虑是否会侵犯到RSA的知识产权

起初WEP在设计上之所以采用短密钥,是为了符合美国对加密产品的出口管制。一开始,标准要求采用40位的短密钥,不过现在几乎所有市面上的产品都至少支持104位的密钥

最后,有些政府严格管制任何加密系统的使用,包括WEP在内。除了美国的出口管制,有些国家还有进口管制,限制加密设备的进口。其他政府也有权提出一些额外的加密限制。中国政府自行开发了一种替代方案,称为无线局域网鉴别和保密基础结构(WLANAuthentication and Privacy Infrastructure,简称WAPI)的安全系统,并将之列为中国无线局域网设备的可选项

WEP的加密操作

通信安全有三个主要目的。当数据经过网络时,数据安全协议必须能够协助网管人员实现这些目的。

机密性(confidentiality)是为了防止数据不受未授权的第三者拦截完整性(integrity)则确保数据没有被修改而真实性(authentication)是所有安全策略的基础,因为数据的可信度部分取决于数据源的可靠性。用户必须确认数据来自期望的数据源。系统必须利用认证来适当保护数据。授权(authorization)与访问控制(accesscontrol)两者均奠基于真实性之上。在允许访问任何数据之前,系统必须确认用户的身份(真实性)以及是否允许该用户访问数据(授权)。、

为了实现上述目的,WEP本身提供了一些机制,然而这些机制在遭受严重攻击时可能失效帧主体加密机制 〈 frame body encryption)主要用来提供机密性(confidentiality)。完整性校验序列( integrity check sequence)用来在传送过程中保护数据,让接收者能够验证所收到的数据在传送过程中未被更改过。

WEP的数据处理

机密性与完整性的操作同时进行,如图5-3所示。加密之前,帧会通过完整性校验算法产生一个称为完整性校验值(integrity check value,简称ICV)的散列值(hash)。ICV可确保帧在传送过程中未被改变。帧本身与ICV两者均经过加密,因此ICV不会被攻击者任意宰割

WEP需要以下三个输人项:
        需要保护的有效载荷((payload),这些数据来自上层协议堆栈(protocol stack)。

        秘钥(secret key),用来加密帧。依实现方式的不同,可以用密钥位字符串(stringof key bits)或者密钥编号(key number)来指定密钥。WEP允许同时存储4种密钥
        初始向量(initialization vector,简称IV),和秘钥(secret key)一起在传送帧时使用

经过处理后,WEP会产生一个单一输出项:

        加密过的帧,可以通过不安全的网络加以传送,其中包含足够的信息使对方能够解密

WEP的数据传送
驱动程序以及接口硬件负责处理数据,然后送出加密过的封包,顺序如下:

1. 802.11帧被放在队列中等待传送。帧由标头有效载荷〈payload)组成。WEP只
保护802.11 MAC的有效载荷,至于802.11帧头以及其他底层协议标头则丝毫没有改变

2.根据802.11 MAC帧的有效载荷计算出完整性校监值。由于此校验值是针对帧的有
效载荷来计算的,因此计算所涵盖的范围始于SNAP标头的第一位,直到帧主体的最后一个数据位。

3.帧加密密钥(或称WEP种子)随后组装完成。WEP密钥分为两部分:秘钥以及初始向量(IV)。如果使用同一个密钥,流密码会产生相同密钥流,因此另以初始向量为每个帧产生不同的流密码。为了避免出现使用相同密钥流进行加密的情况,传送帧的工作站会将IV附加在密钥之前。802.11并未限制选取IV时非得使用何种算法,有些产品使用流水号作为IV值,有些则会使用伪随机散列算法。如何选择Ⅳ具有重要的安全含义,选得不好就可能危及密钥。

4.帧加密密钥被当成RC4密钥,用以加密来自步骤1的802.11 MAC有效载荷以及来自步骤2的ICV。整个加密过程通常通过网卡上的RC4专用电路来协助完成

5.将有效载荷加密之后,工作站就会开始组装待传的帧。802.11标头本身维持不变,802.11 MAC标头与加密过的有效载荷之间则插入了WEP标头。除了IV,WEP标头中还包含密钥编号。WEP最多允许定义4个密钥因此发送端必须分辨目前使用的是哪一个密钥。一旦附加上最后的标头,就可以针对整个MAC帧,即从标头算起,直到(加密过的)ICV结束,计算出802.11帧校验(FCS)码。

解密过程刚好相反。与任何无线网络的传送过程相同,首先是验证FCS,确保所接收到的帧未在传送过程中损毁。解读帧受保护的部分时,接收端会使用密钥,加上IV,然后产生密钥流得到解密过的数据后,接下来则是验证ICV。如果ICV验证无误,就根据SNAP标头所记载的内容,将封包数据交给适当的上层协议

WEP密钥的长度
理论上,WEP可以搭配任意长度的密钥,因为RC4并未要求非得使用特定长度的密钥

不过,大多数产品均支持一种或两种长度的密钥唯一出现在标准中的密钥长度是64位的WEP种子(seed),其中40位是两个工作站进行传送时所共享的密码。不同厂商会以各种不同的名称来称呼标准的WEP模式: standard WEP、802.11-compliant WEP、40-bit WEP、40+24-bit WEP,甚至是64-bit WEP

另外一种比较常见的做法就是采用较长的密钥通常是使用128-bit的WEP种子,其中有104位密而不宣

在设计完善的密码系统中,使用较长的密钥可以获得较高的安全性。每增加1位,就会让可能产生的密钥数量加倍。因此,理论上要破解系统的时间也随之加倍。然而,WEP并非设计完善的密码系统,况且在密钥中多加几位并不能带来多少好处。已经被揭露的最佳攻击手法可以在短短几秒钟内破解WEP取得密钥,不论密钥的长度是多少

 

手动(静态)与自动(动态)的WEP(有线等效加密)
802.11并未规范WEP必须使用特定的密钥分配机制。对WEP而言,反正密钥就是会神奇出现。早期的WEP实现必须手动分配密钥。网管人员必须负责将1个默认密钥分配到网络中的所有工作站,这个过程通常是手动完成的。密钥的更新也是通过手动方式更新密钥对网管而言其实是莫大的负担。不具密钥分配机制的WEP通常称为手动WEP或静态WEP

手动密钥是个很糟的概念。要管理整个网络中这么多接入点的密钥分配是相当困难的事。密钥是用来保护数据的,如果组织中有知道密钥的人离职,就应该予以更换

如果没有明确的理由,就不该采用静态WEP。除了聊胜于无,静态WEP其实乏善可陈。它可以有效地制止散弹式的攻击 (casual attack ),但无法防御集中火力型的侵略(determined assault)。许多低功率设备,例如802.11电话、手持条形码扫描器甚至是PDA,无法提供优于WEP的解决方案。除非这些设备被完全被汰,否则在这种情况下,静态WEP仍旧是保护链路层安全的唯一选择

比较好的解决方案是动态WEP。在动态WEP中,每个工作站会使用两个密钥而不是所有工作站共享一个密钥。其中一个密钥是经过映射的密钥,工作站与接入点所共享,用来保护单播帧。另外一个密钥是默认密钥为同一服务集中所有工作站所共享,用来保护广播与组播帧。工作站所使用的加密密钥是通过密钥加密密钥(key encryption key)来分配

WEP密钥的编号与存储
WEP密钥有其相对应的编号,802.11工作站最多可以指定4个密钥。起初,WEP密钥编号是为了协助更换网络密钥。指定好新的密钥后,工作站可以逐步切换,而不必让所有工作站同时切换。举例而言,假设组织原本使用编号为0的密钥,如要更换,可以指定使用编号为1的密钥。如此一来,工作站至少有一段缓冲时间来逐渐改用编号为1的密钥,而不是在同一时间内全面更新。等到过渡期结束,对编号为0的密钥就予以停用

在动态WEP解决方案里,密钥编号扮演着不太一样的角色。每个工作站均会从接入点处接收到两个密钥:一个映射密钥,通常存储为0号密钥。一个默认密钥,通常存储为1号密钥。工作站以О号密钥保护单播数据,以1号密钥保护广播数据。当帧被放在队列中待传时,驱动程序将会以О号密钥加密单播帧,以1号密钥加密广播帧

802.11刚问世时,有些网卡并不支持WEP或只能借助主机的CPU进行RC4加密运算,因此性能大打折扣。以硬件实现RC4其实相当容易,1999年以后,几乎所有市面上的无线局域网接口均已内置了RC4硬件加密的功能以免软件加密拖垮整体性能(包含大多数较晚推出的802.11b网卡)。

为了让帧的加密更有效率,许多802.11芯片组内含一种称为密钥缓存(key cache)的数据结构。密钥缓存由目的地地址、密钥识别编号、密钥本身各个位的对应关系组成。大多数工作站的网卡的芯片组都有4个密钥槽静态WEP使用其中一个密钥槽,动态WEP使用两个当帧放在队列中待传时,首先会在密钥缓存中查询目的地地址,所查到的密钥就用来加密帧。动态密钥在功能上和静态WEP一样,不过密钥缓存的内容可能会被密钥管理软件所取代

适用于网卡与适用于接入点的芯片组的不同之处在于后者有较大的密钥缓存,通常可以容纳256个或更多的密钥项目。就算每个工作站需要用到两个密钥(一个映射密钥与一个默认密钥),这样的数据结构就可以处理100个以上的工作站的密钥。

 

关于WEP的种种问题 

实现问题的推波助澜,更进一步削弱了系统的安全性。802.11认识到,使用相同的IV为大量帧进行加密并不安全,必须加以避免。所以802.11标准允许每个帧各自使用不同的IV,但并未强制要求

WEP包含了完整性检查,不过其所使用的算法为循环冗余校验(cyclic redundancycheck,简称为CRC)。个别位如果被修改,大多数都可通过CRC检测得知,然而它并不具备密码学上的安全性。密码学上安全的完整性校验(secure integrity check〉是以散列函数为基础,因为散列函数无法预测。只要使用不可预测的函数,那么即使攻击者仅改变帧中的一个位,完整性校验码也会以不可预测的方式而有所改变。如此一来,就算攻击者想利用相同的完整性校验码找出被更改的帧,其机会不仅微乎其微,而且也不可能实时完成。

WEP系统设计上的瑕疵

针对WEP的密钥恢复攻击

攻击重点在于RC4将密钥展开为密钥流的方式(此过程称为密钥调度算法)所露出的破绽。

书P138页 此处不做赘述​​​​​​​

防范密钥恢复攻击:P139页

动态WEP

随着注意力开始转向安全性,业界随即着手开发能够显著改善安全性的无线局域网技术

第一步是通过动态密钥更新以弥补WEP的不足。动态WEP使用的是一组不同的密钥

而不是让网络中所有工作站共享1个静态密钥来加密所有帧

实际的做法是,网络上所有工作站使用一个密钥来加密广播帧,但个别工作站使用自己的映射密钥来加密单播帧

WEP并未制定出一套密钥管理框架。密钥的生成与分配是通过一组802.11未曾明文规定的系统。最早也是最简单的密钥管理框架就是通过手动的方式来实现。网管人员必须指定一串位以作为密钥,然后将之分配给位于相同802.11服务集的所有工作站。要设定密钥,网管人员必须亲自搞定需要设定的机器

动态WEP使用经过改良的密钥管理框架。它使用较坚固的加密协议来产生密钥,同时通过加密以便在不安全的网络上分配密钥,不再凡事依赖网管人员手动完成。

动态WEP处理帧时和静态WEP采取的方式相同

唯一的差别在于前者使用经过改良的机制,每隔一段时间就会产生并分配新的密钥

动态WEP所采用的自动密钥管理机制相比较于静态WEP而言,能够提供更好的安全性,因为它动态地缩短了每把密钥的使用时间更新密钥后仍可使用原本的帧初始向量

​​​​​​​因为两者对应到不同的WEP种子。如此一来,通过Fluhrer/Mantin/Shamir所进行的密钥恢复攻击就必须在同一个密钥的使用期间完成。动态WEP并不完美,不过比起静态WEP已有显著的改善。几乎所有网卡与驱动程序都已支持动态WEP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值