一、ECC椭圆曲线定义
1985年,Koblitz 和Miller独立地提出了椭圆曲线公钥密码体制(ECC),安全性基于椭圆曲线群上的离散对数问题的难解性,该问题目前最好的解法是指数级时间的算法。 一般认为,RSA和DH密钥交换协议需用1024比特以上的模数才安全,但对ECC,只要 160比特的模数就可达到同样级别的安全性
二、secp256k1椭圆曲线
三、bls12-381椭圆曲线
BLS12-381是嵌入度为12的381位特征的BLS曲线, 128位安全级别。
BLS12-381是一种Zcash、filecoin中所使用的新型zk-SNARK椭圆曲线加密算法,隶属于Bellman库,由Rust语言所实现,它的特点是小巧易用,能快速验证,同时兼备加密时延和快速可验证两个特性。可缩小算术电路的大小,降低密钥的大小,以及简化协议,定义如下图:
四、椭圆曲线阿贝尔群定义
五、椭圆曲线上的加法运算
设P, Q是E上的任意两点, 连 接P, Q交E于R’,则称R’关于x轴的 对称点R为P与Q的和, 记为:
此时称之为点加运算 。
5.1、当P与Q重合时
六、标量乘算法定义
在这里n是一个自然数。
该公式看起来计算nP需要计算n次加法。如果n是k个二进制位,那么该算法复杂度是O(),计算量有点大。但是其实存在更快速的方案。
其中一个就是先做倍数再做加法。要了解基本原理还是直接看例子会比较快。假设n=151,其对应的二进制是10010111。而该二进制数字可以转化为:
所以我们可以这么写: