42 | DHE/ECDHE算法的原理
42 | DHE/ECDHE算法的原理
讲述:Chrono
时长08:08大小6.50M
离散对数
DH 算法
DHE 算法
ECDHE 算法
思考题
赞 10
提建议
精选留言(20)
- djfhchdh2020-03-25DH算法只能用于密钥的交换,没有原文、摘要这些参数,无法生成数字签名。
作者回复: good。
共 2 条评论11 - 许童童2019-10-13回答一下思考题:我觉得原因是,根据DH算法的原理,只能算出一个新的值出来用于交换密钥,而数字签名是需要解密数字证书得到数字签名,从而判断数字证书是否真实有效。DH是基于现有数据算出一个新值,公钥私钥算出的结果并不相同,RSA是对数据进行加解密。
作者回复: 有部分不太准确。 数字签名与证书没有直接关系。数字签名是对原文摘要的私钥加密,用对应的公钥解密后可以比对摘要,验证确实是私钥持有者做的加密,也就是签名。 证书是为了保证公钥不被伪造和有效性。 DH算法里没有原文、摘要这些参与者,所以无法生成签名。也就是说,给出一份文件或者摘要,dh算法无法对它进行任何操作。
共 2 条评论7 - 猫头鹰波波2020-02-08老师,为什么ECDHE更难破解么,是因为离散的点选取更具备随机性吗
作者回复: 这是由椭圆曲线的特性决定的,具体的数学理论我也不是很了解,无法解释的更细。
2 - fxs0072020-02-08刚才看了下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一般用在双方确定身份以前,验证没有身份的签名并没有什么意义。展开
作者回复: 嗯,如果用变通的方法也是可以做到的,但意义不大,属于“曲线救国”。
2 - Geek_78044b2020-09-23老师你好,有个疑问。握手过程中的第三个参数,pre-master为何要用用那么复杂的算法去避免破解呢? 我的理解是,第三个随机数是通过服务端的公钥加密后传输的,传递到服务端后,用服务端的私钥才能解密出来这个随机数。 黑客没有服务端的私钥,完全不可能破解pre-master的啊,为何要那么复杂的加密算法去生成这个pre-master???展开
作者回复: 如果用rsa算法,公钥加密pre-master,当然也是可以的,但这个不具有前向安全。国家级别的计算能力是有可能算出私钥的,这就会导致公钥加密的所有pre-master被解密,从而所有历史消息都被破解。可以参考安全篇对前向安全的解释。 而dhe和ecdhe不仅难以破解,而且密钥都是随机生成的,所以即使破解了也不影响其他消息的安全。
1 - 江湖骗子2023-02-09 来自陕西ECDHE握手中有4个数,ClientRandom,ServerRandom,ClientParam,ServerParam,分别对应DH算法中的P,G,A,B,请问老师我的理解对吗?但是DH中P和G不是要求为质数吗?
作者回复: ECDHE和DHE虽然原理相似,但底下的数学基础是不同的,是椭圆曲线而不是离散对数,所以不能和DH算法里的PGAB对应。
- ifelse2023-02-09 来自浙江学习了,数学就是计算机的力量源泉。
作者回复: nice
- 潮汐2023-02-06 来自广东老师好,二刷完成了,对课程内容有更深的学习! 这里的思考题,我的看法是,从非对称加密算法来说DH是可以对消息做签名的,只是在连接密钥交换阶段没有这个必要,另外DH算法的公私钥是一次一密,也是不符合数字签名中解签的公钥从证书获取保持不变的场景?
作者回复: DH算法的过程决定了它只能做密钥交换,签名要用DSA算法。 EDH算法才是一次一密,标准的DH算法公私钥是静态的。
共 2 条评论 - Geek_91cf3b2022-07-12老师,PFS报文能解密码?
作者回复: PFS是什么?任何加密算法,理论上没有密钥都是不能解密的,但随着算力的提升,有的算法已经可以被破解了。
- GeekCoder2022-05-29也就是说DH算法中,也是有私钥的(私密部分),而外部并不知道私钥。
作者回复: DH是非对称算法,当然会有公钥和私钥的区别。
- Jasmine2021-07-09老师,等式B ^ a = (G ^ b ) ^ a = (G ^ a) ^ b = A ^ b左右两边就算忽略mod17值也不相等啊,为什么说经过运算都等于8呢?实际应用计算的底数超级大,给定了算法,数字运算的结果还是固定的呀,哪怕差0.00001那pre-master也不相同啊。困惑ing
作者回复: 这个是离散指数、对数在整数域的运算,不是普通的实数运算,可以照着正文里的例子再算一下。
- 张欣2021-04-13老师,不知道我理解的对不对: 根据文中以及之前tls文章的讲解,DH算法的主要目的就生成不可逆操作的公钥和私钥,然后再次执行算法生成两端相同的pre-master。这里面生成的公钥和私钥是可以拿来再次对文件摘要进行签名和验证,但是DH算法本身并没有这个作用。假设参数可以是文件摘要,就算算法能够算出,之后拿到证书的人也破解不开,根本没有意义。
作者回复: 理解有点偏差。 DH算法主要是用于密钥交换,生成的pre-master用来加密会话,一般不做签名验签。 签名算法常用的是RSA和ECDSA。 建议再回顾一下之前的课程,有不明白的或者我没说清楚的这问。
共 2 条评论 - Ball2021-01-06原理完全没看懂,得花点时间消化一下了。
作者回复: 先把dh理解了,然后dhe和ecdhe就好懂了。
- 久念2020-10-15老师好,”国家级别的计算能力是有可能算出私钥的“ -- 如果私钥是可以被算出来的,那 Root CA 对应的私钥也有可能被破解,这样的话 黑客是不是就可以随意的颁发证书
作者回复: 是的,但这个的难度非常大。
- djfhchdh2020-03-24因为DH算法,由公钥反向计算私钥是非常难的。
作者回复: 回答的不是太对,可参考其他同学的答案。
- 子杨2020-02-23对证书这块还是有点晕。证书应该只是用来证明站点的身份的吧?使用证书颁发机构的公钥对证书中的 hash 值进行解密,同时对 data 做 hash,如果相等就说明身份可信。
作者回复: 基本正确。 首先要理解公钥体系,理解签名。证书是为了安全可信地发布公钥。
- Hills录2020-02-20DHE不能用于数字签名,是因为无法使用公钥验证私钥有效性
作者回复: 注意DHE和DH还是有区别的,DHE里的公私钥对都是临时产生的,显然无法签名,因为私钥用完就丢弃了,不会被任何人持有。
共 2 条评论 - mark2019-10-21DH算法是选择一个数字作为私钥,hash好像不可逆,如果类似hash这样的算法,生成一个整数,是不是就可以用DH算法加密文本了。
作者回复: DH算法只能用于密钥交换,这种思路有点接近DSA算法。
- 饭团2019-10-11老师问题是不是是因为DH算法是动态的!即2个参数是相辅相成的,而数字签名中,公钥是不变的!
作者回复: 不是,可以再看一下dh算法的过程,它不能对一段文本的摘要做加密,无法生成签名,只能双方交换得到共享秘密。
共 3 条评论 - 饭团2019-10-11真棒老师,估计好多同学都不知道您更新了!谢谢您了!
作者回复: 是啊,好像缺少这个更新通知的功能。
共 2 条评论