◆马天午 李建宇 窦浩
(河北兰科网络工程集团有限公司 河北 065000)
随着信息科技的发展日新月异,再加上信息设备的价格大幅降低,不论是在办公室或一般家庭,计算机已成为非常重要的工具。而网络的发展更使信息的传递更加便捷与迅速,在政府机关或企业内部,区域网络的建立不只使讯息的传递更加方便,也达到了档案交换和资源共享的目的,使生产力大幅提升。在无线区域网络的发展过程中,虽然有不同的组织或厂商提出不同的通信协定标准,但IEEE 802.11 系列的无线区域网络标准,可说受到最多生产厂商的支持,各厂商也预测大部分的无线区域网络将采用 802.11 为通信协议,提供客户稳定而廉价的无线区域网络传输服务。
认证(Authentication)的目的是确认对方身份的合法性,以免与身份不明的对象沟通,泄漏了重要的机密。也就是双方进行通讯的前,必须先经过认证的程序。IEEE 802.11 提供两种认证的服务-开放系统式(Open System)及共享钥匙式(Shared Key)。前者是IEEE 802.11内定的认证方法,不过工作站提出认证要求时可指定要采用哪种方式进行双向认证。
所谓加密即是将原来传送的资料,经过一特定的运算过程,将原来的讯息隐藏起来,必须再经过相对的运算称作解密,才能还原。在这里尚未经过加密演算的资料,称为明文(Plaintext,简称P),经过加密演算的资料称作密文(Ciphertext,简称 C)。在密码算法(cryptographicalgorithm)定义了一组相对的加密函数(Encryption function,简称E)和解密函数(Decryption function,简称D),加密函数和解密函数的算法可以是相同也可以完全不同,在近代的密码学中,加解密多采用钥匙(Key)的方式来运算,即是加密函数和解密函数都在算法中加入Key,函数的算法则是公开的,只有将Key 保留,换言之,窃听者如果能得到Key,就能将密文完全破解。
一个经WEP 加密的讯框在资料(Frame Body)部份,是由初始矢量(IV)4 个位元组、密文大于1 个位元组和完整性检查码(ICV)4 个位元组组合而成。
初始矢量(IV)事实上包3 个位元组(24 bits)的初始矢量和1个位元组钥匙选择字节合。
IV 的产生方式可由工作站或撷取点在传送时随机产生或采用计数器循序产生,802.11 标准并没有定义,可由设计者自行设计。WEP中最多可以定义四组KEY,在传送时再由钥匙选择位元指定由第几组KEY 来负责加密或解密的工作。加密的过程首先将明文经过在3.2 介绍的完整性算法产生一个4 个位元组的完整性检查码。
再经由WEP 加密,在802.11 中定义WEP 是采用共享式钥匙的方式,所有的用户包含撷取点(AP)都采用同一个KEY 来完成加密和解密,钥匙长度有40bits 和128bits 两种。
WEP 40bits 的格式中共享钥匙长度为40 个位元和IV 的24 个位元,组成长度为64 个位元的KEY。WEP 128 bits 的格式中共享钥匙长度并非128 个位元而只有104 个位元和IV 的24 个位元,组成长度为128 个位元的KEY。组合成完整的KEY 再经由RC4 算法产生不定长度的串流位元值和原文作互斥或运算:
C = P⊕RC4(IV,KEY)
当接收端收到资料时,取出封包中的IV 加上工作站本身拥有的共享钥匙组成完整的KEY经由同样的RC4 算法产生相同的位元串流值和密文作互斥或运算即可得到原文。
因为IV 的长度只有24 个位元,所以只要网络中所有工作站传送山的封包的总数超过224 时,就会有IV 重复使用的问题产生,例如黑客撷取到两个使用相同IV 加密的封包C1 和C2 时:
C1= P1⊕RC4(IV,KEY),
C2= P2⊕RC4(IV,KEY),
因为C1 和C2 都是分别由P1、P2 和RC4(IV,KEY)作互斥或运算,所以将C1 和C2 两个再作一次互斥或运算可以得到:
C1⊕C2 =[P1⊕RC4(IV,KEY)]⊕[P2⊕RC4(IV,KEY)]
=P1⊕RC4(IV,KEY)⊕P2⊕RC4(IV,KEY)
=P1⊕P2⊕RC4(IV,KEY)⊕RC4(IV,KEY)
=P1⊕P2⊕1
=P1⊕P2
可看出将两个密文作互斥或运算后所得的结果只和原来的明文有关,和原来的共享钥匙无关,若收集使用相同IV 值的封包数愈多,泄漏出的讯息将足以利用统计或其他破密的方法分析出原文。而这样的情形在一个平均流量达5 百万位元(Mbit)的无线区域网络内,若假设平均封包长度为1400 字节时,大约每10 小时就会出现IV 重复使用的问题,而窃听者并不需要连续监听10 小时,可以每次监听数小时,连续监听几天,累计监听时间超过十小时可得到同样的效果。再加上部分无线区域网络传输设备在设计时,并未考虑周全,例如在使用计数器来产生IV 的设备中,许多设备是在每次开机时会将计数器是归零,也就是更容易产生使用相同IV 来加密封包的情形。
在WEP 中若窃听者已知明文P 时,将密文和明文作互斥或运算,可得到某一组IV 和KEY 经RC4 运算后产生的串流键值的部分结果(因明文长度而异):
C⊕P =[P⊕RC4(IV,KEY)]⊕P
= P⊕RC4(IV,KEY)⊕P
= RC4(IV,KEY)⊕P⊕P
= RC4(IV,KEY)]⊕1
= RC4(IV,KEY)]
虽然无法破解共享钥匙,但可利用来对使用相同的IV 加密的封包破解而得到原文。黑客可以使用这种方法对位于无线区域网络中的某一工作站发出讯息,例如一封电子邮件等,当撷取点将资料加密传送时再加以监听,便很容易可以得到泄露的讯息。
若变造的部分是属于封包的位址部分,则可能使撷取点和埠接器无法辨别封包真伪,认为是一个正确的封包且目的位址属于无线网络的外部的有线网络上的工作站,而将封包先解密后再传送出去,而泄漏出重要的信息。
在管理者安装无线区域网络时,有时为了容易记住钥匙,而采用了英文单词或某些较为简单的组合,黑客可以有机会采用字典的方式暴力破解WEP 的密码,例如Wepcrack 即是一种采用字典为基础的暴力破解工具。
在无线区域网络中采用了共享钥匙的策略,除了钥匙传递的问题外,另外所有的工作站和撷取点都拥有钥匙,而且记录在机器内部,使得管理上容易产生缺失,让入侵者很容易就获得钥匙。
共同的模式是当已知初始矢量(IV,3 个位元组)和n 个位元组的钥匙(0≦n≦L)时,我们即可模拟钥匙安排法则(KSA)的前n+3个循环数列运算,求出S1 至Sn+3 数列和Sn+4 数列的Sn+4[0]至Sn+4[n+2]项,找出所有符合Sn+4[1]<n+3且Sn+4[1]+ Sn+4[Sn+4[1]]=n+3 的封包,皆可用来分析K[n],事实上当已知的共享钥匙愈多时,有更多的不同初始矢量符合条件可用来分析。
同时在设计程序实际分析钥匙的过程中,可适度地提高搜寻的广度,即原先分析封包的第一个位元组来计算:
K[n]=(S-1[z]- jn+3 - Sn+3[n+3])mod 256(0≦n≦L)
并计算不同K[n]值的出现的次数,最后以出现次数最高者为预测结果,如果预测的结果最后经实际验证并不符合,可再以出现次数次高或第3 高K[n]值的依序往下分析,采用这样提高搜寻广度的方式 ,即使撷取到的封包数目不多,但仍有极高的概率可以分析出正确的钥匙。
而以FLUHRER,S.等人在他们的论文中提到每个KEY 必须收集60 个以上有效的封包为例,在大部分的无线区域网络设备里,产生初始矢量时多数采用了计数器和随机产生两种方式。
在采用计数器的环境下,在计数器是先改变初始矢量的最低位元值(IV[0])时,需收集4 百万个封包,在计数器是先改变初始矢量的最高位元值(IV[2])时,只需收集不到2 百万个封包即有足够的有效封包用来分析。在采用随机产生初始矢量的环境下,更只需约1.3 百万个封包就足够。在一个平均流量达5 百万位元(Mb)的无线区域网络下,若假设平均封包长度为1400 字节时,每秒钟约有450个以上的封包可供撷取,每小时约有1.68 百万个封包可供撷取,也就是最少只要一小时,最多不到三小时的时间就可收集足够的有效封包数来破解WEP 的钥匙。
根据本文的讨论,可以看出在无线区域网络中即使采用有线等效加密算法(WEP)并采用了较长的共享钥匙(WEP-128),要保证信息在传递时不受黑客的窃取是不可能的,当使用者在建置无线区域网络时希望资料在传递时能有足够的安全防护,必须采用相应方法来提高安全性。