摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计过程。

在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过程。

我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A能发一个hello消息给B:

如果我们要实现这个聊天软件,本文只考虑安全性问题,要实现

A发给B的hello消息包,即使被中间人拦截到了,也无法得知消息的内容

如何做到真正的安全?

这个问题,很多人马上就想到了各种加密算法,什么对称加密、非对称加密、DES、RSA、XX、噼里啪啦~

而我想说,加密算法只是解决方案,我们首先要做的是理解我们的问题域——什么是安全?

我个人的理解是:

A与B通信的内容,有且只有A和B有能力看到通信的真正内容

好,问题域已经定义好了(现实中当然不止这一种定义)。对于解决方案,很容易就想到了对消息进行加密。

题外话,但是只有这一种方法吗?我看未必,说不定在将来会出现一种物质打破当前世界的通信假设,实现真正意义上的保密。

对于A与B这样的简单通信模型,我们很容易做出选择:

对称加密算法

这就是对称加密算法,其中图中的密钥S同时扮演加密和解密的角色。具体细节不是本文范畴。

只要这个密钥S不公开给第三者,同时密钥S足够安全,我们就解决了我们一开始所定问题域了。因为世界上有且只有A与B知道如何加密和解密他们之间的消息。

但是,在WWW环境下,我们的Web服务器的通信模型没有这么简单:

Web服务器使用对称加密算法

如果服务器端对所有的客户端通信都使用同样的对称加密算法,无异于没有加密。那怎么办呢?即能使用对称加密算法,又不公开密钥?请读者思考21秒钟。

能不能用一句话总结 HTTPS?相关推荐

  1. 轻松理解https,So easy!

    作者:翟志军 https://showme.codes/2017-02-20/understand-https/ 本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这 ...

  2. 也许,这样理解 HTTPS 更容易

    本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于"还原 ...

  3. 百度全面开放HTTPS之我见

    最近,我读到一篇文章<百度全面开放HTTPS的几个重要问题>(http://www.admin10000.com/document/6233.html),作者就百度实现全站HTTPS的十个 ...

  4. 也许,这样理解HTTPS更容易

    https://juejin.im/post/5b8367b1e51d453884361fc3 摘要: 本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表H ...

  5. fiddler如何设置过滤https_手把手教你如何给网站设置https

    我也是小白一枚,最近开了一个博客站点,个人博客除了微信分享功能不能开通外,其他的功能我都要试着做一下,磨练磨练自己.跟一些大佬分享有所不同,我这篇文章是以一个小白的角度来写,这样有一个优势,因为有些大 ...

  6. 【转载】这是我看过最好的对HTTPS的理解

    [转载]这是我看过最好的对HTTPS的理解 首先申明,这篇文章并非原创.而是最近想去研究一下https的原理,所以上网查阅了一大堆资料和文档,其实看来看去都是差不多的,直到发现了这一篇.为作者打个电话 ...

  7. 架构师必读!以图文的方式解锁 HTTPS原理,10分钟还原HTTPS真像!

    我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A能发一个hello消息给B: 如果我们要实现这个聊天软件,本文只考虑安全性问题,要实现: A发给B的hello消息包,即使被中间 ...

  8. 【前端 · 面试 】HTTP 总结(十一)—— HTTPS 概述

    最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正.交流. 争取每个知识点能够多总结一些,至少要做到在面试时,针对每个知识点都可以侃起来,不至于哑火. 前言 通过前面内容的学习,相信大家 ...

  9. 网盾极风云:五分钟搞懂HTTP和HTTPS

    很多小伙伴每天都要用到http和https协议,但是却对他们一知半解,这篇文章将解开你的所有疑惑. HTTP 一般人们都能说出"HTTP是一种超文本传输协议(Hypertext Transf ...

最新文章

  1. java-buildpack源码分析之Compile
  2. SuperSocket 服务管理器 (ServerManager)
  3. signature=89b7a6bcfac55abae5ac369dafee29f4,Capecitabine
  4. git 创建 本地 裸 仓库
  5. SAP Word template出了错误后的调试办法
  6. bat 存储过程返回值_为什么不推荐使用存储过程?
  7. Python为视频设置遮罩实现异形窗口播放
  8. c语言在中职的作用,C语言程序下的中职教学论文
  9. Nginx+Tomcat无法正确获取的域名和ip地址
  10. ajax修改属性后如何遍历,Ajax遍历jSon后对每一条数据进行相应的修改和删除(代码分享)...
  11. 光伏机器人最前线_高工机器人走进光伏:数字化车间未来可期
  12. 2017php类库,AMQB官方PHP库
  13. JAVA要不要看源码_java需要看源码吗
  14. 如何用计算机抽奖,怎么用PPT制作随机点名抽奖
  15. 09 自动发表博客评论
  16. Git 拉取远程仓库失败
  17. 工作中遇到的一个问题:
  18. 内德-米德方法——《数值计算方法》
  19. 新1期_012课_内存控制器与SDRAM
  20. Ventoy-一种更便捷的OS启动盘制作方法

热门文章

  1. python制作软件封面_用python给MP3加封面图片,修改作者,专辑等信息
  2. 论云计算机下的中小企业会计信息化建设,中小企业云会计信息化的建议论文
  3. 210322阶段三QT事件循环及opencv图像处理
  4. return和break的区别
  5. µVISION: Error: Encountered an improper argument
  6. iOS开发 AVAudioPlayer
  7. 对CAML查询语句的几点小记
  8. 窄带物联网有望结束技术应用“碎片化”
  9. 《“笨办法”学Python(第3版)》——习题3 数字和数学计算
  10. 基于HTML5的WebGL呈现A星算法的3D可视化