网络通信中主流加密算法比较研究
2016-02-05黄素萍弋改珍李延香
◆黄素萍 弋改珍 李延香
(咸阳师范学院 计算机学院 陕西 712000)
网络通信中主流加密算法比较研究
◆黄素萍 弋改珍 李延香
(咸阳师范学院 计算机学院 陕西 712000)
本文首先介绍了当前网络通信中主流加密算法的使用状况和研究成果,基于每种算法的原理,实现由Java语言编写的算法程序;并分别从各算法速度、CPU占用率和内存占用率三个方面对各算法的性能进行实验;最后通过分析实验数据进行比较,总结出每种算法的应用特点,为具体应用选择加密算法提供了有力的依据。
加密算法;算法性能;网络安全
0 引言
在互联网广泛应用的今天,网络通信中的安全保密问题一直是大家最为关注的问题之一。互联网是一个面向大众的开放环境,各种信息系统的建立和使用造成我们对计算机,尤其是对数据库和网络的依赖。由于数据库中存储的数据和网络上传输的数据都是具有一定价值的信息,在互联网的各个结点上有怀恶意企图的用户随时会发起对互联网的攻击,以达到窃取信息的目的。对这些信息的非法访问、窃取、篡改等行为必然导致计算机信息安全问题的出现,因此网络信息安全是大家最关注的问题之一。对于网络信息安全,最有效的手段就是信息加密技术。为了解决这些问题,数字签名、身份验证、数据加密技术应运而生,尤其是数据加密技术给计算机信息安全带来了生机。
基于网络安全问题以及数据的重要性,多数用户进行网络通信时需要选择应用一种或多种加密技术,为了保证安全而高效的加密数据通信,用户在选择时需要了解各种加密技术在不同应用中的特点。所以,很有必要对当前常用的加密技术的算法进行较深入的实验和性能分析。
1 加密算法概述
到目前为止,实现加密的算法约有200多种[1]。加密算法按照双方收发的密钥是否相同分为两大类:一类为对称加密算法(又称私钥加密算法),即加密密钥和解密密钥是相同的。常用的对称加密算法有DES和AES;另外一类是非对称加密算法(又称公钥加密算法),即加密密钥和解密密钥互不相同,而且要从加密密钥推导出解密密钥几乎是不可能的。影响力最大的非对称加密算法是RSA。
另外,还有一种用于特殊情景和范围的加密算法——Hash算法。通信双方通过hash算法将信息加密成固定长度的一段字符编码,但是却不能从这段编码中恢复出原来的信息。常见的Hash算法有MD5和SHA。
(1)DES算法
DES是对称密钥分组密码的一个典型代表,由IBM公司研制的[2]。它使用分组密码体制。在加密时,将加密数据按64位进行分组,使用64位的密钥分别加密每一个分组,获得一组64位密文数据,所有分组的密文连接起来,即为整个的密文。DES从公布起一直广泛用于国际上计算机通信以及商用保密通信等安全领域。
(2)AES算法
AES加密算法即高级加密标准,是一种对称加密算法。此算法是美国联邦政府采用的一种区块加密标准[2]。AES算法基于排列和置换运算。它的密钥长度可以是128位、192位 或者256位,并且按128位分组,并且进行分组迭代,在迭代加密的循环结构中重复替换和置换输入数据。AES加密算法在设计结构及密钥的长度上都已达到保护机密信息的标准。
(3)RSA算法
RSA加密算法属于公钥加密算法体制。它是1977年美国麻省理工学院研究开发。RSA算法原理是:将两个大素数相乘,但是想要对其乘积进行因式分解却很难办到,因此可以将乘积公开作为加密密钥。目前它是公钥加密算法中影响力最大的算法,它是ISO对外推荐的公钥数据加密算法的标准[3]。
(4)MD5算法
MD5算法是一个安全的散列算法,它把加密信息计算成为固定长度的字符编码,但是它是单向的,不能由密文得到明文。要解密MD5只能用穷举法[4]。
2 比较加密算法的性能
2.1 实验方法
基于每种算法的原理,首先实现了由Java语言编写的RSA算法、DES算法、MD5算法、AES算法的程序,并对各算法在算法速度、CPU占用率、内存占用率三方面进行实验。所有实验都是在Win7旗舰版系统环境下进行。在测试算法速度时,通过反复多次算法程序运行,记录程序执行时间的平均值来比较各算法的运行速度。测试CPU占用率和内存占用率用的是在多次运行各算法程序时使用Windows系统性能监视程序获得占用情况的数据。
2.2 实验结果
(1)在进行算法速度实验中,让各算法程序对加密100字以内的西文字符串,100字以内的中文字符串和10字以内的短字符串,分别进行50次的运行,各算法程序的运行平均时间分别如表1,表2和表3所示:
表1 算法加解密西文字符耗时表
表2 算法加解密中文字符耗时表
表3 算法加解密短字符耗时表
通过算法速度测试的实验结果可以看到,分别用四种算法对100字以内的西文字符串和中文字符串,以及10字以内的短字符串进行加解密,各种算法的速度存在较大的差异,对于加密速度,MD5的速度最快,AES比DES稍快些,RSA的速度最慢;对于解密,MD5没有固定的解密算法,AES比DES稍快,RSA的解密速度最慢。
(2)实验采用perfmon.exe工具测试各算法程序的CPU占用率。四种算法的CPU占用率如表4所示:
表4 算法运行时CPU占用率表
通过算法CPU占用率的实验结果可以看到,四种算法运行时CPU占用率从高到底依次为RSA、DES、AES、MD5。
(3)实验采用perfmon.exe工具测试各算法程序的内存占用率。依次运行RSA、DES、MD5、AES,在perfmon.exe程序中的Privileged Time插件窗口中可得到图1。图中的4个小曲线分别是RSA、DES、MD5、AES算法运行时的内存占用量的动态曲线,图中四种个算法运行时内存占用量差别较小,由曲线峰值由高到低依次为RSA、MD5、DES、AES。