在加密/解密过程中,根据密码算法所使用的加密密钥和解密密钥是否相同或者能否由加密密钥推导出解密密钥(或者由解密密钥推导出加密密钥),可将密码体制分为对称密码体制和非对称密码体制。非对称密码体制直到20世纪70年代才出现,在这之前一直使用的都是对称密码技术。
很快就会看到,对称密码体制和非对称密码体制各有长处和弱点。所有现代密码系统都是在努力做到适当的使用这两类密码以利用他们的长处,同时又避开它们各自的缺点。
(1)对称密码体制,对称密码体制又称为单密钥密码体制或者秘密密钥体制。如果一个密码体制的加密密钥和解密密钥相同,或者虽然不相同,但是由其中的任意一个很容易地就推导出另一个,则该密码体制便成为对称密码体制。为什么被称为对称的呢?就是因为同一个密钥即用于加密也用于解密,其典型代表是美国的数据加密标准DES。
(2)非对称密码算法,也叫公开密钥密码算法,简称公钥密码算法,该密码体制的加密/解密操作分别使用两个不同的密钥,并且不可能由加密密钥推导出解密密钥(或者不可能由解密密钥推导出加密密钥),公钥的含义是加密密钥公开,而解密密钥可有用户自己秘密保存,其典型代表是RSA算法。
2.2对称密码技术
对称密码技术就是传统的密码技术。在此种方式下,发送接收双方确定一个密钥,发送方利用这个密钥对消息进行加密,接收方也用这个密钥对消息进行解密。对称密码技术不仅可用于加解密服务,也用于鉴别服务。
在对称密码技术中,最为关键的问题是消息的接收双方就秘密密钥达成一致协议,确保没有其它人知道此密钥。这要求一种安全的通信方式。它通常比公钥密码体制在处理速度上要快得多。
对称密码技术的安全使用要满足两个必要要求:
(1)加密算法必须足够强,至少如果算法泄漏后,第三方不能破译密文或计算出密钥;
(2)发送接收双方都必须保证密钥的安全。
图2.2对称密码模型
加密算法根据输入信息X和密钥K生成密文Y,即。接收方得到密文Y后通过解密算法还原得知原始信息X。
著名的对称密码算法有:
(1)数据加密标准(Data Encryption Standard,简称DES),该标准于1977年由美国国家标准局颁布。DES主要采用64位的分组长度和56位的密钥长度,通过置换和移位的方法,完成加密/解密,DES是一种世界公认的好的加密算法,风行全球很多年,为全球贸易、金融等部门提供了可靠的安全保障。但它也有明显的缺点,密钥太短,只有56位。因此为了提高安全性,DES又有了新的发展。比如:高级加密标准(Advanced Encryption Standard,简称AES)和3DES。
(2)3DES。DES在穷举攻击下比较脆弱,采用了对DES多次加密的方法,且使用多个密钥。双密钥加密的方法,即使用两个56位的密钥k1和k2,发送方用kl加密,k2解密,再使用kl加密。接收方则使用k1解密,k2加密,再使用k1解密,其效果相当于将密钥的长度增加到112位。还有3DES的变形算法,使用三个独立密钥,相当于密钥长度增加到168位。3DES克服了DES穷举攻击所面临的问题,但它运算速度慢,分组长度只有64位,就效率和安全性而言,分组长度应更长。
(3)高级加密标准(Advanced Encryption Standard,简称AES),该标准于2001年由美国国家标准技术局发布。
AES是一个对称分组密码算法,用来取代DES。安全性能不低于3DES且执行性能好。密钥长度可支持128位、192位、256位,分组长度只能为128位。
2.3公钥密码体制
2.3.1公钥密码体制基本感念
为了解决密钥的管理问题。WhitfieId Diffie与Martin Hellman共同提出了公钥密码体制概念。非对称密钥加密也称为公开密钥加密,基本原理是使用两个不同的密钥:一个用来加密信息,作为加密密钥;另一个用来解密信息,作为解密密钥。加密密钥称为公开密钥,简称公钥。解密密钥称为私有密钥,简称私钥。公钥公布于众,私钥需秘密保存。公钥和密钥有一定的关联,但密钥不能通过某种演算从公钥推算出来。公钥密码体制的两大主要应用是加密及数据签名[13]。
著名的非对称密码算法有:RSA,Diffe-Hellman,椭圆曲线算法等。
图2.3 非对称密码模型
2.3.2 RSA算法
RSA算法是有美国三位科学家Ron Rivest,Adi Shamir和Len Adleman于1976年提出并于1978年正式发表的。该算法的名字来源于三个发明者的名字。它的第一个既能用于加密也能用于数字签名的算法。RSA算法易于理解,它的安全性依赖于大整数的因式分解。根据RSA算法的特性,寻找两个大素数比较简单,而将它们的乘积分解开则异常困难。通过对RSA的安全性分析:
(1) 密钥生成:根据需要选择两个大素数p和q,计算它们的乘积,保证n满足一定的长度,n成为模数;计算n的欧拉函数,,它表示不超过n并于n互素的正整数的个数;在区间 (0,)内,选择一个与互素的数e作为公开指数或加密指数;计算秘密指数(解密指数)d,满足1<d<,并且这样便得出公开密钥(加密密钥)PK={e,n}和秘密密钥SK={d,n},同时需要保密p、q和的值。
(2) 数据加密:假设需要加密的信息(明文)的二进制形式为m,首先把m分成等长的数据块m1,m2,m3,m4…mj,块长为s,其中,且s尽可能的大;对每一个数据块mi执行运算,把得到的数据块c1,c2,c3,c4,…cj拼接起来,即是密文c。
(3) 数据解密:解密的过程与加密的过程类似,首先把密文的二进制形式c分成等长的数据块c1,c2,c3,c4,…cj;对每一个数据块ci执行,把得到的数据块m1,m2,m3,m4…mj拼接起来,即是明文m。
(4) 算法的安全性:RSA算法的安全性依赖于大数的分解,但是否等同于大数分解一直得到理论上的证明,因为还没有证明破解RSA算法一定需要作大数分解。
2.3.3 Diffe-Hellman算法
Diffe-Hellman算法为密钥交换技术。算法为:
(1)设定素数q及其基本原根a是两个公开的素数;
(2)用户A选择一个随机整数,并计算;
(3)同理,用户B选择一个随机整数并计算。A和B保持其X是私有的,Y是公开可访问的。A用户计算。B用户计算。A用户的K和B用户的K相等,作为密钥。从而A用户和B用户完成了密钥的交换。
2.3.4 椭圆曲线算法
椭圆曲线算法实际上是一种非对称加密方法,它可以与Diffe-Hellman算法联合应用。椭圆曲线算法安全性的基础是在椭圆曲线点集上计算离散对数的困难性。椭圆曲线上的离散对数问题定义如下:给定定义在有限域K上的椭圆曲线E,一个n阶的点P和点Q,确定整数,使得Q=mP。椭圆曲线离散对数问题是比因子分解更难的问题。这一安全性基础的改变将导致更为复杂的实现和处理过程,但在保持安全性不变的情况下,所使用的密钥长度大为减小。椭圆曲线算法可以使用比RSA短得多的密钥得到相同的安全性,减少了运算处理负荷。但椭圆曲线算法刚刚起步,可信度没有RSA高。
2.3.5公钥密码体制的应用
公钥密码体制的主要特点是将加密和解密能力分开,因而可以实现多个用户加密的消息只能由一个用户解读,或只能由一个用户加密消息而使多个用户可以解读。前者可用于公共网络中实现保密通信,后者可用于认证系统中对消息进行数字签名。这正是公钥密码体制的两大应用[14]。公钥密码体制在加密方面的应用,目前较为普遍的是应用于密钥交换。由于在速度上,公钥密码体制无法与传统加密体制相比。例如,软件实现的DES算法的速度是软件实现的RSA算法的100倍,而用硬件实现的这两种算法速度差异更大。因此,在实际的系统应用中,应采用DES算法来对数据进行加密,而RSA仅用于加密DES的密钥,从而保证DES密钥在传输过程中的安全性。
随着计算机的网络化,信息认证理论有了很大的发展,为公钥密码体制提供了更大的用武之地。在大型网络安全系统中和各种电子商务[15]应用系统中,公钥密码体制在身份认证、数据完整性、匿名性、不可否认性等方面都扮演了极为重要的角色。实现认证的主要工具就是数字签名。
所谓数字签名[16][17][18],就是采用数字的方式,对通过网络传递的文件、消息进行签名,以达到认证、防止伪造等目的。利用公钥密码体制,消息发送者可以用自己的私钥进行数字签名,而消息接收者则用发送者的公钥验证其签名的真伪。目前已经有大量的数字签名方案被提出,如RSA方案、ElGamal方案、盲签名、群签名等等。一般地,公钥密码体制的应用可分为三类:
加密/解密:发送方用接收方的公钥对消息加密。
数字签名:发送方用其私钥对消息“签名”。签名可以通过对整条消息加密或者对消息的一个小的数据块加密来产生,其中该小数据块是整条消息的函数。
密钥交换:通信双方交换会话密钥。
网络信息加密软件的实现(四)由毕业论文网(www.huoyuandh.com)会员上传。