VPN的加密算法
摘要:VPN技术是近年来用于解决网络安全问题的新技术之一,数据加密是VPN实现的基础。本章从密码学角度出发,介绍了实现VPN所使用的各种加密算法。为了确保VPN的安全性,选择高效的AES加密算法应用于IPSec。
关键词:虚拟专用网 加密算法 AES
一、VPN技术
VPN――虚拟专用网(Virtual Private Network)是专用网络在公共网络如Internet上的扩展。VPN通过私有隧道技术在公共网络上仿真一条点到点的专线从而达到安全的数据传输目的。如果要仿真一条专线,为保证传输数据的安全通常还要对数据进行加密处理。在局域网之间进行信息传输时,VPN网关的加密功能能够保证信息在不安全的网络上传输时采用密文形式。这样,即使信息被截取,它的内容也无法被偷窥和篡改。保证通过互联网连接的各个局域网间的信息传输是安全的、机密的。
二、加密算法
加密就是对信息重新进行编码,隐藏信息内容,使非法用户无法获得信息的真实内容。信息被称为明文。隐藏信息的过程称为加密。加密后出现的信息称为密文。由密文恢复原文的过程称为解密。密码算法就是用于加密和解密的数学函数。
1.CBC算法。
CBC(Cipher Block Chain)模式即密码分组链接模式,是很好的加解密模式。每一分组被用来修改下一分组的加密。加密公式为:Ci=Ek(Mi⊙Ci-1);解密公式为:Mi=Ci-1⊙Dk(Ci),其中,Ek(x)是用密钥k对明文加密,Dk(x)是用密钥k对密文解密。
为了避免两个完全相同的明文被加密成完全相同的密文,用一个随机数据作为第一个分组,即初始向量IV(Initialization Vector),其大小与分组块一致。IV只是参与消息加解密的一个“填充物”,没有实际意义,可以与密文一起传送,不必另行加密。由于一个明文消息不可能总是恰好分成64位分组,最后一个分组经常会不足64位,而CBC要求对相同大小的分组进行加密。因此,需要对最后的分组进行填充(Padding),使其成为一个完整的64位分组,然后进行处理。
2.DES(Data Encryption Standard)算法。
DES(数据加密标准)采用传统加密方法的区组密码。在相信复杂函数可以通过简单函数迭代若干次得到的原则下,用8个S盒和P-置换,经过16次迭代产生64位密文。每次迭代使用的48位子密钥由原来的56位产生。明文被分成64位的块,然后用密钥把每一块明文转化成64位的密文。
旧版数据加密标准DES自20世纪70年代采用以来,一直算是不错的数据加密算法。Windows2000自带的VPN系统支持DES,不过由于使用的密钥相对较小(56位),由于在现有的技术条件下用穷举法寻找正确密钥已趋于可行,已有被攻破的纪录,所以若要安全保护10年以上的数据最好不用DES算法。为克服这个缺陷,IPSec VPN用三重DES算法来增强DES安全性。用三把不同密钥对数据连续加密3次,构成3DES。它等价于把DES的钥匙长度增加到112位。钥匙长度每增加1位,钥匙总数就会翻一番,能有效地防止对密钥的穷尽搜索。但是,3DES加密解密的运算量也会是DES的3倍。对一小段数据输出前进行三重加
密需要优良的CPU,消耗资源大。
3.AES算法。
近年来,高级数据加密标准AES出现,这是一种安全强度更高、更适合软硬件实现的高效加密标准。AES标准的实现是Rijndael算法。
Rijndael算法是一种迭代分组密码,即代替――置换网络(SPN)。它是以字节定义的,使用有限域GF(28)。如果一个字节a由a7a6a5a4a3a2a1a0组成,则用系数在{0,1}中的多项式表示为a7x7+a6x6+a5x5+a4x4+a3x3+a2x2+a1x+a0。两个字节的和或差是一个多项式,其系数是相应系数的模2加(异或运算),乘法与模2元域上的不可约多项式
m(x)=x8+x4+x3+x+1的多项式乘法一致。在这个域上的模m(x)多项式相乘运算举例:[(x4+x2+1)⊙
(x3+x)]modm(x)=[(x7+x5+x3)+(x5+x3+x)]modm(x)=(x7+x)modm(x)=x7+x。
由于外部输入的密码密钥长度有限,所以要用一个密钥扩展程序把密码密钥扩充成更长的比特串,以生成各轮的轮回密钥。设NK为密钥中4字节(32位)字的个数,则128、192、256位密钥长度的NK值分别为4、6、8,密码密钥按如下程序(C++伪代码)扩充成扩展密钥。
其中,Nb=数据块长度/32,Nr为轮回次数,W[]是4字节的数组,Rot()把一个四字节的字节循环左移,例如:[a0,a1,a2,a3]变为[a1,a2,a3,a0],Sub()对一个四字节的字节进行S盒变换,Rcon()是轮回常数,其值为[xi-1],即x0为{01},x1为{02},x2为{04},x3为{08}……
轮回密钥从这个扩展密钥里得到。对于不同的密钥长度和数据块长度,其轮回次数不一
样。例如:对于128位密钥,需要轮回次数为10;对于192位密钥,需要轮回次数为12;对于256位密钥,需要轮回次数为14等等。
从以上分析可以看出,Rijndael的高效算法有很多优点。AES内部有简洁精确的数学算法,而加密数据只需一次通过。DES算法存在弱密钥和半弱密钥会降低算法的安全性。而Rijndael加密算法对密钥扩展,所产生的轮回密钥随机性很强,对初始密钥的选取没有专门的限制,因此不存在弱密钥和半弱密钥的问题。
差分分析和线性分析方法都是针对Feistel结构设计的密钥分析方法。16次迭代的DES算法就是这样被破译的。AES的Rijndael算法在每轮的转换中并不具有Feistel结构,它的3个独特的可逆均衡转换可以将中间状态的每一位按照同样方式处理,进而避免了Feistel结构产生的加密信息不均匀的问题。7次轮回以上的Rijndael算法对于针对Square算法提出的攻击方法是免疫的。
三、结论
通过对以上各种加密算法的比较,可以看出不同的算法不仅在安全性能上有重大差别,在使用性能和资源有效利用上也有很大差别。高效的AES具有其它算法无法能及的优越性,例如原来3DES中密钥大小是64bits,在AES中改为128bits。所以在实现IPSec VPN的过程中更倾向于采用AES的模式。
参考文献:
1.何宝宏.IP虚拟专用网技术.北京:人民邮电出版社,2002,15~17.
2.戴宗坤,唐三平.VPN与网络安全.电子工业出版社,2002,10~12.
3.唐琰琰.AES的快速实现及其安全性分析.广州大学硕士学位论文,2006,7~13.
4.张清华.Rijindael算法的高效实现及其性能分析.计算机应用,2004,(2).
5.黄智颖,张焕国.高级加密标准AES及实现技巧.计算机工程与应用,2002,(9).
因篇幅问题不能全部显示,请点此查看更多更全内容