公开密钥加密(public-key cryptography)也称为非对称密钥加密(asymmetric cryptography),是一种密码学算法类型。该加密算法使用两个不同的密钥:加密密钥和解密密钥。
简介公开密钥加密(public-key cryptography),也称为非对称加密(asymmetric cryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。1
该思想最早由瑞夫·墨克(Ralph C. Merkle)在1974年提出,之后在1976年。惠特菲尔德·迪菲(Whitfield Diffie)与马丁·赫尔曼(Martin Hellman)两位学者以单向函数与单向暗门函数为基础,为发讯与收讯的两方创建密钥。
如果加密密钥是公开的,这用于客户给私钥所有者上传加密的数据,这被称作为公开密钥加密(狭义)。例如,网络银行的客户发给银行网站的账户操作的加密数据。公钥加密的另一用途是身份验证:用私钥加密的信息,可以用公钥拷贝对其解密,接收者由此可知这条信息确实来自于拥有私钥的某人。
如果解密密钥是公开的,用私钥加密的信息,可以用公钥对其解密,用于客户验证持有私钥一方发布的数据或文件是完整准确的,接收者由此可知这条信息确实来自于拥有私钥的某人,这被称作数字签名,公钥的形式就是数字证书。例如,从网上下载的安装程序,一般都带有程序制作者的数字签名,可以证明该程序的确是该作者(公司)发布的而不是第三方伪造的且未被篡改过(身份认证/验证)。公钥的形式就是数字证书。
优点与对称密钥加密相比,优点在于无需共享的通用密钥,解密的私钥不发往任何用户。即使公钥在网上被截获,如果没有与其匹配的私钥,也无法解密,所截获的公钥是没有任何用处的。
它可以很好地适应开放性的使用环境。因为密钥管理相对简单,可方便地实现数字签名和验证,对解决电子商务活动中的“瓶颈”,如对传输数据进行加密、数字签名、公证的方法等,很有实用价值。
过程假设两个用户A向B发送信息,B的公钥为c,对应私钥(也是属于B的)为d,明文为x。
A用公钥对明文进行加密形成密文c(x),然后传输密文;
B收到密文,用私钥对密文进行解密d(c(x)),得到要通信的明文x。
B向A发送信息反之。
常见公钥加密算法常见的公钥加密算法有:2RSA、ElGamal、背包算法、Rabin(RSA的特例)、迪菲-赫尔曼密钥交换协议中的公钥加密算法、椭圆曲线加密算法(Elliptic Curve Cryptography, ECC)。使用最广泛的是RSA算法(由发明者Rivest、Shmir和Adleman姓氏首字母缩写而来)是著名的公开金钥加密算法,ElGamal是另一种常用的非对称加密算法。
本词条内容贡献者为:
王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所