欢迎来到爱乐透官方版下载_爱乐透旧版本智能机选_爱乐透手机彩票网址! 联系我们 网站地图

爱乐透官方版下载_爱乐透旧版本智能机选_爱乐透手机彩票网址

0379-65557469

行业新闻
全国服务热线
0379-65557469

电话: 0379-65557469
0379-63930906
0379-63900388 
0379-63253525   
传真: 0379-65557469
地址:洛阳市洛龙区开元大道219号2幢1-2522、2501、2502、2503、2504、2505室 

行业新闻
当前位置: 首页 | 新闻中心 > 行业新闻

涨常识丨一文读懂比特币Schnorr签名

作者:admin 发布时间:2019-05-14 20:11:19 浏览次数:215
打印 收藏 关闭
字体【
视力保护色

本文来历:头号仓


公私密钥对是加密钱银安全性的柱石,从安全的网页阅览到加密钱银金融业务。公私密钥对是不对称的,这意味着给定一串数字(私钥),能够导出另一串(公钥)。可是,反之就不可行。正是这种不对称性答应人们揭露同享公钥,揭露也能坚信没有人能够推导出私钥(私钥需求隐秘且安全地保管)。

非对称密钥对首要用于两种运用:

在身份验证中,你需求证明自己把握私钥;

在加密过程中,信息能够编码,只需具有私钥的人才干解密和阅览音讯。

在本篇数字签名的介绍中,咱们将评论一类特定的钥匙:从椭圆曲线派生的钥匙,还有其他非对称计划,其间最重要的是依据素数乘积的计划,包括RSA密钥[1]。

咱们假定你了解椭圆曲线加密(Elliptic Curve Cryptography)的基础知识,假如不了解的话不要紧能够到原文的前一章节了解。

进入正题

这是对数字签名的交互式介绍,运用Rust代码来演示本文提及的一些主意,因而你能够看到它们是怎么运作的,本文介绍的代码运用的是libsecp256k-rs子库。

这个姓名有点拗口,但secp256k1是椭圆曲线的称号,它用于维护许多加密钱银买卖,包括比特币。

这个特别的库供给了一些很不错的功用,咱们重写了加法和乘法运算符,以便Rust代码看起来更像数学公式,这使咱们更简略实验想要施行的主意。

友谊提示!不要在编写代码过程中运用此库,它没有经过验证,假如需求的话能够用这个子库代替。

Schnorr签名的基础知识

公钥和私钥

咱们要做的榜首件事是从椭圆曲线创立公钥和私钥。

在secp256k1中,私钥仅仅0到2256之间的标量整数值,数量之多适当于整个世界的原子数,所以有无穷无尽的可能性。

secp256k1曲线上有一个特别点,名为G,它充任“原点”。公钥是经过将曲线上的G加到本身,乘以“Ka”,这是标量乘法的界说,写成:

Pa=KaG

举个比方,当以未紧缩涨常识丨一文读懂比特币Schnorr签名格局编写时,1的公钥是0479BE667 ... C47D08FFB10D4B8,以下代码演示了这一点:



创立签名

选用办法

当为标量运用正确挑选的随机值时,回转ECC数学乘法(即除法)几乎是不可行的([5],[6])。这个特点称为离散日志问题(Discrete Log Problem),作为许多加密钱银和数字签名背面的原理运用。有用的数字签名是证明签名供给人知悉与音讯相关联的公钥/私钥的依据,或许已处理离散日志问题的依据。

创立签名的办法一直遵从以下办法:

1. 生成隐秘一次性数字r(称为随机数)。

2. 从r创立公钥R,其间(R=rG)。

3. 将以下内容发送给你的收件人Bob——你的音讯(m),R和你的公钥(P=kG)。

经过哈希上述一切公共信息的组合来创立实践签名以创立问题,e:

e=H(R||P||m)

挑选哈希函数,使e与私钥具有相同的规模,在咱们的比方中,咱们想要回来的信息是256位数字,所以SHA256是个不错的挑选。

现在运用你的私家信息构建签名:s=r+ke

Bob现在也能够核算e,由于他现已知道m、R、P,可是他不知道你的私钥或随机数。

留意:创立这样的签名被称为Schnorr签名,咱们稍后会持续评论,还有其他创立s的办法,比方在比特币中运用的ECDSA [2]。

看这个比方:sG=(r+ke)G

将右侧相乘:sG=rG+(kG)e

代替R=rG和P=kG,能够得到:sG=R+Pe

所以Bob有必要核算对应于签名(s.G)的公钥,并查看它是否与等式(R+Pe)右侧持平,这些音讯关于Bob来说都已知。

随机数Nonce的必要性,为什么规范签名中需求随机数?

假定咱们仅仅仅仅签署了一条音讯m:

e=H(P||m)

签名为s=ek

咱们能够照旧查验签名是否有用?


