分享

密码学

 baijeg 2011-01-19

一. 密码学简介

据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密 码机,密码学在战争中起着非常重要的作用。

随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准 (DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了 AES、ECC等。我国也相应提出了自己国家的ECC、SCB2、SCH等加密算法。

 

使用密码学可以达到以下目的:

1.       保密性:防止用户的标识或数据被读取。

2.       数据完整性:防止数据被更改。

3.       身份验证:确保数据发自特定的一方。

 

二. 加密算法介绍

根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。

两者的区别在于:

对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的私密性。

非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。

 

2.1 对称加密算法

对称加密算法用来对敏感数据等信息进行加密,现在,通常使用分组密码(block cipher)或序列密码(stream cipher)实现对称密码,由于序列密码算法不常用,所以本文将只讨论分组密码,常用的分组密码算法包括:

1.       DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

2.       3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

3.       AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。

 

分组密钥常见术语

 

置换(Permutation)与替代(Substitution

置换与替代是对称密钥中常用的两种手段。置换是对数据重新进行排列,而替代是将一个数据单元替换为另一个。通常替代要借助非线性查找表来进行,即 DES和AES中所称的S-Box。

 

轮(Round

       对称密钥中经常对输入进行多轮迭代,这些迭代通常操作相同,只是具体上有些许差异,对称密钥的这种特性使得对称密钥适于用流水结构实现,因而数据吞吐量 大,容易实现高速加解密。

2.1.1  DES

DES算法全称为Data Encryption Standard,即数据加密算法,它是IBM公司于1975年研究成功并公开发表的。DES算法有三个输入:Key、Data、Mode。其中 Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密 或解密。

 

算法原理

DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其算法主要分为两步:

1 初始置换

其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输 出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0= D57D49……D7。

2 逆置换

经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。

 

2.1.2      3DES

3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模 块,通过组合分组方法设计出分组加密算法。3DES一共有两种,一种是使用两个56位长度的密钥key1和key2,这样密码强度提高到了112位;另一 种是使用三个56位长度的密钥key1、key2和key3,这样密码强度提高到了168位。

使用两个密钥的3DES:

加密过程:用key1加密,用key2解密再用key1加密

解密过程:用key1解密,用key2加密再用key1解密

使用三个密钥的3DES:

加密过程:用key1加密,用key2解密再用key3加密

解密过程:用key3解密,用key2加密再用key1解密

2.1.3   AES

2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。Rijndael被选中成为将来的 AES。 Rijndael是在 1999 年下半年,由研究员 Joan Daemen 和 Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。

美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标准 (AES) 规范。

 

算法原理

AES 算法基于置换和替代运算。AES 使用几种不同的方法来执行置换和替代运算。

AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位长度的密钥,并且用 128 位(16字节)分组密钥(轮密钥)加密和解密数据。数据长度为128位。通过分组密码返回的加密数据长度与输入数据长度相同。迭代加密使用一个循环结构, 在该循环中重复置换(permutation)和替代(substitution)输入数据。

密钥扩展(Key Expansion)

AES对原始密钥进行密钥扩展操作,将其扩展并应用到每轮迭代加密中。

State矩阵

AES将输入和每轮迭代的中间结果表达为4×4矩阵,矩阵中每个元素为8位。AES算法的主循环对State矩阵执行四种不同的操作,分别为 SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换)、AddRoundKey(轮密钥相加)。

SubBytes:将State矩阵中的字节用S-box中相应字节替换

ShiftRows:为置换操作,它将State矩阵每行中的字节向左移位。

MixColumns:为替代操作,它用State矩阵每列字节的值进行GF(28)域中的加法和乘法操作,并替代对应字 节。

AddRoundKey:用KeyExpansion中生成的KeySchedule前四行对State矩阵执行字节异或(XOR)操作,并用轮密 钥表中相应值对State矩阵进行操作,得到新的State矩阵

 

AES与3DES的比较

算法名称

算法类型

密钥长度

数据长度

AES

对称block密码

128、192、256位

128位

3DES

对称feistel密码

112位或168位

64位

 

2.1.4      分组密码工作方式

分组密码每次加密一个数据分组,这个分组的位数可以是随意的,一般选择64(DES、3DES)或者128位(AES)。

 

2.1.4.1    ECB(Electronic Code Book:电码本)

ECB是最简单的模式,同样的明文分组总是加密成相同的密文分组。这对于发送单一的块数据来说是非常好的,如密钥。但对执行一个加密的信息流来说不 是很好,因为如果相同的明文多次发送以后,同样的密文也会被多次发送。

ECB最大的弱点是对每一个块用相同的方式进行加密。如果我们的密钥或者数据不断发生变化,ECB是完全安全的。但是如果类似的块经过同样的密钥加 密发出以后,攻击者可能获得一些我们并不想让别人知道的信息。

优点:

1.简单;

2.有利于并行计算;

3.误差不会被传送;

缺点:

1.不能隐藏明文的模式;

2.可能对明文进行主动攻击;

 

2.1.4.2    CBC(Cipher Block Chaining:密码分组链接)  

CBC模式改变了加密方式,同样的明文分组不一定加密或解密同样的密文块,因此解决了ECB存在的主要问题。CBC使用前一分组的信息加密当前分 组。因此 和ECB模式大不相同。这个方法依然存在问题,那就是相同的信息仍然加密成相同的密文,因为所有的分组是同时变成密文分组的。为了解决这个问题,我们引入 一个Initialization Vector(IV,初始化向量),也就是前不久有人问到的IV问题。IV仅仅是一个初始化加密程序的随机数。它无需秘密保存,但队每一个信息来说它都是 不同 的,通过这个方式,即使有两条相同的信息,只要他们有不同的IV,那么他们加密后的密文也是不同的。从这个意义上来说,初始化向量无疑就和口令加密过程中 使用的盐值是一样的。

CBC很适合文本传输,但它每一次都需要传送一个完整的数据块,一般选8个字节。

优点:

1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。

缺点:

1.不利于并行计算;

2.误差传递;

3.需要初始化向量IV

 

CFB(Cipher FeedBack:密码反馈)  

CFB的工作方式与CBC类似,但它可以执行更小的数据块,典型的有8位,这非常适合加密像聊天对话这样的信息,因为每次可以发送单一的字节数据 块。

和CBC一样,CFB也需要一个IV,且相同及钥发送的每条信息的IV都必须是唯一的。

 优点:

1.隐藏了明文模式;

2.分组密码转化为流模式;

3.可以及时加密传送小于分组的数据;

缺点:

1.不利于并行计算;

2.误差传送:一个明文单元损坏影响多个单元;

3.唯一的IV;

 

OFB(Output FeedBack:输出反馈)

OFB除了在传输中能给数据提供更好的保护,防止数据丢失外,其他和CFB类似。密文中一位出错,也只造成明文中的一位出错,其他的方式会造成整个 块丢失。

和CBC以及CFB一样,OFB也需要一个IV。

 优点:

1.隐藏了明文模式;

2.分组密码转化为流模式;

3.可以及时加密传送小于分组的数据;

缺点:

1.不利于并行计算;

2.对明文的主动攻击是可能的;

3.误差传送:一个明文单元损坏影响多个单元;

 

2.1.4.3    分组密码的填充方式

分组密码算法在ECB和CBC工作方式下需要明文输入为分组大小的整数倍。如果要加密的明文不为分组大小的整数倍,就需要在加密之前使用填充位串对 明文进行填充。当解密时,接收方需要知道如何没有二义性地移除填充位串。

 

方法1:将需要填充字节的个数作为填充值填充到分组中

这个方法适用于任何明文,ASCII或者二进制。对于DES,分组大小为64位,所以填充值应该在1到8之间,对于AES,分组大小为128位,所 以填充值在1到16之间。这也可以提供对解密是否正确进行的一个额外校验(如果该值不对,则解密不对,但是如果该值对,也不保证解密一定是对的)。

 

方法2:用0x80后接数个0x00作为填充位串填充到分组中

这个方法适用于任何明文,ASCII或者二进制。智能卡更倾向于使用这种填充方法。这也是NIST 800-38a中推荐的方法。

 

方法3:用0x00填充,最后一个字节用填充字节的个数作为填充值填充

这个是方法1的变形。在解密后,读最后一个字节的值,如果在正确区间内就扔掉最后一个字节所描述的那么多个字节。该方法适用于任何明文,ASCII 或者二进制。

 

方法4:用全0填充

该方法局限性很大,在处理ASCII文本时没有问题,但是在处理可能包含0x00值的二进制明文时会不适用。

 

方法5:用空格字符0x20填充

该方法也只适用于简单ASCII文本。

 

如果使用的是CFB或者OFB工作方式,那么密文可以与明文具有相同大小,不需要填充。序列加密算法如RC4或者PC1也不需要填充。

2.2公钥密码算法

公钥密码中的加密与解密过程如下图所示:

 

 

公钥密码中的签名与验证过程如下图:

1.确实是用户B在文件上签了名(身份认证)

2.别人无法伪造用户B的签名(不可抵赖)

3.所签的信息在传输过程中没有被篡改或替换(数据完整)

 

 

 

公钥密码中的密钥交换过程:

1.数字信封:用公钥密码加密对称密钥

2.密钥协商:根据双方交互的信息各自计算出相同的对称密钥(ga, gb, gab)

 

 

 

2.2.1 RSA算法

2.2.1.1 简介

当前最著名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为《获得 数字签名和公开钥密码系统的方法》的论文中提出的。它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字 母。 它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。 RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。

RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密 接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。

该算法基于下面的两个事实,这些事实保证了RSA算法的安全有效性: 
1) 已有确定一个数是不是质数的快速算法; 
2) 尚未找到确定一个合数的质因子的快速算法。

