理解椭圆曲线加密算法
发布网友
发布时间:2022-10-16 04:25
我来回答
共1个回答
热心网友
时间:2023-10-15 20:22
椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密。
一般椭圆曲线方程式表示为:(其中a,b,c,d为系数)
> y2=ax3+ bx2+cx+d
典型的椭圆曲线如:y2=x3−4x2+16
先摆一个栗子:
小米很难算到的那个数,就是公钥密码算法中的私钥(一个公钥密码算法安全的必要条件(非充分)是“由公钥不能反推出私钥”),公钥密码算法最根本的原理是利用信息的不对称性:即掌握私钥的人在整个通信过程中掌握最多的信息。
椭圆曲线加密算法是一个基于加法阶数难求问题的密码方案。 对于椭圆曲线来讲,椭圆曲线的基点就是例子里面的5,而私钥就是基点的加法阶数(例子里面的11),公钥是基点(5)进行对应阶数的加法(11次)得到的结果(55)。
简单描述就是:G * k = K (G,K公开,k保密)
上述例子相对简单,椭圆曲线加密算法里的加法建立在 “有限域上的二元三次曲线上的点”上 ,组成一个“有限加法循环群”。具体的说,这个加法的几何定义如下图,两个点的加法结果是指这两点的连线和曲线的交点关于x轴的镜像。
如果我们从某一点出发(所谓的单位元,比如正整数域的1,代表一个空间里的最基本单元),不停做自增操作(所谓群操作,比如++),枚举出整个空间的集合元素。如图:
因此给定椭圆曲线的某一点G,从G出发,不停做切线,找对称点,依次得到-2G,2G,-4G,4G,-8G,8G... 。即:当给定G点时,已知x,求xG点并不困难。反之,已知xG点,求x则非常困难。即Q = NG,N就是我们的私钥,Q就是我们的公钥。
现在我们知道了公钥(Q)和私钥(N)的生成的原理,我们在看看椭圆曲线数字签名算法(ECDSA)的过程,椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。
私钥主要用于 签名,解密 ;公钥主要用于 验签,加密 ,可以通过私钥可以计算出公钥,反之则不行。
公钥加密:公钥加密的内容可以用私钥来解密——只有私钥持有者才能解密。
私钥签名:私钥签名的内容可以用公钥验证。公钥能验证的签名均可视为私钥持有人所签署。
通常需要六个参数来描叙一个特定的椭圆曲线:T = (p, a, b, G, n, h).
p: 代表有限域Fp的那个质数 a,b:椭圆方程的参数 G: 椭圆曲线上的一个基点G = (xG, yG) n:G在Fp中规定的序号,一个质数。 h:余因数(cofactor),控制选取点的密度。h = #E(Fp) / n。
这里以secp256k1曲线(比特币签名所使用的曲线)为例介绍一下公私钥对的产生的过成。
secp256k1的参数为:
本质上ECDSA的私钥就是一个随机数满足在曲线G的n阶里及k∈(0,n),根据Q=kG可以计算出公钥,生成的私钥一般为32字节大小,公钥通常为64个字节大小。如:
ECDSA签名算法的输入是数据的哈希值,而不是数据的本身,我们假设用户的密钥对:(d, Q);(d为私钥,Q为公钥) 待签名的信息:M; e = Hash(M);签名:Signature(e) = ( r, s)。
签名接口:
验证接口:
一个例子:
理解椭圆曲线加密算法
椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密。一般椭圆曲线方程式表示为:(...
边缘计算实验箱
广州市风扬信息科技有限公司,专注于技术创新和解决方案提供,我们致力于将人工智能的无限潜力转化为实际的解决方案,为各行各业的客户提供智能化的产品和服务。使命与愿景我们的使命是通过前沿的人工智能技术,推动社会进步和商业发展。我们的...
椭圆曲线加密算法(ECC)
椭圆曲线加密算法(ECC)是一种高效的安全加密手段,与RSA相比,ECC使用更短的密钥就能提供类似或更高的安全性。160位ECC等同于1024位RSA,而210位ECC的安全性相当于2048位RSA(具体数据需进一步确认)。比特币等加密货币采用secp256k1这一特殊椭圆曲线。椭圆曲线的运算基于阿贝尔群理论,其加法和二倍运算...
椭圆曲线算法在椭圆曲线加密(ECC)
在加密技术中,椭圆曲线算法(Elliptic Curve Cryptography, ECC)是一种广泛应用的手段。ECC的核心概念建立在一种特殊的数学结构——定义在有限域上的椭圆曲线上。这种曲线上的一般方程形式为:y^2 = x^3 + ax + b (mod p)其中,p是一个素数,代表了有限域,a和b是两个小于p的非负整数。它们...
椭圆曲线密码学简介(一):实数域的椭圆曲线及其群运算规则
在开始探讨之前,需要具备基础的数学知识,如集合论、几何学和模运算,以及对称加密和非对称加密的理解,以及对密码学中“简单”与“困难”问题的认识。ECC的核心是椭圆曲线,定义为满足Weierstrass公式的曲线,如[公式],其中参数的不同组合影响曲线在坐标系中的形态。常见的简化形式,Weierstrass Normal For...
ECC加密算法
在RSA算法中,因式分解的困难性提供了安全性的基础。而在ECC中,基于加法运算和乘法运算的困难性提供了安全性的保障。通过选择合适的椭圆曲线参数,如基点和安全参数,可以构建出强大的加密系统。加密过程涉及到选择随机数乘以基点,得到公钥;解密过程则依赖于私钥,即随机数,通过将公钥与私钥相乘得到原始...
椭圆曲线密码学简介(三):ECDH加密算法和ECDSA数字签名算法
椭圆曲线密码学的核心概念在于,我们能轻易计算出[公式]和[公式],但求解私钥[公式]却异常困难,这依赖于离散对数问题的难度。这为我们提供了ECDH协议的基础,它并非加密算法,而是密钥交换协议,通过它,Alice和Bob可以在保护信息的情况下共享密钥,如使用AES或3DES进行数据加密。在ECDHE的应用中,服务器和...
密码学基础2:椭圆曲线密码学原理分析
在实际加密算法中,我们通常需要多次通过椭圆曲线加法来实现一次加密,如下图所示: 图中打点的过程就是: 而在实际加密算法中,我们常常是使用一个点自己叠加,即初始直线变成椭圆曲线的切线即可,像下面这样: 我们定义对一个点 P 进行 n 次加法得到 nP,称之为标量乘法。如前面例子中 。 不过,当 n 很大时,执行 n...
椭圆曲线加密(ECC)核心算法的简明介绍
Ep(a,b)的加法 对与椭圆曲线y^2 = x^3+ax+b(mod p) :两点P(x1,y1) Q(x2,y2),P≠-Q,则P+Q=(x3,y3)由以下算法定义:实际通信流程如下:再对点M进行解码就可以得到明文。上述流程中的加法即为Ep(a,b)的加法。这个算法实际是基于已知kG难解k实现的,简单清晰。
ECC椭圆曲线密码学的原理、公式推导、例子、Python实现和应用_百度知 ...
椭圆曲线本身是通过特定方程定义的,它是离散对数问题的数学载体。加法法则在有限域上执行,例如点的加法和倍数运算,Python代码提供了直观的实现。ECDLP是ECC加密的核心,基于基点、私钥和公钥的概念,通过解决离散对数问题实现加密。ElGamal加密算法是ECC的重要应用,它利用了椭圆曲线的特性。而EC ElGamal是将...
比特币源码研读一:椭圆曲线在比特币密码中的加密原理
下面简要介绍一下椭圆曲线加密算法ECC。 首先椭圆曲线的通式是这个样子的:一般简化为这个样子:()发公式必须吐槽一下,太麻烦了。) 其中 这样做就排除了带有奇点的椭圆曲线,可以理解为所有的点都有一条切线。 图像有几种,下面列举几个:[1] 椭圆曲线其实跟椭圆关系不大,也不像圆锥曲线那样,是有圆锥的物理模型为...