椭圆曲线算法ECDSA
November 9th, 2022

ECDSA全称Elliptic Curve Digital Signature Algorithm,中文全称叫椭圆曲线数字签名算法,是目前比特币使用的非对称加密算法。它的作用在于对数据/文件创建数字签名,而这个数字签名是不可能被伪造的。类似作用的还有非对称加密算RSA算法。

椭圆曲线其实是一个数学方程,通常用下面的方程式来表示:

如果方程丽a和b取的值不同,那么对应的曲线形状也会不一样。

因为具体的工作原理涉及很多数学和密码学的基础知识,因此这里不展开说明。对工作原理感兴趣的可以去看这份科普:

ECDSA生成数字签名的主要路径:

有一个椭圆曲线图和该图形的数学方程

1.在这个曲线图上你随机选取一个点作为你的原点

2.这个原点放到数学方程会产生一个随机数-----你的私钥

3.然后用这个原点和随机数(你的私钥)放到另外一个数学方程能得到曲线上面第二个点-----你的公钥

4.当你要对一个文件进行签名的时候,需要用到你的私钥(随机数)和该文件的哈希(不了解哈希的看我的关于哈希的笔记)组成一个方程,这样将得到一个数字签名

ECDSA验证数字签名的主要路径:

生成的数字签名分为两部分RS

1.为了验证数字签名的准确性,将公钥和签名的一部分S放入另外一个数学方程

2.如果得到的结果是R,那么证明该签名是有效的;反之得出的结果不是R,那么该签名无效

ECDSA的安全性基础:单向陷门函数

椭圆曲线的两种运算:点加法(Point Addition)和点乘法(Point Multiplication)

点加法:假设现在有这样一条椭圆曲线(下图1)。画一条直线,与曲线相交于 3 个点,分别是 P,Q,R ,根据点加法运算的定义,可以得到 P+Q+R=0 ,那么 P+Q=−R , −R 的定义是关于 x 轴对称所得到的一个点,如上图所示,这就是点加法的定义。

图1
图1

点乘法:如果我们移动这条直线,让 P,Q 两点重合。根据上面的点加法规则,可以得到 2P 点,以此类推,不断去连接 P 点和 nP 点,就可以得到 3P,4P... (n+1)P 点。点乘就定义为 k×P ,表示 P 点的 k 次相加。

图2
图2

单向陷门函数:在上面我们得到了点乘的定义,任意一点 R 可以通过这个点乘公式 R=k×P 计算得到。这里的关键在于即使知道了 PR 点,我们也无法计算得到 k 。这是椭圆曲线算法安全性的基础,这个特性也称之为单向陷门函数。这个整数 k 通常就是算法中的私钥,而 R 对应的就是公钥

Subscribe to 德根L
Receive the latest updates directly to your inbox.
Nft graphic
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from 德根L

Skeleton

Skeleton

Skeleton