图解-密码学核心思想
发布日期:2021-06-29 12:34:06 浏览次数:3 分类:技术文章

本文共 2415 字,大约阅读时间需要 8 分钟。

序言

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

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发的,并且内容内容没被人修改过,可以完全信任,放心阅读。


转载地址:https://bwshen.blog.csdn.net/article/details/82223408 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:深入理解密码学技术
下一篇:Java-数据加解密实现

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月08日 08时18分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

MySQL 安装教程(无脑版) 2019-04-29
IDEA 怎么删除一个Module 2019-04-29
走进数据科学:最好是通过比网课更好的方法 2019-04-29
AI革命第一步:最容易被忽略但必不可少的物联网 2019-04-29
2020年开发运维工具清单:选择开发运维工具堆栈吧 2019-04-29
效率提升法则:高效人士不会去做的4件事 2019-04-29
8.PostgreSQL约束 2019-04-29
【技术分享】使用AES加密技术保障数据安全 2019-04-29
【应用实例】布线多?成本高?不可靠?泽耀方案没烦恼! 2019-04-29
数据可视化工具:Matplotlib绘图 2019-04-29
用Python写个超级小恐龙跑酷游戏,上班摸鱼我能玩一天 2019-04-29
闺蜜看我用Python画了一幅樱花图,吵着要我给他介绍程序员小哥哥 2019-04-29
【Python爬虫实战】知乎热榜数据采集,上班工作摸鱼两不误,知乎热门信息一网打尽 2019-04-29
自从我学会了数据挖掘Matplotlib、Numpy、Pandas、Ta-Lib等一系列库,我把领导开除了 2019-04-29
Python抓取哔哩哔哩up主信息:只要爬虫学的好,牢饭吃的早 2019-04-29
有个码龄5年的程序员跟我说:“他连wifi从来不用密码” 2019-04-29
领导让我整理上个季度的销售额,幸好我会Python数据分析,你猜我几点下班 2019-04-29
【Python爬虫实战】为何如此痴迷Python?还不是因为爱看小姐姐图 2019-04-29
零基础自学Python,你也可以实现经济独立! 2019-04-29
ElasticSearch与Mysql对比(ElasticSearch常用方法大全,持续更新) 2019-04-29