数字签名 —— 哈希 + 私钥加密

一、
签名 signature,表示指定的人,而不是别人,同意支票、信用卡收据、信件这类文件上描述的事情。那么,在制造计算机网络数字签名的时候,需要把一个独一无二的东西放到报文中。这样由于别人没有这个东西,只有自己有,所以可以表示真实身份。我们可以很容易地想到私钥。

于是,可以使用私钥对明文加密,表示这份密文是由拥有私钥的一方发出来的,而且只能是拥有私钥一方发出来的。

仿照现实世界,我们会对整个报文进行签名,也就是对整个报文用私钥进行加密,这样不是不可以,而是由于非对称密钥系统下,计算比较繁重,性能不高。

所以出现了先哈希再加密的方法。这种方法会先形成简短但抗碰撞的数字摘要,然后对数字摘要进行私钥加密,形成数字签名。这样的哈希算法有:MD5、SHA 等。

以上是数字签名的形成过程。它验证了报文的源身份信息,以及保证报文不被篡改。


二、

这里仍然存在一个问题:在验签的过程中,需要公钥来解密。只有公钥的获取不出现任何问题,那么以上数字签名才能发挥其真正的效果。那么公钥是如何获取的呢?

第一种方法,可以通过拥有私钥的一方向对方发送公钥。但这样存在着一个问题:如何保证这把公钥就是发送方的公钥?也就是说,如何保证公钥发送方的可信?公钥是公开的,任何人都可以声称自己拥有某个机构的公钥。这种方式存在公钥造假的问题。

第二种方法,也就是通过 CA 认证中心来验证。拥有私钥的一方,发送的不仅仅是公钥,而是发送包含公钥的证书。这样,如果证书可信,公钥就可信,这个问题就可以解决。于是,验证公钥的问题就转为了验证证书的问题。
在这里插入图片描述
三、
那么数字证书是如何验证的呢?

事实上,证书的验证也是需要数字签名,和前面的道理一样。因此可直接推断,证书不仅包含公钥,还包含这个证书的数字签名。这个证书一般是由 CA 颁布的,是由 CA 先哈希再用自己的私钥加密得到的。因此需要拿到 CA 的公钥(和哈希算法)才能进行解密。如 baidu.com 的证书是由 “GlobalSign Organization Validation CA - SHA256 - G2” 这个 CA 颁布的,所以现在的任务就是获取 “GlobalSign Organization Validation CA - SHA256 - G2” 的公钥。

转而又是获取公钥的过程。公钥同样是从证书中提取。于是从 “GlobalSign Organization Validation CA - SHA256 - G2” 证书中提取公钥。而 “GlobalSign Organization Validation CA - SHA256 - G2” 同样需要由它的证书颁布者来验签,也就是 “GlobalSign Root CA”。由于它是根证书,所以它是可信的,也就是说它的公钥是可信的,可以自验证。

数字签名的验证需要证书,而证书本身又包含数字签名。数字证书的验证会形成一个证书链,最终由根证书结束递归过程。

附:
本文章前半部分参考 《计算机网络自顶向下方法》,后半部分参考文章:https://www.zhihu.com/question/37370216

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值