现在为止都正常,可是现在任何人都能够阅览你的私钥,由于s是标量,所以k=s/e并不难,至于随机数,有必要求解k=(s-r)/e,但r是不知道的,所以只需r是随机挑选的,这就不是一个可行的核算。

咱们能够证明,没有随机数的确是十分不安全的:


ECDH是什么?

想要完结安全通讯的各方要怎么生成用于加密音讯的同享密钥?一种办法称为椭圆曲线Diffie-Hellmam交流(Elliptic Curve Diffie-Hellmam exchange),这是一种简略的办法。

ECDH用于许多地方,包括通道洽谈期间的闪电网络[3]。

这是它的作业原理,Alice和Bob想要安全地交流,一种简略的办法是运用互相的公钥并进行核算:




出于安全原因,一般会为每个会话随机挑选私钥(这涉及到“暂时密钥”这一术语的运用),可是咱们遇到的问题是不确定对方是否与他们宣称的身份相符(可能是中间人进犯[4])。

能够选用其他身份验证过程来处理此问题,这儿不再胪陈。

Schnorr签名

假如你常常重视加密钱银新闻,就会知道比特币Schnorr签名是多抢手的论题。



但实践上,这现已算是旧闻了,Schnorr签名被当作是随机预言模型中最简略的安全数字签名计划,它很有用而且生成短签名,取得美国专利4995082,该专利于2008年2月到期[7]。

为什么Schnorr签名能引起重视?

Schnorr签名如此诱人而风险的原因在于简洁性。 Schnorr签名是线性的,因而具有一些优秀特点。

椭圆曲线具有乘法性质,因而,假如有两个对应点X,Y和相应的标量x,y,则:

(x+y)G=xG+yG=X+Y

Schnorr签名的办法为s=r+ek,这种结构也是线性的,因而它十分合适椭圆曲线数学的线性。

在上一节中现已介绍了线性,当咱们验证签名时,Schnorr签名的线性使其十分具有吸引力,其间包括:

1. 签名聚合;

2. 原子交流;

3.“无脚本”脚本

Nave签名聚合

让咱们看看,Schnorr签名的线性特点怎么用于结构多重签名。

Alice和Bob想要签署一些东西(比方Tari买卖)而不用相互信任,也就是说,他们需求证明其各自密钥的一切权,而且只需在Alice和Bob都供给其签名部分时,聚合签名才有用。

假定私钥表明为ki,公钥表明为Pi。 假如咱们要求Alice和Bob各自供给一个随机数,能够测验:



所以Alice和Bob能够自己供给R,任何人都能够从R的总和公钥中构建两个两个签名,这的确可行:




可是这个结构并不安全!

密钥消除进犯

依旧是上述场景,但这一次,在Alice发布今后,Bob提早知道了Alice的公钥和随机数。

现在Bob扯谎并说他的公钥是P'b=Pb-Pa,公共随机数是R'b=Rb-Ra。

Bob并不知道假造值的私钥,可是也没多大影响。

依据聚合计划,每个人都假定Sagg=Ra+R'b+e(Pa+P'b)。

但Bob能够自己创立这个签名:





更好的聚合办法

在密钥撤销进犯中,Bob不知道发布的R和P值的私钥,咱们能够要求他签署一则音讯证明他的确知道私钥,让Bob进犯失利。

这是有用的,但它需求在各方之间进行另一轮音讯传递,这不利于杰出的用户体会。

更好的办法是包括以下一个或多个功用的办法:

它只需证明在一般的公钥模型中是安全的,而不用证明和密钥有关音讯,由于咱们能够要求Bob在nave办法中证明。

它应该满意惯例的Schnorr方程,即能够用R+eX办法的表达式验证得到的签名。

它答应交互式聚合签名(IAS),签名者需求合作。

它答应非交互式聚合签名(NAS),其间聚合能够由任何人完结。

它答应每个签名者签署相同的音讯,m。

它答应每个签名者签署自己的音讯,mi。

多重签名

多重签名是最近提出的([8],[9])简略签名聚合计划,它满意前一节中的一切特点。

多重签名演示

咱们将在这儿演示交互式多重签名计划,每个签名者签署相同的音讯,该计划的作业原理如下:

1. 如前所述,每个签名者都有一个公私密钥对。

2. 每个签名者都对他们的公共随机数同享一个许诺(在本演示中越过此过程),此过程对避免某些类型的歹意密钥进犯是必要的[10]。

3. 每个签名者都发布他们的随机数,Ri的公钥。

4. 每个人都核算相同的“同享公钥”,X如下:



请留意,在上述公钥排序中,应遵从某些既定规矩,例如按字典次序序列化密钥。

1. 每个人也核算同享的随机数,R=∑Ri。

2. 问题,e是H(R||X||m)。

3. 每位签名者都需求对签名供给奉献:



