一、区块链中的密码学是什么(区块链的密码技术)
区块链的密码技术有
密码学技术是区块链技术的核心。区块链的密码技术有数字签名算法和哈希算法。
数字签名算法
数字签名算法是数字签名标准的一个子集,表示了只用作数字签名的一个特定的公钥算法。密钥运行在由SHA-1产生的消息哈希:为了验证一个签名,要重新计算消息的哈希,使用公钥解密签名然后比较结果。缩写为DSA。
?
数字签名是电子签名的特殊形式。到目前为止,至少已经有20多个国家通过法律认可电子签名,其中包括欧盟和美国,我国的电子签名法于2004年8月28日第十届全国人民代表大会常务委员会第十一次会议通过。数字签名在ISO7498-2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。数字签名机制提供了一种鉴别方法,以解决伪造、抵赖、冒充和篡改等问题,利用数据加密技术、数据变换技术,使收发数据双方能够满足两个条件:接收方能够鉴别发送方所宣称的身份;发送方以后不能否认其发送过该数据这一事实。
数字签名是密码学理论中的一个重要分支。它的提出是为了对电子文档进行签名,以替代传统纸质文档上的手写签名,因此它必须具备5个特性。
(1)签名是可信的。
(2)签名是不可伪造的。
(3)签名是不可重用的。
(4)签名的文件是不可改变的。
(5)签名是不可抵赖的。
哈希(hash)算法
Hash,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,其中散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,但是不可逆向推导出输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
哈希(Hash)算法,它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。
以比特币区块链为代表,其中工作量证明和密钥编码过程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),这种方式带来的好处是增加了工作量或者在不清楚协议的情况下增加破解难度。
以比特币区块链为代表,主要使用的两个哈希函数分别是:
1.SHA-256,主要用于完成PoW(工作量证明)计算;
2.RIPEMD160,主要用于生成比特币地址。如下图1所示,为比特币从公钥生成地址的流程。
何谓密码学(cryptography)?密码学是数学和计算机科学的一个交叉。主要有两个方面的应用:一个就是加密通信,这个方向的主要任务是保证信息在传送过程中不会被篡改和窃听,这也是咱们比较容易想到的一个方向。但是,另一个方向其实也同样重要,那就是数字签名。数字签名跟现实世界中的纸笔签名类似,可以用来认证签署人身份,防止抵赖。密码学早期比较常见于军事领域,民用方面涉及电子商务,银行支付,数字版权等等社会关键领域,所以,说密码学是当代社会的一个支柱并不为过。最近几年,区块链和加密货币兴起,密码学的发展又进入了一个新的阶段,区块链的底层是密码学技术,但是也涉及到经济学。
区块链应用什么技术来实现此功能
区块链应用了以下的技术来实现
第一种是共识机制,常用的共识机制主要有PoW、PoS、DPoS、PBFT、PAXOS等。由于区块链系统中没有一个中心,因此需要有一个预设的规则来指导各方节点在数据处理上达成一致,所有的数据交互都要按照严格的规则和共识进行;
第二种是密码学技术,密码学技术是区块链的核心技术之一,目前的区块链应用中采用了很多现代密码学的经典算法,主要包括:哈希算法、对称加密、非对称加密、数字签名等。
第三种是分布式存储,区块链是一种点对点网络上的分布式账本,每个参与的节点都将独立完整地存储写入区块数据信息。分布式存储区别于传统中心化存储的优势主要体现在两个方面:每个节点上备份数据信息,避免了由于单点故障导致的数据丢失;每个节点上的数据都独立存储,有效规避了恶意篡改历史数据。
智能合约:智能合约允许在没有第三方的情况下进行可信交易,只要一方达成了协议预先设定的目标,合约将会自动执行交易,这些交易可追踪且不可逆转。具有透明可信、自动执行、强制履约的优点。区块链技术有许多独特的特点,使它成为一项独特的发明,并赋予它无限的视野去探索。
第4课区块链中的密码学学习总结这是加入公Ulord深度学习第四课,杨博士给大家主讲区块链中的密码学问题,本期课程令让我弄懂了一个一直困扰着我的关于公钥和私钥的问题,他们之间到底是什么关系?再这次学习中我得到了答案,现在我把我学习到的内容跟大家分享一下。
区块链里的公钥和私钥,是非对称加密里的两个基本概念。
公钥与私钥,是通过一种算法得到的一个密钥对,公钥是密钥对中公开的部分,私钥是非公开的部分。公钥通常用于加密会话,就是消息或者说信息,同时,也可以来用于验证用私钥签名的数字签名。
私钥可以用来进行签名,用对应的公钥来进行验证。通过这种公开密钥体制得到的密钥对能够保证在全世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密数据,则必须用它对应的另一个密钥来进行解密。
比如说用公钥加密的数据就必须用私钥才能解密,如果用私钥进行加密,就必须要对应的公钥才能解密,否则无法成功解密。另外,在比特币的区块链中,则是通过私钥来计算出公钥,通过公钥来计算出地址,而这个过程是不可逆的。
区块链中现代密码学1983年-DavidChaum描述的盲签
1997年-AdamBack发明的HashCash(工作证明制度的一个例子)
2001年-RonRivest,AdiShamir和YaelTauman向加密社区提出了环签名
2004年-PatrickP.Tsang和VictorK.提出使用环签名系统进行投票和电子现金;
2008年-由SatoshiNakamoto出版的Bitcoin白皮书
2011年-比特币系统中的匿名分析,FergalReid和MartinHarrigan
2012-目的地址比特币匿名(CryptoNote中的一次性地址)。
安全多方计算起源于1982年姚期智的百万富翁问题。后来OdedGoldreich有比较细致系统的论述。
姚氏百万富翁问题是由华裔计算机科学家、图灵奖获得者姚启智教授首先提出的。该问题表述为:两个百万富翁Alice和Bob想知道他们两个谁更富有,但他们都不想让对方知道自己财富的任何信息。该问题有一些实际应用:假设Alice希望向Bob购买一些商品,但她愿意支付的最高金额为x元;Bob希望的最低卖出价为y元。Alice和Bob都非常希望知道x与y哪个大。如果xy,他们都可以开始讨价还价;如果zy,他们就不用浪费口舌。但他们都不想告诉对方自己的出价,以免自己在讨价还价中处于不利地位。
该方案用于对两个数进行比较,以确定哪一个较大。Alice知道一个整数i;Bob知道一个整数j,Alice与B0b希望知道究竟i=j还是ji,但都不想让对方知道自己的数。为简单起见,假设j与i的范围为[1,100】。Bob有一个公开密钥Eb和私有密钥Db。
安全多方计算(SecureMulti-PartyComputation)的研究主要是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题.安全多方计算在电子选举、电子投票、电子拍卖、秘密共享、门限签名等场景中有着重要的作用。
同态加密(HomomorphicEncryption)是很久以前密码学界就提出来的一个OpenProblem。早在1978年,RonRivest,LeonardAdleman,以及MichaelL.Dertouzos就以银行为应用背景提出了这个概念[RAD78]。对,你没有看错,RonRivest和LeonardAdleman分别就是著名的RSA算法中的R和A。
什么是同态加密?提出第一个构造出全同态加密(FullyHomomorphicEncryption)[Gen09]的CraigGentry给出的直观定义最好:Awaytodelegateprocessingofyourdata,withoutgivingawayaccesstoit.
这是什么意思呢?一般的加密方案关注的都是数据存储安全。即,我要给其他人发个加密的东西,或者要在计算机或者其他服务器上存一个东西,我要对数据进行加密后在发送或者存储。没有密钥的用户,不可能从加密结果中得到有关原始数据的任何信息。只有拥有密钥的用户才能够正确解密,得到原始的内容。我们注意到,这个过程中用户是不能对加密结果做任何操作的,只能进行存储、传输。对加密结果做任何操作,都将会导致错误的解密,甚至解密失败。
同态加密方案最有趣的地方在于,其关注的是数据处理安全。同态加密提供了一种对加密数据进行处理的功能。也就是说,其他人可以对加密数据进行处理,但是处理过程不会泄露任何原始内容。同时,拥有密钥的用户对处理过的数据进行解密后,得到的正好是处理后的结果。
有点抽象?我们举个实际生活中的例子。有个叫Alice的用户买到了一大块金子,她想让工人把这块金子打造成一个项链。但是工人在打造的过程中有可能会偷金子啊,毕竟就是一克金子也值很多钱的说…因此能不能有一种方法,让工人可以对金块进行加工(delegateprocessingofyourdata),但是不能得到任何金子(withoutgivingawayaccesstoit)?当然有办法啦,Alice可以这么做:Alice将金子锁在一个密闭的盒子里面,这个盒子安装了一个手套。工人可以带着这个手套,对盒子内部的金子进行处理。但是盒子是锁着的,所以工人不仅拿不到金块,连处理过程中掉下的任何金子都拿不到。加工完成后。Alice拿回这个盒子,把锁打开,就得到了金子。
这里面的对应关系是:盒子:加密算法盒子上的锁:用户密钥将金块放在盒子里面并且用锁锁上:将数据用同态加密方案进行加密加工:应用同态特性,在无法取得数据的条件下直接对加密结果进行处理开锁:对结果进行解密,直接得到处理后的结果同态加密哪里能用?这几年不是提了个云计算的概念嘛。同态加密几乎就是为云计算而量身打造的!我们考虑下面的情景:一个用户想要处理一个数据,但是他的计算机计算能力较弱。这个用户可以使用云计算的概念,让云来帮助他进行处理而得到结果。但是如果直接将数据交给云,无法保证安全性啊!于是,他可以使用同态加密,然后让云来对加密数据进行直接处理,并将处理结果返回给他。这样一来:用户向云服务商付款,得到了处理的结果;云服务商挣到了费用,并在不知道用户数据的前提下正确处理了数据;
聚合签名由Boneh等人提出,主要是通过聚合多个签名为一个签名,来提高签名与验证的效率。要对多个用户的数据进行签名,聚合签名能够极大地降低签名计算复杂度。CL就是聚合签名。
零知识证明过程有两个参与方,一方叫证明者,一方叫验证者。证明者掌握着某个秘密,他想让验证者相信他掌握着秘密,但是又不想泄漏这个秘密给验证者。
双方按照一个协议,通过一系列交互,最终验证者会得出一个明确的结论,证明者是或不掌握这个秘密。
对于比特币的例子,一笔转帐交易合法与否,其实只要证明三件事:
发送的钱属于发送交易的人
发送者发送的金额等于接收者收到金额
发送者的钱确实被销毁了
整个证明过程中,矿工其实并不关心具体花掉了多少钱,发送者具体是谁,接受者具体是谁。矿工只关心系统的钱是不是守恒的。
zcash就是用这个思路实现了隐私交易。
零知识证明的三条性质对应:
(1)完备性。如果证明方和验证方都是诚实的,并遵循证明过程的每一步,进行正确的计算,那么这个证明一定是成功的,验证方一定能够接受证明方。
(2)合理性。没有人能够假冒证明方,使这个证明成功。
(3)零知识性。证明过程执行完之后,验证方只获得了“证明方拥有这个知识”这条信息,而没有获得关于这个知识本身的任何一点信息。
只有环成员,没有管理者,不需要环成员之间的合作,签名者利用自己的私钥和集合中其他成员的公钥就能独立的进行签名,不需要其他人的帮助,集合中的其他成员可能不知道自己被包含在了其中。
环签名可以被用作成一种泄露秘密的方式,例如,可以使用环形签名来提供来自“白宫高级官员”的匿名签名,而不会透露哪个官员签署了该消息。环签名适用于此应用程序,因为环签名的匿名性不能被撤销,并且因为用于环签名的组可以被即兴创建。
1)密钥生成。为环中每个成员产生一个密钥对(公钥PKi,私钥SKi)
2)签名。签名者用自己的私钥和任意n个环成员的公钥为消息m生成签名a
3)签名验证。签名者根据环签名和消息m,验证签名是否是环中成员所签。如果有效就接收,如果无效就丢弃。
群签名的一般流程
盲数字签名(BlindSignature)简称盲签名——是一种数字签名的方式,在消息内容被签名之前,对于签名者来说消息内容是不可见的。1982年大卫·乔姆首先提出了盲签名的概念。盲签名因为具有盲性这一特点,可以有效保护所签署消息的具体内容,所以在电子商务和电子选举等领域有着广泛的应用。
类比例子:对文件签名就是通过在信封里放一张复写纸,签名者在信封上签名时,他的签名便透过复写纸签到文件上。
所谓盲签名,就是先将隐蔽的文件放进信封里,而除去盲因子的过程就是打开这个信封,当文件在一个信封中时,任何人不能读它。对文件签名就是通过在信封里放一张复写纸,签名者在信封上签名时,他的签名便透过复写纸签到文件上。
一般来说,一个好的盲签名应该具有以下的性质:
不可伪造性。除了签名者本人外,任何人都不能以他的名义生成有效的盲签名。这是一条最基本的性质。
不可抵赖性。签名者一旦签署了某个消息,他无法否认自己对消息的签名。
盲性。签名者虽然对某个消息进行了签名,但他不可能得到消息的具体内容。
不可跟踪性。一旦消息的签名公开后,签名者不能确定自己何时签署的这条消息。
满足上面几条性质的盲签名,被认为是安全的。这四条性质既是我们设计盲签名所应遵循的标准,又是我们判断盲签名性能优劣的根据。
另外,方案的可操作性和实现的效率也是我们设计盲签名时必须考虑的重要
因素。一个盲签名的可操作性和实现速度取决于以下几个方面:
1,密钥的长度;
2,盲签名的长度;
3,盲签名的算法和验证算法。
盲签名具体步骤
1,接收者首先将待签数据进行盲变换,把变换后的盲数据发给签名者。
2,经签名者签名后再发给接收者。
3,接收者对签名再作去盲变换,得出的便是签名者对原数据的盲签名。
4,这样便满足了条件①。要满足条件②,必须使签名者事后看到盲签名时不能与盲数据联系起来,这通常是依靠某种协议来实现的。
区块链中的密码学是怎么应用的?在区块链技术中,密码学机制主要被用于确保交易信息的完整性、真实性和隐私性。
?
区块链中的密码学包括布隆过滤器,哈希函数、加解密算法,数字证书与数字签名,同态加密,PKI体系等。
二、第4课 区块链中的密码学 学习总结
这是加入公Ulord深度学习第四课,杨博士给大家主讲区块链中的密码学问题,本期课程令让我弄懂了一个一直困扰着我的关于公钥和私钥的问题,他们之间到底是什么关系?再这次学习中我得到了答案,现在我把我学习到的内容跟大家分享一下。
区块链里的公钥和私钥,是非对称加密里的两个基本概念。
公钥与私钥,是通过一种算法得到的一个密钥对,公钥是密钥对中公开的部分,私钥是非公开的部分。公钥通常用于加密会话,就是消息或者说信息,同时,也可以来用于验证用私钥签名的数字签名。
私钥可以用来进行签名,用对应的公钥来进行验证。通过这种公开密钥体制得到的密钥对能够保证在全世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密数据,则必须用它对应的另一个密钥来进行解密。
比如说用公钥加密的数据就必须用私钥才能解密,如果用私钥进行加密,就必须要对应的公钥才能解密,否则无法成功解密。另外,在比特币的区块链中,则是通过私钥来计算出公钥,通过公钥来计算出地址,而这个过程是不可逆的。
三、区块链中的密码是什么码,区块链的密码学原理
区块链密码算法是怎样的?
区块链作为新兴技术受到越来越广泛的关注,是一种传统技术在互联网时代下的新的应用,这其中包括分布式数据存储技术、共识机制和密码学等。随着各种区块链研究联盟的创建,相关研究得到了越来越多的资金和人员支持。区块链使用的Hash算法、零知识证明、环签名等密码算法:
Hash算法
哈希算法作为区块链基础技术,Hash函数的本质是将任意长度(有限)的一组数据映射到一组已定义长度的数据流中。若此函数同时满足:
(1)对任意输入的一组数据Hash值的计算都特别简单;
(2)想要找到2个不同的拥有相同Hash值的数据是计算困难的。
满足上述两条性质的Hash函数也被称为加密Hash函数,不引起矛盾的情况下,Hash函数通常指的是加密Hash函数。对于Hash函数,找到使得被称为一次碰撞。当前流行的Hash函数有MD5,SHA1,SHA2,SHA3。
比特币使用的是SHA256,大多区块链系统使用的都是SHA256算法。所以这里先介绍一下SHA256。
1、SHA256算法步骤
STEP1:附加填充比特。对报文进行填充使报文长度与448模512同余(长度=448mod512),填充的比特数范围是1到512,填充比特串的最高位为1,其余位为0。
STEP2:附加长度值。将用64-bit表示的初始报文(填充前)的位长度附加在步骤1的结果后(低位字节优先)。
STEP3:初始化缓存。使用一个256-bit的缓存来存放该散列函数的中间及最终结果。
STEP4:处理512-bit(16个字)报文分组序列。该算法使用了六种基本逻辑函数,由64步迭代运算组成。每步都以256-bit缓存值为输入,然后更新缓存内容。每步使用一个32-bit常数值Kt和一个32-bitWt。其中Wt是分组之后的报文,t=1,2,...,16。
STEP5:所有的512-bit分组处理完毕后,对于SHA256算法最后一个分组产生的输出便是256-bit的报文。
作为加密及签名体系的核心算法,哈希函数的安全性事关整个区块链体系的底层安全性。所以关注哈希函数的研究现状是很有必要的。
2、Hash函的研究现状
2004年我国密码学家王小云在国际密码讨论年会(CRYPTO)上展示了MD5算法的碰撞并给出了第一个实例(CollisionsforhashfunctionsMD4,MD5,HAVAL-128andRIPEMD,rumpsessionofCRYPTO2004,HowtoBreakMD5andOtherHashFunctions,EuroCrypt2005)。该攻击复杂度很低,在普通计算机上只需要几秒钟的时间。2005年王小云教授与其同事又提出了对SHA-1算法的碰撞算法,不过计算复杂度为2的63次方,在实际情况下难以实现。
2017年2月23日谷歌安全博客上发布了世界上第一例公开的SHA-1哈希碰撞实例,在经过两年的联合研究和花费了巨大的计算机时间之后,研究人员在他们的研究网站SHAttered上给出了两个内容不同,但是具有相同SHA-1消息摘要的PDF文件,这就意味着在理论研究长期以来警示SHA-1算法存在风险之后,SHA-1算法的实际攻击案例也浮出水面,同时也标志着SHA-1算法终于走向了生命的末期。
NIST于2007年正式宣布在全球范围内征集新的下一代密码Hash算法,举行SHA-3竞赛。新的Hash算法将被称为SHA-3,并且作为新的安全Hash标准,增强现有的FIPS180-2标准。算法提交已于2008年10月结束,NIST分别于2009年和2010年举行2轮会议,通过2轮的筛选选出进入最终轮的算法,最后将在2012年公布获胜算法。公开竞赛的整个进程仿照高级加密标准AES的征集过程。2012年10月2日,Keccak被选为NIST竞赛的胜利者,成为SHA-3。
Keccak算法是SHA-3的候选人在2008年10月提交。Keccak采用了创新的的“海绵引擎”散列消息文本。它设计简单,方便硬件实现。Keccak已可以抵御最小的复杂度为2n的攻击,其中N为散列的大小。它具有广泛的安全边际。目前为止,第三方密码分析已经显示出Keccak没有严重的弱点。
KangarooTwelve算法是最近提出的Keccak变种,其计算轮次已经减少到了12,但与原算法比起来,其功能没有调整。
零知识证明
在密码学中零知识证明(zero-knowledgeproof,ZKP)是一种一方用于向另一方证明自己知晓某个消息x,而不透露其他任何和x有关的内容的策略,其中前者称为证明者(Prover),后者称为验证者(Verifier)。设想一种场景,在一个系统中,所有用户都拥有各自全部文件的备份,并利用各自的私钥进行加密后在系统内公开。假设在某个时刻,用户Alice希望提供给用户Bob她的一部分文件,这时候出现的问题是Alice如何让Bob相信她确实发送了正确的文件。一个简单地处理办法是Alice将自己的私钥发给Bob,而这正是Alice不希望选择的策略,因为这样Bob可以轻易地获取到Alice的全部文件内容。零知识证明便是可以用于解决上述问题的一种方案。零知识证明主要基于复杂度理论,并且在密码学中有广泛的理论延伸。在复杂度理论中,我们主要讨论哪些语言可以进行零知识证明应用,而在密码学中,我们主要讨论如何构造各种类型的零知识证明方案,并使得其足够优秀和高效。
环签名群签名
1、群签名
在一个群签名方案中,一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。与其他数字签名一样,群签名是可以公开验证的,且可以只用单个群公钥来验证。群签名一般流程:
(1)初始化,群管理者建立群资源,生成对应的群公钥(GroupPublicKey)和群私钥(GroupPrivateKey)群公钥对整个系统中的所有用户公开,比如群成员、验证者等。
(2)成员加入,在用户加入群的时候,群管理者颁发群证书(GroupCertificate)给群成员。
(3)签名,群成员利用获得的群证书签署文件,生成群签名。
(4)验证,同时验证者利用群公钥仅可以验证所得群签名的正确性,但不能确定群中的正式签署者。
(5)公开,群管理者利用群私钥可以对群用户生成的群签名进行追踪,并暴露签署者身份。
2、环签名
2001年,Rivest,shamir和Tauman三位密码学家首次提出了环签名。是一种简化的群签名,只有环成员没有管理者,不需要环成员间的合作。环签名方案中签名者首先选定一个临时的签名者集合,集合中包括签名者。然后签名者利用自己的私钥和签名集合中其他人的公钥就可以独立的产生签名,而无需他人的帮助。签名者集合中的成员可能并不知道自己被包含在其中。
环签名方案由以下几部分构成:
(1)密钥生成。为环中每个成员产生一个密钥对(公钥PKi,私钥SKi)。
(2)签名。签名者用自己的私钥和任意n个环成员(包括自己)的公钥为消息m生成签名a。
(3)签名验证。验证者根据环签名和消息m,验证签名是否为环中成员所签,如果有效就接收,否则丢弃。
环签名满足的性质:
(1)无条件匿名性:攻击者无法确定签名是由环中哪个成员生成,即使在获得环成员私钥的情况下,概率也不超过1/n。
(2)正确性:签名必需能被所有其他人验证。
(3)不可伪造性:环中其他成员不能伪造真实签名者签名,外部攻击者即使在获得某个有效环签名的基础上,也不能为消息m伪造一个签名。
3、环签名和群签名的比较
(1)匿名性。都是一种个体代表群体签名的体制,验证者能验证签名为群体中某个成员所签,但并不能知道为哪个成员,以达到签名者匿名的作用。
(2)可追踪性。群签名中,群管理员的存在保证了签名的可追踪性。群管理员可以撤销签名,揭露真正的签名者。环签名本身无法揭示签名者,除非签名者本身想暴露或者在签名中添加额外的信息。提出了一个可验证的环签名方案,方案中真实签名者希望验证者知道自己的身份,此时真实签名者可以通过透露自己掌握的秘密信息来证实自己的身份。
(3)管理系统。群签名由群管理员管理,环签名不需要管理,签名者只有选择一个可能的签名者集合,获得其公钥,然后公布这个集合即可,所有成员平等。
链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。
第4课区块链中的密码学学习总结这是加入公Ulord深度学习第四课,杨博士给大家主讲区块链中的密码学问题,本期课程令让我弄懂了一个一直困扰着我的关于公钥和私钥的问题,他们之间到底是什么关系?再这次学习中我得到了答案,现在我把我学习到的内容跟大家分享一下。
区块链里的公钥和私钥,是非对称加密里的两个基本概念。
公钥与私钥,是通过一种算法得到的一个密钥对,公钥是密钥对中公开的部分,私钥是非公开的部分。公钥通常用于加密会话,就是消息或者说信息,同时,也可以来用于验证用私钥签名的数字签名。
私钥可以用来进行签名,用对应的公钥来进行验证。通过这种公开密钥体制得到的密钥对能够保证在全世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密数据,则必须用它对应的另一个密钥来进行解密。
比如说用公钥加密的数据就必须用私钥才能解密,如果用私钥进行加密,就必须要对应的公钥才能解密,否则无法成功解密。另外,在比特币的区块链中,则是通过私钥来计算出公钥,通过公钥来计算出地址,而这个过程是不可逆的。
区块链中的哈希值是什么?
区块链中的哈希值是将任意长度的输入字符串转换为密码并进行固定输出的过程。哈希值不是一个“密码”,不能通过解密哈希来检索原始数据,它是一个单向的加密函数。
在区块链中,每个块都有前一个块的哈希值。当更改当前块中的任何数据时,块的哈希值将被更改,这将影响前一个块,因为它有前一个块的地址。例如如果只有两个块,一个是当前块,一个是父块。当前块将拥有父块的地址,如果需要更改当前块中的数据,还需要更改父块。
一个加密哈希函数需要具备以下几个关键的特性才能被认为是有用的
1、每个哈希值都是不同的。
2、对于相同的消息,总是生成相同的哈希值。
3、不可能根据哈希值来决定输入。
4、即使对输入的整个哈希值做一个小的更改也会被更改。
一文读懂,XFS中你必须掌握的密码与区块链理论术语人们对于事物的深刻认知,不是像“如何将大象放进冰箱?”那般,只回答“打开冰箱,把大象放进去,关上冰箱”那么简单。任何事物都需要一个抽丝剥茧,化整为零的认知过程。特别是一个新兴的概念和事物,更需要更加细致的了解。
XFS系统是一个分布式文件系统,但它并不是一个单一的框架结构,他是密码学、区块链、互联网等多种技术手段结合的一个有机整体,因此,想要更详细的了解它,我们必须知道一些专业术语的概念。
1.加密网络
加密网络简单来说就是一个公共区块链。在区块链技术诞生之前,互联网网络中的数据传输其实是没有任何加密手段的,黑客一旦截取的其中的数据,那么除非那段数据本身就是密文,否则那些数据就直白地暴露在黑客眼前。
加密网络便是通过区块链技术,由区块链各个节点维护,任何人都可以无需许可加入,更重要的是,整个网络中运转的数据是加密的。XFS系统便是一个典型的加密网络。
2.哈希算法
哈希算法是区块链中用以确保数据完整性和安全性的一个特殊程序。哈希算法采用的是名为“哈希函数”数学关系,结果输出被称为“加密摘要”。加密摘要的特点是任意长度的数据输入后,返回的都是一个唯一且固定长度的值。
哈希函数具备:
基于这些特性,它在保证加密安全时也被用于防篡改,因为即使对散列函数的数据输入进行微小更改也会导致完全不同的输出。这也成为了现代密码学和区块链的主力。
3.分布式账本
区块链就是一个分布式账本,但这个账本不仅仅可以记录交易信息,还可以记录任何数据交互。每个分类帐交易都是一个加密摘要,因此无法在不被检测到的情况下更改条目。这样使得区块链使参与者能够以一种去中心化的方式相互审计。
4.私钥和公钥
私钥和公钥是区块链通过哈希算法形成加密后生成的一组用于解密的“钥匙”。通过对私钥加密,形成公钥,此时,原始信息只能通过私钥进行查看,由用户自己保存,公钥就如同一个房屋地址,用于进行数据交互,是可以公开的。反之,如果对公钥加密,形成私钥,那么就会形成不可篡改的数字签名,因为这个公钥上的签名只有私钥拥有者才能进行创建。
1.节点
节点是一个区块链网络的最基础建设,也是区块链网络和现实连接的物理设备。单个节点拥有许多的功能,例如缓存数据、验证信息或将消息转发到其他节点等。
2.点对点(P2P)网络
区块链所构建的便是去中心化后节点与节点之间的数据交互。传统的互联网数据传输是一种客户端—服务器—客户端的中心辐射模式。点对点网络则更符合“网”这个词,在这个网络中,每个节点都在单一通信协议下运行,以在它们之间传输数据,避免了因为服务器单点故障而引发的网络崩溃。
3.共识验证
区块链的共识验证解决了大量分散的节点意见不统一的问题,以“少数服从多数”的哲学依据,在区块链网络中,更多的节点认可便意味着“共识”,通常而言,区块链网络中超过51%的节点认可的便会被采用和认可。
4.复制证明和时空证明
这两个证明在XFS系统中都可以总称为存储证明。XFS系统的核心功能之一是数据存储,因此,为了证明存储的有效性,便通过复制证明验证数据是否存在节点存储空间中,并通过时空证明验证时间上的持续性。存储提供方如果在储存有效期内能持续提交存储证明,那么他便会获得由XFS系统提供的奖励。
5.冗余策略和纠删码
这是XFS用来平衡数据存储量的两个方式。冗余策略将数据通过多副本的方式备份,确保数据在损坏或丢失后能找回。
纠删码则是确保数据在复制、传输时不会产生过多备份,节省存储空间、提高传输效率。
6.文件分片协议
XFS将文件切分为N个细小的碎片存储在节点当中,这些碎片只要有任意M个碎片即可恢复出数据,这样只要不同时有N-M+1个节点失效就能保证数据完整不丢失。
7.智能合约
XFS中的智能合约是一段程序代码,由于是基于区块链生成的,因此同样继承了区块链不可篡改、可追溯等特点,它能保证双方执行结果的确定性,这也使得XFS网络中的数据交互变得更加可信。
8.Dapp
即去中心化APP,同普通的APP一样具备更加方便快捷的网络接入端口,唯一不同的便是它抛弃了传统APP中心化的特点,这使得Dapp中的数据是归属于用户自身,不用担心隐私泄露、大数据杀熟等问题。
XFS系统是一个开放性平台,用户可以自由的在其中使用、设计、创作各种Dapp。
结语
关于XFS中的理论术语基于篇幅原因是很难详细展开细讲的,这其中涉及到了更多的互联网和区块链专业知识。但通过上面这些简单的解释,相信大家对XFS系统也有了一个比较立体的认知,那么,我们便期待打破传统中心化存储弊端,开船全新存储时代的XFS新一代分布式文件系统吧。
区块链的密码技术有密码学技术是区块链技术的核心。区块链的密码技术有数字签名算法和哈希算法。
数字签名算法
数字签名算法是数字签名标准的一个子集,表示了只用作数字签名的一个特定的公钥算法。密钥运行在由SHA-1产生的消息哈希:为了验证一个签名,要重新计算消息的哈希,使用公钥解密签名然后比较结果。缩写为DSA。
?
数字签名是电子签名的特殊形式。到目前为止,至少已经有20多个国家通过法律认可电子签名,其中包括欧盟和美国,我国的电子签名法于2004年8月28日第十届全国人民代表大会常务委员会第十一次会议通过。数字签名在ISO7498-2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。数字签名机制提供了一种鉴别方法,以解决伪造、抵赖、冒充和篡改等问题,利用数据加密技术、数据变换技术,使收发数据双方能够满足两个条件:接收方能够鉴别发送方所宣称的身份;发送方以后不能否认其发送过该数据这一事实。
数字签名是密码学理论中的一个重要分支。它的提出是为了对电子文档进行签名,以替代传统纸质文档上的手写签名,因此它必须具备5个特性。
(1)签名是可信的。
(2)签名是不可伪造的。
(3)签名是不可重用的。
(4)签名的文件是不可改变的。
(5)签名是不可抵赖的。
哈希(hash)算法
Hash,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,其中散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,但是不可逆向推导出输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
哈希(Hash)算法,它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。
以比特币区块链为代表,其中工作量证明和密钥编码过程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),这种方式带来的好处是增加了工作量或者在不清楚协议的情况下增加破解难度。
以比特币区块链为代表,主要使用的两个哈希函数分别是:
1.SHA-256,主要用于完成PoW(工作量证明)计算;
2.RIPEMD160,主要用于生成比特币地址。如下图1所示,为比特币从公钥生成地址的流程。
本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://www.ssyg068.com/biquanzx/9273.html
发表回复
评论列表(0条)