基于ECC算法的衍生算法

  • ECDH(ECC+DH)
  • RSA
  • ECDHE(ECC+DHE)

ECDH密钥协商(ECC+DH)

  • 椭圆曲线密码学是属于非对称密码学的,其私钥的计算公式如下:
  1. 私钥是一个随机数d,取值范围在1……n-1,其中n是子群的阶
  2. 公钥是点H=dG,G是子群的基点
  • 如果知道私钥d 和椭圆曲线参数G,求公钥H是很容易的,但是只知道公钥H和椭圆曲线参数G,求解私钥d是非常困难的,需要解决离散对数难题,椭圆曲线的安全性保证有赖于此。
  • ECDH密钥协商算法基于椭圆曲线密码系统(ECC),使用较短的密钥长度可提供与RSA或DH算法同等的安全等级,密钥长度有160 ~ 256位比特的椭圆曲线算法与密钥长度1024 ~ 3072位比特的非ECC算法安全强度相同。

常用有限域上的椭圆曲线

椭圆曲线由以下参数组成

T=(p,a,b,G,n,h)

  • p 有限域中的大素数,长度一般224比特、256比特、384比特
  • a 整数,椭圆方程系数
  • b整数,椭圆方程系数
  • G,椭圆曲线上某点,生成元
  • n,为一个素数,表示椭圆曲线的阶
  • h,余因数
  • 其中G包含Gx和Gy一共2个参数,非压缩模式以04开始,压缩模式以03开始,实际使用中一般采用非压缩模式
  • 通过模数p和系数a,b构成椭圆曲线方程y^2=x^3+ax+b mod p
  • TLS支持很多椭圆曲线,常用的有2个secp256r1和secp284r1 : secp256r1大素数p长度256比特(32字节)和secp384r1大素数p长度384比特(48字节)

ECDH密钥协商步骤

  • ECDH其实和DH思想是一样的,只不过这是基于椭圆曲线离散对数实现的。

ECDH共享参数

  • Alice和Bob进行ECDH密钥协商之前双方要有共同的ECDH共享参数,即必须选择相同的椭圆曲线方程、大素数p、生成源G,实际中这些椭圆曲线已经被相关组织批准,比如上边的secp256r1和secp384r1,通过这个双方就确定了这些共享参数

ECHD密钥协商

  1. Alice选择一个比椭圆曲线阶小的随机数HA作为私密参数,计算公钥HA=dAG发送给Bob
  2. Bob选择一个比椭圆曲线阶小的随机数HB作为私密参数,计算公钥HB=dBG发送给Alice
  3. Bob收到HA并计算得到共享密钥参数S=dBHA
  4. Alice收到HB并计算得到共享密钥参数S=dAHB
  • 根据椭圆曲线结合律S=dAHB=dAdBG=dBdAG=dBHA。目前Alice和Bob就得到了相同的S,但是第三方即使知道椭圆曲线和HAHB的前提下,是无法获取S的,因为在推导S的时候是需要知道其中一个私钥,这必须破解椭圆曲线离散对数难题,这个是很难破解的。 应用上,一般先利用ECDH协商共享密钥,再利用共享密钥计算出对称密钥等其他需要的密钥,通信双发对数据进行对称加密安全通信。

问题

  • 如果采用静态的 DH 算法和 ECC 结合就是 ECDH 算法。这种方式每次都使用的相同的 G 基点,它的优点在于可以避免每次在初始化连接时服务器频繁生成 G。这个过程比较消耗 CPU。但是它带来的缺点是,一旦随机数 a、b 被泄露了,那么在这之前的所有会话都将会被解密。
  • 为了解决这个问题,于是出现了 DHE 算法(Diffie-Hellman Ephemeral ,短暂临时的 DH 算法),结合 ECC 后形成了 ECDHE 算法。它可以保证每次通信使用的共享密钥都是不同的,DH 密钥对仅仅保存在内存中,不像 RSA 的私钥保存在磁盘上,攻击者即使从内存中破解了私钥,也仅仅影响本次通信,所以无需担心在此之前的通信内容会被解密,这样的特征成为前向安全性(Forward Secrecy,FS)或者完全前向安全性(Perfect Forward Secrecy,PFS)。更安全的是,协商出会话密钥后,a 和 b 两个私钥可以丢弃,进一步提升了安全性,在有限的时间、有效的空间生成了密钥对。在 TLS 握手中使用的 ECDHE_ECDSA 和 ECDHE_RSA 密钥交换算法。

如下图

参考链接

  • ECDH密钥协商  https://blog.csdn.net/weixin_41572450/article/details/103207724
  • ECDH密钥交换 https://blog.csdn.net/s_lisheng/article/details/90712333

