密码算法对比 | 优点 | 缺点 |
对称密码 | 效率高,算法简单,系统开销小 适合加密大量数据 明文长度与密文长度相等 | 解决密钥传递的问题 大大减少密钥持有量 提供了对称密码技术无法或很难提供的服务(数字签名)
|
公钥密码(非对称密码) | 需要以安全方式进行密钥交换 密钥管理复杂
| 计算复杂、好用资源大 非对称会导致得到的密文变长 |
对称密码算法
加密密钥和解密密钥相同,或实质上等同
典型算法DES、3DES、AES、IDEA、RC5、Twofish、CAST-256、MARs
优点:加密速度快,效率非常高
不足:安全交换密钥问题及密钥管理复杂
对称密码加解密过程:
数据加密标准(DES)
- 对称密钥算法,密钥长度为 56 bits(加上奇偶校验,通常些成 64bits)
- 分组密码算法,64 bits为一个分组
- 基本思想:混乱和扩散
扩散(Diffusion) | 将每一位明文数字的影响尽可能地散布到多个输出密文数字中去,以更隐蔽明文数字的统计特性。 |
混乱(Confusion) | 使得密文的统计特性与明文、密钥之间的关系尽量复杂化 |
- 使用标准的算数运算和逻辑运算
背景(DES的产生与应用)
1973年5月15日,NBS开始公开征集标准加密算法,并公布了它的设计要求:
- 算法必须提供高度的安全性
- 算法必须有详细的说明,并易于理解
- 算法的安全性取决于密钥,不依赖于算法
- 算法适用于所有用户
- 算法适用于不同应用场合
- 算法必须高效、经济
- 算法必须能被证实有效
- 算法必须是可出口的
DES的产生
1974年8月27日,NBS开始第二次征集,IBM提交了算法LUCIFER
1975年3月17日,NBS公开了全部细节
1976年,NBS指派了两个小组进行评价
1976年11月23日,采纳为联邦标准,批准用于非军事场合的各种政府机构
1977年1月15日,“数据加密标准”FIPSPUB46发布
发明人:美国IBM公司W.Tuchman和C.Meyer
1971-1972年研制成功
基础:1967年美国HorstFeistel提出的理论
注:DES是从1974年开始到1976年采纳为联邦标准
DES的应用
1979年,美国银行协会批准使用DES
1980年,美国国家标准局(ANSI)同意DES作为私人使用的标准,称之为DEA(ANSIX.392)
1983年,国际化标准组织(ISO)同意将DES作为国际标准,称之为DEA-1
1998年12月以后,美国政府不再将DES作为联邦加密标准
注:
1998年12月以后,DES不再作为联邦加密标准是由于DES的强度不够
DES的强度
密钥长度:56比特
强力攻击:尝试2^55次
差分密码分析:尝试2^47次
线性密码分析:尝试2^43次
(但是后两种攻击是不实用的)
例如:
1976年,耗资2000万美元的计算机,可以在一天中找到密钥
1993年,设计100万美元的计算机,3.5小时用穷举法找到密钥
1998年,EFF宣布破译了DES算法,耗时不到三天时间,使用的是25万美元的“DES破译机”
高级数据加密标准(AES)
1997年4月15日,(美国)国家标准技术研究所(NIST)发起征集高级加密标准(Advanced Encryption Standard)AES的活动,活动目的是确定一个非保密的、可以公开技术细节的、全球免费使用的分组密码算法,作为新的数据加密标准。对AES的基本要求是:比三重DBES快、至少与三重DES一样安全、数据分组长度为128比特、密钥长度为128/192/256比特
1997年9月12日,美国联邦登记处公布了正式征集AES候选算法的通告。作为进入AES候选过程的一个条件,开发者承诺放弃被选中算法的知识产权
目的:代替DES
AES的产生
1998年8月12日,在首届AES会议上指定了15个候选算法
1999年3月22日第二次AES会议上,将候选名单减少为5个,这5个算法是RC6,Rijidlael,SERPENT,Twofish和MARS
2000年4月13日,第三次AES会议上,对这5个候选算法的各种分析结果进行了讨论
2000年10月2日,NIST宣布了获胜者—— Rijndael算法
2001年11月,NIST将AES定为联邦信息处理标准FIPSPUB197。用于保护政府部门敏感但不机密的信息(sensitive but not classified)
2002年5月正式生效
小结:
DES是应用最广泛的对称密码算法(由于计算能力的快速进展,DES已不再被认为是安全的)
IDEA在欧洲应用较多
AES将是未来最主要,最常用的对称密码算法
公钥密码算法(非对称密码算法)
公钥(可以公开传递)、私钥
典型算法:RSA、ECC、EIGamal、DH
优点:解决密钥传递问题、密钥管理简单、提供数字签名等其他服务
缺点:计算复杂、耗用资源大
公钥密码加解密过程:
注:
公钥可以公开传递是因为不能从公钥推导出私钥,每个人只需要维护自己的一队公钥和私钥,保护自己的私钥不泄露
不能从公钥推导出私钥是因为数学基础:单向陷门函数
Diffie-Hellman算法
- 第一个发表的公开密钥算法,1976
- 用于通信双方安全地协商一个会话密钥
- 只能用于密钥交换
- 数学基础:有限域内计算离散对数的困难性为基础
- 主要是模幂运算:(a^p) mod n
RSA公钥密码体制
1970年由RonRivest、Adi Shamir和Len Adleman发明,1978年正式公布
RSA是一种分组加密算法。明文和密文在0-n-1之间,n是一个正整数
该算法的数学基础是初等数论中的Euler(欧拉)定理,并建立在分解大整数因子的困难性之上
目前应用最广泛的公钥密码算法
只在美国申请专利,且已于2000年9月到期
发明者:RonRivest、Adi Shamir和Len Adleman发明
数字签名算法(DSA)
1991年,NIST提出了数字签名算法(DSA),并把它用作数字签名标准(DSS),招致大量的反对,理由如下:
DSA不能用于加密或密钥分配
DSA是由NSA研制的,可能有后门
DSA的选择过程不公开,提供的分析时间不充分
DSA比RSA慢(10-40倍)
密钥长度太小(512位)
DSA可能侵犯其他专利
RSA是事实上的标准
公钥密码的应用
算法 | 加/解密 | 数字签名 | 密钥交换 |
RSA | 是 | 是 | 是 |
Dieffie-Hellman | 否 | 否 | 是 |
DSS | 否 | 是 | 否 |
小结:
RSA
数学基础IFP(Integer Factorization Problem)
加/解密、密镳摩紊奂、数字签名
使用最广泛
ECC
EIGamal
数学基础:DLP(Discrete Logarithm Problem)
加/解密、密钥交换、数字签名
DSA
作为数字签名最好,并且无专利费,可以随意获取
Diffie-HelIman
密钥交换算法