① 第4课 区块链中的密码学 学习总结
这是加入公Ulord深度学习第四课,杨博士给大家主讲区块链中的密码学问题,本期课程令让我弄懂了一个一直困扰着我的关于公钥和私钥的问题,他们之间到底是什么关系?再这次学习中我得到了答案,现在我把我学习到的内容跟大家分享一下。
区块链里的公钥和私钥,是非对称加密里的两个基本概念。
公钥与私钥,是通过一种算法得到的一个密钥对,公钥是密钥对中公开的部分,私钥是非公开的部分。公钥通常用于加密会话,就是消息或者说信息,同时,也可以来用于验证用私钥签名的数字签名。
私钥可以用来进行签名,用对应的公钥来进行验证。通过这种公开密钥体制得到的密钥对能够保证在全世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密数据,则必须用它对应的另一个密钥来进行解密。
比如说用公钥加密的数据就必须用私钥才能解密,如果用私钥进行加密,就必须要对应的公钥才能解密,否则无法成功解密。另外,在比特币的区块链中,则是通过私钥来计算出公钥,通过公钥来计算出地址,而这个过程是不可逆的。
② 鍦ㄥ尯鍧楅摼涓涓鑸浣跨敤浠涔堝姞瀵嗙畻娉
鍦ㄥ尯鍧楅摼涓锛屼竴鑸浣跨敤涓ょ嶄富瑕佺殑鍔犲瘑绠楁硶锛
鎷撳睍鐭ヨ瘑锛
鍝堝笇鍑芥暟鏄涓绉嶅皢浠绘剰闀垮害鐨勬暟鎹锛堝傛枃鏈銆佹暟瀛楃瓑锛夎浆鎹涓哄浐瀹氶暱搴︼紙閫氬父涓256浣嶆垨512浣嶏級鐨勬憳瑕佺殑鏂规硶銆傚畠浠闈炲父蹇涓旈潪甯稿畨鍏锛屽洜涓烘敼鍙樻暟鎹涓鐨勪竴灏忛儴鍒嗭紙鍗充娇鏄寰灏忕殑鏀瑰彉锛変細瀵艰嚧鍝堝笇缁撴灉鐨勫彉鍖栭潪甯稿ぇ锛岀敋鑷充笉鍙閫嗐傝繖绉嶇壒鎬т娇寰楀搱甯屽嚱鏁板湪鍖哄潡閾句腑琚骞挎硾浣跨敤锛屽傚尯鍧楃殑merkle鏍戠粨鏋勩佷氦鏄撶殑鏁板瓧绛惧悕浠ュ強瀵嗙爜瀛﹂挶鍖呯殑瀛樺偍绛夈
姣旂壒甯佸尯鍧楅摼涓昏佷娇鐢⊿HA-256浣滀负鍏跺搱甯屽嚱鏁帮紝杩欐槸鐢盌avid Chaum鍜孧ayra P. Chilomchik鍦1997骞村紩鍏ョ殑涓绉嶇畻娉曘係HA-256鎻愪緵浜嗕竴绉嶉潪甯稿畨鍏ㄧ殑鏂瑰紡鏉ュ垱寤哄尯鍧楅摼骞剁‘淇濅氦鏄撶殑瀹夊叏鎬с傛ゅ栵紝鍖哄潡閾句腑鐨凪erkle鏍戠粨鏋勪篃鏄鍩轰簬SHA-256鐨勫搱甯屽嚱鏁版潵鍒涘缓鐨勩
浠ヤ笂涓ょ嶅姞瀵嗙畻娉曞拰鍝堝笇鍑芥暟鍦ㄥ尯鍧楅摼涓閮芥壆婕旂潃闈炲父閲嶈佺殑瑙掕壊锛屽畠浠淇濊瘉浜嗕氦鏄撶殑瀹夊叏鎬с佸畬鏁存у拰鍖垮悕鎬э紝鍚屾椂涔熺‘淇濅簡鍖哄潡閾剧綉缁滅殑鍘讳腑蹇冨寲鍜屼笉鍙绡℃敼鎬с
鍚屾椂锛岀敱浜庡尯鍧楅摼涓鐨勬暟鎹鏄浠ュ尯鍧楃殑褰㈠紡涓嶆柇澧為暱鐨勶紝杩欎簺鍔犲瘑绠楁硶杩樿鐢ㄤ簬鍒涘缓鍖哄潡澶村拰鍖哄潡闂寸殑閾炬帴锛岃繘涓姝ユ彁楂樹簡鍖哄潡閾剧殑鎬ц兘鍜屽畨鍏ㄦс
③ 区块链怎么验签
你必须了解的,区块链数字签名机制????区块链使用Hash函数实现了交易信息和地址信息的不可篡改,保证了数据传输过程中的完整性,但是Hash函数无法实现交易信息的不可否认性(又称拒绝否认性、抗抵赖性,指网络通信双方在信息交互过程中,确信参与者本身和所提供的信息真实同一性,即所有参与者不可否认或抵赖本人的真实身份,以及提供信息的原样性和完成的操作与承诺)。区块链使用公钥加密技术中的数字签名机制保证信息的不可否认性。
????数字签名主要包括签名算法和验证算法。在签名算法中,签名者用其私钥对电子文件进行签名运算,从而得到电子文件的签名密文;在验证算法中,验证者利用签名者的公钥,对电子文件的签名密文进行验证运算,根据验证算法的结果判断签名文件的合法性。在签名过程中,只有签名者知道自己的私钥,不知道其私钥的任何人员无法伪造或正确签署电子文件;在验证过程中,只有合法的签名电子文件能有效通过验证,任何非法的签名文件都不能满足其验证算法。
????常用的数字签名算法包括RSA数字签名、DSA数字签名、ECDSA数字签名、Schnorr数字签名等算法。
???我们以RSA数字签名来介绍:可能人们要问RSA签名和加密有什么区别呢?加密和签名都是为了安全性考虑,但略有不同。常有人问加密和签名是用私钥还是公钥?其实都是对加密和签名的作用有所混淆。简单的说,加密是为了防止信息被泄露,而签名是为了防止信息被篡改。
???例子:A收到B发的消息后,需要进行回复“收到”--RSA签名过程:
???首先:A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。
???然后:A用自己的私钥对消息加签,形成签名,并将加签的消息和消息本身一起传递给B。
???最后:B收到消息后,在获取A的公钥进行验签,如果验签出来的内容与消息本身一致,证明消息是A回复的。
????在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回复给B,防止了消息内容的篡改。
综上所述,来源于书本及网络,让我们了解的有直观的认识。
区块链电子发票读取不了签名怎么回事1、在网络上传过程中,网络异常导致无法读取。
2、税局验签系统故障也会导致读取不了签名。
区块链中的私钥和公钥公开密钥(publickey,简称公钥)、私有密钥(privatekey,简称私钥)是密码学里非对称加密算法的内容。顾名思义,公钥是可以公开的,而私钥则要进行安全保管。
私钥是由随机种子生成的,公钥是将私钥通过算法推导出来。由于公钥太长,为了简便实用,就出现了“地址”,地址是公钥推导出来的。这些推导过程是单向不可逆的。也就是地址不能推出公钥,公钥不能推出私钥。
从中我们可以看出,公钥与私钥是成对存在的。它们的用处用16个字来概括:公钥加密,私钥解密;私钥签名,公钥验签。
公钥加密,私钥解密。也就是用公钥加密原数据,只有对应的私钥才能解开原数据。这样能使得原数据在网络中传播不被窃取,保护隐私。
私钥签名,公钥验签。用私钥对原数据进行签名,只有对应的公钥才能验证签名串与原数据是匹配的。
可以用锁头,钥匙来比喻公钥,私钥。锁头用来锁定某物品,钥匙来解锁该物品。钥匙所有者是物品的所有者。事实上就是这样,公私钥对奠定了区块链的账户体系及资产(Token等)的所有权,区块链的资产是锁定在公钥上的,私钥是用来解锁该资产然后使用。比如说我要转让资产给你,就是我用我的私钥签名了一笔我转让资产给你的交易(含资产,数量等等)提交到区块链网络里,节点会验证该签名,正确则从我的公钥上解锁资产锁定到你的公钥上。
我们看到了私钥的作用了吧,跟中心化记账系统(支付宝、微信支付等)的密码一样重要,拥有私钥就拥有了资产所有权,所以我们千万要保管好私钥,不能泄露。
区块链溯源系统能防伪吗?是怎么防伪的?区块链的最大特点就是不可篡改性,信息只能上传,但不可以更改。所以企业上传的信息资料都是不可以被修改的。也就是说,一旦产品出现问题,使用溯源码就能立刻找出产品问题所在,且这个记录永久保留。相比于传统的溯源系统来说,区块链溯源系统的防伪性不是强了一点半点,推荐使用区块链溯源系统。不过市场上好多只是打了个噱头,并不是真正的区块链技术,所以要擦亮眼睛识别。你可以用下井链溯源平台,这个是真正的区块链溯源平台,我们公司在用的。
④ 加密区块链怎么设置,区块链的加密技术
【深度知识】区块链之加密原理图示(加密,签名)先放一张以太坊的架构图:
在学习的过程中主要是采用单个模块了学习了解的,包括P2P,密码学,网络,协议等。直接开始总结:
秘钥分配问题也就是秘钥的传输问题,如果对称秘钥,那么只能在线下进行秘钥的交换。如果在线上传输秘钥,那就有可能被拦截。所以采用非对称加密,两把钥匙,一把私钥自留,一把公钥公开。公钥可以在网上传输。不用线下交易。保证数据的安全性。
如上图,A节点发送数据到B节点,此时采用公钥加密。A节点从自己的公钥中获取到B节点的公钥对明文数据加密,得到密文发送给B节点。而B节点采用自己的私钥解密。
2、无法解决消息篡改。
如上图,A节点采用B的公钥进行加密,然后将密文传输给B节点。B节点拿A节点的公钥将密文解密。
1、由于A的公钥是公开的,一旦网上黑客拦截消息,密文形同虚设。说白了,这种加密方式,只要拦截消息,就都能解开。
2、同样存在无法确定消息来源的问题,和消息篡改的问题。
如上图,A节点在发送数据前,先用B的公钥加密,得到密文1,再用A的私钥对密文1加密得到密文2。而B节点得到密文后,先用A的公钥解密,得到密文1,之后用B的私钥解密得到明文。
1、当网络上拦截到数据密文2时,由于A的公钥是公开的,故可以用A的公钥对密文2解密,就得到了密文1。所以这样看起来是双重加密,其实最后一层的私钥签名是无效的。一般来讲,我们都希望签名是签在最原始的数据上。如果签名放在后面,由于公钥是公开的,签名就缺乏安全性。
2、存在性能问题,非对称加密本身效率就很低下,还进行了两次加密过程。
如上图,A节点先用A的私钥加密,之后用B的公钥加密。B节点收到消息后,先采用B的私钥解密,然后再利用A的公钥解密。
1、当密文数据2被黑客拦截后,由于密文2只能采用B的私钥解密,而B的私钥只有B节点有,其他人无法机密。故安全性最高。
2、当B节点解密得到密文1后,只能采用A的公钥来解密。而只有经过A的私钥加密的数据才能用A的公钥解密成功,A的私钥只有A节点有,所以可以确定数据是由A节点传输过来的。
经两次非对称加密,性能问题比较严重。
基于以上篡改数据的问题,我们引入了消息认证。经过消息认证后的加密流程如下:
当A节点发送消息前,先对明文数据做一次散列计算。得到一个摘要,之后将照耀与原始数据同时发送给B节点。当B节点接收到消息后,对消息解密。解析出其中的散列摘要和原始数据,然后再对原始数据进行一次同样的散列计算得到摘要1,比较摘要与摘要1。如果相同则未被篡改,如果不同则表示已经被篡改。
在传输过程中,密文2只要被篡改,最后导致的hash与hash1就会产生不同。
无法解决签名问题,也就是双方相互攻击。A对于自己发送的消息始终不承认。比如A对B发送了一条错误消息,导致B有损失。但A抵赖不是自己发送的。
在(三)的过程中,没有办法解决交互双方相互攻击。什么意思呢?有可能是因为A发送的消息,对A节点不利,后来A就抵赖这消息不是它发送的。
为了解决这个问题,故引入了签名。这里我们将(二)-4中的加密方式,与消息签名合并设计在一起。
在上图中,我们利用A节点的私钥对其发送的摘要信息进行签名,然后将签名+原文,再利用B的公钥进行加密。而B得到密文后,先用B的私钥解密,然后对摘要再用A的公钥解密,只有比较两次摘要的内容是否相同。这既避免了防篡改问题,有规避了双方攻击问题。因为A对信息进行了签名,故是无法抵赖的。
为了解决非对称加密数据时的性能问题,故往往采用混合加密。这里就需要引入对称加密,如下图:
在对数据加密时,我们采用了双方共享的对称秘钥来加密。而对称秘钥尽量不要在网络上传输,以免丢失。这里的共享对称秘钥是根据自己的私钥和对方的公钥计算出的,然后适用对称秘钥对数据加密。而对方接收到数据时,也计算出对称秘钥然后对密文解密。
以上这种对称秘钥是不安全的,因为A的私钥和B的公钥一般短期内固定,所以共享对称秘钥也是固定不变的。为了增强安全性,最好的方式是每次交互都生成一个临时的共享对称秘钥。那么如何才能在每次交互过程中生成一个随机的对称秘钥,且不需要传输呢?
那么如何生成随机的共享秘钥进行加密呢?
对于发送方A节点,在每次发送时,都生成一个临时非对称秘钥对,然后根据B节点的公钥和临时的非对称私钥可以计算出一个对称秘钥(KA算法-KeyAgreement)。然后利用该对称秘钥对数据进行加密,针对共享秘钥这里的流程如下:
对于B节点,当接收到传输过来的数据时,解析出其中A节点的随机公钥,之后利用A节点的随机公钥与B节点自身的私钥计算出对称秘钥(KA算法)。之后利用对称秘钥机密数据。
对于以上加密方式,其实仍然存在很多问题,比如如何避免重放攻击(在消息中加入Nonce),再比如彩虹表(参考KDF机制解决)之类的问题。由于时间及能力有限,故暂时忽略。
那么究竟应该采用何种加密呢?
主要还是基于要传输的数据的安全等级来考量。不重要的数据其实做好认证和签名就可以,但是很重要的数据就需要采用安全等级比较高的加密方案了。
密码套件是一个网络协议的概念。其中主要包括身份认证、加密、消息认证(MAC)、秘钥交换的算法组成。
在整个网络的传输过程中,根据密码套件主要分如下几大类算法:
秘钥交换算法:比如ECDHE、RSA。主要用于客户端和服务端握手时如何进行身份验证。
消息认证算法:比如SHA1、SHA2、SHA3。主要用于消息摘要。
批量加密算法:比如AES,主要用于加密信息流。
伪随机数算法:例如TLS1.2的伪随机函数使用MAC算法的散列函数来创建一个主密钥——连接双方共享的一个48字节的私钥。主密钥在创建会话密钥(例如创建MAC)时作为一个熵来源。
在网络中,一次消息的传输一般需要在如下4个阶段分别进行加密,才能保证消息安全、可靠的传输。
握手/网络协商阶段:
在双方进行握手阶段,需要进行链接的协商。主要的加密算法包括RSA、DH、ECDH等
身份认证阶段:
身份认证阶段,需要确定发送的消息的来源来源。主要采用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA签名)等。
消息加密阶段:
消息加密指对发送的信息流进行加密。主要采用的加密方式包括DES、RC4、AES等。
消息身份认证阶段/防篡改阶段:
主要是保证消息在传输过程中确保没有被篡改过。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。
ECC:EllipticCurvesCryptography,椭圆曲线密码编码学。是一种根据椭圆上点倍积生成公钥、私钥的算法。用于生成公私秘钥。
ECDSA:用于数字签名,是一种数字签名算法。一种有效的数字签名使接收者有理由相信消息是由已知的发送者创建的,从而发送者不能否认已经发送了消息(身份验证和不可否认),并且消息在运输过程中没有改变。ECDSA签名算法是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。主要用于身份认证阶段。
ECDH:也是基于ECC算法的霍夫曼树秘钥,通过ECDH,双方可以在不共享任何秘密的前提下协商出一个共享秘密,并且是这种共享秘钥是为当前的通信暂时性的随机生成的,通信一旦中断秘钥就消失。主要用于握手磋商阶段。
ECIES:是一种集成加密方案,也可称为一种混合加密方案,它提供了对所选择的明文和选择的密码文本攻击的语义安全性。ECIES可以使用不同类型的函数:秘钥协商函数(KA),秘钥推导函数(KDF),对称加密方案(ENC),哈希函数(HASH),H-MAC函数(MAC)。
ECC是椭圆加密算法,主要讲述了按照公私钥怎么在椭圆上产生,并且不可逆。ECDSA则主要是采用ECC算法怎么来做签名,ECDH则是采用ECC算法怎么生成对称秘钥。以上三者都是对ECC加密算法的应用。而现实场景中,我们往往会采用混合加密(对称加密,非对称加密结合使用,签名技术等一起使用)。ECIES就是底层利用ECC算法提供的一套集成(混合)加密方案。其中包括了非对称加密,对称加密和签名的功能。
metacharset="utf-8"
这个先订条件是为了保证曲线不包含奇点。
所以,随着曲线参数a和b的不断变化,曲线也呈现出了不同的形状。比如:
所有的非对称加密的基本原理基本都是基于一个公式K=kG。其中K代表公钥,k代表私钥,G代表某一个选取的基点。非对称加密的算法就是要保证该公式不可进行逆运算(也就是说G/K是无法计算的)。*
ECC是如何计算出公私钥呢?这里我按照我自己的理解来描述。
我理解,ECC的核心思想就是:选择曲线上的一个基点G,之后随机在ECC曲线上取一个点k(作为私钥),然后根据kG计算出我们的公钥K。并且保证公钥K也要在曲线上。*
那么kG怎么计算呢?如何计算kG才能保证最后的结果不可逆呢?这就是ECC算法要解决的。
首先,我们先随便选择一条ECC曲线,a=-3,b=7得到如下曲线:
在这个曲线上,我随机选取两个点,这两个点的乘法怎么算呢?我们可以简化下问题,乘法是都可以用加法表示的,比如22=2+2,35=5+5+5。那么我们只要能在曲线上计算出加法,理论上就能算乘法。所以,只要能在这个曲线上进行加法计算,理论上就可以来计算乘法,理论上也就可以计算k*G这种表达式的值。
曲线上两点的加法又怎么算呢?这里ECC为了保证不可逆性,在曲线上自定义了加法体系。
现实中,1+1=2,2+2=4,但在ECC算法里,我们理解的这种加法体系是不可能。故需要自定义一套适用于该曲线的加法体系。
ECC定义,在图形中随机找一条直线,与ECC曲线相交于三个点(也有可能是两个点),这三点分别是P、Q、R。
那么P+Q+R=0。其中0不是坐标轴上的0点,而是ECC中的无穷远点。也就是说定义了无穷远点为0点。
同样,我们就能得出P+Q=-R。由于R与-R是关于X轴对称的,所以我们就能在曲线上找到其坐标。
P+R+Q=0,故P+R=-Q,如上图。
以上就描述了ECC曲线的世界里是如何进行加法运算的。
从上图可看出,直线与曲线只有两个交点,也就是说直线是曲线的切线。此时P,R重合了。
也就是P=R,根据上述ECC的加法体系,P+R+Q=0,就可以得出P+R+Q=2P+Q=2R+Q=0
于是乎得到2P=-Q(是不是与我们非对称算法的公式K=kG越来越近了)。
于是我们得出一个结论,可以算乘法,不过只有在切点的时候才能算乘法,而且只能算2的乘法。
假若2可以变成任意个数进行想乘,那么就能代表在ECC曲线里可以进行乘法运算,那么ECC算法就能满足非对称加密算法的要求了。
那么我们是不是可以随机任何一个数的乘法都可以算呢?答案是肯定的。也就是点倍积计算方式。
选一个随机数k,那么k*P等于多少呢?
我们知道在计算机的世界里,所有的都是二进制的,ECC既然能算2的乘法,那么我们可以将随机数k描述成二进制然后计算。假若k=151=10010111
由于2P=-Q所以这样就计算出了kP。这就是点倍积算法。所以在ECC的曲线体系下是可以来计算乘法,那么以为这非对称加密的方式是可行的。
至于为什么这样计算是不可逆的。这需要大量的推演,我也不了解。但是我觉得可以这样理解:
我们的手表上,一般都有时间刻度。现在如果把1990年01月01日0点0分0秒作为起始点,如果告诉你至起始点为止时间流逝了整1年,那么我们是可以计算出现在的时间的,也就是能在手表上将时分秒指针应该指向00:00:00。但是反过来,我说现在手表上的时分秒指针指向了00:00:00,你能告诉我至起始点算过了有几年了么?
ECDSA签名算法和其他DSA、RSA基本相似,都是采用私钥签名,公钥验证。只不过算法体系采用的是ECC的算法。交互的双方要采用同一套参数体系。签名原理如下:
在曲线上选取一个无穷远点为基点G=(x,y)。随机在曲线上取一点k作为私钥,K=k*G计算出公钥。
签名过程:
生成随机数R,计算出RG.
根据随机数R,消息M的HASH值H,以及私钥k,计算出签名S=(H+kx)/R.
将消息M,RG,S发送给接收方。
签名验证过程:
接收到消息M,RG,S
根据消息计算出HASH值H
根据发送方的公钥K,计算HG/S+xK/S,将计算的结果与RG比较。如果相等则验证成功。
公式推论:
HG/S+xK/S=HG/S+x(kG)/S=(H+xk)/GS=RG
在介绍原理前,说明一下ECC是满足结合律和交换律的,也就是说A+B+C=A+C+B=(A+C)+B。
这里举一个WIKI上的例子说明如何生成共享秘钥,也可以参考AliceAndBob的例子。
Alice与Bob要进行通信,双方前提都是基于同一参数体系的ECC生成的公钥和私钥。所以有ECC有共同的基点G。
生成秘钥阶段:
Alice采用公钥算法KA=ka*G,生成了公钥KA和私钥ka,并公开公钥KA。
Bob采用公钥算法KB=kb*G,生成了公钥KB和私钥kb,并公开公钥KB。
计算ECDH阶段:
Alice利用计算公式Q=ka*KB计算出一个秘钥Q。
Bob利用计算公式Q'=kb*KA计算出一个秘钥Q'。
共享秘钥验证:
Q=kaKB=ka*kb*G=ka*G*kb=KA*kb=kb*KA=Q'
故双方分别计算出的共享秘钥不需要进行公开就可采用Q进行加密。我们将Q称为共享秘钥。
在以太坊中,采用的ECIEC的加密套件中的其他内容:
1、其中HASH算法采用的是最安全的SHA3算法Keccak。
2、签名算法采用的是ECDSA
3、认证方式采用的是H-MAC
4、ECC的参数体系采用了secp256k1,其他参数体系参考这里
H-MAC全程叫做Hash-.其模型如下:
在以太坊的UDP通信时(RPC通信加密方式不同),则采用了以上的实现方式,并扩展化了。
首先,以太坊的UDP通信的结构如下:
其中,sig是经过私钥加密的签名信息。mac是可以理解为整个消息的摘要,ptype是消息的事件类型,data则是经过RLP编码后的传输数据。
其UDP的整个的加密,认证,签名模型如下:
利用区块链技术实现不记密码加密存储验证,解决离线安全存储问题
本文介绍一种利用区块链技术配合个人存储设备进行网络安全验证的方法
以微嘟为代表的不记密码快捷加密存储设备,已经完美做到了快捷安全存储,但美中不足的是无法通过网络查询设备何时被使用,以及无法预知极端情况下设备被离线破解等。
利用区块链技术可以解决此问题,具体工作原理:
在设备连接PC端,并检测到射频ID验证通过后,接入设备内的特定硬件,此时自动通过安装在PC端的程序向特定的区块链网络上广播设备打开时间的等信息。在得到区块链网络确认后,才授权设备后级存储用户重要数据的存储颗粒接入。因为每次设备打开都需要网络授权及相关的信息都存储在区块链网络上了,所以有效的避免了不明目的的人在用户不知情的情况下偷偷地打开设备。
多了一层区块链的网络验证是不是发现设备的安全性提高了好多?
下面以微嘟链安全验证为示意:
区块链:防篡改的哈希加密算法同学A和B在教室里抛硬币,赌谁打扫卫生,正面朝上,则A打扫,反面朝上,则B打扫,这个策略没有什么问题。
然而,如果把情景迁移到网络聊天室,A和B同样进行抛硬币的游戏,估计B就不会答应了,因为当A抛了硬币,B不论是猜
正面还是反面,A都可以说B猜错了。
怎么解决这个问题呢?要不先给抛硬币的结果加密,B再猜?这个方法可以试一下。
假设任意奇数代表硬币正面,任意偶数代表反面。A想一个数375,然后乘以一个258,把其结果告诉B为96750,并声明A想的375为密钥,由他保管。
在接下来验证结果时,A可以谎称258为他想的数,375为密钥,A还是立于不败之地。那如果A事先把密钥告诉B呢?B可以直接算出原始数字,失去了保密作用。
这种知道加密方法就知道了解密方法显然行不通,那有没有一种方法,知道了加密方法仍然无法恢复原文呢?
显然是有的,在加密过程中加入不可逆运算就OK了。A设计新的加密方式:
假设A想的数是375,进行加密:
B拿到结果120943,但他几乎不能根据120943反算出密匙375。
如果B想要验证A是否说谎:
终于可以抛硬币了……
这种丢掉一部分信息的加密方式称为“单向加密”,也叫哈希算法。
有个问题:
这个是有可能的,但可以解决,就是增加上述算法的难度,以致于A很难很难找到。
根据以上表述,一个可靠的哈希算法,应该满足:
密码学中的哈希函数有3个重要的性质,即抗碰撞性、原像不可逆、难题友好性。
碰撞性,就是指A同学事先找出一奇一偶使得哈希结果一致,在计算上是不可行的。
首先,把大空间桑拿的消息压缩到小空间上,碰撞肯定是存在的。假设哈希值长度固定为256位,如果顺序取1,2,…2256+1,这2256+1个输入值,逐一计算其哈希值,肯定能找到两个输入值使得其哈希值相同。
A同学,看到这里时,请不要高兴的太早。因为你得有时间把它算出来,才是你的。为什么这么说呢?
根据生日悖论,如果随机挑选其中的2130+1输入,则有99.8%的概率发现至少一对碰撞输入。那么对于哈希值长度为256为的哈希函数,平均需要完成2128次哈希计算,才能找到碰撞对。如果计算机每秒进行10000次哈希计算,需要约1027年才能完成2128次哈希计算。
A同学,不要想着作弊了,估计你活不了这么久。当然如果计算机运算能力大幅提升,倒是有可能。
那么完整性还用其他什么用途呢?
用来验证信息的完整性,因为如果信息在传递过程中别篡改,那么运行哈希计算得到的哈希值与原来的哈希值不一样。
所以,在区块链中,哈希函数的抗碰撞性可以用来做区块和交易的完整性验证。
因为一个哈希值对应无数个明文,理论上你并不知道哪个是。就如,4+5=9和2+7=9的结果一样,知道我输入的结果是9,但能知道我输入的是什么数字吗?
如果,对消息m进行哈希计算时,在引入一个随机的前缀r,依据哈希值H(r||m),难以恢复出消息m,这代表该哈希函数值隐藏了消息m。
所以,B同学,根据结果想反推出原数据,这是不大可能的事,就犹如大海里捞针。
难题好友性,指没有便捷的方法去产生一满足特殊要求的哈希值。是什么意思呢,通俗的讲,就是没有捷径,需要一步一步算出来。假如要求得到的哈希结果以若干个0开头,那么计算找到前3位均为0的哈希值和找到前6位均为0的哈希值,其所需的哈希计算次数是呈一定数量关系。
这个可以怎么用呢?在区块链中,可以作为共识算法中的工作量证明。
主要描述了哈希函数的3个重要性质:抗碰撞性、原像不可逆、难题友好性。
因为这些重要性质,区块链中的区块和交易的完整性验证、共识算法的工作量证明等功能用哈希函数来实现。
[1].邹均,张海宁.区块链技术指南[M].北京:机械出版社,2016.11
[2].长铗,韩锋.区块链从数字货币到信用社会[M].北京:中信出版社,2016.7
[3].张健.区块链定义未来金融与经济新格局[M].北京:机械工业出版社,2016.6
币安交易密码在哪里设置电脑端电脑端:macbookpromos14打开google版本92.0.4515.131,打开其官网,使用验证器扫描二维码/手动输入密钥,建议备份密钥输入登录密码和6位谷歌验证码,点击提交即可。
一、区块链资产的特点
区块链资产的第一大特点就是全球流通。即便是在月球上、火星上,只要有互联网,就可以进行区块链资产转账。相对于传统转账来说,区块链资产到账也非常快,一般几分钟到一小时内就能到账。
区块链资产的第二大特点是匿名性。区块链资产的匿名性是分不同程度的,谁也无法知道某人的区块链资产有多少,以及和谁进行了转账。区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对人”的信任改成了对机器的信任,任何人为的干预不起作用。
区块链资产的第三大特点是记账去中心化。因为区块链资产的记账方式是全网共同进行,给别人转账记录的账本,不会因为转账人或者对方的账本数据丢失而无法统一,因为这个账本是全网共同维护,每个全节点都存有备份,十分透明,十分公正。
区块链资产的第四大特点就是不可复制。区块链资产的传递是通过加密技术而不是拷贝,比如一份价值1000元的区块链资产,甲转给乙,这1000元资产就从甲的账户转移到乙的账户里,甲就不再拥有这些资产。
二、区块链面临的挑战
受到现行观念、制度、法律制约。区块链去中心化、自我管理、集体维护的特性颠覆了人们生产生活方式,淡化了国家、监管概念,冲击了现行法律安排。对于这些,整个世界完全缺少理论准备和制度探讨。即使是区块链应用最成熟的比特币,不同国家持有态度也不相同,不可避免阻碍了区块链技术的应用与发展。解决这类问题,显然还有很长的路要走。
区块链中的数据是的加密的那其他节点如何访问?“龙龘网络”很高兴能够为您解答。
首先,区块链技术当中的这个加密所指的是,数据在传输的时候以一种加密技术进行编译,而不是说对显示的数据进行加密,因为区块链还有一个特点,那就是信息公开透明化,所有的储存在区块链上的交易记录、资产数量等信息都是可追溯查询的,当区块链中,每完成一笔交易,都会以发起方为原点向四周进行广播,将信息同步给周围的节点,这些收到信息的节点将继续对四周进行广播,继续将信息发送给周围的节点。最终,这笔交易信息将会扩散至全网,实现全网共同记账。
因此,这个数据所有人都可见,但是无法修改,也就是相当于“只读”状态,这就是区块链的另外一大特点“防篡改”。
区块链当中所使用的是“非对称加密技术”,就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个
⑤ 怎么导入区块链私钥,怎么导入区块链私钥信息
区块链钱包的私钥如何备份?有哪几种方法?????当你在创建一个区块链钱包的时候,创建成功之后,系统会自动生成钱包地址、公钥、私钥,然而这些需要你自己去备份,钱包不会帮你保存,那么大家应该如何备份这些信息呢?又有几种方法?
????第一,具备双倍安全性的钱包,并把私钥导入到Armory客户端(1)进行冷储存(2),用户可以在客户端中快速从冷储存中找到所需私钥,还有一个优点就是方便离线交易转账,不必每次都重新导入私钥。同时电脑的操作系统需要设置密码。
????第二,可以把钱包的私钥和公钥制作成电子版备份,同步到云端。你可以把它们复制粘贴为一个文档,标记好名字,文档可以以拼音的形式命名,可以乱码,但是要额外的保存在另一个文档里注明该文件是干什么用的。但是这样做的结果就是可能会忘记储存的文件是哪个,因此你需要在手机备注好信息,同时需要把复习私钥这件事安排为按时间重复的(如2个月复习一次)日程事件,时间到了手机或电脑提醒复习。而且不仅仅是回忆几遍就可以了,是要到备份上打开那个生成私钥的钱包中,重新登录一遍,看看私钥(和地址)是否正确。
????第三,用户可以在文档上写下钱包的私钥和公钥以及地址,命名的话,你自己看得懂就好,接着就把后缀名为jpg图片格式,使其看起来就像一个坏掉的打不开的图片,或者更甚,我们可以把这打不开的假图片压缩为zip格式并伪装为一个真正的图片,需要的时候再还原出来。具体更改方法可以上网络查找。
???第四,以上三种方法都是电子版的备份方法,还有一种简单粗暴的方法就是在日记本手抄私钥公钥,使其看起来不那么刻意、唐突,不过大家需要注意的是,抄写的时候记得要写得字体清晰、工整,避免字迹潦草而导致输入私钥错误。同时,保存的地方也是需要注意的,可以藏在家里隐私的地方(有条件可以存银行保险柜)。
备份区块链钱包私钥的方法有以上4种方法,当然如果你有更好的备份方法,也可以分享出来,不必按部就班地使用上述备份方法的哦。最后,给一个备份建议:可以结合上述2到4种方法来备份私钥,避免遗忘。
注释:
(1)Armory客户端:Armory是一个功能齐全的比特币客户端,提供了许多其他客户端软件所没有的创新功能!管理多个钱包(确定性和仅观看)、打印永久工作的纸张备份、导入或删除私钥等。
(2)冷储存:即比特币钱包的冷储存(Coldstorage)。是指将钱包进行离线保存的一种方法。
tokenpocket密钥是什么私钥是由加密算法生成的一个64位十六进制的字符组成,就像这样:
私钥的生成方式是完全随机的,随机生成这样的字符串会有16的64次方种可能,即:2的256次方,一个钱包只有一个私钥并且不能修改,正常情况下你所生成的私钥与他人正好相同的概率几乎为零。
导入私钥:打开客户端进入调试窗口。输入命令:importprivkey私钥标签true(说明,importprivkey空格+后面是你的私钥+空格+给你导入的这个地址起个名字+空格+true,最后这个true是同步你的交易信息,不加true看不到余额),过几分钟之后就会看到的你的收款地址里面多出一个地址,就是你刚才的导入的地址,而且你的余额也会跟着过来了!
imtoken钱包私钥导入格式64进16什么意思
私钥=银行卡+银行卡密码。
私钥是一个长度为64位的字符串,一个钱包只能拥有一个私钥并且不能修改。为什么说私钥=银行卡+银行卡密码呢?因为在imToken中直接导入私钥可以生成新的密码,将所有的区块链资产全部转移走。私钥作为最高保密级别,应该妥善保管在物理设备上,例如抄在纸上,备份多份并且存放在安全的地方,万万不可将私钥在联网设备上进行传输,避免被黑客截取。
助记词=私钥。
助记词又是什么东西呢?助记词既然等于私钥,那么其应该是私钥的另外一种表现形式,并且具有私钥同等的功能。在imToken中创建钱包,会出来一个助记词,助记词的个数一般为12、15、18、21个单词构成。这些词都取自一个固定词库,其生成顺序也是按照一定的算法得到,且助记词不能修改。助记词的主要作用是帮助用户记忆繁琐的私钥。同样助记词也要妥善保管好,切勿在联网设备中传输,任何人得到了你的助记词都可以轻松的转移你的区块链资产。
keystore+密码=私钥。
keyStore文件是以太坊钱包存储私钥的一种文件格式(JSON格式)。它使用用户自定义密码对私钥进行加密,在一定程度上keystore=加密后的私钥,拿到keystore和密码后照样可以转移走所有的区块链资产。keystore密码是唯一不可修改的,那么钱包密码修改之后,keystore也会相应修改。一定要记住加密keystore的密码,一旦忘记密码,就相当于遗失了该钱包所有的区块链资产。
————————————————
版权声明:本文为CSDN博主「懒区块」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
区块链密匙文件怎么获取1.一种区块链系统密钥的找回方法,其特征在于,包括以下步骤:步骤1、创建原始密钥对;步骤2、根据原始密钥对演算业务密钥对;步骤3、根据业务密钥对演算地址和账号;步骤4、当业务密钥丢失,执行步骤2。2.根据权利要求1所述的区块链系统密钥的找回方法,其特征在于,所述原始密钥对包括原始私钥和原始公钥。3.根据权利要求2所述的区块链系统密钥的找回方法,其特征在于,所述步骤1中,创建原始密钥对包括以下步骤:步骤11、采用一个随机数生成一个原始种子;步骤12、由所述原始种子经非对称加密算法演算生成原始密钥对,所述原始密钥对包括原始私钥与原始公钥。4.根据权利要求1中的所述的区块链系统密钥的找回方法,其特征在于,所述步骤2中,业务密钥对包括业务私钥和业务公钥。5.据权利要求4中的所述的区块链系统密钥的找回方法,其特征在于,所述步骤2中,具体为,根据种子制作数据生成业务种子,根据业务种子生成业务密钥对,具体包括以下步骤:步骤21、以原始私钥作为加密密钥,对种子制作数据进行种子生成运算,得到具有唯一性的密文作为业务种子,;步骤22、由所述业务种子经称非对加密算法演算生成业务密钥对,所述密钥对包括业务私钥与业务公钥。6.据权利要求5中的所述的区块链系统密钥的找回方法,其特征在于,所述步骤21中,种子制作数据包括原始公钥或者其它选定的任何数据。7.据权利要求权利5中的所述的区块链系统密钥的找回方法,其特征在于,所述步骤21中,种子生成运算包括hmac加密算法运算、加盐哈希加密算法运算、对称加密算法运算或非对称加密算法运算。8.据权利要求3或5中的所述的区块链系统密钥的找回方法,其特征在于,所述非对称加密算法包括rsa算法、ecc算法、ecdsa算法、sm2算法和sm9算法的其中任一种。9.据权利要求5中的所述的区块链系统密钥的找回方法,其特征在于,所述唯一性的密文如非哈希值则对所述密文进行哈希运算,得到所述密文的哈希值作为业务种子;密文如为哈希值则可直接作为业务种子,或者可再次或多次进行哈希运算,得到的哈希值作为业务种子。10.据权利要求7中的所述的区块链系统密钥的找回方法,其特征在于,所述对称加密算法包括des算法、3des算法、rc2算法、rc4算法、rc5算法、aes算法、sm1算法、sm4算法、sm7算法和zuc算法的其中任一种。
⑥ 区块链中的密码学是什么(区块链的密码技术)
区块链的密码技术有密码学技术是区块链技术的核心。区块链的密码技术有数字签名算法和哈希算法。
数字签名算法
数字签名算法是数字签名标准的一个子集,表示了只用作数字签名的一个特定的公钥算法。密钥运行在由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给出的直观定义最好:,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体系等。