现在的位置: 首页 > 综合 > 正文

密码算法学习

2014年09月05日 ⁄ 综合 ⁄ 共 11905字 ⁄ 字号 评论关闭

[来自: http://linux.bokee.com/6954598.html]

 

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

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

 

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

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

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

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

 

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

两者的区别在于:

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

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

 

2.1 对称加密算法

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

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

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

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

 

分组密钥常见术语

 

置换(Permutation)与替代(Substitution

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

 

轮(Round

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

2.1.1  DES

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

 

算法原理

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

1初始置换

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

2逆置换

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

 

2.1.2      3DES

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

使用两个密钥的3DES

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

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

使用三个密钥的3DES

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

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

2.1.3   AES

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

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

 

算法原理

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

AES 是一个迭代的、对称密钥分组的密码,它可以使用128192 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矩阵

 

AES3DES的比较

算法名称

算法类型

密钥长度

数据长度

AES

对称block密码

128192256

128

3DES

对称feistel密码

112位或168

64

 

2.1.4      分组密码工作方式

分组密码每次加密一个数据分组,这个分组的位数可以是随意的,一般选择64DES3DES)或者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,适合传输长度长的报文,SSLIPSec的标准。

缺点:

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    分组密码的填充方式

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

 

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

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

 

方法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)RivestShamirAdleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字母。
它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。

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

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

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

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

d 
4)  
公开整数re,但是不公开d 
5)  
将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为: 
      C = Pe modulo r 
6)  
将密文C解密为明文P,计算方法为: 
   P = Cd modulo r 
   
然而只根据re(不是pq)要计算出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 简介

1985Neal KoblitzVictor Miller分别独立提出基于ECDLP(椭圆曲线离散对数问题)的ECC密码系统,自此ECC在密码学界数学界引起了广泛的越来越热烈的研究兴趣。经过诸多知名密码学家和数学家近二十年的研究表明,ECC所基于的ECDLPIFPDLP(离散对数问题)更难解,目前人们能找到最有效的求解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有着更多的应用领域。由于椭圆曲线密码的密钥较短(如160ECC的私钥长度仅为1024RSA1/64160位公钥长度仅为1024RSA1/32),这可以为智能卡这类资源极度受限的嵌入式系统节省较多的存储空间,使得其它程序可利用更多的存储器来完成复杂的任务。而对于像芯片这样的实现方式,密钥短也能使整个生产的成本下降。在使用的过程中也会由于密钥短而得到更高的速度。

 

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

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

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

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

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

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

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

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

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

 

2.2.2.3 RSAECC的比较

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

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

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

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

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

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

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

 

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

 

攻破时间(MIPS)

RSA/DSA(密钥长度)

ECC密钥长度

RSA/ECC密钥长度比

104

512

106

51

108

768

132

61

1011

1024

160

71

1020

2048

210

101

1078

21000

600

351

RSAECC安全模长得比较

 

功能

Security Builder 1.2

BSAFE 3.0

163ECC(ms)

1,023RSA(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

RSAECC速度比较

 

 

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)用于数字签名或公开信息的完整性验证。计算MACMessage Authentication Code

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

2.3.2 SHA-1

1993年,安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,并作为联邦信息处理标准(FIPS PUB 180)公布;1995年又发布了一个修订版FIPS PUB 180-1,通常称之为SHA-1SHA-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 一样的公众密码社群做详细的检验,所以它们的密码安全性还不被大家广泛的信任。20042月,发布了一次 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)上,来自中国山东大学的王小云教授做的破译MD5HAVAL-128MD4RIPEMD算法的报告,令在场的国际顶尖密码学专家都为之震惊,意味着这些算法将从应用中淘汰。随后,SHA-1也被宣告被破解。

 

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

 

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

 

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

 

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

抱歉!评论已关闭.