今天这篇文章,讲通过对话的形式,让你由浅入深着知道,为什么 Https 是安全的。

一、对称加密

一禅:在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥对数据进行加密,客户端收到加密数据之后,用刚才收到的密钥进行解密。如图:

当然,如果客户端要给服务器发送数据,也是采用这把密钥来加密,这里为了方便,我采用单方向传输的形式

小白:那万一密钥在传输的过程中被别人截取了怎么吧?

例如:

假如服务器用明文的方式传输密钥给客户端,然后密钥被中间人给捕获了,那么在之后服务器和客户端的加密传输过程中,中间人也可以用他捕获的密钥进行解密。这样的话,加密的数据在中间人看来和明文没啥两样

二、非对称加密

一禅:这种方法就是,让客户端和服务器都拥有两把钥匙,一把钥匙是公开的(全世界知道都没关系),我们称之为公钥;另一把钥匙则是保密的(只有自己本人才知道),我们称之为私钥。这且,用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密

这样,服务器在给客户端传输数据的过程中,可以用客户端明文给他的公钥进行加密,然后客户端收到后,再用自己的私钥进行解密。客户端给服务器发送数据的时候也一样采取这样的方式。这样就能保持数据的安全传输了。画个图理解一下:



一禅:处理方式就是结合 对称加密+非对称加密这两种方式,我们可以用非对称加密的方式来传输对称加密过程中的密钥,之后我们就可以采取对称加密的方式来传输数据了。具体是这样子的:

服务器用明文的方式给客户端发送自己的公钥,客户端收到公钥之后,会生成一把密钥(对称加密用的),然后用服务器的公钥对这把密钥进行加密,之后再把密钥传输给服务器,服务器收到之后进行解密,最后服务器就可以安全着得到这把密钥了,而客户端也有同样一把密钥,他们就可以进行对称加密了。

小白:例如:

服务器以明文的方式给客户端传输公钥的时候,中间人截取了这把属于服务器的公钥,并且把中间人自己的公钥冒充服务器的公钥传输给了客户端。

之后客户端就会用中间人的公钥来加密自己生成的密钥。然后把被加密的密钥传输给服务器,这个时候中间人又把密钥给截取了,中间人用自己的私钥对这把被加密的密钥进行解密,解密后中间人就可以获得这把密钥了。

最后中间人再对这把密钥用刚才服务器的公钥进行加密,再发给服务器。如图:

毫无疑问,在这个过程中,中间人获取了对称加密中的密钥,在之后服务器和客户端的对称加密传输中,这些加密的数据对中间人来说,和明文没啥区别。

数字证书登场

在刚才的讲解中,我们知道,之所以非对称加密会不安全,是因为客户端不知道这把公钥是否是服务器的,因此,我们需要找到一种策略来证明这把公钥就是服务器的,而不是别人冒充的。

解决这个问题的方式就是使用数字证书,具体是这样的:

我们需要找到一个拥有公信力、大家都认可的认证中心(CA)

服务器在给客户端传输公钥的过程中,会把公钥以及服务器的个人信息通过Hash算法生成信息摘要。如图

为了防止信息摘要被人调换,服务器还会用CA提供的私钥对信息摘要进行加密来形成数字签名。如图:

并且,最后还会把原来没Hash算法之前的个人信息以及公钥 和 数字签名合并在一起,形成数字证书。如图

当客户端拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密来得到信息摘要,然后对数字证书里服务器的公钥以及个人信息进行Hash得到另外一份信息摘要。最后把两份信息摘要进行对比,如果一样,则证明这个人是服务器,否则就不是。如图:

这样,就可以保证服务器的公钥安全着交给客户端了。

其实,(有些)服务器一开始就向认证中心申请了这些证书了(有没有看过没有证书的网站在地址栏会被标出警告?),而客户端是,也会内置这些证书。如图:

当客户端收到服务器传输过来的数据数字证书时,就会在内置的证书列表里,查看是否有解开该数字证书的公钥,如果有则…,如果没有则…

兄dei,如果觉得我写的不错,不妨帮个忙

1、关注我的原创微信公众号「帅地玩编程」,每天准时推送干货技术文章,专注于写算法 + 计算机基础知识(计算机网络+ 操作系统+数据库+Linux),听说关注了的不优秀也会变得优秀哦。

2、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我,嘻嘻。

