我们已经知道,非对称加密可以保证通信安全,但无法确认通信对象的身份。为了解决这个问题,就需要数字签名和数字证书技术了。

身份认证问题

非对称加密中,双方需要交换密钥,然后各自用对方的密钥加密发送的信息,对方则用自己的私钥去解密信息,这样保证了通信过程的安全,但没法确保通信对象的身份问题,第三方可以伪造身份,把自己的密钥给监听对象。

所以问题的核心在于身份认证。现实生活中我们是用身份证等证件进行身份认证,它的有效性由权威性国家机构担保。类似的,在互联网中,也有权威性机构作为担保,它就是 CA,又称为证书授权(Certificate Authority)中心。它通过数字证书来认证互联网用户身份。假如把公钥比作互联网用户的电话号码的话,那么 CA 就是电话局,通过证书来确认电话号码对应互联网用户。

数字证书是什么

一句话概括,数字签名就是用户信息 / 公钥的密文,数字证书就是数字签名文件。

举个例子,A 想要认证 A 的公钥,那么 A 需要去 CA(Certificate Authority)申请证书,CA 就会用 CA 的思钥来加密 A 的个人信息和 A 的公钥信息为密文,这个密文被称为数字签名,数字签名被签在一个文件中,这个文件就是数字证书。

B 想要与 A 通信,要先认证 A 的身份,那么 A 需要把该证书给 B,B 会去 CA 申请 CA 的公钥去解密该证书上的签名(密文),因为只有 CA 的公钥才能解密 CA 的私钥加密的签名,所以这个签名可以确保来自于 CA,确保安全。B 解密签名后获得了 A 的公钥和 A 的信息,就可以与 A 建立通信了。

这里 CA 的公钥是关键,所有人都需要 CA 的公钥才能去验证证书,CA 的公钥也被称为根证书。一般根证书都是预先安装在电脑或浏览器上的。