公钥可以用来做什么

Photo by Mo on Unsplash

数据加密是为了确保传输信道上的信息不被泄露。数据认证是为了确保传输信道上的数据不被篡改。非对称加密算法中的公钥既可以用来进行数据加密也可以用来进行数据认证。它们都是用到了私钥加密公钥解密和公钥加密私钥解密这一非对称加密性质。

数据加密——公钥加密

传递公钥用于数据加密。在 HTTPS 中双方交换公钥,双方分别使用对方的公钥对某个对称密钥进行加密,对端再用自己的私钥进行解密。

为了防止中间人攻击权威证书机构 (Certificate Authority,简称 CA) 对合法的服务器公钥信息利用自身的私钥生成数字签名,交由服务端一并发送给客户端。客户端在收到证书信息之后,利用浏览器中内置的、由 CA 派发的公钥对数字签名进行解密。若解密的数字签名与证书中的信息的摘要相吻合,那么就可以认为服务器端公钥未被篡改,客户端可以通过这个公钥来加密信息。

数字签名——公钥解密

服务器端私钥将载荷信息的摘加密成数字签名,然后派发公钥给客户端。客户端利用服务器派发的公钥来解密数字签名,看是否与载荷信息的摘要一致,若一致则说明载荷信息未被篡改。

用公钥进行解密的好处是,通信双方各自都可以对收到的数据进行认证。在这种情况下,假如使用传统的对称加密认证技术,那么通信双方就需要交换对称密钥。这在危机四伏的互联网上风险很大,一旦对称密钥泄露,通信的安全性就无法保障。但若是非对称加密技术,通信双方只需派发各自公钥给对端进行数据认证即可。由于公钥本身可以单独派发,因此具有很高的安全性。

参考链接

RS256 vs HS256: What’s the difference?

发表评论

电子邮件地址不会被公开。 必填项已用*标注