IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 密码学系列 - 椭圆曲线签名的基本原理 -> 正文阅读

[区块链]密码学系列 - 椭圆曲线签名的基本原理

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系列
  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 07:59:44  更:2021-11-24 08:00:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 20:03:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计