全栈工程师修炼指南
熊燚(四火)
Oracle 首席软件工程师
32206 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
全栈回顾 (1讲)
加餐 (1讲)
全栈工程师修炼指南
15
15
1.0x
00:00/00:00
登录|注册

02 | 为HTTP穿上盔甲:HTTPS

TLS
SSL
Diffie–Hellman 密钥交换
TLS 连接建立报文解析
HTTPS 漫画版介绍
证书发布机构的有效性
数字签名
证书链
非对称加密和对称加密的选择
在线支付安全问题
改变密码规范、加密握手消息
客户端密钥交换、改变密码规范、加密握手消息
证书、服务器密钥交换、服务端 Hello Done
服务端 Hello
客户端 Hello
非对称性加密
对称性加密
否认
篡改
伪装
拦截
HTTPS
传输不安全
扩展阅读
证书有效验证的原理
思考问题
TLS 连接建立
加密
安全问题
SSL/TLS
HTTP
HTTPS 安全机制建立的原理

该思维导图由 AI 生成,仅供参考

你好,我是四火。
在上一讲中,我介绍了互联网最重要的 HTTP 协议。可是随着互联网的发展,你会发现 HTTP 越来越无法满足复杂的需求,比如数据加密传输的安全性需求,再比如服务器消息即时推送的交互模式的需求,而这些不适性是由 HTTP 的基本特性所造成的。
因此,我们需要在传统 HTTP 领域以外开疆拓土,这就包括要引入其它的网络协议,或增强、或填补 HTTP 协议所不擅长的空白领域,这也是今天这一讲和下一讲的核心内容。今天我们重点学习 SSL/TLS ,看看它是如何让 HTTP 传输变得安全可靠的。

HTTP,SSL/TLS 和 HTTPS

在一开始的时候,HTTP 的设计者并没有把专门的加密安全传输放进协议设计里面。因此单独使用 HTTP 进行明文的数据传输,一定存在着许多的安全问题。比方说,现在有一份数据需要使用 HTTP 协议从客户端 A 发送到服务端 B,而第三方 C 尝试来做点坏事,于是就可能产生如下四大类安全问题:
Interception:拦截。传输的消息可以被中间人 C 截获,并泄露数据。
Spoofing:伪装。A 和 B 都可能被 C 冒名顶替,因此消息传输变成了 C 发送到 B,或者 A 发送到 C。
Falsification:篡改。C 改写了传输的消息,因此 B 收到了一条被篡改的消息而不知情。
Repudiation:否认。这一类没有 C 什么事,而是由于 A 或 B 不安好心。A 把消息成功发送了,但之后 A 否认这件事发生过;或者 B 其实收到了消息,但是否认他收到过。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

