图解HTTPS数字签名

6b066f9a8f0fc0c8513cb6e7f84301ec.jpeg

前言

近期在查阅HTTP相关的资料时,发现了几篇不错的文章,对于我们理解HTTP/HTTPS很有帮助。接下来几周会陆续发布。今天带给大家的是一篇有故事情节的小短文,文中通俗易懂地介绍了数字签名及https证书的工作原理。希望大家有所收获。

baa5c6bdd70208c0c0d79e32dc3f1ff5.png

从前有个小伙儿叫 Bob。他有两把密钥,一把是公钥,一把是私钥。

00c696aa054ae5134852876b973b413e.png

Bob的公钥可以给任何同事使用,但唯独私钥留作自用。密钥用于加密信息。信息加密处理后会变成一种“乱码”的状态。只有拥有相应密钥的人才能使它恢复原样。Bob的这两把密钥都可以加密数据。用其中一把密钥加密过的数据,只有用另一把密钥才能解密。

Susan (如下所示) 使用Bob的公钥加密了一则消息。只有Bob使用自己的私钥才可以解开这则消息。Susan的消息加密后,其他同事可以随便看,反正都是密文,没有Bob的私钥的话,谁也不知道原消息是啥。

1307693f8d130587909fec6a8c6cece2.png

在一些工具的帮助下,Bob可以使用自己的私钥给文档和其他数据添加数字签名。数字签名就好比是按的手印,是极难伪造的。此外,签名还能确保已签名的数据不被别人修改。

a37255efee2e507e3d0e8f42ece90093.png

首先,为了在文档上进行签名,Bob 对文档内容进行"哈希"处理,将数据压缩成几行文本。我们称之为消息摘要。(无法通过消息摘要得到原始的数据)

76950d9573295b8d2ed85112039b50f5.png

然后,Bob将消息摘要用自己的私钥进行加密。加密后的摘要就是数字签名。

89f03b68d5f4a98124c789ae7da977bb.png

最后,Bob将数字签名添加到文档。这样就完成了对数据的签名。

926dce77c75b9273b56d14b6ded12dd4.png

现在,Bob将这个签名后的文档发给了Pat。Pat收到文档后,该怎么处理呢?

首先,Pat的使用Bob的公钥解密签名,将签名还原成消息摘要。如果能还原成功的话,则证明这个文档确实是Bob签名的,因为只有Bob拥有私钥。Pat随后将文档数据进行哈希处理,得到一段消息摘要。如果消息摘要与从签名中解出来的消息摘要相同,Pat就明白文档中的数据没有被别人修改。

这时剧本有了变化…

此时有一个满腹牢骚的员工 Doug 想算计Pat。在 Doug 的操弄下, Pat虽然收到了一个有签名的消息和一个看上去似乎是Bob的公钥。但Pat并不知道自己得到的公钥,是Doug冒用Bob的名字创建的假公钥。那么问题来了,如果Pat不是亲自从Bob手里取得的公钥,他怎么才能确保得到的公钥是真的呢?

恰巧,Susan在企业证书颁发中心工作。Susan可以对Bob的公钥及其他信息进行审查确认后,对Bob提供的信息进行签名认证。然后颁发一个数字证书。有了Susan颁发的证书,Pat就知道拿到的公钥是真的了。

15162240c9c8fb83dac1de3694799f9f.png

现在,Bob的同事可以检查Bob的证书,确保他的公钥确实属于他。如果私钥被泄露或不再需要,Susan可以撤销签名。如果有人对Susan不信任的话,还可以找更权威的认证机构对Susan进行认证。

假设Bob将带有签名的文档发送给Pat。为了验证文档上的签名,Pat首先使用Susan(证书颁发机构)的公钥来检查Bob证书上的签名。如果能成功解密该证书,那么可以证明是Susan创建的该证书。证书解密后,Pat可以检查Bob的证书是否还在有效期,以及与Bob身份有关的所有证书信息是否都未更改。

然后Pat从证书中获取Bob的公钥,并使用它来检查Bob的签名。如果Bob的公钥成功地对签名进行了解密,则Pat可以确保签名是使用Bob的私钥创建。当然,如果签名有效,那么我们知道内容没有被Doug修改。

参考文献:http://www.youdzone.com/signature.html

推荐阅读

316f257100bbba467879e5ab2d9fc026.jpeg

好文我在看👇

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值