摘 要:對于目前局域網中短消息加密算法的安全性漏洞,采用一種經典的加密算法,即Playfair加密法與RC4相結合的算法,為無線局域網絡中短消息的傳遞提供了一種可靠的加密方法。運用該復合的加密算法可以有效地避免RC4密鑰的靜態安全性問題,還能避免密鑰被竊取而導致的加密算法被破解。
關鍵詞:Playfair加密法;RC4;無線網絡;短消息
中圖分類號:TP311文獻標識碼:A
文章編號:1004-373X(2010)04-119-03
A Wireless LAN Encryption Algorithm for Short Message Transmission
WANG Lei,FAN Huimin
(Computer Science Engineering College,Xi′an Technological University,Xi′an,710032,China)
Abstract:Facing the current short message LAN encryption algorithm security vulnerabilities.Using a combined algorithm which combine Playfair with RC4,a reliable method of encryption is provided for short message transmission in wireless LAN.The use of this complex encryption algorithm can effectively avoid the static RC4 key security issue to prevent the encryption algorithm is cracked by theft of keys.
Keywords:Playfair encryption algorithm;RC4;wireless network;short message
0 引 言
隨著科學技術的不斷發展,無線網絡在人們生活中扮演著越來越重要的角色。很多的公司、企業已經或者正在改變原有的有線網絡,采用更為節省空間,且不受“線”制的無線網絡。隨著越來越多的企業部署無線網絡,人們對增強無線網絡安全的需要變得日益迫切。目前,無線網絡中已經存在好幾種加密技術,最常使用的是WEP和WPA兩種加密方式。
無線局域網的第一個安全協議802.11 Wired Equivalent Privacy(WEP) [1-3],一直受到人們的質疑。雖然WEP可以阻止窺探者進入無線網絡,但是人們還是有理由懷疑其安全性,因為WEP破解起來非常容易,就像一把鎖在門上的塑料鎖。WEP特性中使用了RSA數據安全性公司開發的RC4算法。有線對等保密(Wired Equivalent Privacy,WEP)是一種數據加密算法,用于提供等同于有線局域網的保護能力。使用了該技術的無線局域網,所有客戶端與無線接入點的數據都會以一個共享的密鑰進行加密,密鑰的長度有40位和256位兩種。但是,由于密鑰是靜態生成的,所以一旦密鑰被黑客獲取,明文就很容易被破譯出來,從而對無線網絡的傳輸構成威脅。
WPA[4](Wi-Fi Protected Access)的加密特性決定了它比WEP更難以入侵。 WPA作為IEEE 802.11通用加密機制WEP的升級版,在安全防護上比WEP更為周密。這主要體現在身份認證、加密機制和數據包檢查等方面,而且它還提升了無線網絡的管理能力。WPA采用有效的密鑰分發機制,可以跨越不同廠商的無線網卡而實現應用。WPA的另一個優勢是,它使公共場所和學術環境安全地部署無線網絡成為可能。
雖然WPA比WEP在安全性方面有了很大的提高,但是在2008年東京PacSec大會上,還是被證明對于短消息的加密方面存在漏洞。因此,在實施新的更安全的加密算法之前,有必要對現有的加密模式進行改進。
這里采用一種經典的加密算法,即Playfair加密法與RC4相結合的加密方法,對短消息傳輸實施加密。
1 加密原理
1.1 Playfair[5]加密原理
該加密算法是基于一個關鍵詞的,該關鍵詞填寫在一個5×5的正方形中(去除重復字母與字母j),字母表中的其他字母按順序填寫在其他空位(如非英文,可以另行編碼)。通過在正方形中查找明文對,并根據以下三個規則之一選取密文,從而將明文字母對轉化成密文[6,7]。例如:
(1)兩個明文字符出現在正方形的同一行時,選用右邊的字符作為密文;
(2)兩個明文字符出現在正方形的同一列時,選用下邊的字符作為密文;
(3)兩個明文字符出現在不同的行和列時,它們就會構成矩形的兩個頂點,選用矩形的另外兩個頂點作為密文。
在應用這些規則之前,先要將明文進行一些處理。首先,在相鄰的重復字母之間補一個等效字母(一般為‘x’或‘q’);其次,要讓明文字母的個數為偶數,如不足,可以在末尾補一個等效的字母。最后,把明文中的字母j換成字母i(因為字母‘j’在英文中出現的概率很低,替換后不影響閱讀)。例如:關鍵詞為“world”,那么就構成如下正方形:
w o r l d
a b c e f
g h i k m
n p q s t
u v x y z
如果明文是“hello,how are you”,處理之后為“helqlo,how are youq”,對應的密文為“kbrsdrpbaglcvlxn”(標點符號被忽略)。
通過這種方式,可以很容易地把明文變成密文,在接收方,同樣可以通過使用字母表還原出明文。這種方法需要發送方先將關鍵詞傳給接收方,如果關鍵詞被獲取,那么加密算法將很容易被攻破。為了安全,可以采用動態關鍵詞加密,關鍵詞的生成是動態的,這樣每次加密使用的關鍵詞都不同,可以提高傳輸的安全性。
1.2 RC4原理與技術
RC4[8]加密算法是Ron Rivest在1987年設計的密鑰長度可變的流加密算法簇。之所以稱其為簇,是由于它的核心部分S-box長度可為任意,但一般為256 B。
RC4算法的原理包括初始化算法(KSA)和偽隨機子密碼生成算法(PRGA)兩大部分。假設S-box長度和密鑰長度均為n,則KSA初始化序列s[i]=i(i=0~n),通過選取一列數字,加載到密鑰數組k[0]~k[n]。算法的初始化部分(用偽代碼表示)為:
for (i=0;i s[i]=i; j=0; for (i=0;i { j=(j+s[i]+k[i])mod 256; swap(s[i],s[j]);//交換位置 } 在初始化的過程中,密鑰的主要功能是將S-box攪亂,i確保S-box的每個元素都能得到處理,j保證S-box的攪亂是隨機的。不同的S-box在經過偽隨機子密碼生成算法的處理后可以得到不同的子密鑰序列,并且,該序列是隨機的: i=j=0; while (明文未結束) { i=(i+1)mod n; j=(j+s[i])mod n; swap(s[i],s[j]); k=s((s[i]+s[j])mod n); } 得到的子密碼k用以和明文進行異或(xor)運算,得到密文,解密過程也完全相同。 由于RC4算法的加密采用是xor運算,所以,一旦子密鑰序列出現了重復,密文就有可能被破解。這就需要用一種方法來彌補這種漏洞。 1.3 加密技術結合 要保證RC4加密算法的安全性,密鑰必須是動態的,且不容易被攻擊者發現。所以,對于RC4的密鑰,在此采用動態生成RC4密鑰的方法,并且用Playfair加密法對密鑰進行加密,這樣每次進行短消息傳輸時采用的RC4密鑰都不同,可以保證消息傳遞的安全性。由于兩種加密算法,在計算機中很容易實現,并且效率極高,加密的所用時間都小于10 ms級,所以對于消息的傳遞基本上不會有影響。 2 加密方法 2.1 加密RC4密鑰 前面敘述的選取一列數字來填滿密鑰數組k[],不用自己選取n個數,可以重復填充,直到把數組填滿。例如:n=8;選1,2,3來填充,數組k[],可以是{1,2,3,1,2,3,1,2},而{1,2,3}就是密鑰。對密鑰的加密可以采用Playfair加密法。RC4的密鑰數組最長為256,所以先建立一個16×16的正方形,用密鑰先填充這個正方形,然后再用剩下的數字填滿。假如Playfair的關鍵詞是15 16 17 18 19 20,那么正方形如下所示: 15161718192001020304050607080910 11121314212223242526272829303132 33343536373839404142434445464748 49505152535455565758596061626364 65666768697071727374757677787980 81828384858687888990919293949596 979899100101102103104105106107108109110111112 113114115116117118119120121122123124125126127128 129130131132133134135136137138139140141142143144 145146147148149150151152153154155156157158159160 161162163164165166167168169170171172173174175176 177178179180181182183184185186187188189190191192 193194195196197198199200201202203204205206207208 209210211212213214215216217218219220221222223224 225226227228229230231232233234235236237238239240 241242243244245246247248249250251252253254255256 如此便可以根據Playfair加密法對RC4的密鑰進行加密,并且可以動態地產生密鑰,然后把它發送給接收端。當然還要處理密鑰個數是奇數的情況,當密鑰個數是奇數時,可以在其后補一個任意的數,前提是接收方亦知道這個數和密鑰長度。 2.2 RC4加密法加密明文 前面已經介紹了RC4的加密方法,圖1為加密的流程圖。 圖1 加密流程圖 解密過程跟加密過程類似,可以重復加密過程,例如: RC4(RC4(\"Welcome to this world!\",key),key) 輸出結果:“Welcome to this world!”跟明文一致。 2.3 消息傳遞機制 (1) 發送方與接收方訂立Playfair關鍵詞,構建Playfair加密表。這個過程可以通過無線傳輸,也可以當面溝通。當然,當面溝通更加安全,因為這個關鍵詞是靜態的,可能會用很長時間,也是最脆弱的一環。 (2) 發送方動態生成RC4密鑰,加密明文。密鑰的動態生成有很多方法,可以用如下方法: Random n=new Random(); for(int i=0;i<16;i++){ key=key+\" \"+Integer.toString(n.nextInt (256)); } 一次通信中的key可以改變也可以不改變。因為是短消息,即使不改變密鑰,攻擊者也不能收集到足夠的數據包破解(通常要收集的數據包要達到10 000左右)。如果不改變密鑰,就得在第一次時給接收方發送密鑰,并在結束時結接收方發送結束信號。 (3) 接收方在受到發送方被加密過的密鑰以后,通過Playfair加密表來還原密鑰,并用這個密鑰來解密發送過來的密文。 3 結 語 通過這種方式加密的短消息,可以動態地加密RC4的密鑰,每次消息的傳遞,生成的加密后的RC4密鑰都不同,可以有效地提高RC4密鑰的安全性。在此方法中,最關鍵的要保證Playfair加密法的關鍵詞安全,如果關鍵詞一旦被泄露,那么整個加密方法也就不再安全。如果想再提高安全性,也可以動態生成關鍵詞,這就要求發送方和接收方進一步進行諧調。 參考文獻 [1]魏彩霞.無線局網系統安全技術研究與應用[D].上海:復旦大學,2009. [2]吳振強.無線局域網安全體系結構及關鍵技術[D].西安:西安電子科技大學,2007. [3]劉小花,張鳳.無線局域網安全技術分析[J].廣西通信技術,2004(2):24-27. [4]馬逵.無線局域網安全認證的關鍵技術[D].南京:東南大學,2004. [5]Richard Spillman.經典密碼學與現代密碼學[M].葉阮健,曹英,張長富,譯.北京:清華大學出版社,2005. [6]David Kahn With.The CodeBreakers[Z].New American Library,2005. [7]段鋼.加密與解密[M].2版.北京:電子工業出版社,2003. [8]沈靜.RC4算法及其安全性分析[D].廣州:廣州大學,2007. [9]金心穎.淺析無線局域網安全技術[J].哈爾濱學院學報,2004(7):136-138. [10]何禮.無線局域網及其安全機制[J].四川通信技術,2000,30(5):10-14.