随着WLAN技术的迅猛发展,无线安全正在受到普遍的关注。目前主流的WLAN标准IEEE802. 11采用的是以RC4加密算法为核心的WEP加密技术。RC4是一种被广泛应用的高速输出反馈序列加密算法,由密钥时序子算法(key scheduling algorithm,KSA)和伪随机序列生成子算法(pseudo random generation algorithm,PRGA)两部分组成。但由于RG4加密技术本身存在很多缺陷和不足,需要对其进行改进。

一、RC4加密算法

RC4加密算法是一种被广泛应用的流密码产生算法。它包含了不为外部所知的巨大内部状态数。这些状态数是一个nbit二进制数的排列数,另外还受2个指示数i,j的影响。状态数目为2n!×(2n)2。例如,对于具体应用中n-8的情况,RC4的状态数为log2 (2n!×(nn)2)≈1700 bit。

RC4加密算法包括2部分,一个是KSA,它把密钥(通常是40~256 bit)变成一个S={0,2,…N一1,N(=2n)的初始序列;

procedure RC4-Keylnitialization

begin

for i=0 t0 255

Si=i;

Ki=K[i mod n];

end for

k=0,

for i=0 t0 255

j=(j+Si+Ki) mod 256;

swap( Si,Sj);

end for

end

另一个是PRGA,它利用这个序列来产生一个伪随机序列作为最后的输出。

procedure RC4-StreamGeneration

begin

i=0,

j=0;

while (true)

i= (i+1) mod 256,

j= (j+Si) mod 256;

swap( Si , Sj ).

t= (Si + Sj) mod 256;

K=St;

end loop

end

二、WEP数据加密

有线对等保密协议(wired equivalent privacy,WEP)是802. 11标准中用来保护无线传输过程中的链路级数据的协议,WEP依赖通信双方共享一个密钥k保护传输帧中的用户数据,如图1所示。

WLAN中基于WEP协议的RC4加密算法

数据文件加密过程分以下3个步骤,如图2所示。

WLAN中基于WEP协议的RC4加密算法

将2者级联得到明文数据P=<M,C(M)>;

(1)计算校验和:设消息为M,CRC校验和为C(M),

(2)数据加密:802. 11中选用RC4加密算法算法,设初始向量(Initialization Vector,以下简称IV)为v,共享密钥为k,则密钥序列为RC4(v,k),将其与明文相异或得密文C=P0RC4(v,k);

(3)数据传输:最后,将IV和密文通过广播链路进行传输。可用以下过程表示:

WLAN中基于WEP协议的RC4加密算法
解密过程即是加密的逆过程。首先,接收者用共享密钥和接收到的IV同样产生密钥序列RC4(v,k),与接收到的密文相异或(XoR),便可还原初始明文:

WLAN中基于WEP协议的RC4加密算法
接收者进行完整性校验。将P’分解成<M',C'>,重新计算校验和C(Nr),与接收到的C’比较,只有相等时才能被视为有效帧,从而保证了数据帧的完整性。

三、WEP中RC4加密算法存在的问题

WEP中RC4加密算法的输入密钥由2部分组成:24 bit IV和40 bit的密钥。24 bit的IV空间太小,很容易造成IV重复使用,从而受到外界攻击。2001年Flubrer、Mantin和Shamir发表了论文《RC4密钥算法的缺陷》,提出了2种攻击RC4加密算法的方法,即不变性缺陷攻击和IV缺陷攻击,合称FMS攻击方法。

四、RC4加密算法的改进

为避免不变性缺陷攻击,应抛弃最初的若干个伪随机密钥序列字节,而为避免Ⅳ缺陷攻击,应将IV和密钥通过某种Hash函数后再输入RC4。于是,一种向后兼容WEP的升级算法临时密钥完整性协议temporal keyintegrity protocol,TKIP)应运而生,如图3所示。

WLAN中基于WEP协议的RC4加密算法

从图3可以看到TKIP相对于WEP最大的改变在于采用了临时密钥哈西( tempora/ key Hash)的方法。其中128位临时密钥( temporal key,TK)是通信双方共享的密钥,TA是发送方的MAC地址,经过Phase 1后产生128位的TTAK密钥。TKIP序列计数器是16 bit的,它的一部分作用相当于lV,每加密一帧后自动递增。经Phase 2将TTAK和TKIP计数器混合后,产生各帧不同的RC4输入密钥。建议在建立连接时采用802. IX认证协议,由802. 1X每次分配不同的用户不同的TK。这样,TK、TA、TKIP序列计数器经两级混合函数后将得到每一个用户、每一个连接、每一个方向、每一个数据帧均不同的RC4密钥,极大地增强了安全性。同时,若TKIP序列计数器的计数值达到最大,TKIP将强制密钥更新,以获得新的TK,从而防止了一个密钥使用时间过长导致的安全性降低。

TKIP序列计数器还有一个作用是作为重放计数器,将该计数器值封装在WEP IV域内,从而实现对WEP的后向兼容。

TKIP的另一个较大改进在于采用了带密钥的消息完整性校验算法(Message Integrity Checkout,以下简称MIc),目前在TKIP中拟采用的MIC是Michael加密算法。经分析,64bit输出的Michael加密算法的强度至少为20bit,虽然此强度不是很高,但由于反制措施的使用以及传输时对MIC码加密.TKIP的Michael的使用仍然安全。

为了进一步提高安全性,rvnc的密钥是与RC4加密算法的密钥相互独立的,且在收发两个方向上均不相同。同时,MIC的输入不仅包括MSDU数据,还包括原地址SA和目的地址DA,这样就有效地避免了针对以明文形式传输的SA、DA的篡改攻击。

小知识之流密码

流密码也称为序列密码(Stream Cipher),它是对称加密算法的一种。序列密码具有实现简单、便于硬件实施、加解密处理速度快、没有或只有有限的错误传播等特点,因此在实际应用中,特别是专用或机密机构中保持着优势,典型的应用领域包括无线通信、外交通信。