2.2.1.2工作原理 
1)  任意选取两个不同的大质数p和q,计算乘积r=p*q; 
2)  任 意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。注意:e的选取是很 

容易的,例如,所有大于p和q的质数都可用。 
3)  确定解密密钥d: d * e = 1 modulo(p - 1)*(q - 1) 根据e、p和q可以容易地计算出

d。 
4)  公开整数r和e,但是不公开d; 
5)  将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为: 
C = Pe modulo r 
6)  将密文C解密为明文P,计算方法为: 
P = Cd modulo r 
然而只根据r和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行    

加密,但只有授权用户(知道d)才可对密文解密。

 

2.2.1.3优点

 

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻 击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。该算法的加密密钥和加密算法分开,使得密钥分配更为方便。它特别符合计算机网络环境。对 于 网上的大量用户,可以将加密密钥用电话簿的方式印出。如果某用户想与另一用户进行保密通信,只需从公钥簿上查出对方的加密密钥,用它对所传送的信息加密发 出即可。对方收到信息后,用仅为自己所知的解密密钥将信息脱密,了解报文的内容。由此可看出,RSA算法解决了大量网络用户密钥管理的难题,这是公钥密码 系统相对于对称密码系统最突出的优点。 

2.2.1.4缺点 
1) 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。 
2) 安全性, RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度

