时间点:
公元前400年,希腊人发明了置换密码;
1881年,世界上第一个电话保密专利出现;
二战期间,德国军方启用“恩尼格玛”密码机;
1976年,由于对称加密算法已经不能满足需要,Diffie 和 Hellman发表了一篇叫《密码学新动向》的文章,介绍了公钥加密的概念,由Rivet、Shamir、Adelman提出了RSA算法;
1985年,N.Koblitz和Miller提出将椭圆曲线用于密码算法,根据是有限域上的点群中的离散对数问题ECDLP,它比因子分解更难(指数级)。
ECC产生背景:随着分解大整数方法的进步和完善、计算机速度的提高以及计算机网络的发展,RSA的秘钥需要不断增加长度才能保证数据安全。但是,这导致了RSA加密速度大为降低,对使用RSA的应用带来了很大的负担,需要一种新的算法来替代RSA。
1993年,美国国家标准和技术协会(NIST)提出安全散列算法(SHA);
1995年,又发布了修订版FIPS PUB 180-1,通常称之为SHA-1;
1997年,美国国家标准局公布实施了“美国数据加密标准”(DES);
1997年,利用各国7万台计算机,历时96天破解了DES的秘钥;
1998年,电子边境基金会(EFF)用25万美元制造的专用计算机,用56小时破解了DES的秘钥;
1999年,EFF用22小时15分完成了DES的破解工作;
1999年底,有人把512位的整数分解因子,512位的RSA秘钥被破解;
2000年10月,美国国家标准和技术协会(NIST)宣布选择Rijndael被选中称为将来的AES。注:Rijndael是在1999年由研究员Joan Daemen 和 Vincent Rijmen创建;
2004年,在国际密码学会议上(Crypto'2004),来自山东大学的王小云教授的报告介绍了破译MD5、HAVAL-128、MD4和RIPEMD算法。随后SHA-1也被宣告破解;
2009年底,768位的整数也被成功分解,威胁到了现在流行的1024位秘钥的安全性;
使用密码学的目的:
- 保密性:防止用户的标识或数据被读取。
- 数据完整性:防止数据被更改。
- 身份验证:确保数据发自特定的一方。
密码学分类及介绍
对称加密算法 | 加密、解密采用相同秘钥。 不支持数字签名。 速度快:硬件实现是非对称加密算法的1000倍; 软件实现,是对称加密算法的100倍。 | 不适合在广域网使用; 对敏感数据进行加密; 大量数据加密 | DES(Data Encryption Standard,数据加密标准):速度快,适用于加密大量数据的场合。 3DES(Triple DES):基于DES,对每块数据使用3个不同的秘钥进行三次加密,强度更高。 AES(Advanced Encryption Standard,高级加密标准):当前最常用的加密标准,速度快,强度高。 |
非对称加密算法 | 加密、解密秘钥不同,不能相互推导。执行速度较慢。 主要是基于数学难题来实现。 | 用于公共环境; 对短数据进行加解密; 数字签名 | RSA:目前使用较多的非对称算法,支持可变长秘钥。 DSA(Digital Signature Algorithm,数字签名算法):是一种标准的DSS(Digital Signature Standard,数字签名标准)。 ECC(Elliptic Curves Cryptography,椭圆曲线密码学)。 |
散列算法 | 对信息进行提炼,无秘钥,密文长度固定,且比明文信息小。 不能反向推导。 | 产生信息摘要,验证完整性; 不需要还原明文的信息加密(用户密码等) | MD5(Message Digest Algorithm 5,信息摘要算法):RSA数据安全公司开发的一种单向散列算法。 SHA(Secure Hash Algorithm,安全哈希算法):对任意长度的运算生成一个160位的数值。 |
AES算法原理:
AES算法基于排列和置换运算,使用几种不同的方法来执行排列和置换运算。
排列:对数据重新进行安排。
置换:将一个数据单元替换为另一个。
使用迭代的(循环)、对称秘钥分组(使用128位分组,即16字节)的密码,可以使用128位、192位和256位秘钥。
通过分组密码返回的加密数据的位数与输入数据相同。
RSA算法原理:
分解极大整数的难度决定了RSA的可靠性,只要RSA的秘钥足够长,就能保证加密信息的安全。
签名消息:例如甲想签名一个消息,步骤如下
将消息A计算一个散列值B
--》将散列值B用秘钥加密得到B'
--》将消息A+密文B'合并后发出去
--》查看的人用甲的公钥解密B',得到B
--》查看的人将消息A计算散列值,得到C
--》将B与C比较是否相等
ECC算法原理:
椭圆曲线上的离散对数问题(ECDLP):给定素数p和椭圆曲线E,对Q=kP,在已知P、Q的情况下求出小于p的正整数k。
可以证明,由k和P计算Q比较容易,而由Q和P计算k则比较困难。
椭圆曲线的密码体制
椭圆曲线中的加法运算--》离散对数中的模乘运算
椭圆曲线中的乘法运算--》离散对数中的模幂运算
ECC与RSA比较的优势:
抗攻击性强:相同秘钥长度,抗攻击性强很多倍。
计算量小,处理速度快:ECC总的速度比RSA、DSA要快很多。
存储空间占用小:ECC的秘钥尺寸和系统参数比RSA、DSA都要小很多,对于在IC卡上应用有特别重要的意义。
带宽要求低:对长消息加密时,三者对带宽要求相同;但对短消息加密时ECC带宽要求低很多。
SHA-1算法原理
基于MD4的,并且它的设计很大程度上模仿MD4。
每块512位(64个字节)分组,生成160位(20个字节)的输出。
SHA-1与MD5比较
SHA-1比MD5长,安全性稍微高一些。
由于MD5的设计,易受密码分析的攻击。
在相同的硬件上,SHA-1的运行速度慢。