美文网首页
数字签名的理解

数字签名的理解

作者: chengzhx76 | 来源:发表于2017-06-14 13:57 被阅读156次

    这几天在学习HTTP协议,在了解到HTTPS的时候对其中几个概念不是很熟,特地整理一系列的文章来梳理下相关的概念。

    关于文中所涉及的密码学知识,可以查考上一篇笔记

    这篇笔记主要解释了“数字签名”(digital signature)和“数字证书”(digital certificate)的概念。

    原文网址:http://www.youdzone.com/signature.html

    数字签名是什么?

    1.

    鲍勃有两把钥匙,一把是公钥,另一把是私钥。

    2、

    鲍勃把公钥送给他们的朋友们:帕蒂、道格、苏珊,每人一把。

    3.

    苏珊要写一份迷信给鲍勃,她写完信用鲍勃的公钥加密,可以保证信的保密性。

    4.

    鲍勃收到信后,用私钥解密,就看到了信件的内容。前提是只要鲍勃的私钥不泄露,这封信就是安全的,即使落到别人手里,也无法解密。

    5.

    鲍勃给苏珊回信,决定采用“数字签名”。他写完信后先用Hash函数,生成信件的摘要(digest)。

    6.

    然后,鲍勃使用私钥,对这个摘要加密,生成“数字签名”(signature)。

    7.

    鲍勃将这个签名,附在信件下面,一起发给苏珊。

    8.

    苏珊收到信后,取下数字签名,用鲍勃的公钥解密,得到信件的的摘要。由此证明,这封信确实是鲍勃发出的。

    9.

    苏珊再对信件本身使用Hash摘要,将得到的结果和上一步得到的摘要进行对比。如果两者一致,说明信未被修改过。

    10.

    复杂的情况出现了。道格想欺骗苏珊,他偷偷的使用了苏珊的电脑,用自己的公钥(道格没有鲍勃的私钥,伪造的鲍勃的公钥)换走了鲍勃的公钥。此时,苏珊实际拥有的的是道格的公钥,但苏珊还以为是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成“数字签名”,写信给苏珊,让苏珊用假的鲍勃公钥进行解密。

    11.

    后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。他想了一个办法,要求鲍勃去找“证书中心(certificate authority,简称CA)”,为公钥做认证。证书中心的用自己的私钥对鲍勃的公钥和一些相关信息一起加密,生成“数字证书(Digital Certificate)”。

    12.

    鲍勃难道证书后,就放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

    13.

    苏珊收到信后,用CA的公钥解开数字证书,就可以拿到公钥了,然后就能证明“数字签名”是否真是鲍勃签的。

    14.

    下面我们看下应用数字证书的实例:https协议。这个协议主要用于网页加密。

    15.

    首先,客户端向服务器发出加密请求。

    16.

    服务端用自己的私钥加密网页后,连同本身的数字证书,一起发送给客户端。

    17.

    客户端(浏览器)的“证书管理器”,有“受信任的根证书颁发机构”列表。客户端会根据这张列表查看解开数字证书的公钥是否在列表内。

    18.

    如果数字证书记载的网址与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器就会发出警告。

    19.

    如果这张数字证书不是受信任的机构颁发的,浏览器会发出另外一种警告。

    20.

    如果证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。

    其他:

    加密:公钥加密、私钥解密

    认证:私钥加密、公钥解密

    谈谈我的理解,其实上面的例子从3个方面保证了信息的安全,信息内容,发信人,收信人。

    还是以信件为例,上面的信件来往案例把事情复杂化了,就以Susan给Bob单向发信为例,可以采取这样的方式,分别解决了如下3个问题:

    (1)信息内容安全:保证Susan发的信只有Bob能看(发信:Bob公钥加密=》收信:Bob私钥解密,除了Bob其他人看不了)

    (2)发信人安全:保证Bob收到的信确实是Susan发的(发信:信件本身使用Bob公钥加密=》收信:Bob私钥解密=》HASH函数得到摘要;数字签名:使用Susan私钥加密=》收到后使用Susan公钥解密=》得到摘要=》两个摘要对比)。核对一致后,Bob保证信一定是Susan发的,因为只有Susan的公钥才能解密数字签名。但Susan发信的时候不一定保证发给了Bob,她不知道用的Bob的公钥是不是正确的。

    (3)收信人安全:保证Susan发信一定是给Bob发的,所以通过引入权威的证书机构来发布数字证书,相当于一个公证机构,把大家的公钥搜集到一起进行公证和公示,然后大家去获取这样的数字证书,他们说这个是Bob,那大家都信任这个就是Bob。

    总结来说,数字签名就是保证发信人安全的(我签的我认账),数字证书是保证收信人安全的(权威机构说的,他是谁,大家都信)。

    [参考]

    阮一峰 - 什么是数字证书

    相关文章

      网友评论

          本文标题:数字签名的理解

          本文链接:https://www.haomeiwen.com/subject/cfhsqxtx.html