加密算法一般分为对称加密和非对称加密,区块链中主要应用非对称加密算法。非对称加密指为满足安全性需求和所有权验证需求而集成到区块链中的加密技术。...椭圆曲线加密算法 椭圆曲线长什么样 椭圆曲线如果用公式表示的话,可以写成下面这样: y^2 = x^3 + ax + b 其中,a和b取不同的值时,曲线的样子也有所不同,比如说: ?...据说椭圆曲线的名字来源于它的表达式有点像计算椭圆周长的积分公式,而不是说这个曲线画出来是椭圆形~ 椭圆曲线的加法和乘法 椭圆曲线的世界里,定义了一种奇怪的加法法则:任意取椭圆曲线上的两点P、Q 画一条直线...应用于比特币中的椭圆曲线 那么应用到区块链中的椭圆曲线到底是个什么样子呢?...使用椭圆曲线生成公钥 说了一大堆椭圆曲线的基本原理,那么它到底是怎么应用到比特币中去的呢? 其实,椭圆曲线在比特币中扮演的角色说起来也很简单,就是用来生成公钥。
文章目录 1 椭圆曲线 2 椭圆曲线加解密算法 3 椭圆曲线签名算法 3.1 签名过程 3.2 验签过程 4 聚合签名 5 密钥消除攻击 椭圆曲线加密算法(Elliptic Curve Cryptography...,ECC)是基于椭圆曲线数学原理实现的一种非对称加密算法。...1 椭圆曲线 椭圆曲线可用以下方程式表示: y2 = ax3 + bx2 + cx + d 定义椭圆上两点相加A+B如下: 过A、B两点的直线,与曲线的交点,关于x轴对称的点为A+B。...3 椭圆曲线签名算法 椭圆曲线签名算法有很多种,这里以Schnorr签名为例。 3.1 签名过程 签名其实就是为了向验证方保证这是我发送的消息,但又不能暴露私钥。...这同样利用了椭圆曲线的性质,已知rG很难计算出r。
一、ECC椭圆曲线密码学在线教程 1.1、椭圆曲线密码学介绍 椭圆曲线密码学是一种可逆的非对称密码学算法,其英语全称:Elliptic Curve Cryptography,缩写为:ECC。...1.2、椭圆曲线密码学使用场景 ECC被广泛认为在相同的密钥长度下,最强大的非对称算法,因此在对带宽要求特别紧张的连接中会十分有用。...ECC其主要使用场景并非加密解密,而是数字签名和密钥交换,因为公钥算法在加密解密文本时(尤其是大文本数据)非常耗费计算资源,如果需要加密解密应该首选对称加密算法如AES等。...1.3、椭圆曲线密码学安全 受RSA算法后门以及棱镜门等事件影响,ECC椭圆曲线密码学算法开始被高度重视并快速流行起来,其占用更少的存储空间、更低的CPU开销和更少的带宽,但是可以提供更好的安全性、更强性能和较好的投资回报率...二、ECC椭圆曲线密码学常用标准 2.1、Curve25519椭圆曲线标准 Curve25519是由Bernstein在2006年发明的。Curve25519特点就是快!
切线规则:P 事椭圆曲线上的点,且不在无穷处,点 P 和自身的和为:直线 l 为椭圆曲线上在 P 处的切线,与椭圆曲线交于第 2 点 R^′ ,R 为 R^′ 关于 x 轴的对称点,则 P ⊕...P = R如果 l 与椭圆曲线没有第 2 个点,则和为无穷点 O。...不过因为椭圆曲线是 DL-secure 的,所以对数顺序很难算出。...但在某些情况下,为了获得更快的群算法或标量乘法,需要考虑更为特殊的椭圆曲线表示形式。Montgomery 曲线可以在常数时间内计算椭圆曲线标量乘法。...5 Hashing to Curves椭圆曲线密码学通常要求能够将数据哈希到椭圆曲线。如果椭圆曲线的阶不是素数,那么哈希到素数阶子群就很重要。
椭圆曲线加密-ECC 真正的非对称算法比这复杂多了,常见的非对称加密算法有RSA,还有椭圆曲线加密-ECC-Elliptic Curve Crytograph。...接下去就重点讲下,这个什么椭圆,什么曲线,是个什么鬼?...椭圆曲线 简单说它就是一套数学公式,比如:y^2 = x^3 + ax + b (当a和b满足4a^3 + 27b^2 ≠ 0的,才是一根有效的椭圆曲线) 当然,椭圆曲线有多种变化,通过系数a和b的变换...,任意一根穿过该椭圆曲线的直线,最多和曲线有三个交点。...以上就是ECC椭圆曲线加密的基本原理。 有限域 在真正的ECC算法里,会对椭圆曲线进行有限域转换,变成下面这个鬼样子: 像不像23x23的围棋棋盘?有没有完全看不懂?
椭圆曲线 作为梦开始的地方,椭圆曲线(Elliptic Curve)真的只是一个曲线,和其他曲线一样,都是函数在坐标轴中的一个映射。...根据mathworld中给出的椭圆曲线定义,描述椭圆曲线的函数可以定义如下: y^2 = x^3 + a*x + b 其中a、b是曲线的特征参数,决定了椭圆曲线的形状。...椭圆曲线加密相比于RSA加密而言的优点之一是我们只需要更少位数的k就可以获得和RSA相同甚至更高的安全性。 ECC ECC(Elliptic Curve Cryptography)即椭圆曲线加密算法。...椭圆曲线加密算法主要基于椭圆曲线在有限域中的循环子群,因此定义下面一些参数(domain parameters): p:定义了有限域大小的素数 a、b:定义椭圆曲线的特征参数 G:生成循环子群的基点 n...:循环子群的阶(order) h:循环子群的余因子(cofactor) 其中,组成ECC椭圆曲线加密算法的秘钥定义如下: 私钥:一个在*{1, …, n - 1}*范围内的随机数*d* 公钥:一个椭圆曲线上的点
这两处应用的签名算法都是椭圆曲线数字签名加密算法(Elliptic Curve Digital Signature Algorithm,ECDSA)。...有关ECDSA的几个理论概念的关系是这样的:椭圆曲线数字加密算法ECDSA是数字签名算法(DSA)的变例之一,ECDSA的基础是椭圆曲线密码学(Elliptic-curve cryptography,ECC...= (-7, 6)时的椭圆曲线,蓝色曲线表示 (a, b) = (-6, 6)时的椭圆曲线。...它基于有限域上特定椭圆曲线进行操作,最重要的操作是椭圆曲线的点倍积,不夸张的说,椭圆曲线点倍积正是椭圆曲线密码学的基石。 为什么这么说呢?...小结: 以太坊中的数字签名全部采用椭圆曲线数字加密算法(ECDSA), 它的理论基础是椭圆曲线密码学(ECC),而ECC存在的理论基础是点倍积(point multiplication)算式 Q =
目前我国居民二代身份证正在使用 256 位的椭圆曲线密码,虚拟货币比特币也选择ECC作为加密算法。 从射影平面讲起 古希腊数学家欧几里得的《几何原本》提出了五条公设。...只是因为椭圆曲线的描述方程,类似于计算一个椭圆周长的方程故得名 椭圆曲线示例 非椭圆曲线示例 这两个方程都不是椭圆曲线,因为他们在(0:0:1)点处(即原点)没有切线,不满足椭圆曲线每个点都必须是非奇异的...这样,加法的和也在椭圆曲线上,并同样具备加法的交换律、结合律 同点加法 若有k个相同的点P相加,记作kP P+P+P=2P+P=3P 有限域椭圆曲线 椭圆曲线是连续的,并不适合用于加密;所以,我们必须把椭圆曲线变成离散的点...,我们要把椭圆曲线定义在有限域上。...这就是椭圆曲线加密算法的数学依据 点G称为基点(base point) k(k<n)为私有密钥(privte key) K为公开密钥(public key) ECC保密通信算法 1.Alice选定一条椭圆曲线
PBFT 算法改进 4.1 改进思路 4.2 椭圆曲线 4.3 数字签名 4.4 聚合签名 4.5 改进 PBFT 5. 总结与思考 参考文献 1. 引言 2....PBFT 算法改进 4.1 改进思路 4.2 椭圆曲线 4.3 数字签名 4.4 聚合签名 4.5 改进 PBFT 5. 总结与思考 参考文献
小白大白话的来讲,就是基于某种数学知识的加密算法 包括比特币在内的几乎所有的数字货币(当然也有例外)都使用ECC算法用来保护消息摘要(小白:想要发送的内容)的真实性。...所以说椭圆曲线是现在数字货币大家用的最普遍的加密算法。...是因为世事无绝对,椭圆曲线不是唯一的,是有很多个,比如刚才我们看到的secp256k1这个曲线就是BTC使用的椭圆曲线。...椭圆曲线有几个特征 1) 椭圆曲线就是一个方程(不用管多复杂的方程) 2) 它由6个变量组成(可以脑补X,Y,Z,A,B,C(随便说的)) 3) 不同的变量决定了不同的椭圆曲线(可以有好多好多条椭圆曲线...未来Seele元一底层公链运行时,用户可以自行选择单业务场景需要使用的椭圆曲线加密算法(可多重),让Seele元一全面适应不同的地区,国家业务,适应不同的业务场景的业务。
入坑指南 3:kotlin的标准secp256r1曲线和go的曲线参数不一样。 入坑指南 4: kotlin和go的密钥交换算法原理相同,实现大有千秋,这里使用java实现go的密钥交换算法。...坑3源码打印出来,go的曲线结构为: go-curve.png 其中:各个参数为定值: go-params.png 而kotlin的曲线结构为: kotlin-curve.png 其中:
椭圆曲线基础 ECC算法的核心是椭圆曲线数学。在数学上,椭圆曲线是满足特定方程的点的集合。椭圆曲线上的点满足一定的加法运算规则,这些规则构成了椭圆曲线密码学的基础。...在ECC中,我们通常使用有限域上的椭圆曲线,这样可以提高运算效率。 2.2. ECC密钥生成 在ECC中,密钥的生成主要依赖于椭圆曲线上的点。...选择一个合适的椭圆曲线和一个基点(生成元),私钥为一个随机选择的整数,公钥为私钥与基点的乘积。由于椭圆曲线上的点运算具有单向性,从公钥无法推导出私钥,因此保证了ECC算法的安全性。 2.3....ECC加密与解密 ECC加密算法使用接收方的公钥对数据进行加密,接收方使用自己的私钥进行解密。...在Java中使用ECC(椭圆曲线密码学)进行加解密通常涉及密钥对的生成、加密和解密过程。
首先我们从加解密这块入手,其中这块中最基础的就是椭圆曲线。 !...,然后给定一个点p,并判断这个点是否在曲线上,代码运行后返回结果为: ```python is point p on curve: True ``` 也就是给定的P点确实在曲线上,从这里可以看出,椭圆曲线在运用时...在数学上椭圆曲线定义了一种运算叫"加法“,千万不要将其与我们普通的四则运算等同起来,我们看看椭圆曲线的"加法"是如何运作的。...在椭圆曲线上取两点,如果这两点不是同一点,那么这两点相加的运算如下图所示: !...要想创建个人钱包地址,我们需要先从椭圆曲线创建一个叫"公钥”的数据,首先我们在曲线上取专门的一点用G表示,然后创建一个足够大的随机数k,然后计算这两个数相乘的结果 K = k \* G , 注意这里G是椭圆曲线上的一个点
在定义椭圆曲线点群时出现了描述曲线所用算法的参数const EC_METHOD *meth,这一节就来看看这个参数有什么用处。 椭圆曲线算法集的定义如下。...struct ec_method_st { (具体定义略,详情可参见代码文件ec_lcl.h) };// EC_METHOD 在结构体ec_method_st中列举了实现过程中用到的各种椭圆曲线算法...,比如椭圆曲线点群的建立和释放,设置群参数,点的比较,点的加法和倍乘等等,覆盖面很广,几乎涉及所有的椭圆曲线算法。...举个例子,“判断点是否在曲线上”只需要调用EC_POINT_is_on_curve函数,而无需考虑是二元域还是素域。那EC_POINT_is_on_curve怎么知道是对哪种类型的有限域呢?...这样就做到了将“判断点是否在曲线上”函数接口的统一。 关于函数接口的统一问题,在后面会进一步讨论。
前两章我们了解了有限群和椭圆曲线,特别是了解了椭圆曲线上的点如何进行”加法“操作。有意思的是,如果我们将有限群里面的点与椭圆曲线结合起来能产生非常奇妙的化学反应。...我们把求余操作带入到椭圆曲线上,如果一个有限群中的点,把它的x和y带入到椭圆曲线方程,先计算对应结果,然后再进行求余运算,如果求余后结果相同,那么我们就说该点在椭圆曲线上。...,我们就能将有限群中的点与椭圆曲线结合起来。...“零点”,假设G经过n次自加后得到椭圆曲线上的零点,由此形成n个椭圆曲线点形成的集合: {G, 2G, 3G, …, nG} 我们用“组”来形容它,椭圆曲线上的点做数值乘机很容易,但反过来给定一个点,让你查找它是哪个点和哪个常量的乘积则非常困难...,这个特性决定了椭圆曲线的加密功能。
下面定义的椭圆曲线点群不仅包含了域的信息和曲线的信息,甚至还包括了很多别的有利于实现的信息。 椭圆曲线点群的定义如下。...const EC_METHOD *meth指出椭圆曲线所用的是那些算法,详情参见§5.1.2。 EC_POINT *generator为基点(EC_POINT的定义参见§5.1.3)。...BIGNUM a, b为曲线参数,即Weierstrass方程中的参数a、b。 int a_is_minus3; 判断a是否为负3,因为a为负3时点的运算可优化(参见§5.4.4)。
椭圆曲线上的任一仿射点(x, y)(非无穷远点)都可以压缩成利用其y坐标的最后一比特(记为y*)和x坐标来表示,即(x, y*),这就是点的压缩。
大概了解区块链底层加密算法的同学都会听到一个名词叫”椭圆曲线“,它是抽象代数和数论中一个非常重要的概念,同时也是数学研究领域的一个重要分支,在理论研究上,英国数学家正是借助椭圆曲线证明了费马大定理,在应用上它则在加解密上发挥重大作用...椭圆曲线表面上看起来似乎没有那么复杂,任何满足如下形式的方程都称为椭圆曲线: y^2 = x ^3 + a.x + b 它跟一般多项式不同在于,它左边y是取平方。...正是因为这个特性,所以椭圆曲线具有x轴对称的特点,这些曲线的图形类似如下形状: 在比特币中,使用的椭圆曲线有个”不明觉厉“的名称叫secp256k1,其实就是将上面公式中的a取0,b取7,也就是:...y ^ 2 = x ^ 3 + 7 在椭圆曲线上,有一些特定点所形成的集合在加解密上能发挥重大作用,因此我们先用代码定义椭圆曲线的点: class EllipticPoint: def __init...由此椭圆曲线上点的”加法“定义如下,假设有两个在椭圆曲线上的点A, B,它们所形成直线如果与椭圆曲线有三个交点C,那么将c点沿着x轴对称后所得的点就是A”+”B的结果,情形如下: 显然这样的定义会带来困惑
SM2算法 SM2算法:SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能...算法描述: 1、用户A选定一条适合加密的椭圆曲线Ep(a,b)(如:y2=x3+ax+b),并取椭圆曲线上一点,作为基点G。 ...SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。...详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。...数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器。数字签名算法,密钥交换协议以及公钥加密算法根据总则来选取有限域和椭圆曲线,并生成密钥对。
前两节我们探讨了抽象代数的重要概念:有限域,然后研究了基于椭圆曲线上点的怪异”+“操作,两者表面看起来牛马不相及,实际上两者在逻辑上有着紧密的联系,简单来说如果我们在椭圆曲线上取一点G,然后让它跟自己做...首先我们把上面提到的有限域点在椭圆曲线上的判断逻辑用代码实现一下看看: """ 将有限域的点输入到椭圆曲线,需要注意的是在椭圆曲线里执行+和*两种运算时,它会自动转换为 有限域定义的__add__ 和...__mul__运算,注意到即使运算操作的逻辑变了,但是判断点是否在椭圆曲线上 依然是判断椭圆曲线对应公式的两边是否相等 """ a = LimitFieldElement(0, 223) b = LimitFieldElement...,这个操作将对椭圆曲线加密产生重要作用,后面我们会选取椭圆曲线上一点G, 然后选取一个常量k, 计算 kG,其中k对应的就是私钥,而kG对应的就是公钥。...对于比特币使用的椭圆曲线,它有几个特点,首先是参数a, b非常简单,其次它对应有限域中元素个数及其多,接近2 ^ 256,所以椭圆曲线G点两个分量大小都接近256bit,也就是32字节,这个数值几乎接近了全宇宙的原子总数
领取专属 10元无门槛券
手把手带您无忧上云