1。3 课题目的
本课题目的是在研究互联网通信过程以及多种加密算法优缺点的基础上,设计并且实现一个Windows平台上,采用C/S模式,基于OpenSSL的安全传输工具。该工具应当可以利用OpenSSL提供的各种加密算法对将要传输的数据进行混合加密,并能使用OpenSSL自建证书的功能来完成身份验证,同时还要兼顾互联网通信的高速、廉价、便利的优势,以实现传输数据的安全性、完整性及防止通信过程中可能出现的冒充和抵赖现象。
2 相关技术
2。1 OpenSSL密码库
OpenSSL是一个安全套接字层密码库,它的功能十分强大。现代密码学中主要的密码算法、SSL协议、常用的密钥和证书封装管理功能都在其中,更为重要的是,它为用户提供了极其丰富的应用程序,这大大方便了我们对它进行研究和学习。OpenSSL密码库主要组成部分有三个:SSL协议库、应用程序以及密码算法库[1]。下面介绍本程序中主要使用的OpenSSL库中的相关加密算法。
2。1。1 高级加密标准AES
AES全称是Advanced Encryption Standard,即高级加密标准。它的基础是现代密码学中的Rijndael加密算法,是当下采用最多的一种区块加密标准。2001年11月26日,AES由美国国家标准与技术研究院(NIST)发布于FIPS PUB 197。就在不久之后的2002年5月26日,AES被认可成为了一个有效的标准[2]。这个标准已经替代了旧的DES,被多方研究分析且为全世界的网络安全工作者广泛使用。
近年来,不断有计算机研究人员提出了破解AES的算法,虽然以目前的技术,破解所花费的时间要以数十亿年计算,但强有力地证明了AES并不是绝对安全的。也许在不久的将来,AES就会像它的前辈DES一样被新的加密标准替代。
2。1。2 RSA公钥加密算法
RSA公钥加密算法的创建者是Ron Rivest、Adi Shamir和Leonard Adleman,经过不断地完善和拓展,当代最有影响力的公开密钥钥加密算法已经非它莫属。由于它能够安全防御到目前为止已知的绝大多数密码攻击,所以被ISO推荐为公开密钥数据加密标准[3]。
将两个质数相乘非常容易,但对它的乘积进行因式分解则会难得多。RSA算法正是基于数论中欧拉定理的大数因式分解,因此安全性非常高,目前只有长度很短的RSA密钥才能被暴力方式解破。如果想要破解更长的密钥,那么所要花的时间将会呈几何级增长。在RSA加密算法的标准模式下,到2008年为止,世界上还没有任何可行的攻击方式。因此,只要密钥的长度足够长,用RSA加密的信息就可以保证安全性。虽然在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战,但是考虑到破解的成本问题,本程序采用RSA公钥加密算法是完全可以接受这个风险的[4]。
尽管有着很高的安全性,RSA算法的速度却不容乐观,尤其在加密大文件时显得捉襟见肘。因此,RSA算法一般用来加密较短的消息。幸运的是,将RSA算法和AES算法结合使用就可以互相弥补缺陷了,所以,RSA算法一般用来加密AES中的对称密钥,或是作为数字签名,提供身份验证功能[5]。
2。1。3 MD5信息摘要算法
MD5的全称是Message-Digest Algorithm 5,于20世纪90年代初在MD2,MD3和MD4的基础上产生,它的主要作用是把大容量的信息“压缩”成一段定长的文本。不管是MD2、MD4还是MD5,它们都能从一个随机长度的信息中产生一个定长的信息摘要,如同文件的指纹,用以提供消息的完整性保护[6]。
MD5算法具有以下特点:
压缩性:任意长度的数据,使用MD5算法得出的结果长度都必然是一定的。