透视 HTTP 协议
罗剑锋(Chrono)
前奇虎 360 技术专家,Nginx/OpenResty 开源项目贡献者
63943 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
开篇词 (1讲)
透视 HTTP 协议
15
15
1.0x
00:00/00:00
登录|注册

42 | DHE/ECDHE算法的原理

前向安全性
临时性
共享秘密计算
公钥计算
私钥选择
离散对数的特性
实数域的对数运算
安全性比较
ECDHE算法流程
椭圆曲线上的离散对数
DHE算法
static DH算法
DH算法流程
离散对数
ECDHE算法
DH算法
短暂-椭圆曲线-迪菲-赫尔曼算法
Server Hello
Client Hello
思考题
ECDHE算法
TLS 1.2的握手过程
HTTP答疑:DHE/ECDHE算法的原理

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

你好,我是 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/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

HTTP答疑:DHE/ECDHE算法的原理 本文深入解析了TLS握手过程中使用的ECDHE算法的原理,以及与DH算法的关系。DH算法基于离散对数的数学基础,通过模运算和幂运算实现密钥交换。DHE算法引入了临时性的概念,提高了安全性,而ECDHE算法则将离散对数替换为椭圆曲线上的离散对数,进一步提高了安全性。文章通过具体的数学示例和实验环境的URI演示了DH密钥交换过程,帮助读者更好地理解算法原理。最后,留下了一个思考题,引发读者对DH算法的深入思考。 本文通过深入浅出的方式,以数学原理为基础,解释了ECDHE算法的原理及其与DH算法的关系,适合对加密算法感兴趣的读者阅读。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《透视 HTTP 协议》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(20)

  • 最新
  • 精选
  • djfhchdh
    DH算法只能用于密钥的交换,没有原文、摘要这些参数,无法生成数字签名。

    作者回复: good。

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

    作者回复: 有部分不太准确。 数字签名与证书没有直接关系。数字签名是对原文摘要的私钥加密,用对应的公钥解密后可以比对摘要,验证确实是私钥持有者做的加密,也就是签名。 证书是为了保证公钥不被伪造和有效性。 DH算法里没有原文、摘要这些参与者,所以无法生成签名。也就是说,给出一份文件或者摘要,dh算法无法对它进行任何操作。

    2019-10-13
    2
    9
  • ifelse
    学习了,数学就是计算机的力量源泉。

    作者回复: nice

    2023-02-09归属地:浙江
    2
  • 猫头鹰波波
    老师,为什么ECDHE更难破解么,是因为离散的点选取更具备随机性吗

    作者回复: 这是由椭圆曲线的特性决定的,具体的数学理论我也不是很了解,无法解释的更细。

    2020-02-08
    2
  • fxs007
    刚才看了下RSA验证签名的过程(https://crypto.stackexchange.com/questions/12768/why-hash-the-message-before-signing-it-with-rsa),我觉得DH算法本身是可以用来验证数字签名。比如双方已经完成了DH秘钥交换过程, 签名方发送 text + DH-enc(sha256(text)),其中DH-enc(sha256(text))是对text进行hash算法然后DH加密 验证方 用DH-dec解密签名,然后和sha256(text)比较,相等就说明验证通过 只是DH一般用在双方确定身份以前,验证没有身份的签名并没有什么意义。

    作者回复: 嗯,如果用变通的方法也是可以做到的,但意义不大,属于“曲线救国”。

    2020-02-08
    2
  • Geek_78044b
    老师你好,有个疑问。握手过程中的第三个参数,pre-master为何要用用那么复杂的算法去避免破解呢? 我的理解是,第三个随机数是通过服务端的公钥加密后传输的,传递到服务端后,用服务端的私钥才能解密出来这个随机数。 黑客没有服务端的私钥,完全不可能破解pre-master的啊,为何要那么复杂的加密算法去生成这个pre-master???

    作者回复: 如果用rsa算法,公钥加密pre-master,当然也是可以的,但这个不具有前向安全。国家级别的计算能力是有可能算出私钥的,这就会导致公钥加密的所有pre-master被解密,从而所有历史消息都被破解。可以参考安全篇对前向安全的解释。 而dhe和ecdhe不仅难以破解,而且密钥都是随机生成的,所以即使破解了也不影响其他消息的安全。

    2020-09-23
    1
  • 江湖骗子
    ECDHE握手中有4个数,ClientRandom,ServerRandom,ClientParam,ServerParam,分别对应DH算法中的P,G,A,B,请问老师我的理解对吗?但是DH中P和G不是要求为质数吗?

    作者回复: ECDHE和DHE虽然原理相似,但底下的数学基础是不同的,是椭圆曲线而不是离散对数,所以不能和DH算法里的PGAB对应。

    2023-02-09归属地:陕西
  • 潮汐
    老师好,二刷完成了,对课程内容有更深的学习! 这里的思考题,我的看法是,从非对称加密算法来说DH是可以对消息做签名的,只是在连接密钥交换阶段没有这个必要,另外DH算法的公私钥是一次一密,也是不符合数字签名中解签的公钥从证书获取保持不变的场景?

    作者回复: DH算法的过程决定了它只能做密钥交换,签名要用DSA算法。 EDH算法才是一次一密,标准的DH算法公私钥是静态的。

    2023-02-06归属地:广东
    2
  • Geek_91cf3b
    老师,PFS报文能解密码?

    作者回复: PFS是什么?任何加密算法,理论上没有密钥都是不能解密的,但随着算力的提升,有的算法已经可以被破解了。

    2022-07-12
  • GeekCoder
    也就是说DH算法中,也是有私钥的(私密部分),而外部并不知道私钥。

    作者回复: DH是非对称算法,当然会有公钥和私钥的区别。

    2022-05-29
收起评论
显示
设置
留言
20
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部