基于ECC算法的秘钥协商相关推荐

  1. ECDH秘钥协商算法原理(ECDH Key Exchange)

    ECDH全称是椭圆曲线迪菲-赫尔曼秘钥交换(Elliptic Curve Diffie–Hellman key Exchange),主要是用来在一个不安全的通道中建立起安全的共有加密资料,一般来说交换 ...

  2. 利用OpenSSH实现基于秘钥的认证

    利用OpenSSH实现基于秘钥的认证 SSH协议介绍:     SSH是Secure Shell的缩写,意思是安全的shell          目前版本有 ssh v1和ssh  v2:在目前工作中 ...

  3. 区分获取SM2、RSA类型证书的密钥长度、秘钥算法和签名算法值

    最近不知道在忙什么,也不知道写点什么,直接丢个工具类吧~~~ /*** 获取X509证书的秘钥算法和秘钥长度** @param certificate* @return*/public static ...

  4. 国密:生成SM2秘钥、加解密及加验签

    国密改造已经持续了很长时间了,相信很多从事金融科技类的程序猿都遇到过这个需求.这篇文章就为大家带来笔者对于国密改造的一些经验,主要是代码层面,有兴趣的同学可以研究下国密的算法模型! 注:本文所用到的工 ...

  5. 基于paillier算法的同态加密电子匿名投票系统

    (欢迎密码学的朋友,一起相互交流学习. 对不足之处进行指正!) 最近在学习同态加密算法,正好帮导师给xxxxxx做一个关于同态加密的电子投票系统的demo.  所以就把学到的东西分享出来,欢迎同道中人 ...

  6. 奇妙的安全旅行之ECC算法

    hi,大家好,我是开发者FTD.今天我们来介绍一下非对称加密算法的ECC算法. ECC 算法简介 ECC 是 Elliptic Curves Cryptography 的缩写,意为椭圆曲线密码编码学. ...

  7. Ansible秘钥认证

    Ansible ping模块的使用 环境: Ansible端:192.168.178.14 被控节点:192.168.178.13 在Ansible端/etc/ansible/hosts文件内添加被控 ...

  8. ecc椭圆加密算法c语言,ECC算法介绍 - 椭圆曲线加密算法 - 中国数字证书CHINASSL

    ECC(Elliptic Curves Cryptography)加密算法是一种公钥加密算法,与主流的RSA算法相比,ECC算法可以使用较短的密钥达到相同的安全程度.近年来,人们对ECC的认识已经不再 ...

  9. jwt Claims token 秘钥稍有不同也能解析成功 signWith setSigningKey

    问题描述 使用io.jsonwebtoken.Jwts构造了一个token,在解析这个token时,发现解析秘钥和构建秘钥不完全相同也可以成功解析,代码如下 签发token /** 测试生成token ...

最新文章

  1. Simulink仿真教程1---一个简单的仿真例子
  2. android电视打印信息解析,液晶电视获取打印信息的方法与操作
  3. nginx随机变换图片服务器网址来防止盗链
  4. 找出1000以内的完数,所谓完数是指该数的各因子之和等于该数,如:6 = 1+2+3。
  5. CSS 3实战:开发与设计迷你书
  6. 使用ubuntu过程中遇到的问题汇总
  7. 《软件设计精要与模式》推荐序三
  8. asp.net core权限模块的快速构建
  9. 为什么大部分的C/C++码农都成不了高级工程师?真实原因是缺少核心能力!
  10. 暴风一号病毒(1kb病毒),U盘只剩快捷方式,文件消失
  11. android 分区 加密软件,VeraCrypt(硬盘分区加密软件)
  12. 基于Nonebot2搭建QQ机器人实战篇(一)
  13. 零售商店销售管理系统——第四周
  14. 从实例学Kettle(一):获取股票行情数据
  15. calcite连接mysql_如何使用Calcite实现一个简单的数据库
  16. java配置jdk和jre_为什么要配置java环境变量?JDK和JRE的区别在哪里?
  17. win10 安全设置
  18. linux下如何捕捉方向键
  19. 基于ZooKeeper的分布式锁和队列
  20. cognos使用流程

热门文章

  1. arcmap添加WMTS服务
  2. 27代理模式(Proxy Pattern)
  3. python 定时器_python 线程之四:定时器(Timer),非阻塞
  4. Microsoft C 运行时库 (CRT) 参考
  5. REVERSE-PRACTICE-BUUCTF-13
  6. 逆序数问题,用归并排序而非树状数组求解
  7. *【 POJ - 1007 】DNA Sorting(枚举,类似三元组找第二元问题)
  8. ACM算法--spfa算法--最短路算法
  9. Apollo进阶课程㉕丨Apollo规划技术详解——Optimization Inside Motion Planning
  10. Apollo进阶课程㉓丨Apollo规划技术详解——Motion Planning with Environment