一、准备

  1. 角色:小白、美美、小黑。

  2. 剧情:小白和美美在谈恋爱;小黑对美美求而不得、心生怨念,所以从中作梗。

  3. 需求:小白要与美美需通过网络进行通信,联络感情,所以必须保证通信的安全性。

二、由通信过程中可能出现的问题来引出公钥、私钥、对称加密、非对称加密、hash加密、数字签名、数字证书、CA认证、https的相关知识

  1. 场景1: 小白和美美在 http 协议下进行通信。

    1.1 能否完成通信:能。

    1.2 还可能出现其他问题:容易受到网络中间人攻击:在http协议下进行通信,信息是没有进行加密的,在透明的网络环境中,一旦信息被小黑截获,小黑可以查看、篡改信息内容,难以保证信息的安全。—— 问题所在:信息没加密。

    1.3 解决办法:引入“公钥、私钥”对信息进行加密,详情见“场景2”。

  2. 场景2: 小白和美美依旧是在 http 协议下进行通信,但小白先准备了一对秘钥(公钥+私钥),私钥由小白自己保管,公钥则交给了美美。通信时,小白先用“小白的私钥”对信息进行加密,然后再发送给美美;美美收到信息后,用“小白的公钥”进行解密,得到明文。美美要给小白发信息时,先用“小白的公钥”对信息进行加密,然后再发送给小白;小白收到回复后,用“小白的私钥”进行解密,得到明文。

    2.1 公钥、私钥

    (1)what:公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。

    (2)特性:通过这种算法得到的密钥对能保证在世界范围内是独一的。

    (3)作用:对信息进行加密。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密,比如:用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。

    2.2 能否解决“网络中间人攻击”问题:能。因为信息是用“小白的私钥/公钥”进行加密了,小黑即使截获了信息,但手上没有“小白的秘钥”来对信息进行解密,所以无法查看到明文。

    2.3 还可能出现其他问题:美美都无法保证自己收到的信息是否是完整的。—— 问题所在:信息完整性无法保证。

    2.4 解决办法:采用“数字签名”的方式来对信息的完整性进行确认,详情见“场景3”。

  3. 场景3: 小白和美美依旧是在 http 协议下进行通信;小白依旧持有“小白的私钥”,美美则持有“小白的公钥”。小白每发出一封信件,都会先用hash函数生成信件的摘要,再用“小白的私钥”对摘要进行加密得到数字签名,最后将数字签名附在已加密的信件后面一同发给美美。美美收到信息后用“小白的公钥”对信件和数字签名进行解密,得到信件明文和摘要,再将信件明文通过Hash函数得到的摘要,最后将这个摘要和上一步得到的摘要进行对比,如果两者一致,就证明这封信未被修改过,收到的信息是完整的。

    3.1 数字签名

    (1)what:用hash函数生成信件的摘要,再用用户的私钥进行加密;

    (2)作用: 确保信息的完整性和不可抵赖性;

    3.2 hash加密:是一种不可逆的加密方法,将一段明文进行加密, 对方得到密文后不可以得到明文。

    3.2 能否解决“信息完整性”问题:能。

    3.3 还可能出现其他问题:即使保证了收到的信息是完整的,但难以保证用户的身份:小黑可以冒充小白,去和美美进行通信。小黑自己生成了一对秘钥(小黑的公钥+小黑的私钥),再偷偷把美美电脑中保存的“小白的公钥”替换成“小黑的公钥”,并冒充小白的身份和美美进行通信。美美并不知道自己电脑中保存的公钥已经被人掉包了,所以一如既往地通过该公钥和“小白”通着信。——问题所在:用户的身份难以保证。

    2.4 解决办法:引入“CA认证”,对小白的身份进行确认,详情见“场景4”。

  4. 场景4: 小白和美美依旧是在 http 协议下进行通信,小白的那对秘钥,私钥依旧由自己保管,把公钥交给美美。除此之外,小白还把自己的公钥和一些必要信息打包后交由CA进行管理,CA会将小白提交的信息通过“CA的私钥”加密后形成数字证书。(CA有它自己的一对秘钥,且“CA的私钥”由CA自己管理,"CA的公钥"则发放给用户。)

    4.1 什么是CA认证CA认证,即电子认证服务,是指为电子签名相关各方提供真实性、可靠性验证的活动。证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

    4.2 数字证书

    (1)what:CA的私钥对客户端的公钥和信息进行加密后得到的文件;

    (2)作用:① 证明用户身份;② 拿到用户的公钥;

    4.3  能否解决“用户身份认证”问题:能。小白用“小白的私钥”对信息进行加密后发给美美,美美先通过CA获得“小白的公钥”,并用“小白的公钥”对小白发来的密文进行解密。因为CA是受信任的第三方,所以通过CA获得的“小白的公钥”也是可以信任的。既然能够通过从CA获得的“小白的公钥”来对小白发来的密文进行解密,那么自然小白的身份也得以确认了。

    4.4 还可能出现其他问题:美美可以通过CA拿到小白的数字证书,小黑也可以通过CA获取到小白的数字证书(这里要引出“非对称加密的概念”),这样一来小白发出的信息依旧是不安全的。—— 问题所在:采用非对称加密时,只要持有公钥就能对 同一对秘钥中的私钥加密的信息 进行解密。

    4.5 非对称加密:小白持有私钥,美美和小黑都持有公钥, 持有公钥的一方用公钥进行加密,那么这个内容就只有持有私钥的那一方可以看见。但是如果是用私钥进行加密,那么持有公钥的每一方都可以看见。

    4.6 解决办法:采用“对称加密”的方式来保证信息的安全,详情见“场景5”。

  5. 场景5: 小白和美美依旧是在 http 协议下进行通信,小白只生成一个对称加密的私钥(单钥),并将这个“小白的私钥”复制了一份给美美,小白和美美都用这把“小白的私钥”对信件进行加密和解密。

    5.1 对称加密:通信双方都持有同一把私钥, 双方都是用私钥进行加密和解密。也就是说在网络间传输的都是密文,然后拿到密文后用私钥进行解密就能得到明文。

    5.2 能否解决“采用非对称加密时,加密信息多人可见”问题:能。只要小白和美美手中持有的“小白的私钥”不外泄,那么他们之间的通信就能保证只有他们可见。

    5.3 还可能出现其他问题:小白如何把“小白的私钥”给美美?如果通过网络发给美美,就有可能被小黑截获(“私钥的保存、传输”就基本决定了这个保密的安全性)。

    5.4 解决办法:①当面交换; ②通过“非对称加密”的方式,详情见“场景6”。

  6. 场景6:小白和美美在 https 协议下进行通信。

    6.1 https

    (1)what:用的是“对称加密”和“非对称加密”这两种方法混合,目的在于建立一条加密的、安全的通信通道。

    (2)https协议有关“通过 非对称加密 实现对 对称加密的秘钥 的安全传输”的实现步骤:

      ①服务端有一对秘钥(私钥+公钥),私钥由服务端自行持有,公钥则发给各个客户端;

      ②客户端只生成一只对称加密的私钥(单钥);

      ③客户端用“服务端的公钥”对“客户端的私钥”进行加密,然后发送给服务端;

      ④服务端收到客服端发来的信息,用“服务端的私钥”对信息进行解密,得到“客户端的私钥”;

      ⑤服务端和客服端往后的通信过程中,信息都可以用“客户端的私钥”对来加、解密,只要这把“客户端的私钥”不泄露出去,别人即使截获了某一方发出的密文也无法进行解密。

    (3)图解 https

      

    (4)https 的作用:①内容加密;②身份认证;③信息完整性。

    (5)效率:“对称加密”比“非对称加密”快1000倍。

  至此,小白和美美的通信安全问题得以解决,可以安心谈他们的恋爱了,撒花~