与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC问题。目前,人们已能分解140多个十进制位的大素数,这就要求使用更长的密 钥,速度更慢;另外,目前人们正在积极寻找攻击RSA的方法,如选择密文攻击,一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。 然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:

( XM )d = Xd *Md mod n 
前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。 但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签 名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function对文档作HASH处理,或同时使用不同的签名算法。除了利用公共模数,人们还尝试一些利用解密指数或φ(n)等等攻击.

3) 速度太慢,由于RSA 的分组长度太大,为保证安全性,n 至少也要 600 bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目 前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。为了速度问题,目前人们广泛使用单,公钥密码结合使 用的方法,优缺点互补:单钥密码加密速度快,人们用它来加密较长的文件,然后用RSA来给文件密钥加密,极好的解决了单钥密码的密钥分发问题。

2.2.2 ECC算法

2.2.2.1 简介

1985年Neal Koblitz和Victor Miller分别独立提出基于ECDLP(椭圆曲线离散对数问题)的ECC密码系统,自此ECC在密码学界数学界引起了广泛的越来越热烈的研究兴趣。经过 诸多知名密码学家和数学家近二十年的研究表明,ECC所基于的ECDLP较IFP和DLP(离散对数问题)更难解,目前人们能找到最有效的求解ECDLP 的算法(Pollard rho)也是指数级时间复杂度的。而近几年数学家和密码学家们已经证明的一些结论暗示着ECDLP甚至可能不存在亚指数时间复杂度的求解算法,这暗示着 ECC可能是唯一无法用亚指数算法破解的公钥密码。

在已知的公钥密码体制中,椭圆曲线密码体制具有每bit 最高强度的安全性,最快的处理速度和最低的开销,至今解决椭圆曲线离散对数最好的算法是完全指数时间算法。 而IFP 和DLP 都有亚指数时间算法,这意味着随着长度的增加,求解ECDLP 的难度比求解IFP 和DLP 的难度增加得快得多。 因此ECC仅需要更小的密钥长度就可以提供跟RSA 和DSA 相当的安全性。 研究证明 ,基于椭圆曲线上的密码体制使用160bit 的密钥提供的安全性相当于RSA 和DSA 使用1024bit 密钥提供的安全性,210bit 与2048bit 相当。 而且在私钥运算(签名和解密) 方面椭圆曲线上的密码体制要比RSA 和DSA 快很多,但它的签名验证和加密速度太慢。 另外,ECC 系统的密钥生成速度比RSA 快百倍以上。 同时,椭圆曲线资源丰富,同一个有限域上存在着大量不同的椭圆曲线,这为安全性增加了额外的保证。

