一种无线局域网传输短消息的加密算法
摘 要:对于目前局域网中短消息加密算法的安全性漏洞,采用一种经典的加密算法,即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.