V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
p2227
V2EX  ›  信息安全

求问 Diffie-Hellman, ECDH 和 curve25519 之间的关系?

  •  
  •   p2227 · 2016-11-07 17:15:37 +08:00 · 8307 次点击
    这是一个创建于 2967 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我先说自己的理解

    Diffie – Hellman :这个视频很通俗,就是一种算法:通过交换一些公开的数据就能让通讯双方相互算出密钥的算法 https://www.khanacademy.org/computing/computer-science/cryptography/modern-crypt/v/diffie-hellman-key-exchange-part-2

    ECDH :我的理解是 DH 的增强版,通过一些方法使用 DH 的逆运算(通过公开数据推断密钥的运算)更加复杂,以至于在当前计算机的计算能力下几乎不可能实现逆运算。至于增强的原理,不清楚,有人可以通俗地解释一下吗?

    curve25519 : DH 算法中有一些公开的参数,而 curve25519 是把这些参数固定下来的一套算法。不知道对不对,希望不对人有可以指正一下。

    然后就是另外一个问题:还有哪些类似的算法,优劣如何?

    4 条回复    2017-02-28 10:54:24 +08:00
    whx20202
        1
    whx20202  
       2017-01-08 16:29:21 +08:00   ❤️ 1
    https://blog.ruiruige1991.xyz/2017/01/08/%E6%8A%98%E8%85%BEX25519%E7%9A%84%E4%B8%A4%E4%B8%89%E4%BA%8B/
    你可以看看这个
    一起探讨一下
    这个网站只能用 chrome 打开( opera 或者很新的火狐也可以)
    p2227
        2
    p2227  
    OP
       2017-01-09 14:29:12 +08:00
    @whx20202

    Curve25519/Ed25519/X25519 是著名密码学家 Daniel J. Bernstein 在 2006 年独立设计的椭圆曲线加密 /签名 /密钥交换算法,和现有的任何椭圆曲线算法都完全独立。特点是:第一完全开放设计,算法各参数的选择直截了当,非常明确,没有任何可疑之处,相比之下目前广泛使用的椭圆曲线是 NIST 系列标准,方程的系数是使用来历不明的随机种子 c49d3608 86e70493 6a6678e1 139d26b7 819f7e90 生成的,非常可疑,疑似后门;第二,一个椭圆曲线加密算法就算在数学上是安全的,在实用上也并不一定安全,有很大的概率通过缓存、时间、恶意输入摧毁安全性,而 25519 系列椭圆曲线经过特别设计,尽可能的将出错的概率降到了最低,可以说是实践上最安全的加密算法。例如,任何一个 32 位随机数都是一个合法的 X25519 公钥,因此通过恶意数值攻击是不可能的,算法在设计的时候刻意避免的某些分支操作,这样在编程的时候可以不使用 if ,减少了不同 if 分支代码执行时间不同的时序攻击概率,相反, NIST 系列椭圆曲线算法在实际应用中出错的可能性非常大,而且对于某些理论攻击的免疫能力不高, Bernstein 对市面上所有的加密算法使用 12 个标准进行了考察, 25519 是几乎唯一满足这些标准的 http://t.cn/RMGmi1g ;第三, 25519 系列曲线是目前最快的椭圆曲线加密算法,性能远远超过 NIST 系列,而且具有比 P-256 更高的安全性;第四, Daniel J. Bernstein 是世界著名的密码学家,他在大学曾经开设过一门 UNIX 系统安全的课程给学生,结果一学期下来,发现了 UNIX 程序中的 91 个安全漏洞;他早年在美国依然禁止出口加密算法时,曾因为把自己设计的加密算法发布到网上遭到了美国政府的起诉,他本人抗争六年,最后美国政府撤销所有指控,目前另一个非常火的高性能安全流密码 ChaCha20 也是出自 Bernstein 之手;第五, 25519 系列曲线自 2006 年发表以来,除了学术界无人问津, 2013 年爱德华·斯诺登曝光棱镜计划后,该算法突然大火,大量软件,如 OpenSSH 都迅速增加了对 25519 系列的支持,如今 25519 已经是大势所趋,可疑的 NIST 曲线迟早要退出椭圆曲线的历史舞台,目前, RFC 增加了 SSL/TLS 对 X25519 密钥交换协议的支持,而新版 OpenSSL 1.1 也加入支持,是摆脱老大哥的第一步,下一步是将 Ed25519 做为可选的 TLS 证书签名算法,彻底摆脱 NIST 。

    这一段话的来源是什么?是你自己总结的吗?
    [算法各参数的选择直截了当,非常明确] 是不是对应我的 [curve25519 是把这些参数固定下来的一套算法] ?
    [ 25519 系列椭圆曲线经过特别设计,尽可能的将出错的概率降到了最低] 经过什么设计?为什么会有出错?怎么把出错的概率降低?
    [这样在编程的时候可以不使用 if] 不明白。。。

    或者你有一些技术原理性的文章分享一下吗?
    whx20202
        3
    whx20202  
       2017-01-09 15:00:13 +08:00
    @p2227 这段话是我之前感兴趣,问的一个非常懂安全的人,他很 nice 花了 20 分钟写了这段给我。
    我本人不懂密码学 基本上这段话对我来说就够了

    你的问题可能只可能自己找找密码学方面的书了,具体的技术细节和那个椭圆曲线肯定是分不开的,我也不懂~
    testcaoy7
        4
    testcaoy7  
       2017-02-28 10:54:24 +08:00   ❤️ 1
    Curve25519 是一个设计的很好的曲线参数,速度快,无后门( NIST 的曲线有所谓的“ Magic Number ”,就是不加任何原因解释一定要用的常量,可能跟后门有关)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4145 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 111ms · UTC 04:12 · PVG 12:12 · LAX 20:12 · JFK 23:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.