WLAN中基于WEP協(xié)議的RC4加密算法

隨著WLAN技術(shù)的迅猛發(fā)展,無線安全正在受到普遍的關(guān)注。目前主流的WLAN標(biāo)準(zhǔn)IEEE802. 11采用的是以RC4加密算法為核心的WEP加密技術(shù)。RC4是一種被廣泛應(yīng)用的高速輸出反饋序列加密算法,由密鑰時(shí)序子算法(key scheduling algorithm,KSA)和偽隨機(jī)序列生成子算法(pseudo random generation algorithm,PRGA)兩部分組成。但由于RG4加密技術(shù)本身存在很多缺陷和不足,需要對其進(jìn)行改進(jìn)。

一、RC4加密算法

RC4加密算法是一種被廣泛應(yīng)用的流密碼產(chǎn)生算法。它包含了不為外部所知的巨大內(nèi)部狀態(tài)數(shù)。這些狀態(tài)數(shù)是一個(gè)nbit二進(jìn)制數(shù)的排列數(shù),另外還受2個(gè)指示數(shù)i,j的影響。狀態(tài)數(shù)目為2n!×(2n)2。例如,對于具體應(yīng)用中n-8的情況,RC4的狀態(tài)數(shù)為log2 (2n!×(nn)2)≈1700 bit。

RC4加密算法包括2部分,一個(gè)是KSA,它把密鑰(通常是40~256 bit)變成一個(gè)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

另一個(gè)是PRGA,它利用這個(gè)序列來產(chǎn)生一個(gè)偽隨機(jī)序列作為最后的輸出。

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數(shù)據(jù)加密

有線對等保密協(xié)議(wired equivalent privacy,WEP)是802. 11標(biāo)準(zhǔn)中用來保護(hù)無線傳輸過程中的鏈路級數(shù)據(jù)的協(xié)議,WEP依賴通信雙方共享一個(gè)密鑰k保護(hù)傳輸幀中的用戶數(shù)據(jù),如圖1所示。

WLAN中基于WEP協(xié)議的RC4加密算法

數(shù)據(jù)文件加密過程分以下3個(gè)步驟,如圖2所示。

WLAN中基于WEP協(xié)議的RC4加密算法

將2者級聯(lián)得到明文數(shù)據(jù)P=<M,C(M)>;

(1)計(jì)算校驗(yàn)和:設(shè)消息為M,CRC校驗(yàn)和為C(M),

(2)數(shù)據(jù)加密:802. 11中選用RC4加密算法算法,設(shè)初始向量(Initialization Vector,以下簡稱IV)為v,共享密鑰為k,則密鑰序列為RC4(v,k),將其與明文相異或得密文C=P0RC4(v,k);

(3)數(shù)據(jù)傳輸:最后,將IV和密文通過廣播鏈路進(jìn)行傳輸??捎靡韵逻^程表示:

WLAN中基于WEP協(xié)議的RC4加密算法
解密過程即是加密的逆過程。首先,接收者用共享密鑰和接收到的IV同樣產(chǎn)生密鑰序列RC4(v,k),與接收到的密文相異或(XoR),便可還原初始明文:

WLAN中基于WEP協(xié)議的RC4加密算法
接收者進(jìn)行完整性校驗(yàn)。將P’分解成<M',C'>,重新計(jì)算校驗(yàn)和C(Nr),與接收到的C’比較,只有相等時(shí)才能被視為有效幀,從而保證了數(shù)據(jù)幀的完整性。

三、WEP中RC4加密算法存在的問題

WEP中RC4加密算法的輸入密鑰由2部分組成:24 bit IV和40 bit的密鑰。24 bit的IV空間太小,很容易造成IV重復(fù)使用,從而受到外界攻擊。2001年Flubrer、Mantin和Shamir發(fā)表了論文《RC4密鑰算法的缺陷》,提出了2種攻擊RC4加密算法的方法,即不變性缺陷攻擊和IV缺陷攻擊,合稱FMS攻擊方法。

四、RC4加密算法的改進(jìn)

為避免不變性缺陷攻擊,應(yīng)拋棄最初的若干個(gè)偽隨機(jī)密鑰序列字節(jié),而為避免Ⅳ缺陷攻擊,應(yīng)將IV和密鑰通過某種Hash函數(shù)后再輸入RC4。于是,一種向后兼容WEP的升級算法臨時(shí)密鑰完整性協(xié)議temporal keyintegrity protocol,TKIP)應(yīng)運(yùn)而生,如圖3所示。

WLAN中基于WEP協(xié)議的RC4加密算法

從圖3可以看到TKIP相對于WEP最大的改變在于采用了臨時(shí)密鑰哈西( tempora/ key Hash)的方法。其中128位臨時(shí)密鑰( temporal key,TK)是通信雙方共享的密鑰,TA是發(fā)送方的MAC地址,經(jīng)過Phase 1后產(chǎn)生128位的TTAK密鑰。TKIP序列計(jì)數(shù)器是16 bit的,它的一部分作用相當(dāng)于lV,每加密一幀后自動遞增。經(jīng)Phase 2將TTAK和TKIP計(jì)數(shù)器混合后,產(chǎn)生各幀不同的RC4輸入密鑰。建議在建立連接時(shí)采用802. IX認(rèn)證協(xié)議,由802. 1X每次分配不同的用戶不同的TK。這樣,TK、TA、TKIP序列計(jì)數(shù)器經(jīng)兩級混合函數(shù)后將得到每一個(gè)用戶、每一個(gè)連接、每一個(gè)方向、每一個(gè)數(shù)據(jù)幀均不同的RC4密鑰,極大地增強(qiáng)了安全性。同時(shí),若TKIP序列計(jì)數(shù)器的計(jì)數(shù)值達(dá)到最大,TKIP將強(qiáng)制密鑰更新,以獲得新的TK,從而防止了一個(gè)密鑰使用時(shí)間過長導(dǎo)致的安全性降低。

TKIP序列計(jì)數(shù)器還有一個(gè)作用是作為重放計(jì)數(shù)器,將該計(jì)數(shù)器值封裝在WEP IV域內(nèi),從而實(shí)現(xiàn)對WEP的后向兼容。

TKIP的另一個(gè)較大改進(jìn)在于采用了帶密鑰的消息完整性校驗(yàn)算法(Message Integrity Checkout,以下簡稱MIc),目前在TKIP中擬采用的MIC是Michael加密算法。經(jīng)分析,64bit輸出的Michael加密算法的強(qiáng)度至少為20bit,雖然此強(qiáng)度不是很高,但由于反制措施的使用以及傳輸時(shí)對MIC碼加密.TKIP的Michael的使用仍然安全。

為了進(jìn)一步提高安全性,rvnc的密鑰是與RC4加密算法的密鑰相互獨(dú)立的,且在收發(fā)兩個(gè)方向上均不相同。同時(shí),MIC的輸入不僅包括MSDU數(shù)據(jù),還包括原地址SA和目的地址DA,這樣就有效地避免了針對以明文形式傳輸?shù)腟A、DA的篡改攻擊。

小知識之流密碼

流密碼也稱為序列密碼(Stream Cipher),它是對稱加密算法的一種。序列密碼具有實(shí)現(xiàn)簡單、便于硬件實(shí)施、加解密處理速度快、沒有或只有有限的錯誤傳播等特點(diǎn),因此在實(shí)際應(yīng)用中,特別是專用或機(jī)密機(jī)構(gòu)中保持著優(yōu)勢,典型的應(yīng)用領(lǐng)域包括無線通信、外交通信。