透视HTTP协议
罗剑锋(Chrono)
奇虎360技术专家,Nginx/OpenResty开源项目贡献者
立即订阅
6077 人已学习
课程目录
已完结 44 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词|To Be a HTTP Hero
免费
破冰篇 (7讲)
01 | 时势与英雄:HTTP的前世今生
02 | HTTP是什么?HTTP又不是什么?
03 | HTTP世界全览(上):与HTTP相关的各种概念
04 | HTTP世界全览(下):与HTTP相关的各种协议
05 | 常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?
06 | 域名里有哪些门道?
07 | 自己动手,搭建HTTP实验环境
基础篇 (7讲)
08 | 键入网址再按下回车,后面究竟发生了什么?
09 | HTTP报文是什么样子的?
10 | 应该如何理解请求方法?
11 | 你能写出正确的网址吗?
12 | 响应状态码该怎么用?
13 | HTTP有哪些特点?
14 | HTTP有哪些优点?又有哪些缺点?
进阶篇 (8讲)
15 | 海纳百川:HTTP的实体数据
16 | 把大象装进冰箱:HTTP传输大文件的方法
17 | 排队也要讲效率:HTTP的连接管理
18 | 四通八达:HTTP的重定向和跳转
19 | 让我知道你是谁:HTTP的Cookie机制
20 | 生鲜速递:HTTP的缓存控制
21 | 良心中间商:HTTP的代理服务
22 | 冷链周转:HTTP的缓存代理
安全篇 (7讲)
23 | HTTPS是什么?SSL/TLS又是什么?
24 | 固若金汤的根本(上):对称加密与非对称加密
25 | 固若金汤的根本(下):数字签名与证书
26 | 信任始于握手:TLS1.2连接过程解析
27 | 更好更快的握手:TLS1.3特性解析
28 | 连接太慢该怎么办:HTTPS的优化
29 | 我应该迁移到HTTPS吗?
飞翔篇 (4讲)
30 | 时代之风(上):HTTP/2特性概览
31 | 时代之风(下):HTTP/2内核剖析
32 | 未来之路:HTTP/3展望
33 | 我应该迁移到HTTP/2吗?
探索篇 (5讲)
34 | Nginx:高性能的Web服务器
35 | OpenResty:更灵活的Web服务器
36 | WAF:保护我们的网络服务
37 | CDN:加速我们的网络服务
38 | WebSocket:沙盒里的TCP
总结篇 (2讲)
39 | HTTP性能优化面面观(上)
40 | HTTP性能优化面面观(下)
答疑篇 (2讲)
41 | Linux/Mac实验环境搭建与URI查询参数
42 | DHE/ECDHE算法的原理
结束语 (1讲)
结束语 | 做兴趣使然的Hero
透视HTTP协议
登录|注册

42 | DHE/ECDHE算法的原理

Chrono 2019-10-11
你好,我是 Chrono。
第 26 讲里,我介绍了 TLS 1.2 的握手过程,在 Client Hello 和 Server Hello 里用到了 ECDHE 算法做密钥交换,参数完全公开,但却能够防止黑客攻击,算出只有通信双方才能知道的秘密 Pre-Master。
这是 TLS 握手的关键步骤,也让很多同学不太理解,“为什么数据都是不保密的,但中间人却无法破解呢?”
解答这个问题必须要涉及密码学,我原本觉得有点太深了,不想展开细讲,但后来发现大家都对这个很关心,有点“打破砂锅问到底”的精神。所以,这次我就试着从底层来解释一下。不过你要有点心理准备,这不是那么好懂的。
先从 ECDHE 算法的名字说起。ECDHE 就是“短暂 - 椭圆曲线 - 迪菲 - 赫尔曼”算法(ephemeral Elliptic Curve Diffie–Hellman),里面的关键字是“短暂”“椭圆曲线”和“迪菲 - 赫尔曼”,我先来讲“迪菲 - 赫尔曼”,也就是 DH 算法。

离散对数

DH 算法是一种非对称加密算法,只能用于密钥交换,它的数学基础是“离散对数”(Discrete logarithm)。
那么,什么是离散对数呢?
上中学的时候我们都学过初等代数,知道指数和对数,指数就是幂运算,对数是指数的逆运算,是已知底数和真数(幂结果),反推出指数。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《透视HTTP协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(4)

  • ClassNotFoundException
    DH算法是选择一个数字作为私钥,hash好像不可逆,如果类似hash这样的算法,生成一个整数,是不是就可以用DH算法加密文本了。

    作者回复: DH算法只能用于密钥交换,这种思路有点接近DSA算法。

    2019-10-21
  • 许童童
    回答一下思考题:我觉得原因是,根据DH算法的原理,只能算出一个新的值出来用于交换密钥,而数字签名是需要解密数字证书得到数字签名,从而判断数字证书是否真实有效。DH是基于现有数据算出一个新值,公钥私钥算出的结果并不相同,RSA是对数据进行加解密。

    作者回复: 有部分不太准确。

    数字签名与证书没有直接关系。数字签名是对原文摘要的私钥加密,用对应的公钥解密后可以比对摘要,验证确实是私钥持有者做的加密,也就是签名。

    证书是为了保证公钥不被伪造和有效性。

    DH算法里没有原文、摘要这些参与者,所以无法生成签名。也就是说,给出一份文件或者摘要,dh算法无法对它进行任何操作。

    2019-10-13
    1
  • 饭团
    老师问题是不是是因为DH算法是动态的!即2个参数是相辅相成的,而数字签名中,公钥是不变的!

    作者回复: 不是,可以再看一下dh算法的过程,它不能对一段文本的摘要做加密,无法生成签名,只能双方交换得到共享秘密。

    2019-10-11
    2
  • 饭团
    真棒老师,估计好多同学都不知道您更新了!谢谢您了!

    作者回复: 是啊,好像缺少这个更新通知的功能。

    2019-10-11
    1
收起评论
4
返回
顶部