另外,ECC从实现的角度来看也有更高的效率。因为其具有密钥短这一天然的优势,就比RSA有着更多的应用领域。由于椭圆曲线密码的密钥较短(如 160位ECC的私钥长度仅为1024位RSA的1/6。4,160位公钥长度仅为1024位RSA的1/3。2),这可以为智能卡这类资源极度受限的嵌 入式系统节省较多的存储空间,使得其它程序可利用更多的存储器来完成复杂的任务。而对于像芯片这样的实现方式,密钥短也能使整个生产的成本下降。在使用的 过程中也会由于密钥短而得到更高的速度。

 

2.2.2.2原理——椭圆曲线上的难题 

椭圆曲线上离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。可以证明由k和P计算Q比较容易,而由Q和P计算k则比较困难。

将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,将椭圆曲线中的乘法运算与离散对数中的模幂运算相对应,我们就可以建立基于椭圆曲线的对应的 密码体制。 

例如,对应Diffie-Hellman公钥系统,我们可以通过如下方式在椭圆曲线上予以实现:在E上选取生成元P,要求由P产生的群元素足够多, 通信双方A和B分别选取a和b,a和b 予以保密,但将aP和bP公开,A和B间通信用的密钥为abP,这是第三者无法得知的。

对应ELGamal密码系统可以采用如下的方式在椭圆曲线上予以实现:

将明文m嵌入到E上Pm点,选一点B∈E,每一用户都选一整数a,0<a<N,N为阶数已知,a保密,aB公开。欲向A送m,可送去下面一对数偶: [kB,Pm+k(aAB)],k是随机产生的整数。A可以从kB求得k(aAB)。通过:Pm+k(aAB)- k(aAB)=Pm恢复Pm。同样对应DSA,考虑如下等式:

K=kG  [其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数]

不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相对困难了。

这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(base point),k(k<n,n为基点G的阶)称为私有密钥(privte key),K称为公开密钥(public key)。

 

2.2.2.3 RSA与ECC的比较

ECC和RSA相比,在许多方面都有对绝对的优势,主要体现在以下方面:

1)抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。

2)计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。

3)存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用 具有特别重要的意义。

4)带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络 领域具有广泛的应用前景。

ECC的这些特点使它必将取代RSA,成为通用的公钥加密算法。比如SET协议的制定者已

把它作为下一代SET协议中缺省的公钥密码算法。

 

下面两张表示是RSA和ECC的安全性和速度的比较。

 

攻破时间(MIPS年)

RSA/DSA(密钥长度)

ECC密钥长度

RSA/ECC密钥长度比

104

512

106

5:1

108

768

132

6:1

1011

1024

160

7:1

1020

2048

210

10:1

1078

21000

600

35:1

RSA和ECC安全模长得比较

 

功能

Security Builder 1.2

BSAFE 3.0

163位ECC(ms)

1,023位RSA(ms)

密钥对生成

3.8

4,708.3

签名

2.1(ECNRA)

228.4

3.0(ECDSA)

认证

9.9(ECNRA)

12.7

10.7(ECDSA)

Diffie—Hellman密钥交换

7.3

1,654.0

RSA和ECC速度比较

 

 

2.3 散列算法(Hash)

2.3.1简介

散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始 信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具 有这些特性的散列结果就可以用于验证信息是否被修改。

 

2.3.1.1 Hash算法的功能和安全特性

1.输入报文的长度没有限制;

2.相同的输入产生相同的输出;

3.对输入任何报文,能生成固定长度的消息摘要(数字指纹);

4.从报文能方便地算出摘要。

5.随机性:消息摘要看起来随机,难以确定输入/输出的关系;

6.唯一性:几乎不可能找到两个消息产生相同的消息摘要;

7.单向性:即如果给出输出,则很难确定出输入消息。

 

2.3.1.2 hash算法用途

1)计算消息摘要

2)用于数字签名或公开信息的完整性验证。计算MAC(Message Authentication Code)

将保密信息和双方共享的密钥一起计算摘要,用于保密信息的完整性验证。

2.3.2 SHA-1

在1993年,安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,并作为联邦信息处理标准(FIPS PUB 180)公布;1995年又发布了一个修订版FIPS PUB 180-1,通常称之为SHA-1。SHA-1是基于MD4算法的,并且它的设计在很大程度上是模仿MD4的。现在已成为公认的最安全的散列算法之一,并 被广泛使用。