作者简洁

作者:大家好,我是帅地,从大学、自学一路走来,深知算法计算机基础知识的重要性,所以申请了一个微星公众号『帅地玩编程』,专业于写这些底层知识,提升我们的内功,帅地期待你的关注,和我一起学习。 转载说明:未获得授权,禁止转载

漫话:什么是 https ?这应该是全网把 https 讲的最好的一篇文章了相关推荐

  1. 微信小程序之后台https域名绑定以及免费的https证书申请

    微信小程序在11月3号发布了,这是一个全新的生态,没有赶上微信公众号红利的开发者,运营者可别错过这趟车了. 但是微信的后台需要全https,之前我还不相信,后台注册了后进后台才发现,服务器配置如下图 ...

  2. 老弟,你连HTTPS 原理都不懂,还给我讲“中间人攻击”,逗我吗...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:leapmie 来源:https://urlify.cn/z ...

  3. 用了 HTTPS 就一定安全吗?HTTPS 原理分析——带着疑问层层深入

    随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议.大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL .非对称加密. CA证 ...

  4. 大型网站的 HTTPS 实践(1):HTTPS 协议和原理

    转自:http://op.baidu.com/2015/04/https-s01a01/ 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重 ...

  5. (多图)老弟,你连HTTPS 原理都不懂,还给我讲“中间人攻击”,逗我吗...

    HTTPS 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议.大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL .非对称加 ...

  6. tomcat配置https以及http强制跳转https(如何生成证书)

    https介绍: HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...

  7. 微信小程序一定要用https的理由,小程序使用HTTPS链接分析

    微信小程序一定要用https的理由,小程序使用HTTPS链接分析 一.HTTPS HTTPS是HTTP的安全版,在HTTP的基础上加入SSL证书 (服务器证书)后形成的安全协议,不但可以建立信息加密通 ...

  8. 网络进阶:用了HTTPS就安全了吗?HTTPS 会被抓包吗?

    随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议.大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL .非对称加密. CA证 ...

  9. ExternalDocumentationLinkImpl(url=https://developer.android.com/reference/, packageListUrl=https://d

    dokka 问题 java.lang.RuntimeException: Exception while loading package-list from ExternalDocumentation ...

最新文章

  1. 极米亮相CES展 首推3000元内1080p无屏电视
  2. 什么是API,SDK?它们之间有什么关系?
  3. open source ecg_苹果watchOS 7.1 正式版发布:ECG功能上线多国
  4. java 获取当前时间月加1 ,年加1
  5. JAX-RS和OpenAPI对Hypermedia API的支持:任重而道远
  6. antd select多选_关于antd Select 限制选择个数的解决方案
  7. 详述Visual Studio 代码远程开发扩展中的远程命令执行漏洞
  8. python如何爬取图片到指定文件夹论文_基于Python的图片爬虫程序设计
  9. React redux
  10. 通过wget在Linux上下载Java JDK会显示在许可证页面上
  11. MLFlow︱机器学习工作流框架:介绍(一)
  12. python seo百度_Python与seo,百度关键词相关搜索关键词采集源码
  13. 【HDL系列】半减器、全减器和减法器原理和设计
  14. uniapp switch按钮的使用开关按钮效果demo(整理)
  15. SO-Pose: Exploiting Self-Occlusion for Direct 6D Pose Estimation
  16. 3-D Quasi-Recurrent Neural Network for Hyperspectral Image Denoising
  17. php做到聊天发图片,网页聊天框发送表情图片实现方法
  18. MOOC翁恺老师零基础学Java语言课程编程题——第六周
  19. Java对接混合支付、退款、提现心得
  20. 我的时间管理——计划与总结的重要性

热门文章

  1. 股票技术分析--任正德主编
  2. 交换机进阶配置 、 路由器组网 、 企业网架构
  3. STM32 多个定时器 多路PWM配置
  4. 建功立业的秘诀就是:立即行动!
  5. 东软始业教育考试(2022.9.11)
  6. linux服务器抓包实例
  7. 光谱、多光谱技术、高光谱技术以及遥感中的应用
  8. HTML-一些自己不常用但很有用的标签
  9. windows 利用R定时抓取猫眼专业版电影票房
  10. 腾讯云ubuntu20.04,免密登录,安装anaconda,并安装远程jupyter notebook,TensorFlow