数字证书用来证明某个公钥是谁的,并且内容是正确的。
对于非对称加密算法和数字签名来说,很重要的一点就是公钥的分发。一旦公钥被人替换(典型的如中间人攻击),则整个安全体系将被破坏掉。
怎么确保一个公钥确实是某个人的原始公钥?
这就需要数字证书机制。
顾名思义,数字证书就是像一个证书一样,证明信息和合法性。由证书认证机构(Certification Authority,CA)来签发,权威的 CA 包括 verisign 等。
数字证书内容可能包括版本、序列号、签名算法类型、签发者信息、有效期、被签发人、签发的公开密钥、CA 数字签名、其它信息等等,一般使用最广泛的标准为 ITU 和 ISO 联合制定的 X.509 规范。
其中,最重要的包括 签发的公开密钥
、CA 数字签名
两个信息。因此,只要通过这个证书就能证明某个公钥是合法的,因为带有 CA 的数字签名。
更进一步地,怎么证明 CA 的签名合法不合法呢?
类似的,CA 的数字签名合法不合法也是通过 CA 的证书来证明的。主流操作系统和浏览器里面会提前预置一些 CA 的证书(承认这些是合法的证书),然后所有基于他们认证的签名都会自然被认为合法。
后面章节将介绍的 PKI 体系提供了一套完整的证书管理的框架。