HTTPS的出现为HTTP协议增添了安全性,使得数据传输更加可靠。文章首先介绍了HTTP存在的安全问题,以及SSL/TLS协议的作用,将HTTP升级为HTTPS。SSL和TLS是父子衍生关系的安全协议,通过它们,HTTP得以加密传输,解决了拦截、伪装和篡改等安全问题。接着,文章介绍了HTTPS安全工作的过程,以及TLS连接的建立原理。在此过程中,对称性加密和非对称性加密是重要的基础概念。TLS连接建立的握手过程包括客户端和服务端的招呼、证书信息的验证、会话密钥的生成等步骤,通过非对称加密技术保证握手过程的可靠性,再通过对称加密技术保证数据传输的可靠性。整个过程采用了较严格、较复杂的方式建立消息交换渠道,再通过相对简单且性能更高的方式来实际完成数据传输。HTTPS的出现为HTTP协议增添了安全性,使得数据传输更加可靠。 文章还提到了两个问题:一是关于使用HTTPS加密的网站是否意味着支付过程中不可能出现安全问题;二是为什么握手过程使用非对称加密,而数据传输部分使用对称加密。此外,还介绍了证书有效验证的原理,强调了证书发布机构的有效性由上一级证书发布机构保证,形成了一个单向的信任链。 总的来说,本文深入浅出地介绍了HTTPS的安全机制建立原理,通过对SSL/TLS协议、HTTPS安全工作过程和证书有效验证的原理的详细解释,读者能够全面了解HTTPS的技术特点和安全机制。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全栈工程师修炼指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(18)

  • 最新
  • 精选
  • 饭团
    置顶
    回答老师问题 1)不能 因为虽然https是安全的,但前提是你的访问对象是安全的,归根到底你要保证真实是真实的,安全的!是你想访问对象!因为证书也是可以自己生成的! 2)为了性能,非对称加密算法性能不好!对称算法性能高!

    作者回复: 1)结论正确,但是解释不太妥当。HTTPS 可以达到数据在网络传输过程中的可靠性,但是支付过程是一个复杂和综合性的行为,涉及到的过程和角色远不只有 HTTPS 连接和它的客户端、服务端,因此 HTTPS 的安全性结论无法推广到整个支付过程和支付行为的安全性结论。 2)性能是一个非常重要的因素,说得很好,因为非对称性加密的性能要比对称性加密的性能差很多,特别是在被加密数据量比较大的时候,但它的问题在于无法把密钥传递到对端,因此我们才使用了非对称加密的方式来帮助做到这一点。但是,还有其它原因,比如说,对称性密钥是每次会话生成的,会话以外自动失效,这就像武功唯快不破一样,通常很短的时间就更换掉了;如果使用非对称性加密方式来传输实际数据,因为它只在最开始的时候生成一次,而不是每次会话都生成,因此在传输中同一个公钥会被发给多个不同的客户端,因此第三方的中间人可以使用这个公开的公钥解密服务端发给其它客户端的数据,这显然不具备安全性。

    2019-09-13
    24
  • CC
    对于老师的置顶回复中的下面这句话有一个疑问:「第三方的中间人可以使用这个公开的公钥解密服务端发给其他客户端的数据。」 我的理解是:非对称加密意味着「公钥加密,私钥解密」。 如果使用公开的公钥加密传输数据,第三方中间人仍然需要私钥来解密数据。 为何第三方中间人可以使用这个公钥来解密数据呢? 不确定是不是自己哪一步理解有误。 提前谢谢老师。

    作者回复: 这是一个很好的问题。 有“公钥加密,私钥解密”,但其实也有“私钥加密,公钥解密”。 从消息保密的角度来说,一般我们都是使用公钥加密,私钥解密。这样才能让消息保密,即便被第三方窃取了消息,消息内容也不会泄露。如果是这个用途,那么你说的完全正确。 但是 non-repudiation 则是反过来,使用私钥加密,目的就是让对方,以及可能出现的第三方使用公钥解密,这样大家都能证明消息已经确实被发送了,因为在私钥没有泄露的情况下,这条消息是无法被创建的,这也就使得“否认”(repudiation)变得不可能。

    2019-09-23
    3
    7
  • kissingers
    老师,为什么要设计成有了ABC才能计算出密钥,不要AB行吗?因为只有c是加密的,攻击者拿到c 不就可以计算出密钥了吗?那ab 还有意义吗?谢谢

    作者回复: 这种方式(传统 RSA 方式)下,C 是通过非对称密钥加密的,因此攻击者拿到加密后的 C,却无法解密。最后的对称密钥的计算,需要解密后的 C。 至于 A 和 B 因子的引入,是为了提高 pre-master 的随机性。

    2019-12-02
    2
    3
  • 零维
    老师,证书发布机构对证书做摘要生成的指纹和客户端生成的指纹 P1 是一个东西吗?

    作者回复: 对。对于证书做摘要得到指纹,这个指纹无论是发布方还是客户端得到的,它们必须一致,要不然校验就失败了。

    2019-10-17
    2
  • 零维
    老师,您建议先粗略的读一遍,再重读的时候再学习这些延展资料,还是第一遍的时候就跟着学下来呢?

    作者回复: 这个取决于你自己吧 :) 理解内容最重要。

    2019-10-17
    1
  • I.m 帅帅大王
    老师我想问一下,客户端与服务端建立连接之后,之后的发送消息时是直接使用会话密钥加密后传输吗,不需要客户端再使用公钥加密后传输了吧?

    作者回复: 对,连接建立以后,都使用会话密钥加密

    2021-05-29
  • pengzishang
    选修课堂中有一句:"对它用指定算法进行摘要,得到指纹 P1;" 我想问这个指定算法是什么算法,没有CA的私钥是怎样得出与P2相同的P1的?

    作者回复: 常见的摘要算法有几种,比如MD5,SHA-1等。客户端没有私钥,但是有公钥,而公钥+数字签名,可以计算得到指纹,这个指纹信息如果和使用摘要算法去算得证书本身得到的指纹一致,那就证实了证书的有效性。

    2020-10-24
  • 川军团
    “证书发布机构对证书做摘要生成指纹” 老师这句话能不能 详细解释一下,什么是做摘要生成指纹 另外客户端 “对它用指定算法进行摘要,得到指纹 P1;” 这两个操作是不是一样的

    作者回复: 摘要生成指纹其实就是一种hash算法,根据一个较长的复杂文本来生成一个较短的指纹字符串,原文本只要有一点点变更,这个指纹就会极大不同。 对,客户端自己用指定算法算得的指纹,必须严格等于使用公钥解密后的指纹,否则就认为这个证书被篡改。

    2020-02-27
  • Skylight
    老师我有俩问题: 1、“快速验证”对对话摘要加密使用的秘钥应该是A+B+C生成的会话秘钥吧? 2、有了会话秘钥之后,传输数据时为了判断信息是否被篡改,是不是也要对信息进行摘要然后对称秘钥加密后再把信息、摘要发给对方啊?

    作者回复: 1. 是会话密钥 2. 这就不会了,因为前面的机制保证了会话密钥仅此两份

    2019-10-10
  • CC
    思考题1: 如果这个支付功能网站本身就是为了钓鱼设计的,仍然可能出现安全问题。(后看到老师置顶留言,才知道原来不能把 HTTPS 的安全结论推广到整个支付过程。HTTPS 只是支付过程的一部分。) 思考题2: 是安全与效率的取舍。 如果全部使用对称加密,安全性不可靠,相对容易反推秘钥;如果全部使用非对称加密,内容传输的效率低,在数据量大的时候低很多。 严格确认双方身份后,就可以用低成本高效率的方式来沟通。 (后看到老师留言,使用非对称性加密来传输实际数据,没有一过性,反倒会有安全性问题。) 选修课堂和扩展阅读长知识了,谢谢老师。

    作者回复: 👍

    2019-09-23
收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部