一句话说明:
数字签名是为了保证消息传输的保密性,以及身份的验证。 而数字证书是为了保证数字签名的有效性。
案例分析:
场景:
小明现在发送一封情书给小红。 小明用自己的私钥加密情书发送给小红, 小红如果能用小明的公钥解密, 则证明这封情书是小明写的。
突发情况:
现在小强也喜欢小红, 他偷偷把 小红哪儿的小明的公钥private_key_ming换成自己的公钥private_key_qiang。 这样他就可以用自己的私钥加密消息发送给小红, 小红收到消息之后, 用private_key_qiang解密成功。 以为是小明给他发送的情书。 这样小强就冒充了小明。 而 小红无法解密小明发送过来的消息,就直接丢弃了。可怜的小明就无法发送消息给小红了。
方案:
小明到公安局, 请求公安局用他们的私钥加密自己的公钥连同自己的信息, 得到的定为CA, 小明每次法消息的时候, 将自己的消息和CA一并发送到小红那儿, 小红用红安局的公钥首先解密CA, 获得小明的公钥以及小明的信息,然后再解密小明的消息。 这样就可以自己的公钥不会被小明替换了。
方案分析:
小强也去公安局加密自己的秘钥和自己的信息, 得到的是CA_qiang, 将CA_qiang发送到小红那儿, 小红解密获得公钥以及公钥持有者的信息。 判断出来是小强,则无法冒充小明。 而公安局有一套系统有方案保证小红的存放的公安局秘钥是没有办法被替换的。 这套方案对应计算机领域。 根证书都是内置在操作系统中的。
公钥私钥的相关简介, 建议参考:
https://blog.csdn.net/u013985241/article/details/88938035
https://www.jianshu.com/p/46e48bc517d0