
正文
go语言椭圆曲线点乘运算 椭圆曲线计算公式
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
【区块链与密码学】第6-4讲:椭圆曲线的数字签名算法
1985年,Koblitz和Miller独立地提出了椭圆曲线公钥密码体制(ECC),安全性基于椭圆曲线群上go语言椭圆曲线点乘运算的离散对数问题的难解性,该问题目前最好的解法是指数级时间的算法。
一般认为,RSA和DH密钥交换协议需用1024比特以上的模数才安全,但对ECC,只要160比特的模数就可达到同样级别的安全性。
椭圆曲线指的是由Weierstrass方程
所确定的曲线
有限域Fp上的椭圆曲线是由满足Fp上的方程
的所有点和无穷远点 O 构成的集合
有时也记作 E。
设 P , Q 是E上的任意两点,连接 P , Q 交 E 于 R’ ,则称 R’ 关于x轴的对称点 R 为 P 与 Q 的和,记为go语言椭圆曲线点乘运算:
P + Q = R
当 P 与 Q 重合时
R = P+Q = P+P = 2P
此时称之为 点倍运算
当 P 与 Q 关于x轴对称时,
定义 P 与 Q 的和为 O ,即:
P + Q = O
并称 O 为无穷远点
可以证明,有限域上的椭圆曲线在go语言椭圆曲线点乘运算我们定义的加法运算下构成群。
既然构成群,就必然有零元和负元,这里的零元就为无穷远点 O , P 的负元就是它关于x轴的对称点,记为 –P 。
显然有
P+O =O+P=P
若P=(x, y),则 –P=(x, –y) 且 P+(–P)=O
已知 E(F) 上两点 P=(x1, y1), Q=(x2, y2) , 求 P+Q 。
解:设 P+Q=R =(x3, y3) ,
解得
当 P≠Q 时,
当 P=Q 时,
k(k2) 个相同的点 P 相加为
此时称之为点乘运算
设
称n为点 P 的阶,记为 n=ord(P) 。
由阶为n的点 P 在上述加法定义下生成的循环群 P 是椭圆曲线群 (E(F), +) 的一个n阶子群。
设E是有限域 F 上的椭圆曲线, G 是 E 的一个循环子群,点 P 是 G 的一个生成元,即 G={kP: k≥1}, 在已知 P , Q 的条件下,求解整数n,使得 nP=Q 的问题,称为椭圆曲线 E 上的离散对数问题。
今天的课程就到这里啦,下一堂课我们将学习基于椭圆曲线的数字签名算法中的SM2算法,带大家继续了解数字签名,敬请期待go语言椭圆曲线点乘运算!
-- 完 --
关注点宽学园,每周持续更新区块链系列课程,小宽带go语言椭圆曲线点乘运算你进入区块链世界。我们下节课见啦。
【区块链与密码学】课堂回顾:
区块链与密码学系列文章合集
相关问答
Q1: 椭圆曲线算法原理
椭圆曲线的公式
Y^2 = x^3 + a x + b
椭圆曲线的运算规则
1.加法:过曲线上的两点A、B画一条直线,找到直线与椭圆曲线的交点,交点关于x轴对称位置的点,定义为A+B,即为加法。如下图所示:A + B = C
2.二倍运算:上述方法无法解释A + A,即两点重合的情况。因此在这种情况下,将椭圆曲线在A点的切线,与椭圆曲线的交点,交点关于x轴对称位置的点,定义为A + A,即2A,即为二倍运算。如下图所示:A + A = 2A = B
3.正负取反:将A关于x轴对称位置的点定义为-A,即椭圆曲线的正负取反运算。
4.无穷远点:如果将A与-A相加,过A与-A的直线平行于y轴,可以认为直线与椭圆曲线相交于无穷远点。
有限域内的椭圆曲线计算
椭圆曲线要形成一条光滑的曲线,要求x,y取值均为实数,即实数域上的椭圆曲线。但椭圆曲线加密算法,并非使用实数域,而是使用有限域。按数论定义,有限域GF(p)指给定某个质数p,由0、1、2......p-1共p个元素组成的整数集合中定义的加减乘除运算。
假设椭圆曲线为y² = x³ + x + 1,其在有限域GF(23)上时,写作:
y² ≡ x³ + x + 1 (mod 23)
此时,椭圆曲线不再是一条光滑曲线,而是一些不连续的点,如下图所示。以点(1,7)为例,7² ≡ 1³ + 1 + 1 ≡ 3 (mod 23)。
综述:
定义了A+B、2A运算,因此给定椭圆曲线的某一点G,可以求出2G、3G(即G + 2G)、4G......。即:当给定G点时,已知x,求xG点并不困难。反之,已知xG点,求x则非常困难。此即为椭圆曲线加密算法背后的数学原理。
Q2: 非对称加密之ECC椭圆曲线(go语言实践)
椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为 ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。
ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。
椭圆曲线密码学的许多形式有稍微的不同,所有的都依赖于被广泛承认的解决椭圆曲线离散对数问题的 困难性上。与传统的基于大质数因子分解困难性的加密方法不同,ECC通过椭圆曲线方程式的性质产生密钥。
ECC 164位的密钥产生的一个安全级相当于RSA 1024位密钥提供的保密强度,而且计算量较小,处理速度 更快,存储空间和传输带宽占用较少。目前我国 居民二代身份证 正在使用 256 位的椭圆曲线密码,虚拟 货币 比特币 也选择ECC作为加密算法。
具体算法详解参考:
关于go语言椭圆曲线点乘运算和椭圆曲线计算公式的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






