加密算法介绍

来源:互联网 发布:怎么实现搜索算法 编辑:程序博客网 时间:2024/06/04 17:57

一.简介

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

  随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中。

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

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

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

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

  常用算法:

 在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。

  在非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。

  常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1

 


二. 加密算法介绍

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

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

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


1.对称加密算法

  对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:

 DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合;

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

 RC2和RC4:对称算法,用变长密钥对大量数据进行加密,比 DES 快;

  RC5: RC5密码是1994由麻萨诸塞技术研究所的RonaldL.Rivest教授发明的。它是一种非常快速且简单的算法由块尺寸,轮数,和密钥长度参数化。这些参数能被调整以满足不同的安全目的,性能和出口能力。合并的RSA数据安全已经归档了RC5密码的专利的申请和RC5,RC5-CBC,RC5-CBC-Pad,RC5-CTS并分类了各种变更。

 IDEA(International Data Encryption Algorithm)国际数据加密算法,使用 128 位密钥提供非常强的安全性;

  BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快;

  SKIPJACK:Skipjack分组加密算法是由美国国家安全局(NSA)从1985年开始设计,1990年完成评估,于1993年由美国政府正式对外宣布的,是"Capstone"(美国政府根据1987年国会通过的计算机安全法案所订立的长远计划)中的一个项目(另外三个项目分别是数字签名标准(DSA)、安全散列函数(SHA)及密钥交换方法)。Skipjack算法曾经被列为“机密”等级。

   AES(Advanced Encryption Standard):

 高级加密标准,对称算法,是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是 Rijndael 算法;

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

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

 算法原理

  AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。

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

  AES3DES的比较

算法名称

算法类型

密钥长度

速度

解密时间(建设机器每秒尝试255个密钥)

资源消耗

AES

对称block密码

128192256

1490000亿年

3DES

对称feistel密码

112位或168

46亿年


  各算法性能比较

名称

实现方式

运算速度

  

改进措施

应用场合

DES

40-56bit

密钥

一般

完全依赖密钥,易受穷举搜索法攻击

双重、三重DES,AES

  适用于硬件实现

IDEA

128bit密钥

8轮迭代

较慢

军事级,可抗差值分析和相关分析

加长字长为32bit、密钥为256bit,采用232 模加、232+1模乘

  适用于ASIC设计

GOST

256bit密钥

32轮迭代

较快

军事级

加大迭代轮数

S盒可随机秘

密选择,便于软件实现

Blowfish

256-448bit

密钥、16轮迭代

最快

 军事级、可通过改变密钥长度调整安全性

 

适合固定密钥场合,不适合常换密钥和智能卡

RC4

密钥长度可变

DESl0倍

对差分攻击和线性攻击具有免疫能力,高度非线性

密钥长度放宽到64bit

算法简单,易于编程实现

RC5

 

密钥长度和迭代轮数均可变

速度可根据

三个参数的

值进行选择

六轮以上时即可抗线性攻击、通过调整字长、密钥长度和迭代轮数可以在安全性和速度上取得折中

引入数据相倚转

  适用于不同字长的微处理器

CASTl28

密钥长度可变、16轮迭代

较快

可抵抗线性和差分攻击

增加密钥长度、形成CAST256

适用于PC机和

UNIX工作站



2.非对称算法

 常见的非对称加密算法如下:

  RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;

 DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法;

  ECCElliptic Curves Cryptography):椭圆曲线密码编码学。


ECC

  椭圆加密算法(ECC)是一种公钥加密体制,最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。
 

ECCRSA的比较

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

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

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

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

  带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时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


3.散列算法

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

 单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:

 MD5Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法。

 SHASecure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值;

  SHA-1

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

  原理

  SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。

  单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不能产生正确的散列值,从而保证了其安全性。SHA将输入流按照每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或信息摘要的输出。

  该算法输入报文的最大长度不超过264位,产生的输出是一个160位的报文摘要。输入是按512 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。

  通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。

MAC (信息认证代码)就是一个散列结果,其中部分输入信息是密码,只有知道这个密码的参与者才能再次计算和验证MAC码的合法性。MAC的产生参见下图。 

输入信息

密码

散列函数

信息认证代码


SHA-1MD5的比较

  因为二者均由MD4导出,SHA-1MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:

 对强行供给的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD52128数量级的操作,而对SHA-1则是2160数量级的操作。这样,SHA-1对强行攻击有更大的强度。

 对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。

 速度:在相同的硬件上,SHA-1的运行速度比MD5慢。


4.对称与非对称算法比较

以上综述了两种加密方法的原理,总体来说主要有下面几个方面的不同:

 在管理方面:公钥密码算法只需要较少的资源就可以实现目的,在密钥的分配上,两者之间相差一个指数级别(一个是n一个是n2)。所以私钥密码算法不适应广域网的使用,而且更重要的一点是它不支持数字签名。

 在安全方面:由于公钥密码算法基于未解决的数学难题,在破解上几乎不可能。对于私钥密码算法,到了AES虽说从理论来说是不可能破解的,但从计算机的发展角度来看。公钥更具有优越性。

 从速度上来看:AES的软件实现速度已经达到了每秒数兆或数十兆比特。是公钥的100倍,如果用硬件来实现的话这个比值将扩大到1000倍。


三. 加密算法的选择

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

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

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

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

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

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


四. 密码学在现代的应用

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

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

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

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

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

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

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

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


五. 加密算法的未来

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

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



参考文章:

加密算法介绍: http://wenku.baidu.com/view/4fb8e0791711cc7931b716aa.html

常见加密算法介绍: http://blog.sina.com.cn/s/blog_61437b3b0101dj89.html

加密算法及分类: http://wenku.baidu.com/link?url=BX6LChFyCK7PNsosLxQWeQuDwWeTYMrse5ANam-DzlO76qx7JdGFlvBXOv6SMxkVjHz9dp2L4pW3AM0QY8dULSv0-JYu3TzNcHFGnl5GG-C

常见加密算法介绍:http://blog.chinaunix.net/uid-8735300-id-2017079.html

加密算法的一些该书总结: http://blog.chinaunix.net/uid-11582448-id-3058813.html

DES/3DES/AES区别:   http://blog.163.com/hanozi@126/blog/static/18657562010111941647233/

加密算法:  http://baike.baidu.com/link?url=Uw6YQKnO8CxgEsHXVrKJBVanmTc6vQaFtFEAmvSUmWy2d1V4NvBP-T3_en83XA-uLtH8JBusk2_jQJeaEqkvA_


0 0