加解密小知识

公钥加解密、数字签名、CA证书简介

2020-09-17  本文已影响0人  QuietHeart

本文对信息安全领域中的公钥加密、数字签名、CA证书技术进行初步介绍。

公钥加密与数字签名

公钥/私钥

如图:

图片.png

Source:

issuePublicKey.dia

由图可知,A与B各自持有自己的私钥,并对外发布自己的公钥;导致双方拥有对方的公钥。

公钥加密(RSA):公钥加密,私钥解密

关键在于:发送者是否真的将内容发送给了正确的接收者。

如图:

图片.png

Source:

rsa_encrypt_decrypt.dia

由图可知:

问题:发送者A需要为整个信件加密,过程缓慢。

数字签名(CA):私钥加密,公钥解密

关键在于:接收者接受的是否真的是发送者是本人发送的信息。

为确保B从正确的来源收到数据A。

如图:

图片.png

Source:

ca.dia

问题:发送者A的公钥,可能是伪造的。

从公钥加密、到数字签名、再到CA认证

前面只介绍了公钥加密与数字签名两个基本的技术。而CA才能确保这些技术更为实用,这里将用具体例子的方式,来逐步对它们进行讲述。

方式1,直接发送信件

发送者a:发送信件给b。

接受者b:

  1. 接收到信件。
  2. b的顾虑:这信件是不是a发的?

方式2,发送公钥后,直接非对称加密再发送

发送者a:

  1. a告诉b指纹(公钥)
  2. a再写信并且每个字都按下指纹(用私钥加密信件)
  3. a将按满指纹的信件发给b(密文)。

接收者b:

  1. 接收到的密文每个地方都验证指纹(加密解密)
  2. 验证后得到信件内容。
  3. b的顾虑:虽然确认了消息,但是–太慢了(非对称加密效率低下)。

注:信件经过公钥加密得到密文,密文只能通过与公钥配对儿的私钥才能解密还原为信件。

方式3,发送公钥后,附加数字签名再发送

发送者a:

  1. a告诉b指纹(公钥)
  2. a直接写信,并且在整个信上按下一个大大的手印(签名)。
  3. a将按了大大手印的信件发给b。

接收者b:

  1. 接收到按了大大手印的信件
  2. 读信前先用a的指纹检测信件的手印,确认是a的手印(由公钥解密签名获取的摘要与自己计算的匹配),进而得到信件内容。
  3. b的顾虑:嗯,消息确认挺快,但是——告诉我的指纹(公钥)真的是a的吗(第三方劫持篡改消息)?

注:信件通过hash生成摘要,摘要用私钥加密生成签名;签名只能通过与私钥配对儿的公钥才能解密回摘要,再次计算信件摘要与之匹配才算成功。

方式4,使用权威机构提供的证书传递公钥,再附加数字签名发送

发送者a:

  1. a去大家都信任的国家机构注册(认证机构私钥加密)自己的指纹等信息(证书)。
  2. a直接写信,并且在整个信上按下一个大大的手印(签名)。
  3. a将包含大手印的信件附带上身份信息一起发送给b。

接收者b:

  1. 先获取信件中的身份信息,得到相应指纹(用认证机构的公钥解密得到a的公钥,而非a直接发送公钥)。
  2. 检查得到的指纹和信件手印一致,确认是国家机构认可的a发送的信件,(由公钥解密签名获取的摘要与自己计算的匹配),进而得到信件内容。
  3. b的结论:相信这封信是a发的!(证书上其它信息描述具有这个公钥的人是a,将信任基础建立在绝对安全的常识机构上,而非个人)。

注:权威机构用权威私钥将发送者公钥及其它信息加密生成证书;用众所周知的权威机构公钥解密证书得到发送方公钥进而可靠地验证签名。

参考

上一篇下一篇

猜你喜欢

热点阅读