探究公钥、私钥、对称加密、非对称加密、hash加密、数字签名、数字证书、CA认证、https它们究竟是什么,它们分别解决了通信过程的哪些问题。的更多相关文章

  1. 一篇读懂HTTPS:加密原理、安全逻辑、数字证书等

    1.引言 HTTPS(全称: Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.本文,就来深入介绍下其 ...

  2. RSA 非对称加密 数字签名 数字证书

    什么是RSA加密算法 RSA加密算法是一种非对称加密算法,算法的数学基础是极大数分解难题. RSA加密算法的强度也就是极大数分解的难度,目前700多位(二进制)的数字已经可以破解,1024位认为是比较 ...

  3. 大话https演化过程(对称加密、非对称加密、公钥、私钥、数字签名、数字证书)

    大话https演化过程(包括概念:对称加密.非对称加密.公钥.私钥.数字签名.数字证书.https访问全过程)   在网络上发送数据是非常不安全的,非常容易被劫持或是被篡改,所以每次定向发送数据你都可 ...

  4. 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS【下】

    1.  HTTPS 1.1. 什么是HTTPS HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP.HTTPS的安全基础是安全套接层(Secure Soc ...

  5. 公钥、私钥、数字签名、数字证书、对称与非对称算法、HTTPS

    作者: yoyoso https://my.oschina.net/ioslighter/blog/359207 对公钥和私钥有点稀里糊涂的,搜索了一些资料,作一些整理吧,先看这个: 加密--公钥 看 ...

  6. https原理及其中所包含的对称加密、非对称加密、数字证书、数字签名

    声明:本文章已授权公众号Hollis转载,如需转载请标明转载自https://www.cnblogs.com/wutianqi/p/10654245.html(安静的boy) 一.为什么要使用http ...

  7. SSL及其加密通信过程

    SSL及其加密通信过程 什么是SSL SSL英文全称Secure Socket Layer,安全套接层,是一种为网络通信提供安全以及数据完整性的安全协议,它在传输层对网络进行加密.它主要是分为两层: ...

  8. 转!!通俗理解数字加密,数字签名,数字证书和https

    原博文地址:https://www.jianshu.com/p/4932cb1499bf 前言 最近在开发关于PDF合同文档电子签章的功能,大概意思就是在一份PDF合同上签名,盖章,使其具有法律效应. ...

  9. 公钥、私钥、CA认证、数字签名、U盾

    感谢传智播客的方立勋老师,在一个教学视频上,他巧妙地以蒋介石给宋美龄写密信作为例子,生动地讲述了软件密码学知识. 加密分为对称加密和非对称加密,我们传统理解的,发送数据之前使用一个加密器加密,接到数据 ...

随机推荐

  1. Vue进阶

    组件深入 过渡&动画 可复用性&组合 工具&规模化&内在 ****************参考*************** vue官方教程

  2. Capistrano:自动完成多台服务器上新版本的同步更新,包括数据库的改变

    https://baike.baidu.com/item/Capistrano/6844928?fr=aladdin   Capistrano是一种在多台服务器上运行脚本的开源工具,它主要用于部署we ...

  3. Vue 获取DOM元素ref

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 【u232】围棋游戏

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 为了增强幼儿园小朋友的数数能力,小虎老师给了一个家庭游戏作业.让小虎那一块空的围棋盘,随机在一些方格中 ...

  5. WPF 一个性能比较好的 gif 解析库

    本文介绍 Magick.NET ,这是 ImageMagick 的 .Net 封装,他支持 100 多种格式的图片,而 gif 也是他支持的.本文告诉大家如何使用这个库播放 gif 图 先给大家看一下 ...

  6. webpack4.0基本配置,超简单!

    最近复习了一下webpack,使用的是4.0版本. 下图是基本目录结构,最后留有代码地址,有兴趣可以去看看. 直接上代码(依赖未完全使用): 项目的所有依赖都可以安装,每个都有详细的注释.] cons ...

  7. k8s的持久化存储

    本例使用nfs 创建pv [root@k8s-master data]# vi pv.yaml apiVersion: v1kind: PersistentVolumemetadata: name: ...

  8. 谈谈IC、ASIC、SoC、MPU、MCU、CPU、GPU、DSP、FPGA、CPLD

    IC (integrated circuit) 集成电路:微电路.微芯片.芯片:集成电路又分成:模拟集成电路(线性电路).数字集成电路.数/模混合集成电路: 模拟集成电路:产生.放大.处理各种模拟信号 ...

  9. springcloud玩转单点登录【oauth】

    随着公司项目的庞大,单点登录变得尤为重要,那么怎么实现单点登录,下面已oauth为标准实现单点登录. [特别鸣谢:魔乐科技,附上官网:www.mldn.cn] 1:项目组织结构 本项目为oAuth修改 ...

  10. Django框架之中间件MiddleWare

    Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出.中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健 ...