RC4属于对称加密算法,双方采用相同的密钥,加解密算法简单,但不便于密钥管理。为减少密钥协商次数,且使每个数据包加解密使用不同的密钥,在密钥协商结束后,WEP和TKIP都使用变化的IV向量来改变RC4的初始密钥,这就是我们今天要介绍的基于混沌的RC4加密算法。

基于混沌的RC4加密算法的工作原理

采用Logistic作为RC4的种子密钥发生器,随机生成序列密钥,增加密钥的随机性,且在加密的过程中,多个参数的不同取值使得在不需要设置IV向量的情况下,可达到不断改变RC4初始密钥的目的。

基于混沌的RC4加密算法的具体运行过程

基于混沌的RC4加密算法的具体运行过程如图所示,主要分为3个阶段:密钥协商,Logistic产生种子密钥及数据加解密。

一、密钥协商 

密钥协商过程采用IEEE802.11i的四次握手结构,实现动态密钥协商,整个密钥协商过程在STA与AP之间进行。

在握手过程中,共享密钥TKP并未在双方之间传输,所以密钥的安全性在双方之问得到了很好的保障。AP与STA四次握手成功后,双方载入由PMK生产单播密钥PTK:

PTK={EK,CK,TK}

其中,TK为双方共享的数据加密密钥。我们今天介绍的基于Logistic混沌映射的RC4加密算法,就是将混沌映射的初始值、控制参数及取值的起始位置作为双方共享的加解密密钥进行协商,即:TK={X0,_μ ,stat}

其中,X0为迭代初始值;_μ为控制参数;stat为RC4种子密钥取值的起始位置。

二、Logistic产生RC4的种子密钥

双方载入共享密钥TK后,利用{X0, μ}进行Logistic迭代,产生一个随机数序列:X={X0,X1...},若系统处于混沌状态,则可以构建一个真随机数序列,而该随机序列又是由X0,_μ_唯一确定的。由于Logistic产生的值都落在(0,1)范围内,为转化成RC4加密算法中初始置换S={0,1...N一1,N(=2N)的种子密钥,需对产生的随机序列X进行如下运算,使取值在[0,255]之间:

Y=mod(round(1000xx),255)

通过实验验证,当初始值X0相差10-16时,产生的2个随机序列经过60次左右的迭代出现了明显的差异,形成2个完全不相同的随机序列,因此,在选取RC4种子密钥key时,应从60次迭以后代开始取值。

当传输的数据量非常大时,为使每个数据包使用不同的密钥加密,利用混沌系统对初始值的敏感性,在每次生成RC4种子密钥的过程中,将Logistic的初始值以10-16进行递增。

三、数据加密与解密

在发送端A处,Logistic产生随机序列,并截取128bit的种子密钥key后,利用RC4加密算法对key进行新的一轮运算,产生最终用于数据加密的密钥流K(n)={k1,k2...}。RC4属于一种流加密算法,对明文文件加密时,需将明文转化成连续的符号或比特流P(n)={P1,P2....},加密时用密钥流K(n)的第n个元素Kn与Pn进行异或运算,即:

E(n)=P(n)⊕K(n)

其中,K(n)为RC4产生的密钥流;P(n)为明文。加密结束后,E(n)通过信道发送给接收端B。

在接收端,需对接收到的密文E(n)进行解密,RC4属于一种对称加密算法,加解密需使用相同的密钥流K(n),可利用双方共享的密钥TK,通过Logistic混沌映射恢复RC4的种子密钥key,进而通过RC4加密算法产生相同的密钥流K’(n),将密文的第N个元素E(n)与K’(n)异或即可恢复出明文,即:

D(n)=E(n)⊕K’(n)

其中,K’(n)为通过共享密钥恢复的RC4密钥流;E(n)为密文;D(n)为解密恢复的明文。

小知识之RC4加密算法

RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节。该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性。