ECDSA 涉及到三个重要的概念

第一个是私钥,私钥是一个只有我自己知道的数字,我可以用私钥去生成签名,比特币使用的私钥是一个256 bit 的整数。

第二个是公钥,公钥是跟私钥配对的一个数,是根据私钥运算得出的,我会把公钥公布给所有人,目的是让大家去验证我的签名。比特币的公钥有65个字节,包括一个前缀加上两个256 bit 的整数,这两个整数就对应椭圆曲线上的一个点的 x 值和 y 值。

第三个是签名,签名就是一个证明我的确执行了签署操作的数字。签名主要由两项内容运算得出,一项是被签署数据的哈希,另外一项就是私钥。签名要保证两点:一个是证明我是私钥的持有者,第二个是证明被签名数据没有被篡改过。

如何证明你知道私钥 x

如果您计算 X=x•P,其中 x 是一个随机的 256 位整数,您如何向某人证明您知道与 X 对应的 x,而不泄露有关 x 的任何有用信息?

您可以使用之前的点加法属性

n•P+r•P = (n+r)•P

稍微修改一下:

hash(m, r•P)•n•P+r•P = (hash(m, r•P)*n+r)•P

如果你展开上面方程的右边,你会得到左边,所以上面的方程对任何 m、r 和 n 都成立。

故另n=x, 则n•P=X

hash(m, r•P)•X+r•P = (hash(m, r•P)*x+r)•P

再另 R=r•Ps=hash(m,R)*x+r, 所以现在有:

hash(m, R)•X+R = s•P

好的,这里的说法是:如果您可以提供满足上述等式的 mRs,那么这证明您知道等式中 X 对应的 x,其中 x•P=X。

因此,为 m、R 和 s 提供工作值的唯一方法是使用 x 计算它们。因此,您可以通过提供满足 hash(m,R)•X+R=s•P 的 m、R 和 s 的值来证明您知道与公钥 X 对应的私钥 x。

数字签名的构成

由前面的推导,可以看出只要我展示出了 m、R 和 s 的值,就可以证明我是拥有私钥的。实际中我们可以把 m 作为要被签名的信息,而把 R 和 s 作为数字签名。 对于比特币来说,信息 m 就是交易,每一个数字签名之中都会包含 R 的 x 坐标值( R 是椭圆曲线上的一个点),还会包含 s (s 是一个256 bit 的整数)。

如果在验证数字签名的时候信息被篡改过了,也就是说此刻 m 有了一个被篡改后的值,那么这个等式就不可能成立了,因为 s 是基于 m 的原始值运算出来的。

签名验证算法-verify

已知 P(椭圆曲线基点), m, R, s, X, 验证 hash(m, R)•X+R = s•P 等式是否成立

公钥恢复算法-recover

已知 P(椭圆曲线基点), m, R, s, 通过 hash(m, R)•X+R = s•P 方程式求出 X, 与正确的公钥进行比较


往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
比特币系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列

密码学系列 - 椭圆曲线签名的基本原理相关推荐

  1. 密码学系列 - 椭圆曲线 ECC - ED25519

    密码学 - 椭圆曲线 ECC ED25519 椭圆曲线是一系列满足如下方程的点: y^2 = x^3 + ax + b 并且 4a^3 + 27b^2 != 0 特性 封闭性:因为椭圆曲线上的点相加, ...

  2. 密码学系列 - 多种签名方式

    数字签名是用户利用自身私钥对指定数据进行签名,并可利用该用户公钥对签名进行验证的一类算法协议.数字签名常用来做鉴权和数据完整性校验,且数字签名具有不可抵赖的特性. 基于此衍生出了多种数字签名方式,各自 ...

  3. 密码学系列 - 国密算法

    国密即国家密码局认定的国产密码算法.主要有SM1,SM2,SM3,SM4,SM9.密钥长度和分组长度均为128位. 国密算法种类 SM1 为对称加密.其加密强度与AES相当.该算法不公开,调用该算法时 ...

  4. 密码学系列(三):区块链+密码学基础知识

    密码学系列(三):区块链+密码学基础知识 一.区块链的概念 区块链概述 区块链的特点 区块链变化 市场现状 二.区块链政策与标准 区块链的特点与发展 三.区块链的定义 区块链的价值 四.区块链开发语言 ...

  5. 密码学系列(二):专有名词缩写【持更】

    密码学系列(二):遇到的一些专有名词缩写[持更] 密码学相关 密码产品所需 密码学相关 CRL:证书吊销列表 在线证书状态协议(OCSP):一个互联网协议,用于获取符合X.509标准的数字证书的状态. ...

  6. 密码学系列(四):整理世界性网络安全相关组织、企业的网站【持更】

    密码学系列(四):整理世界性网络安全相关组织.企业的网站[持更] 前言 各网站 Thales 泰勒斯 BI.ZONE RSA Unbound Security Fasso 富信 Intertrust ...

  7. 密码学系列之:SAFER

    简介 分组密码是一个非常优秀的加密结构,很多常用加的加密算法使用的都是分组算法,比如DES.SAFER表示的也是一种分组密码算法.一起来看看吧. SAFER简介 SAFER的全称是Secure And ...

  8. c 和java互相验签_C椭圆曲线签名 用java验签

    C椭圆曲线签名 用java验签,java应该用什么类,new X509EncodedKeySpec( hex2Bytes(publicKey) ) 一直报错 签名: 294236F3FEA929A45 ...

  9. Android apk系列1-------APK签名

    Android apk系列1-------APK签名 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个perm ...

最新文章

  1. Cortex-A、Cortex-R、Cortex-M处理器的性能比较
  2. 【学习】Android开入门教程
  3. TF之CNN:Tensorflow构建卷积神经网络CNN的简介、使用方法、应用之详细攻略
  4. options请求_前端数据请求的终极方案
  5. d3.js 入门指南 - 仪表盘
  6. Python mysql-表的创建,删除和更新
  7. nginx配置文件被删怎么找回_恢复误删除的Nginx日志
  8. 二十一世纪大学英语读写教程(第二册)学习笔记(原文)——5 - Holding Onto a Dream(坚持梦想)
  9. C#实现的打飞机游戏(课程设计)
  10. 安全扫描失败无法上传_思看科技-当木雕遇上全球首创的三维扫描仪
  11. Tomcat-线程模型及设计精髓
  12. 【论文阅读】Stroke Controllable Fast Style Transfer with Adaptive Receptive Fields
  13. unsw计算机专业排名,新南威尔士大学UNSW计算机科学Computer Science专业排名第54位(2021年THE世界大学商科排名)...
  14. 游戏服务器开发技术小结
  15. 2021哈工大计算机专业考研参考书,哈尔滨工业大学计算机专业考研参考书目推荐...
  16. RSSI-RSRP-RSRQ
  17. 触摸板触摸屏禁止手指缩放,这么处理才行
  18. 用python画 pareto front
  19. 2021年河南高考--各高校在河南录取分数线预测(本科一批——文科)
  20. mac按键难回弹(按下去软软的)

热门文章

  1. r 字符串转化为数值_【R语言】tidyverse之一:读写数据
  2. 【观察】大数据3.0新时代 星环科技的思与行
  3. esp8266驱动电机
  4. 安装MySQL的步骤和方法
  5. ifconfig命令用法举例
  6. shell脚本语法基础汇总
  7. 计算机网络思科平台第五章测验答案
  8. 外包公司面试门槛高吗?软件测试员进外包公司容易吗?
  9. 番茄工作法总结-第六章:应变
  10. 安卓阅读器开发_别买电子阅读器:即将淘汰Kindle的5项技术