数字签名过程

来源:互联网 发布:nginx cc攻击防御 编辑:程序博客网 时间:2024/06/14 15:37

转载自:http://news.cnblogs.com/n/111348/

数字签名是什么?

作者:David Youd

翻译:阮一峰

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

1.

clip_image001

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

2.

clip_image002

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

3.

clip_image003

苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果。

4.

clip_image004

鲍勃收信后,用私钥解密,看到信件内容。

5.

clip_image005

鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest)。

6.

clip_image006

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

7.

clip_image007

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

8.

clip_image008

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

9.

clip_image009

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

10.

clip_image010

复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。因此,他就可以冒充鲍勃,写信给苏珊。

11.

clip_image011

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

12.

clip_image012

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

13.

clip_image013

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

14.

clip_image014

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

15.

clip_image015

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

16.

clip_image016

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

17.

clip_image017

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

18.

clip_image018

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

19.

clip_image019

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

20.

clip_image020

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


详细过程转载自:http://blog.chinaunix.net/uid-26149879-id-2240496.html

1,用户A将明文通过hash运算(散列)生成数字摘要1,用户A用自己的私钥对摘要进行加密生成数字签名1.

2,用户A将明文+数字签名1+A用户的公钥(证书),准备将这些信息发到B用户,但是这个过程中,用户A明文是不安全的是可见的,我们需要对这三个文件进行加密。

3,用户A通过一个“对称加密”(对称加密速度很快,知道密钥就可以解密)对其进行加密将其生成秘文1,要想这次加密成功关键就是要保护这个对称加密的密钥1

4,为了保证上面的加密安全,使用用户B的公钥对“对称加密的密钥1”进行了一次加密处理,生成一个数字信封1,此时这个数字信封1+秘文1打包装入就可以发送给用B了。

5,用户B接收到信,看到数字信封1+秘文1,用户B用私钥解密数字信封1,得到了“对称加密的密钥1”,通过这个对称加密密钥对秘文1解密,就可以解开密文。

6,解开秘文1解则看到了A的明文+数字签名1+A用户的公钥(证书),这三个文件,这个时候已经可以确认是用户A发的信息了,但是还要验证文件在传输过程中是否被篡改。

7,用户B将明文通过hash运算(散列)生成数字摘要2,同时用得到的A用户的公钥(证书)对数字签名1进行解密生成原来的数字摘要1,如果此时的数字摘要1数字摘要2相同那么说明整个过程是安全而有效的。

0 0
原创粉丝点击