当前位置:首页 > 科技数码

阿贝尔群 技术科普 | 国密算法在Ultrain区块链中的运用

密码学是区块链的基础,区块链使用了大量的密码算法,包括对称加密、非对称加密、单向散列算法、数字签名等技术。

为了实现密码技术的自主控制,我国也制定了自己的国家保密标准。2020年央行发布的《金融分布式账簿技术安全规范》明确要求国内区块链技术必须支持国家秘密算法。奥群区块链现在已经完成了对国家机密算法的支持,该算法符合中央银行安全条例的所有要求。

本文首先介绍了对称加密、非对称加密和数字签名的基本概念,然后重点介绍了椭圆曲线密码在非对称加密算法中的应用,最后阐述了国家秘密算法在区块链奥群中的应用。针对openssl国家秘密算法签名验证性能低的问题,Ultrain优化了算法实现,实现了3~4倍的性能提升。相关优化代码已提交给openssl Github

(https://github . com/OpenSSL/OpenSSL/issues/11992).

01

对称加密和非对称加密

1.1对称加密

对称加密是指在加密和解密中使用相同密钥的方式。对称密钥有很多别名,如公钥密码、传统密码、私钥密码、共享密钥密码等。图1和图2分别是对称密码加密和解密过程。加密和解密使用同一个密钥,所以称为对称加密。

图1。对称密码加密

图2。对称加密解密

1.2不对称加密

不对称加密在加密和解密中使用不同的密钥,也称为公钥加密。它们通常是一对密钥:公钥和私钥。用公钥加密的密文可以用私钥解密。用私钥加密的密文可以用公钥解密。公钥是从私钥派生的,并且是公共的。非对称加密解决了对称加密过程中加密密钥的分配问题。一般公钥用于加密,私钥用于解密。私钥用于加密时,本质上是数字签名,即用公钥解密可以验证信息确实是私钥加密的结果。目前,公钥密码主要有以下几种:

RSA(Ron Rivest, Adi Shamir和Leonard Adleman的姓氏的首字母组成),该算法利用大质因数分解的困难度。EIGamal,由Taher EIGamal设计,与RSA不同,它是利用mod N下求离散对数的困难度。Rabin,由M.O.Rabin设计的公钥算法。Rabin方式求平方根的困难度椭圆曲线密码(Elliptic Curve Cryptography, ECC),

今天,我们重点介绍密码算法,它是通过将椭圆曲线上的一个特定点相乘来实现的。它利用了这个乘法算法的逆运算非常困难的事实。

公钥算法比对称加密算法慢,所以数据加密采用对称加密算法,而公钥密码算法更多用于数字签名场景。

1.3数字签名

一天,爱丽丝给鲍勃发了一封电子邮件:“嗨,鲍勃,给我打100万元。账号是6214 6576 8789 8987。帐户名是爱丽丝”。在现实生活中,鲍勃可能会打电话给爱丽丝,确认邮件是否是伪造的;还要确认内容是否被篡改,防止收款账号和金额被恶意修改;当然也有鲍勃给爱丽丝钱的场景,但是爱丽丝否认发了这封邮件。

能够防止伪造、篡改和否认等上述威胁的技术是上述数字签名。通常消息比较长,我们只签消息的哈希值,所以爱丽丝的邮件流程如下:

1.Alice使用单向哈希函数计算邮件内容的哈希值;

2.爱丽丝用私钥对哈希值进行加密,得到的密文就是爱丽丝在这个哈希值上的签名。由于只有爱丽丝持有自己的私钥,所以除了爱丽丝本人,没有人能生成同样的密文,签名爱丽丝也不能否认;

3.爱丽丝将消息和签名发送给鲍勃;;

4.鲍勃用爱丽丝的公钥将收到的签名解密成哈希值;

5.Bob将4中得到的哈希值与Alice直接发送的消息的哈希值进行比较。如果一致,则签名验证成功,否则验证失败。

图3。数字签名和签名验证

02

椭圆曲线加密算法详解

以上,我们了解了对称加密和非对称加密的基本概念。在这一部分,我们主要讨论椭圆曲线技术在非对称加密算法中的数字签名。

基本概念2.1.1阿贝尔群

在数学中,群是由集合和二元运算+组成的代数结构,满足以下条件:

1.结束。集合中的两个数进行二进制运算,结果仍然在集合中。

2.组合。a+b+c = a+(b+c)

3.单位元。有单位元素0,所以a+0 = 0+a = a。

4.逆元素。每个元素都有一个相反的数字。对于任何A,必须有B,这样a+b=0

5.交换法。a+b+c = a+c+b

2.1.2椭圆曲线方程

图4。椭圆曲线[1]

在密码学中,素数域GFp中定义的椭圆曲线方程为:

E: y2 = x3+ax+b,其中a,b∈GFp和(4a3+27b2) mod p!= 0

除了p,a,b定义曲线外,通常还需要x,y,n来定义一条椭圆曲线。因此,描述有限域上的椭圆曲线,有6个变量:T = (p,a,b,x,y,n)。

P-素数域的点数,P越大越安全,但随着计算量的增加。

a,b曲线系数

x,y-G点的x,y轴坐标

n-是素数,是G点的阶。在椭圆曲线上的一个点p处,存在最小的正整数,使得NP = 0∩(原点或无穷远点,下面的无穷远点用0表示),那么n就称为p的阶;如果n不存在,我们说p是无穷大。在素数域上,椭圆曲线的所有点的阶都存在。

2.1.3椭圆曲线上的点运算

素域上椭圆曲线上的点也是阿贝尔群。单位元素是无穷远点0。椭圆曲线上p点的逆元是x轴对称的点。

P和Q分别是素域GFp上椭圆曲线的两点,它们的连线在第三点R与椭圆曲线相交(见图5中的情况1),P+Q+R = 0有一个无穷远点。有几种特殊情况,即下图中的2、3、4。第二种情况,直线与Q相切,可以认为Q和Q在P点与椭圆曲线相连相交,即Q+Q+P = 0;;第三个P、Q点平行于y轴,因为两条平行线在无穷远处相交,所以有P+Q+0 = 0;第四种情况,P和P是连通的,在无穷远处相交。

图5。椭圆曲线运算[1]

根据以上情况,我们得出以下结论:

Q+Q+P = 0表示Q+Q = -P,(Q+Q)+(Q+Q) = (-P)+(-P),即以P -P的对称点为切点,以此类推,可以快速得到2n*Q个点,n∈0,+∞。用椭圆曲线加密时,私钥是一个大整数,公钥是椭圆曲线上的点G和私钥的乘积。我们通过私钥的二进制表示来快速计算公钥。

2.2算法应用

椭圆曲线主要用于数字签名。以下是实现数字签名和签名验证的数学计算过程。

2.2.1数字签名和签名验证

数字签名主要需要消息m的哈希值(抽象)h和私钥kA生成最终结果{r,s };签名验证主要使用公钥p和消息摘要h,以下是签名生成和签名验证的计算过程。

生成签名,即计算r和s的过程私钥为大数kA,公钥为私钥与G点相乘的点,P = kAG生成随机数小k,计算与基点的乘积K=kG,K点的x轴坐标Kx对椭圆曲线阶n的模Kx(mod n)为r,即r = Kx (mod n)计算k基于曲线阶的乘法逆元k-1(mod n)r已经在第2步中生成,s=k-1(h+kAr)(mod n)签名验证计算s基于椭圆曲线阶n的逆元s-1计算u1 = hs-1计算u2 = rs-1计算点Q=u1G+u2*P取点Q的x轴坐标Qx,若Qx等于r,即签名过程中K点的x轴坐标Kx,则验证通过。证明为什么在验证签名过程中有这个特性?根据签名计算可知,s=k-1(h+kAr)(mod n),两边乘k有sk=(h+kAr)(mod n)。点Q=u1G+u2*P,又P=KAG,有Q=u1G+u2KAG把u1和u2代入,Q=hs-1G+rs-1KAG=(h+rkA)s-1G把步1公式代入步骤3中,Q=sk*s-1G = kG,所以,假如{r,s}, h正确,点K和点P有相同的x轴坐标 2.2.2 椭圆曲线与RSA技术对比优势

之前我们讲过非对称密码体制RSA,State Secret推荐椭圆曲线加密,因为椭圆曲线比RSA有一定的优势:

更安全。椭圆曲线基于离散对数困难度,计算复杂度是指数级的,求解难度大。而RSA算法是大质因数分解困难度,计算复杂度是亚指数级的。更短的密钥。同等安全程度要求下,椭圆曲线算法比其他公钥算法需要的密钥长度小很多。128bit椭圆曲线算法拥有1024bit RSA算法相同的安全程度。 2.3 常用几种椭圆曲线 secp256k1. 在比特币和以太坊网络中,用的是secp256k1,p是256位的素数,k代表Koblitz。a=0,b=7。曲线方程即y2=x3+7。Koblitz椭圆曲线具有一些特殊属性,可以更有效地实现组操作。secp256r1. secp256k1的姊妹曲线。p也是256位的素数,但值和secp256k1曲线是不一样的,r代表随机。"随机"选择的参数更安全,然而,有些人怀疑随机系数可能已经被选择来提供后门。因此,比特币网络并没有选择它,而是选择了更高效的secp256k1。SM2曲线。SM2是基于前人对ECC研究的基础上,中国推荐的标准曲线。GB/T 35276-2017定义了SM2算法的具体实现。

03

国家秘密算法在Ultrain中的应用

除了SM2椭圆曲线,区块链Ultrain还应用sm3和sm4来支持国家秘密算法对。

SM3 散列算法,生成256bit的散列值,主要用于替换SHA256算法。SM4 对称加密算法,Ultrain钱包公私钥加密用SM4取代了aes128。 3.1 国密算法实现详解

上面,我们解释了椭圆曲线的原理,而SM2曲线也是基于它,但它也有自己的特点:

3 . 1 . 1 SM2氢值的计算

在secp256k1中,h是报文的哈希值,而在SM2,h值的计算比较复杂,需要分两步计算:

1.通过sm3算法计算z值:

z = SM3(ENTL | | ID | | a | | b | | xG | | yG | | Xa | | Ya)

标识:用户标识的字符串

用两个字节表示的标识的位长

a、b:曲线参数

XG,yg:g点坐标的x,y轴

XA,yA:公钥坐标的x轴和y轴

2.使用Z和要签名的消息,计算哈希值h到sm3,其中h=SM3(Z||M)

3.2国家秘密算法优化3.2.1性能问题3.2.1 openssl SM2曲线

我们开发了基于openssl的SM2实现,但是发现签名和验证的速度非常慢。在Macbook Pro上,每10秒签名22496次,每10秒验证24374次。到EC_POINT_mul的位置比较慢。看openssl的源代码,并没有预先缓存2n*G,n∈n/0,256这类点(私钥256位长)。比如私钥二进制是1000 1100,它的公钥是27*G+23*G+22*G,2*G,22*G,23*G...2256*G都是已知的,所以只需要椭圆曲线上三点的+运算,不需要每次重新计算。另外,一些核心功能需要编译,优化后性能提升3-4倍,如下表所示。

表1 .性能优化前后的比较

我们已经向openssl Github提交了相应的优化代码。

图6。优化代码提交到openssl Github

3.2.2 SM2签名和消息不能恢复公钥

在secp256k1中,我们可以根据签名{r,s}和消息恢复公钥,但是SM2不能通过签名和消息恢复公钥,因为我们在计算SM2的h值的过程中使用了公钥的坐标,所以我们必须知道公钥,这与只有签名和消息恢复公钥相矛盾。因为SM2不能通过签名和消息恢复公钥,所以在交易验证过程中,我们总是取出公钥进行验证。但是,在我们的系统中,一个账户可以有多个公钥,因此需要遍历账户的公钥来验证交易,这导致多个公钥账户的交易执行性能较低。幸运的是,我们统计系统中99%的账户只有一对公钥和私钥,所以理论上不会影响系统的整体性能。

04

结论

本文首先介绍了对称加密和非对称加密的基本概念,然后详细介绍了非对称加密技术中的椭圆曲线加密技术。最后阐述了区块链对国家秘密算法的支持,对椭圆曲线加密的理解需要较高的数学基础。区块链的分散信任是基于密码学的,而密码学是基于数学的。因此,在数学中,我们信任。

参考文献:

[1].https://encyclopedia.thefreedictionary.com/elliptic+curve

1.《阿贝尔群 技术科普 | 国密算法在Ultrain区块链中的运用》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《阿贝尔群 技术科普 | 国密算法在Ultrain区块链中的运用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1113046.html

上一篇

合肥市社保局网上办事大厅 合肥市单位和个人社会保险如何查询

下一篇

赖宝突发心梗去世年龄多大几岁 赖宝日记经典语录

蒙面唱将爱丽丝洋娃娃是谁

蒙面唱将爱丽丝洋娃娃是谁

综艺节目《假面唱猜想》第三期第十期,新歌手“爱丽丝娃娃”再次亮相。节目中,她和“可汗宝贝”一起唱了一首《突然》,引起了网友的关注。清晰的声音非常独特,很快被熟悉她的网友认出来。这个“爱丽丝娃娃”是歌手陈丽。陈力,1990年7月26日出生于贵州省贵阳市,毕业于上海对外经济贸易大学。她是想家乐队的主唱。2012年...

广发基金定投 广发基金指数投资部负责人罗国庆:基金定投如何克服“悲伤曲线”

广发基金定投 广发基金指数投资部负责人罗国庆:基金定投如何克服“悲伤曲线”

本周中央广播电视总台之声《基金观察》聚焦“基金定投方法论”。本期话题:基金定投如何克服“伤心曲线”。 刘思强:基金定投的“微笑曲线”之美,我们以前也学过。那么,当基金决定投票时,是否有可能遇到“伤心曲线”? 罗国庆:众所周知,“微笑曲线”是市场先跌后涨,定投收益不断增加的过程。但是有没有“伤...

爱丽丝的觉悟3 DNF:逆转的次元隐藏副本玩法攻略,一次奖励30个时间引导石

  • 爱丽丝的觉悟3 DNF:逆转的次元隐藏副本玩法攻略,一次奖励30个时间引导石
  • 爱丽丝的觉悟3 DNF:逆转的次元隐藏副本玩法攻略,一次奖励30个时间引导石
  • 爱丽丝的觉悟3 DNF:逆转的次元隐藏副本玩法攻略,一次奖励30个时间引导石

元阳旅游 地球最美的曲线:元阳哈尼梯田旅游攻略

  • 元阳旅游 地球最美的曲线:元阳哈尼梯田旅游攻略
  • 元阳旅游 地球最美的曲线:元阳哈尼梯田旅游攻略
  • 元阳旅游 地球最美的曲线:元阳哈尼梯田旅游攻略

54岁的李若彤身材曲线太好了 李若彤体重身高各多少

  • 54岁的李若彤身材曲线太好了 李若彤体重身高各多少
  • 54岁的李若彤身材曲线太好了 李若彤体重身高各多少
  • 54岁的李若彤身材曲线太好了 李若彤体重身高各多少
分数乘整数怎么算 一课研究之“算法与算理相融《分数乘整数》教学设计”(20191228)

分数乘整数怎么算 一课研究之“算法与算理相融《分数乘整数》教学设计”(20191228)

一个 让我介绍一下我是谁  大家好,我是来自仙居一小学的朱乐平名师工作站“一课研究”小组第28组成员王健,很高兴在这里见到大家。 2 这一期的内容是什么 听:“孩子的时间是不变的”于 阅读:关于分数乘整数教学的思考 想想看:数学题 三 轻松听书 “孩子的时间是不变的”于 四 坚持阅读8分钟...

国内外知名高校大学生 竞技AI算法精英赛

上周末,2020DIGIX全球校园AI算法精英赛在雨花台区举行。在这次由江苏省人工智能研究所、华为终端云服务、华为南京研究院联合举办的国际人工智能竞赛中,来自国内外知名高校的学生借助“机器学习”和“计算机视觉”的竞赛,展示...

神探桐人杰 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜

  • 神探桐人杰 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜
  • 神探桐人杰 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜
  • 神探桐人杰 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