公钥,私钥,数字签名,证书
今天,我读到一篇好文章。
它用图片通俗易懂地解释了,"数字签名"(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
公钥,私钥,数字签名,证书相关推荐
- 公钥 私钥 数字签名 CA证书
加密 简单来说分为两种,对称加密和非对称加密. 对称加密 加密和解密用的是同一个秘钥,在对称加密算法中常用的算法有:DES.3DES.TDEA.Blowfish.RC2.RC4.RC5.IDEA等.这 ...
- 使用keytool和openssl生成RSA公钥私钥和证书,
RSA公钥私钥证书,使用keytool和openssl生成 生成JKS文件命令 用kes文件 生成公钥和证书命令 重中之中!!!!!! JKS文件 你不要打开 直接复制,挪到你用的位置,或者替换你之前 ...
- http、https 协议运行过程 公钥私钥,证书存放位置,传递证书,(非)对称加密。
http 采用的TCP / IP通信协议,http默认的是 80 端口.主要特点: 1.无连接 2.无状态 3.媒体独立 参考:https://blog.csdn.net/qq_41291945/ar ...
- 私钥、公钥、数字签名、数字证书、HTTPS
加密:公钥加密,私钥解密 认证:私钥加密,公钥解密 如果A给B发送一个加密的有数字签名的文件,会怎么样呢? 首先A有自己的公钥和私钥:A_public_key, A_private ...
- 绘图解谜:公钥、私钥、证书
原文网址:http://www.youdzone.com/signature.html 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥. 2. 鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊---- ...
- 公钥与私钥,数字签名
client (有w的公钥) < ---------------------------------------------------> ...
- 公钥私钥证书与https
公钥私钥 非对称加密: 在一个过程中使用两个密钥,公共密钥用于加密信息,私用密钥用于解译加密的信息.这种加密方法称为非对称加密,也称为公钥加密,因为其中一个密钥是公开的(另一个私钥则需要自己保密). ...
- 证书——为公钥加上数字签名
一. 证书 公钥是否合法-->证书:将公钥当作一条消息,由一个可信的第三方对其签名后所得到的公钥. 公钥证书:PKC 认证机构(CA):认定"公钥实属于此人"并能够生成数字签 ...
- 公钥、私钥、证书、加密、解密、加签、验签
https://blog.csdn.net/woniu211111/article/details/108114402 明文.密文.密钥.加密.解密 明文:指没有经过加密的信息/数据. 密文:明文被加 ...
- 学习笔记:公钥私钥 签名验签 加密解密 CA 证书
重点: 1.区分加密解密和签名验签(在非对称加密情景下) 加密解密:#A给B发消息# A用B的公钥进行运算(加密),B收到后用B自己的私钥进行逆向运算(解密) 签名验签:#A给B发消息# A用A自己的 ...
最新文章
- as3.0 删除子元件
- CakePHP 2.x CookBook 中文版 第二章 安装
- Exposing/Accessing JBoss JNDI Objects/Datasources From an External JVM
- flume案例-flume级联-配置文件编写
- 商业项目中最受欢迎的 7 种编程语言
- 1.0jpa 2.0_JPA 2.1类型转换器–持久枚举的更好方法
- 深度剖析WinPcap之(九)——数据包的发送过程(8)
- Kotlin入门(29)任务Runnable
- MariaDB5.5.32 绿色版下载安装一条龙
- 测试先知和启发式方法
- matlab getdata函数,用getdata函数读取数据的时候数据读取不过来
- win7护眼透明主题 “魅力win7”
- twincat3授权
- VC++6.0如何找到“丢失”的对话框控件工具箱
- Firefox,火狐about:config设置详解
- 海南大学计算机科学与技术知乎,海南大学计算机科学与技术怎么样
- 第三方支付接口之微信扫码支付
- 你是否在Microsoft Edge上测试你的网站?
- matlab某分子由25个原子组成,清华大学数学实验实验7无约束优化1
- java毕业设计宝马官网Mybatis+系统+数据库+调试部署