彻底搞懂公钥、私钥、数字签名和数字证书

看完阮一峰老师讲解《数字签名是什么?》的文章后,还是有点稀里糊涂的不懂。有了很多疑问:

  • 公钥和私钥怎么又可以加密又可以解密?
  • 公钥是公开的,那么每个人都可以拿到,还有什么安全性可言呢?

于是自己再去各个网站看资料思考,总算是自己弄懂了其中的关系和用处。在这里我写下自己对公钥、私钥以及数字签名的了解。
(建议先看阮一峰老师的文章,看不懂再来看这篇,因为那篇文章里面有很多细节没有提到,而这篇讲的比较详细)

要懂公钥、私钥和数字签名是什么,首先就要先懂公钥和私钥的原则(重要):

  • 公钥和私钥可以看做都是可以加密、解密的。公钥和秘钥对应。
  • 只有自己持有的,不公开的是私钥;大家都可以拿到的,公开的是公钥
  • 一个秘钥加密,那么只有对应的秘钥才能解密。比如公钥A加密,私钥A解密;私钥B加密,公钥B解密
  • 如果可以用某个秘钥解密,那么必然是其对应的秘钥加密的。比如一个数据可以用公钥A解密,那么可以推导出该数据一定是用私钥A加密的;一个数据可以用私钥B解密,那么该数据一定是用公钥B加密的

所以通过以上原则,我们还要区分“加密”和“认证”的区别:
像原则的第3点,可以通过秘钥来进行“加密”,保护数据的私密性。
原则的第4点,通过成功的秘钥解密,可以认证发送加密数据的身份。

好了,开始说流程了,为了便于区分和理解,人物用中文名。为了容易理解,这里对秘钥也进行了ABC等的命名

张三和翠花在异地,他们之间通过信来交流

张三有一个私钥A,翠花有公钥A(当然公钥A其他人也可以获得)

翠花给张三写信,然后用公钥A加密了,张三收到信后用私钥A把信中加密的信息解密了出来(这时保证了数据的加密,因为只有张三有私钥A,只有私钥A能解密。但是注意,张三不能辨别该信是否是翠花发出的,因为该信用公钥A加密的,而公钥A谁都可以获得)

张三给翠花回信,他决定用“数字签名”的方法:对信件内容进行某种处理(例如Hash函数),生成信件的摘要(digest),然后用私钥A给摘要加密,附在信中一起送出。

翠花收到信后,为了判断是否是张三发出的,她用公钥A解密,得到摘要,然后对信中的内容进行和张三相同的处理(Hash函数)后和解密出来的摘要对比,就可以知道信中的信息是否完整,并且知道这封信是由张三发出的。

这时候隔壁老王出现了,老王用自己的公钥B偷偷替换了翠花电脑里面的公钥A,而翠花却不知道自己的公钥A被人替换。

当老王用自己的私钥B写信并且做成“数字签名”并加密发送给翠花。翠花收到信后用了自己以为是公钥A的秘钥(实际上是老王的公钥B来解密信件,之后翠花对比摘要会发现内容相同,但是自己却不知道该信件是由老王发出的。因为翠花以为自己用的是公钥A来解密信件。能用公钥A解密出的信件只有手持私钥A的张三才能加密,所以翠花理所应当地认为这封信就是张三发出的。

这时候怎么办?自己手持的公钥不安全,很容易遭到替换。而“证书中心”(CA)就是来解决这个问题的。张三先是去“证书中心”为自己的公钥做了认证,然后“证书中心”用自己的私钥C对张三的公钥A以及张三个其他相关信息进行加密,生成“数字证书”。

以后张三每次发送信件给翠花,照例在信件中对信息进行处理(Hash函数)形成摘要,然后用私钥A进行加密做成“数字签名”,以及增加了在信中附上“证书中心”的“数字证书”(现在信件中有:信件的信息、数字签名、数字证书),翠花收到后便用“证书中心”的公钥C解密,里面就有张三的真实公钥A以及其他相关信息。这个时候翠花就可以用这个真实的公钥A去解密信件中的“数字签名”,然后进行内容比对,从而判断出信件信息的完整性以及发信件的人是张三。

在以“证书中心”的公钥C不会被替换的保证前提下,翠花收到的信件如果能用公钥C打开核实里面的信息,那么里面存放的公钥就一定是真实可靠的。这样就不会出现公钥被调换的情况。“证书中心”的数字证书的作用就是传递公钥,保证公钥的真实性。

以上流程都是我个人的思考和理解,如有错误欢迎指出来,感谢!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值