浅尝 ECDHE 协议流程

前言ECDHE 我之前是听都没听过, 但是新业务需要对前后端通信进行加密, 经过大佬推荐才知道有这个东西, 经过几天的学习和踩坑, 才大致明白其流程和使用方式.过程坎坷, 好在最后还是成功运用到了业务中, 大大提高了业务的安全性. 这里记录一下本人对 ECDHE 的理解和注意要点
ECDHE椭圆曲线迪菲-赫尔曼金钥交换 - 维基百科 , 自由的百科全书 (wikipedia.org)我们先来说说 ECDH, ECDH(Elliptic Curve Diffie–Hellman key exchange) 是一种密钥协商协议, 其精髓是通过椭圆曲线算法(ECC), 让客户端和服务端不传输私钥(需要传输公钥), 就可以计算出一样的结果(共有加密资料), 即使协商过程被第三方(中间人)知晓和监听, 也不会泄露密钥.而 ECDHE(ECDH Ephemeral) 与 ECDH 无本质差别, 他们协商的流程一模一样, 只是ECDHE代表协商出的共有加密资料是临时的, 就算当前的加密资料泄露, 也不会影响其之前的历史数据被解密, 这是使用方式决定的, 大白话意思就是, 我们通过 ECDH 生成的共有加密数据有实效性, 会通过逻辑在一段时间或特定事件后重新协商, 而不是只协商一次, 如果只协商一次, 如果共有加密资料被泄露, 则之前的所有数据都可以解开. 这种共有加密数据资料泄露也不会对历史数据有影响的特性在密码学中被称为 前向安全性.
椭圆曲线密码学(ECC)ECC 是 ECDH 的核心椭圆曲线密码学 - 维基百科 , 自由的百科全书 (wikipedia.org)JavaScript ECDH Key Exchange Demo (stanford.edu)椭圆曲线算法(ECC) 是一种基于椭圆曲线数学的公开密钥加密算法, ECC 相比于 RSA 来讲, 有更短的密钥长度和相同等级的安全性(ECC被广泛认为是在给定密钥长度的情况下 , 最强大的非对称算法 , 因此在对带宽要求十分紧的连接中会十分有用.)而且, ECC可以定义群之间的双线性映射, 即通过两个向量空间上的元素, 生成第三个向量空间上的元素的函数. 这使得他可以让两对数据通过交换和计算得出相同结果ECC 算法衍生出了一些加密协议, 常见的有 ECDHE, MQV, ECDSA 等

  • ECC 的公钥其实对应了椭圆曲线数学的 XY 坐标, 根据种子随机生成
  • ECC 的私钥对应了椭圆曲线数学的 a 参数, 与公钥对应
  • ECC 计算出的 share 也是 XY 坐标
  • ECC 的种子有公开的几个, 例如secp128r1/secp256r1/secp192k1
椭圆曲线数学椭圆曲线的数学原理在这里椭圆曲线 - 维基百科 , 自由的百科全书 (wikipedia.org)常言道, 学好数理化, 走遍天下都不怕. 可惜我是宅男, 不爱出门这个原理在我的理解范畴之外了, 如果你对数学有兴趣, 可以尝试了解
三者关系先诞生出的椭圆曲线数学公式, 而后有的基于椭圆曲线数学公式的密码学算法 ECC, 而ECC 又衍生出一些加密协议和协议, ECDH就是其中一种
破解概率直接引用 wiki 原文
如果攻击者拥有大型量子计算机 , 那么他可以使用秀尔算法解决离散对数问题 , 从而破解私钥和共享秘密 。目前的估算认为:破解256位素数域上的椭圆曲线 , 需要2330个量子比特与1260亿个托佛利门 。相比之下 , 使用秀尔算法破解2048位的RSA则需要4098个量子比特与5.2万亿个托佛利门 。因此 , 椭圆曲线会更先遭到量子计算机的破解 。目前还不存在建造如此大型量子计算机的科学技术 , 因此椭圆曲线密码学至少在未来十年(或更久)依然是安全的 。但是密码学家已经积极展开了后量子密码学的研究 。其中 , 超奇异椭圆曲线同源密钥交换(SIDH)有望取代当前的常规椭圆曲线密钥交换(ECDH)
ECDH 协商流程前面说过, ECDHE 和 ECDH 不同是协商出的密钥有效期, 实际上协商流程是一致的, 所以这里严谨一点, 就叫 ECDH 协商流程ECDH 本身的协商流程如下图所示(按照数字编号走流程):

经验总结扩展阅读