今天,我读到一篇好文章。

它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。

我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻译出来了。

文中涉及的密码学基本知识,可以参见我以前的笔记。

====================================================

数字签名是什么?

作者:David Youd

翻译:阮一峰

原文网址: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.

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

(完)

from :http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

公钥,私钥,数字签名,证书相关推荐

  1. 公钥 私钥 数字签名 CA证书

    加密 简单来说分为两种,对称加密和非对称加密. 对称加密 加密和解密用的是同一个秘钥,在对称加密算法中常用的算法有:DES.3DES.TDEA.Blowfish.RC2.RC4.RC5.IDEA等.这 ...

  2. 使用keytool和openssl生成RSA公钥私钥和证书,

    RSA公钥私钥证书,使用keytool和openssl生成 生成JKS文件命令 用kes文件 生成公钥和证书命令 重中之中!!!!!! JKS文件 你不要打开 直接复制,挪到你用的位置,或者替换你之前 ...

  3. http、https 协议运行过程 公钥私钥,证书存放位置,传递证书,(非)对称加密。

    http 采用的TCP / IP通信协议,http默认的是 80 端口.主要特点: 1.无连接 2.无状态 3.媒体独立 参考:https://blog.csdn.net/qq_41291945/ar ...

  4. 私钥、公钥、数字签名、数字证书、HTTPS

         加密:公钥加密,私钥解密      认证:私钥加密,公钥解密 如果A给B发送一个加密的有数字签名的文件,会怎么样呢? 首先A有自己的公钥和私钥:A_public_key, A_private ...

  5. 绘图解谜:公钥、私钥、证书

    原文网址:http://www.youdzone.com/signature.html 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥. 2. 鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊---- ...

  6. 公钥与私钥,数字签名

    client (有w的公钥)              < --------------------------------------------------->             ...

  7. 公钥私钥证书与https

    公钥私钥 非对称加密: 在一个过程中使用两个密钥,公共密钥用于加密信息,私用密钥用于解译加密的信息.这种加密方法称为非对称加密,也称为公钥加密,因为其中一个密钥是公开的(另一个私钥则需要自己保密). ...

  8. 证书——为公钥加上数字签名

    一. 证书 公钥是否合法-->证书:将公钥当作一条消息,由一个可信的第三方对其签名后所得到的公钥. 公钥证书:PKC 认证机构(CA):认定"公钥实属于此人"并能够生成数字签 ...

  9. 公钥、私钥、证书、加密、解密、加签、验签

    https://blog.csdn.net/woniu211111/article/details/108114402 明文.密文.密钥.加密.解密 明文:指没有经过加密的信息/数据. 密文:明文被加 ...

  10. 学习笔记:公钥私钥 签名验签 加密解密 CA 证书

    重点: 1.区分加密解密和签名验签(在非对称加密情景下) 加密解密:#A给B发消息# A用B的公钥进行运算(加密),B收到后用B自己的私钥进行逆向运算(解密) 签名验签:#A给B发消息# A用A自己的 ...

最新文章

  1. as3.0 删除子元件
  2. CakePHP 2.x CookBook 中文版 第二章 安装
  3. Exposing/Accessing JBoss JNDI Objects/Datasources From an External JVM
  4. flume案例-flume级联-配置文件编写
  5. 商业项目中最受欢迎的 7 种编程语言
  6. 1.0jpa 2.0_JPA 2.1类型转换器–持久枚举的更好方法
  7. 深度剖析WinPcap之(九)——数据包的发送过程(8)
  8. Kotlin入门(29)任务Runnable
  9. MariaDB5.5.32 绿色版下载安装一条龙
  10. 测试先知和启发式方法
  11. matlab getdata函数,用getdata函数读取数据的时候数据读取不过来
  12. win7护眼透明主题 “魅力win7”
  13. twincat3授权
  14. VC++6.0如何找到“丢失”的对话框控件工具箱
  15. Firefox,火狐about:config设置详解
  16. 海南大学计算机科学与技术知乎,海南大学计算机科学与技术怎么样
  17. 第三方支付接口之微信扫码支付
  18. 你是否在Microsoft Edge上测试你的网站?
  19. matlab某分子由25个原子组成,清华大学数学实验实验7无约束优化1
  20. java毕业设计宝马官网Mybatis+系统+数据库+调试部署

热门文章

  1. LooseScan Strategy
  2. Python结合selenium自动领取无忧币的脚本
  3. 用lm()拟合回归模型
  4. Android开发之PullToRefresh的Click点击事件的监听实现长按删除Item
  5. 在排序数组中,找出给定数字的出现次数
  6. .Net 3.0 项目与.Net4.0项目之间互相引用的问题.
  7. 【代码保留】IP地址排序(字符串分隔补齐)
  8. 《C#高级编程》笔记系列--点滴记录(持续更新中……)
  9. DB2存储过程分页测试
  10. 移植oprofile到海思