简介
公开密钥也称为非对称密钥,每个人都有一对唯一对应的密钥:公开密钥(简称公钥)和私人密钥(简称私钥),公钥对外公开,私钥由个人秘密保存;用其中一把密钥加密,就只能用另一把密钥解密。非对称密钥加密算法的典型代表是RSA。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
提出1976年。当时在美国斯坦福大学的迪菲(Diffie)和赫尔曼(Hellman)两人提出了公开密钥密码的新思想(论文"New Direction in Cryptography"),不仅加密算法本身可以公开,甚至加密用的密钥也可以公开。但这并不意味着保密程度的降低。因为加密密钥和解密密钥不一样。这就是著名的公钥密码体制。也称作非对称密码体制。不同于对称性的密码学, 在于其加密钥匙只适用于单一用户。
包括一把私有的钥匙,仅有用户才拥有。
一把公开的钥匙,可公开发行配送,只要有要求即取得。
每支钥匙产生一个被使用来改变属性的功能。私有的钥匙产生一个私有改变属性的功能,而公开的钥匙 产生一个 公开改变属性的功能。这些功能是反向相关的,例如,如果一个功能是用来加密消息,另外一个功能则被用来解密消息。不论此改变属性功能的次序为何皆不重要。公开的钥匙系统的优势是两个用户能够安全的沟通而不需交换秘密钥匙。例如,假设一个送信者需要传送一个信息给一个收信者,而信息的秘密性是必要的, 送信者以收信者的公开的钥匙来加密,而仅有收信者的私有的钥匙能够对此信息解密。公开的钥匙密码学是非常适合于提供认证,完整和不能否认的服务, 所有的这些服务即是我们所知的数字签名。
RSARSA公钥系统发明于新思想提出后一年在麻省理工学院,里维斯特(Ronald Rivest)、沙米尔(Adi Shamir)和阿德勒曼(Len Adleman)提出第一个较完善的公钥密码体制——RSA体制,由三位发明人的姓氏首字母命名。这是一种建立在大数因子分解基础上的算法。它是第一个成熟的、迄今为止理论上最成功的公钥密码体制。它的安全性是基于数论中的大整数因子分解。该问题是数论中的一个困难问题,至今没有有效的算法,(即大整数因子分解不能在多项式时间内完成)这使得该体制具有较高的保密性。并且得到了广泛应用。不为人知的是,早在1970年的秘密研究中,英国情报机构GCHQ的数学家James H. Ellis便已发明非对称钥匙密码学,而且Diffie-Hellman与RSA都曾被Malcolm J. Williamson与Clifford Cocks分别发明于前。这两个最早的公钥系统提供优良的加密法基础,因而被大量使用。其他公钥系统还有Cramer-Shoup、Elgamal、以及椭圆曲线密码学等等。这些事件直到1997年历史文件解密的时候才为大众所知。
贡献除了加密外,公开钥匙密码学最显著的成就是实现了数字签名。数字签名,顾名思义,就是使普通签章的数字化,他们的特性都是某人可以轻易制造签章,但他人却难以仿冒。数字签名可以永久地与被签署信息结合,无法自信息上移除。数字签名大致包含两个算法:一个是签署,使用私密钥匙处理信息或信息的哈希值而产生签章;另一个是验证,使用公开钥匙验证签章的真实性。RSA和DSA是两种最流行的数字签名机制。数字签名是公开钥匙基础建设(public key infranstructures, PKI)以及许多网络安全机制(SSL/TLS, VPNs等)的基础。
公开钥匙算法大多基于计算复杂度上的难题,通常来自于数论。例如,RSA源于整数因子分解问题;DSA源于离散对数问题。发展快速的椭圆曲线密码学则基于和椭圆曲线相关的数学难题,与离散对数相当。由于这些底层的问题多涉及模数乘法或指数运算,相对于分组密码需要更多计算资源。因此,公开钥匙系统通常是复合式的,内含一个高效率的对称钥匙算法,用以加密信息,再以公开钥匙加密对称钥匙系统所使用的钥匙,以增进效率1。