ECDSA 和 ECDH
ECDH:
ECC算法用途比RSA还猛,不仅可以加解密、签名验证。还可以与DH结合使用,用于密钥磋商,这个密钥交换算法称为ECDH。交换双方可以在不共享任何秘密的情况下协商出一个密钥。ECC是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点P,一个整数k,求解点Q=kP很容易;给定两个点P、Q,知道Q=kP,求整数k确是一个难题。ECDH即建立在此数学难题之上。密钥磋商过程:
假设密钥交换双方为Alice、Bob,其有共享曲线参数(椭圆曲线E、阶N、基点G)。
1)Alice生成随机整数a,计算A=a*G。Bob生成随机整数b,计算B=b*G。
2)Alice将A传递给Bob。A的传递可以公开,即攻击者可以获取A。由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过A、G计算出a。Bob将B传递给Alice。同理,B的传递可以公开。
3 )Bob收到Alice传递的A,计算Q=b*A
4)Alice收到Bob传递的B,计算Q‘=a*B
Alice、Bob双方即得Q=b*A=b*(a*G)=(b*a)*G=(a*b)*G=a*(b*G)=a*B=Q'(交换律和结合律),即双方得到一致的密钥Q。
ECDSA:
ECDSA算法用于数字签名,是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。
签名过程如下:
1、选择一条椭圆曲线Ep(a,b),和基点G;
2、选择私有密钥k(k<n,n为G的阶),利用基点G计算公开密钥K=kG;
3、产生一个随机整数r(r<n),计算点R=rG;
4、将原数据和点R的坐标值x,y作为参数,计算SHA1做为hash,即Hash=SHA1(原数据,x,y);
5、计算s≡r - Hash * k (mod n)
6、r和s做为签名值,如果r和s其中一个为0,重新从第3步开始执行
验证过程如下:
1、接受方在收到消息(m)和签名值(r,s)后,进行以下运算
2、计算:sG+H(m)P=(x1,y1),r1≡x1 modp。
3、验证等式:r1 ≡ r mod p。
4、如果等式成立,接受签名,否则签名无效。
证明公式:
签名体制的正确性证明: 签名体制的正确性证明:
sG+H(m)P
=(k-H(m)nA)G+H(m)P
=kG-H(m)nAG+H(m)P
=kG-H(m)P+H(m)P
=kG
所以,r1≡r mod p。
R=kG;P=nAG;s=k-H(m)*nA mod p
简单的例子:
签名过程:
选取随机数k = 3,假设h(m) = 4 ,则计算(x,y) = kG = 3 (x,y) = kG =3(0,2)=(11,9),r = x mod n = 11 mod 23 =11,s=k-H(m)×nA mod p = 3–4×9 mod 23 = 13。因此对m的签名为(11 13)。
验证过程:
签名接收者B得到签名后计算:sG+H(m)P= 13G + 4P =(11,9),r1 = x1
mod n = 11 mod 29 = 11 =r。因此B接受签名。
ECDSA 和 ECDH相关推荐
- 【密码算法 之零】对称算法(DES,、3DES、 AES、DM5、HMAC、CMAC、SHAxx、SM3、SM4),非对称算法(RSA、ECC、ECDSA、ECDH、SM2、SM9...)
由于工作的需要,在过去的两年中学习.适配了很多算法,包括对称算法.非对称算法.国密算法.国际算法等.为了逼迫自己能够牢记并掌握这些算法的基本知识点,故本人写了一个关于算法的专栏(持续更新中...) ...
- ECDSA和ECDH原理
2021SC@SDUSC ECDSA和ECDH原理 secp256k1的参数 ECDSA椭圆曲线数字签名算法 公钥生成 签名 签名验证 k 公钥恢复 ECDH椭圆曲线Diffie–Hellman秘钥交 ...
- 【密码算法 之十四】非对称算法,ECC椭圆曲线算法 之 ECDSA、ECDH、SM2、SM9等
文章目录 1. ECC椭圆曲线 1.1 曲线类型 1.2 曲线标准 1.3 表示方法 1.4 曲线运算 1.4.1 点加(Point Addition) 1.4.2 点乘(Point Multipli ...
- 关于 ECDSA ECDH ECDHE
ECDSA与ECDH ECDSA 指利用椭圆曲线算法进行数字签名 ECDH 指利用椭圆曲线算法进行密钥协商 理论上是可以共用同一组曲线模型和生成参数分别进行DSA(Digital Signatur ...
- ECDSA 签名验证原理及C语言实现
这两天总算把ECDSA搞明白了,本来想造个ECDSA轮子,但最近有点忙,而ECDSA轮子又不像HASH那样简单,所以就直接拿现成的轮子来记录一些ECDSA学习心得. 这里贴上github上一个比较适合 ...
- java ecc 加密_java-信息安全(十一)-非对称加密算法002-ECC,签名003-ECDSA签名
一.概述 ECC算法(Elliptic curve cryptography,椭圆曲线密码学) 椭圆加密算法(ECC)是一种公钥加密体制,最初由Koblitz和Miller两人于1985年提出,其数学 ...
- [国密算法]一文了解国密算法
国密算法 概述 1 SM1对称密码 2 SM2椭圆曲线公钥密码算法 3 SM3杂凑算法 4 SM4对称算法 5 SM7对称密码 6 SM9标识密码算法 7 ZUC祖冲之算法 总结 算法名称 算法类别 ...
- 信息安全工程师笔记-综合知识冲刺(四)
国家密码管理局于2006年1月6日公布了"无线局域网产品须使用的系列密码算法": 对称密码算法:SMS4: 签名算法:ECDSA: 密钥协商算法:ECDH: 杂凑算法:SHA-25 ...
- SM系列国密算法(转)
原文地址:科普一下SM系列国密算法(从零开始学区块链 189) 众所周知,为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2).SM2.SM3.SM4.SM7. ...
最新文章
- 用Maven构建Hadoop项目
- python 获取指定文件夹里面的图片文件的信息
- 【CF1182D】Complete Mirror【树的重心】
- Coursera自动驾驶课程第14讲:Linear and Nonlinear Kalman Filters
- 支付宝2019年账单周一见 你准备好了吗?
- Oracle用户权限
- CSDN博客去广告-谷歌插件
- 中国电话区号(CSV)
- 塔望3W消费战略全案|绿力冬瓜茶:老品牌的升级保卫战
- 2021-08-18-ideal配置github时报:insufficient scopes granted to the token
- Hive集合数据类型(STRUCK,MAP,ARRAY)
- nginx reopen nginx 日志
- 【Oracle】-Difference between Instance recovery and Crash Recovery
- c语言程序设计基础程序改错,c语言程序设计改错信息.docx
- 2016,轻轻地你走了,正如你轻轻地来,2017新年快乐
- 微信小程序提示:https://www.xxxxx.com 不在以下 request 合法域名列表中,请参考文档....
- ElasticSearch painless脚本实现自定义打分排序
- 工作遇坑-Cannot allocate memory问题解决方法
- 实时云渲染和本地渲染的区别
- ElasticSearch + Kibana
热门文章
- 解决 Unexpected token u in JSON at position 0
- SpringCloud的五大核心组件李俊老师
- c语言优秀教案,C语言优秀教案.doc
- 请输入一个数字作为秒数,在页面按时间,分钟,秒的格式输出(如输入600,页面显示:0时10分0秒
- 那些在国内还能使用的谷歌产品
- 做SEO优化必须掌握的10大技能
- jsp醒目_40个醒目的精美插图网站[展示柜]
- 极验验证简介(待续)
- 谷歌浏览器怎么样切换为原来的经典主题皮肤
- 点云配准2:icp算法在PCL1.10.0上的实现+源码解析