密码体制可以划分为对称密码体制和非对称密码体制。对称密码体制又称为单钥密码体制或私钥密码体制,非对称密码体制又称为双钥密码体制或公钥密码体制。在对称密码体制中,加密密钥和解密密钥是一样的,或彼此之间容易相互确定。在公钥密码体制中,加密密钥和解密密钥不同,从一个难以推出另一个。
1976年Diffie和Hellman在“密码学的新方向”[2]一文中提出了公钥密码的思想,开创了公钥密码学的新纪元。公钥密码提出后,立刻受到了人们的普遍关注。从1976年以来,各国学者已经提出了大量公钥密码体制的实现算法。这些算法的安全性都是基于复杂的数学难题。对于某种数学难题,如果利用通用的算法计算出密钥的时间越长,那么基于这一数学难题的公钥密码体制就被认为越安全。根据所基于的数学难题来分类,公钥密码体制可以分为以下三类:
1) 基于大数分解问题(IFP)的公钥密码体制,如RSA体制和Rabin体制。
2) 基于有限域上离散对数问题(DLP)的公钥密码体制,其中主要包括ElGamal类加密体制和签名方案,Diffie-Hellman密钥交换方案,Schnorr签名方案和Nyberg-Ruppel签名方案等。
3) 基于椭圆曲线离散对数问题(ECDLP)的公钥密码体制,其中主要包括椭圆曲线型的Diffie-Hellman密钥交换方案,椭圆曲线型的MQV密钥交换方案和椭圆曲线型的数字签名算法。
利用公钥密码体制,通信双方无需事先交换密钥就可以进行保密通信。公钥密码体制可以提供以下功能:
1) 机密性(Confidentiality)。通过数据加密来保证非授权人员不能获取机密信息。
2) 认证(Authentication)。通过数字签名来验证对方的身份。
3) 数据完整性(Data Integrity)。通过数字签名来保证信息内容不被篡改或替换。
4) 不可抵赖性(Nonrepudiation)。通过数字签名来实现,是发送者不能事后否认他发送过消息,消息的接受者可以向第三方证实发送者确实发出了消息。
公钥密码体制采用的加密密钥(公开钥)和解密密钥(秘密钥)是不同的。由于加密密钥是公开的,密钥的分配和管理就很简单,而且能够很容易地实现数字签名,因此能够满足电子商务应用的需要。在实际应用中,公钥密码体制并没有完全取代对称密码体制,这是因为公钥密码体制是基于某种数学难题,计算非常复杂,它的运行速度远比不上对称密码体制。因此,在实际应用中可以利用二者各自的优点,采用对称密码体制加密文件,而采用公钥密码体制加密“加密文件”的密钥,这就是混合加密体制。混合加密体制较好地解决了运算速度和密钥分配管理的问题。
二、常用公钥技术
定义 陷门单向函数:一个函数f如果对其定义域上任意的x都易于计算,而对于f的值域中几乎所有的y,要计算f-1(y)是不可行的,就称f是单向函数。若某一单向函数加上某一条件后变得可逆,则称之为陷门单向函数,该附加条件就称为“陷门”。
2.1Diffie-Hellman-Merkie
2.1.1简介
Diffie-Hellman算法(简称DH算法)是公钥密码体制的开山鼻祖,至今仍被广泛应用。2002年Hellman追述了Ralph Merkie对公钥密码学的贡献并建议将本算法更名为Diffie-Hellman-Merkie算法。
2.1.2 实例
假设Alice要同Bob协商一个密钥,那么:
1. Alice和Bob选定两个素数p = 23和g = 5;
2. Alice选择一个秘密整数a = 6,计算A = ga modp = 56 mod 23 = 8,然后将A发送给Bob;
3. Bob选择一个秘密整数b = 15,计算B = gb</