NIST 发布了三个额外的 SHA 变体,每个都有更长的讯息摘要。以它们的摘要长度 (以位元计算) 加在原名后面来命名:"SHA-256", "SHA-384" 和 "SHA-512"。它们发布于 2001年的 FIPS PUB 180-2 草稿中,随即通过审查和评论。包含 SHA-1 的 FIPS PUB 180-2,于 2002年以官方标准发布。这些新的散列函数并没有接受像 SHA-1 一样的公众密码社群做详细的检验,所以它们的密码安全性还不被大家广泛的信任。2004年2月,发布了一次 FIPS PUB 180-2 的变更通知,加入了一个额外的变种 "SHA-224",定义了符合双金钥 3DES 所需的金钥长度。

三、加密算法的选择

前面的章节已经介绍了对称解密算法和非对称加密算法,有很多人疑惑:那我们在实际使用的过程中究竟该使用哪一种比较好呢?

 

我们应该根据自己的使用特点来确定,由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算 法,提高加解密速度。

 

对称加密算法不能实现签名,因此签名只能非对称算法。

 

由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。

 

在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的 优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

 

如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来 说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

四、密码学在现代的应用

随着密码学商业应用的普及,公钥密码学受到前所未有的重视。除传统的密码应用系统外,PKI系统以公钥密码技术为主,提供加密、签名、认证、密钥管 理、分配等功能。

 

保密通信:保密通信是密码学产生的动因。使用公私钥密码体制进行保密通信时,信息接收者只有知道对应的密钥才可以解密该信息。

 

数字签名:数字签名技术可以代替传统的手写签名,而且从安全的角度考虑,数字签名具有很好的防伪造功能。在政府机关、军事领域、商业领域有广泛的应 用环境。

 

秘密共享:秘密共享技术是指将一个秘密信息利用密码技术分拆成n个称为共享因子的信息,分发给n个成员,只有k(k≤n)个合法成员的共享因子才可 以恢复该秘密信息,其中任何一个或m(m≤k)个成员合作都不知道该秘密信息。利用秘密共享技术可以控制任何需要多个人共同控制的秘密信息、命令等。

 

认证功能:在公开的信道上进行敏感信息的传输,采用签名技术实现对消息的真实性、完整性进行验证,通过验证公钥证书实现对通信主体的身份验证。

 

密钥管理:密钥是保密系统中更为脆弱而重要的环节,公钥密码体制是解决密钥管理工作的有力工具;利用公钥密码体制进行密钥协商和产生,保密通信双方 不需要事先共享秘密信息;利用公钥密码体制进行密钥分发、保护、密钥托管、密钥恢复等。

 

基于公钥密码体制可以实现以上通用功能以外,还可以设计实现以下的系统:安全电子商务系统、电子现金系统、电子选举系统、电子招投标系统、电子彩票 系统等。

 

公钥密码体制的产生是密码学由传统的政府、军事等应用领域走向商用、民用的基础,同时互联网、电子商务的发展为密码学的发展开辟了更为广阔的前景。

五、加密算法的未来

随着计算方法的改进,计算机运行速度的加快,网络的发展,越来越多的算法被破解。

 

在2004年国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做的破译MD5、HAVAL-128、MD4和 RIPEMD算法的报告,令在场的国际顶尖密码学专家都为之震惊,意味着这些算法将从应用中淘汰。随后,SHA-1也被宣告被破解。

 

历史上有三次对DES有影响的攻击实验。1997年,利用当时各国 7万台计算机,历时96天破解了DES的密钥。1998年,电子边境基金会(EFF)用25万美元制造的专用计算机,用56小时破解了DES的密钥。 1999年,EFF用22小时15分完成了破解工作。因此。曾经有过卓越贡献的DES也不能满足我们日益增长的需求了。

 

最近,一组研究人员成功的把一个512位的整数分解因子,宣告了RSA的破解。

 

我们说数据的安全是相对的,可以说在一定时期一定条件下是安全的,随着硬件和网络的发展,或者是另一个王小云的出现,目前的常用加密算法都有可能在 短时间内被破解,那时我们不得不使用更长的密钥或更加先进的算法,才能保证数据的安全,因此加密算法依然需要不断发展和完善,提供更高的加密安全强度和运 算速度。

 

纵观这两种算法一个从DES到3DES再到AES,一个从RSA到ECC。其发展角度无不是从密钥的简单性,成本的低廉性,管理的简易 性,算法的复杂性,保密的安全性以及计算的快速性这几个方面去考虑。因此,未来算法的发展也必定是从这几个角度出发的,而且在实际操作中往往把这两种算法 结合起来,也需将来一种集两种算法优点于一身的新型算法将会出现,到那个时候,电子商务的实现必将更加的快捷和安全

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多