留意,规范Schnorr签名的仅有起点是包括因子ai。

聚合总签名一般是总和,s=∑si。

经过以下办法承认验证:sG=R+eX

证明:



让咱们用三重签名来演示:




安全演示

作为终究的演示,让咱们展现一下多重签名怎么从nave签名计划中抵挡消除进犯。与密钥消除进犯部分主意相同,Bob在他的随机数和公钥中供给了假值:



这导致Alice和Bob一起进行了以下核算:



Bob随后在多重签名后构建单边签名:


咱们现在假定ks不需求成为Bob的私钥,可是他能够运用他已知的信息来推导,要使其成为有用签名,有必要验证R+eX,因而:



在之前的进犯中,Bob从相似核算中取得了所需的一切算式右侧信息,在多重签名中,Bob有必要以某种办法知道Alice的私钥和假造的私钥(这些条款不再撤销)才干创立单边签名,因而他的消除进犯失利。

重放进犯

每个签名典礼都要挑选一个新的随机数,这一点至关重要,最好的办法是运用加密安全(伪)随机数生成器(CSPRNG)。

但即使是这种状况,进犯者能够经过将签名典礼“倒带”到发生部分签名的时刻点来拐骗咱们签署新音讯,此刻,进犯者供给了一个不同的音讯,e'=H(...||m')来进行签名,而不会引起任何置疑,每一方会再次核算他们的部分签名:



进犯者依然能够拜访榜首组签名,只需求简略涨常识丨一文读懂比特币Schnorr签名地做减法:


终究等式右侧的一切音讯都被进犯者获取,因而他能够轻易地提取arduino每个人的私钥,这种进犯很难防护。一种办法是添加停止和重启签名典礼的难度,假如多重签名典礼被中止,那么需求再次从榜首步开端,这适当契合人体工程学,在呈现更强壮的处理计划之前,它可能是现在最好的处理计划!

参考资料:

[1]“RSA(Cryptosystem)”[OL]. https://en.wikipedia.org/wiki/RSA_ (cryptosystem). 拜访日期:2018-10-11.

[2]“椭圆曲线数字签名算法”,维基百科[OL]. https://en.wiki涨常识丨一文读懂比特币Schnorr签名pedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm. 拜访日期:2018-10-11.

[3]“BOLT#8:加密和认证传输,Lightning RFC”涨常识丨一文读懂比特币Schnorr签名,Github[OL].https://github.com/lightningnetwork/lightning-rfc/blob/master/08-transport.md. 拜访日期:2018-10-11.

[4]“中间人进犯”,维基百科[OL].https://en.wikipedia.org/wiki/Man-in-the-middle_attack. 拜访日期:2018-10-11.

[5]“暗码安全随机数发生器怎么作业?” StackOverflow“[OL]. https://stackoverflow.com/questions/2449594/how-does-a-cryptographically-secure-random-number-generator-work. 拜访日期:2018-10-11.

[6]“暗码学安全伪随机数发生器”,维基百科[OL]. https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator. 拜访日期:2018-10-11.

[7]“Schnorr签名”,维基百科[OL]. https://en.wikipedia.org/wiki/Schnorr_signature. 拜访日期:2018-09-19.

[8]“Schnorr签名的密钥聚合”,Blockstream [OL]. https://blockstream.com/2018/01/23/musig-key-aggregation-schnorr-signatures.html_. 拜访日期:2018-09-19.

[9] Gregory Maxwell,Andrew Poelstra,Yannick Seurin和Pieter Wuille,“简略的Schnorr多签名运用比特币”[OL].https://eprint.iacr.org/2018/068.pdf. 拜访日期:2018-09涨常识丨一文读懂比特币Schnorr签名-19.

[10] Manu Drijvers,Kasra Edalatnejad,Bryan Ford,Eike Ki涨常识丨一文读懂比特币Schnorr签名ltz,Julian Loss,Gregory Neven和Igors Stepanovs,“关于两轮多重签名的安全性”,暗码学ePrint档案,陈述2018/417 [OL]. https://eprint.iacr.org/2018/417.pdf. 拜访日期:2019-02-21.

奉献者:

CjS77

SWvHeerden

Hansieodendaal

neonknight64

anselld


​本文来历:头号仓,是一家专业从事国内外区块链项目信息搜集,项目剖析,项目发展盯梢的信息资讯服务公司,面向国内外的区块链投资者,供给区块链项目的尽职查询与剖析服务。

原文出处:https://tlu.tarilabs.com/cryptography/digital_signatures/introduction_schnorr_signatures.html

如需转载,请注明出处。

版权所有:洛阳市建设工程咨询有限责任公司 联系人:李经理 电话: 地址:洛阳市洛龙区开元大道219号2幢1-2522、2501、2502、2503、2504、2505室
版权所有 爱乐透官方版下载 蒙ICP备171650915号-5