图解-密码学核心思想

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 图解-密码学核心思想

序言
本文是一个图文故事,旨在让陷于密码学苦海的同胞们生动地理解 :

1、非对称加密
2、关于公钥
3、关于私钥
4、散列函数
5、消息摘要
6、数字签名
7、数字证书
8、证书机构

等密码学和信息安全体系的基础概念的地位与作用。

图文故事
1、 鲍勃有两把钥匙,一把是公钥,另一把是私钥。

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

3、苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结
(1) 概念解释
回顾文章开头指出的概念,下面将给出结合本文的解释:

1、非对称加密:避免了对称加密技术产生庞大的密钥的弊端,实际应用于加密(传输)对称密钥等短信息(因效率太慢)。

2、关于公钥:公钥用于客人给主人写信时加密信件,以及客人收到回件时验证数字签名。

3、关于私钥:私钥用于主人查看(公钥)加密过的来件,以及回复信件时加密信件的消息摘要(而不是直接加密长篇的信件)。

4、散列函数:如MD5、SHA等哈希算法,用于生成消息摘要,目的在于防止信件(消息)内容被篡改(“雪崩效应”:如果信件内容稍有篡改,哈希值将大变)。

5、消息摘要:对信件(消息)内容进行散列函数计算,生成固定长度的简短摘要。

6、数字签名:数字签名是私钥加密消息摘要后的产物,用于证实信件(消息)的发送方的身份。

7、数字证书:数字证书是证书机构颁发给用户的,里头包含用户的公钥。该公钥和其他相关信息(有效期等)一起被证书颁发机构的私钥加密了,形成数字证书,用于证明某公钥确实属于某用户。

8、证书机构:相当于权威的公安局(信用无人质疑),给公民颁发身份证(数字证书)。用于证明用户的公钥的可信性(不被伪造)。证书机构将自己的公钥公示天下,用自己的私钥加密每个已注册的合法用户的公钥,形成数字证书并颁发给用户。

(2) 验证思想
先来回忆下数字签名:

解密过程:

假设B给A发了一封信(里头含有 数字签名+数字证书),用户A在核实收到的信件确实原封不动地来源于用户B,而不是源于坏人C发的(或者被他更改过)时,需要经历以下几步:

1、验证数字证书——核实证书来源,获取用户公钥

使用证书机构(权威的公安局)提供的公钥(已公示天下),验证信件里头的数字证书,获得发件者合法的真实公钥(核实了证书的来源,确实是B的证书没错了)——因为证书机构(说话可信的公安机关)可以通过此证书告诉A,此证属于B,并且它的公钥为XXXXXXXXXX;

2、验证数字签名——核实发件者身份,以及信息完整性

(1)核实发件者身份

接下来咱们就用上面获得B的公钥,去尝试验证信件里头的数字签名(数字签名是信件里头除了数字证书以外,附带的第二个证件),如果能成功验证则可确认信件确实是B发的(前面的一步只证实了信件里头的数字证书记录的确实是B的并且获取了B的公钥,但是并未核实此信件一定是B发的,可能是别人发的,附加了B的证书而已嘛);

(2)核实内容完整性(真实性)

证明了是B发的以后,咱们就开始证明信件正文内容是否被篡改过了。此时就需要用到信件里头(除了数字证书以外)的另一个签证了——数字签名(还记得不,数字签名是B用她的私钥加密她的原始信件的消息摘要形成的)。所以此处我们只需要用B的公钥验证数字证书,并且将得到的结果与信件正文的消息摘要(自己计算一遍,采用的Hash算法在数字证书中有记录)比较一下是否一致,如果一致,证明没有被篡改。

至此,A就完整地验证了此信件确实是B发的,并且内容内容没被人修改过,可以完全信任,放心阅读。
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_39190897/article/details/82223408

目录
相关文章
|
5月前
|
算法 安全 PHP
密码学系列之二:密码学基本概念
密码学系列之二:密码学基本概念
密码学系列之二:密码学基本概念
|
5月前
|
算法 Android开发
Android签名算法的原理
Android签名算法的原理
61 0
|
5月前
|
机器学习/深度学习 算法 JavaScript
密码学系列之四:一文搞懂序列密码
密码学系列之四:一文搞懂序列密码
|
12月前
|
算法 C# C++
C++算法:多源最短路径的原理及实现
C++算法:多源最短路径的原理及实现
|
5月前
|
机器学习/深度学习 算法 安全
密码学的100个基本概念
密码学的100个基本概念
|
5月前
|
人工智能 自然语言处理 算法
算法01-算法概念与描述
算法01-算法概念与描述
|
10月前
|
缓存 算法 搜索推荐
算法基础概念
算法基础概念
47 2
|
12月前
|
算法 搜索推荐 C语言
深入探讨数据结构中的经典算法:原理、应用
在计算机科学中,数据结构和算法是解决复杂问题的关键。本文将深入研究几个常用的数据结构算法,包括它们的原理、应用场景,并提供详细的C语言实现。我们将介绍查找算法、排序算法、图算法和动态规划算法的原理和实现方式。
179 0
|
算法 程序员 C#
谈谈算法的基本思想
谈谈算法的基本思想
59 0
|
算法 搜索推荐
50.【算法图解】
50.【算法图解】
56 0