以太坊密钥,区块链中密钥是什么(区块链密钥丢了怎么办)

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

以太坊密钥,区块链中密钥是什么(区块链密钥丢了怎么办)

一、区块链中密钥是什么(区块链密钥丢了怎么办)

区块链中的私钥和公钥

公开密钥(publickey,简称公钥)、私有密钥(privatekey,简称私钥)是密码学里非对称加密算法的内容。顾名思义,公钥是可以公开的,而私钥则要进行安全保管。

私钥是由随机种子生成的,公钥是将私钥通过算法推导出来。由于公钥太长,为了简便实用,就出现了“地址”,地址是公钥推导出来的。这些推导过程是单向不可逆的。也就是地址不能推出公钥,公钥不能推出私钥。

从中我们可以看出,公钥与私钥是成对存在的。它们的用处用16个字来概括:公钥加密,私钥解密;私钥签名,公钥验签。

公钥加密,私钥解密。也就是用公钥加密原数据,只有对应的私钥才能解开原数据。这样能使得原数据在网络中传播不被窃取,保护隐私。

私钥签名,公钥验签。用私钥对原数据进行签名,只有对应的公钥才能验证签名串与原数据是匹配的。

可以用锁头,钥匙来比喻公钥,私钥。锁头用来锁定某物品,钥匙来解锁该物品。钥匙所有者是物品的所有者。事实上就是这样,公私钥对奠定了区块链的账户体系及资产(Token等)的所有权,区块链的资产是锁定在公钥上的,私钥是用来解锁该资产然后使用。比如说我要转让资产给你,就是我用我的私钥签名了一笔我转让资产给你的交易(含资产,数量等等)提交到区块链网络里,节点会验证该签名,正确则从我的公钥上解锁资产锁定到你的公钥上。

我们看到了私钥的作用了吧,跟中心化记账系统(支付宝、微信支付等)的密码一样重要,拥有私钥就拥有了资产所有权,所以我们千万要保管好私钥,不能泄露。

区块链中的私钥公钥指什么?

私钥公钥这个名词可谓是所有考题中最简单的了。

公开的密钥叫公钥,只有自己知道的叫私钥。

公钥(PublicKey)与私钥(PrivateKey)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。

一句话明了~

区块链私钥、公钥和地址是什么关系?

区块链私钥,公钥和地址三者之间的关系是私钥生成公钥,公钥转化成为地址。所以私钥是最重要的。这三者之间是不可逆的,地址不能生成公钥,公钥也不能转化成为私钥。

首先先跟大家说明一下什么是私钥,私钥就是钱包根据密码学原理生成的一串字符,创建钱包时通过各种算法生成的随机数。私钥的作用相当于在区块链上的一个身份,你在区块链上的资半存储在你身份之中,也就是存储在你私钥身份下面的地址里,所以谁掌握了私钥,就掌握了在该身份下地址里的数字资产。私钥相当于银行卡密码,一定要离线保管好,防止被盗。

其次是公钥,公钥相当于就是区块链记账的一个交易记录,交易发生后记录入区块链中,是公开的,并且不可篡改,因为在区块链中,每发生一笔交易都要广播到区块中,大家进行记账。例如张三给王五买牛,现实生活中只是他们两人的事,牛的成交价格只要他们达成协议就可以成交了,跟全村人没有关系,他俩的交易记录由于没有公开所以不叫公钥。但在区块链中,张三给王五买牛的价格除了他们俩人达成协议以外,全村人都要进行记账,全村人记完账交易才完成,那么全村人所记的记录就叫公钥。

再次是区块链地址,它通常是由26至35个字符的字母和数字字符串组成,区块链地址主要来源于公钥,区块链地址相当于我们平时使用的银行卡卡号,是可以公开给任何人的,没有安全限制,主要作用就是用于接收和发送区块链上的数字资产。

区块链技术现在处于初期发展阶段,但因其具有去中心化、安全性、不可篡改等特性,今后的生活工作中可能会产生杀手级别的落地应用而备受各国重视。本文仅供参考,欢迎留言讨论。

二、区块链技术这东西真的会是后互联网时代吗有什么体现

是的,区块链一定是后互联网时代必需的技术。

具体体现在它的不可篡改,以及去中心化特性能实现:

一、在互联网上,能传递价值和权益。

二、能够构建一套去中心化体系,使得多方主体之间能够互相信任。

第一点,在互联网上,能传递价值和权益。

我们都知道,在互联网上最容易做到复制和粘贴,我们可以很方便的传递信息,但是如果在互联网上传递价值,就有可能被盗以及被篡改信息。而有了区块链技术后,我们放在互联网上的信息,可以不被篡改,也不怕被盗。于是,就可以在互联网上传递价值和权益证明了。

传递价值的例子太多了,比如比特币就是一种数字资产可以随意通过互联网进行转账,而且并不需要一个中心化机构来管理。

但是传递权益证明怎么理解呢?比如说,我们去办政务,就经常遇到,我在一个部门的一个窗口,办一个手续,然后拿着这个纸质手续,再去找下一个部门的窗口。明明我们已经经历过互联网化这么多年,却还是要走这么多流程和办理各种纸质资料,这是为什么呢?

这是因为现在科技很发达,要篡改一些电子文件其实很容易,在没有结合区块链的情况下,要信任你提交的电子资料是比较难的。所以要让窗口部门了解到你是你本人,以及是你自己愿意来办的,往往就需要你带上身份证,然后亲自到现场填写资料,来确保这是你本人出自自己意愿来办理的,这样才不会出错。

而结合了区块链,再结合人脸识别,就可以做到,我在一个部门办好的手续,放到区块链上,另一个部门只需在区块链上查看便知道,我本人来办理过相关的前置手续,就可以接着办理了。

事实上,像广东佛山禅城区就已经在探索利用区块链技术,做得到政务“零跑腿”,足不出户就能办理政务业务了,极大的提高了处理的效益。

再来说说,第二点,能够构建一套去中心化体系,使得多方主体之间能够互相信任。在出现区块链以前,多个主体协作尤其是线上的协作是很难的。这也是为什么跨国转账一般要花好几天时间,并且费用很昂贵,百分之几的费用。因为跨国转账来说,不同银行的账本不一样,用的系统不一样,所以往往需要两家银行专门负责对外清结算的人员互相同步一下账本,才能转账成功。

有的人就说,那大家都用一套系统好了,那么问题来了,用谁的系统呢?用谁的,其他几家都不信任,因为谁的系统,往往就有权限修改,而且操作权都在对方手上,而且还不说隐私之类的问题了。

但是如果是用区块链开发的系统,就可以很好的解决这个问题,因为大家用的是同一套系统,而且各个节点之间的权限是一致的,没有任何一个主体能随意更改。

其实,在18年6月份,蚂蚁金服就已经利用区块链技术,做到了快速跨境汇款。三秒到账,费用也极低,可以忽略。

这种区块链带来的去中心化的解决方案,以建立一种与以往中心化不同的协作关系,解决了中心化难以逾越的一些问题,并且极大地提高了效率。

如果再从这个方向去延伸呢,大家想想我们所处的任何一家公司,总会是另一家公司的上游或者下游,就一定会与对方进行物资,资金,信息等等的一系列交互。那么是不是会发现很多流程往往都是为了信任而产生的,比如对方发来的信息,要确认,对方发来的物资要确认和检查,每次与对方进行新的动作的时候都会伴随不断地确认,反馈。而这些都是信任成本。

但是如果利用区块链,数据产生之后,就放到区块链上来,所有这条供应链上下游的企业都获取到数据,那么很多数据就不用反复确认,这样就可以极大的降低信任成本。同时,因为传递的是可信的数据。而数据一旦可信,在未来,机器与机器之间的交互就会减少非常多的麻烦了。(这又是另一个大的话题了)

区块链技术被广泛视为实现更安全的互联网的重要抓手——其优势主要来源于其技术原理与当前互联网结构的不同。在这篇文章中我们将为大家介绍,区块链会如何促进网络安全。

区块链技术是什么?

区块链技术是一个去中心化的分布式账本系统,你可以把任何数字资产放入区块链,无论任何行业。它使用一系列具有时间戳的不可变记录来保存信息,由计算机集群进行管理。通过这些记录可以跟踪不同的事务,这些记录通过区块来分隔,并由加密链连接。同时,数据并不属于某台计算机或某个个体,而是由整个系统内的多个用户共同拥有。

一旦信息得到确认,已被编码的数据就无法改变,将变成一个永久区块,添加到已经过验证的其他区块形成的链上。最初这一技术是为加密货币设计的,但现在我们可以看到,区块链技术在很多领域,特别是网络安全方面拥有巨大潜力,因为它可以用来防止网络攻击、数据泄露、身份盗窃或恶意交易,保持数据的私密性和安全性。

区块链作为一种更偏底层的技术,能够为不同行业提供有益的解决方案。它的主要特点是:

区块链拥有一个民主化的网络,没有中央权威。它是公共域,因此没有任何一个组织可以进入区块链系统来操纵任何信息。

区块链是一个去中心化的系统,不属于任何一个实体。区块链系统中的数据可以进行加密存储。

存储在区块链中的任何内容都是不可变的,可以防止人为篡改或操纵信息。例如,有了区块链,就可以举行一场完全透明的选举,并立即产生结果。人们完全可以在自己家里投票,投票结果就能够立即统计出来。

区块链是透明的——在区块链中构建和存储的任何东西都可以公开访问。存储在里面的数据也可以被追踪,对那些使用该系统的人来说,将形成一个更高标准的问责制度。

区块链技术如何推进网络安全?

物联网与边缘计算

随着物联网、边缘计算的发展,越来越多的数据分布在边缘计算和存储设备上,以进行实时、按需访问,也就是在更靠近数据源的位置处理和存储数据。区块链通过更严格的身份认证、改进的数据属性和流,以及更先进的记录管理系统,为物联网和工业物联网提供了一个安全的解决方案。

在物联网设备方面,区块链技术基于其去中心化的架构,能够为远程物联网设备提供安全性,保障其不受黑客攻击。智能合约可以为区块链环境下的交易提供安全验证,同时区块链可用于管理物联网活动。

数据访问控制

因为区块链最初设想的一个目标是能够实现公开访问,所以它并没有访问控制或限制。不过,如今各个行业都会通过使用私有区块链系统,来确保数据机密性以及安全访问控制。区块链的完全加密,能够确保外部无法访问数据——无论是部分还是全部数据,特别是在传输数据时。

DDoS攻击

分布式拒绝服务(DDoS)攻击的目标通常是一个服务器,该服务器会受到多个受感染的计算机系统的攻击,通过拒绝服务导致系统变慢,最终导致系统过载或崩溃。如果将区块链集成到安全系统中,目标计算机、服务器或网络将成为去中心化系统的一部分,可以保护这些机器不受攻击。

个人通信

使用基于区块链技术搭建的平台进行通信,企业可以获得更高的安全性,该技术可以抵御恶意攻击。无论在个人、企业还是高度机密的通信中,消费者都可以获得通信的保密性,无需担心网络攻击。区块链能比普通加密应用更好地处理公钥基础设施(PKI),因此现在有很多企业希望开发区块链私人通信应用。

公钥基础设施

如今人们更加注重保护电脑和在线凭证的安全,而区块链技术也可以在这方面提供帮助。PKI依赖第三方认证机构来保证通信应用程序、电子邮件和网站的安全。这些颁发、撤销或存储密钥对的发证机构,往往会成为黑客的目标,后者一般会使用伪造身份试图访问加密通信。当这些密钥被编码在区块链上时,它将生成虚假密钥或盗窃身份的可能最小化了,因为合法账户持有人的身份已经在应用程序上得到验证,任何入侵、欺骗或身份盗窃都可以立即识别出来。

域名系统

采用区块链方法去存储域名系统(DNS),可以全面提高安全性。因为它不再是单个的、存有风险的目标,可以阻止黑客搞垮DNS服务提供商的恶意活动。

区块链,网络安全的未来

随着我们不断加深对区块链的认识,越来越多的人投入到区块链技术的应用与研发,这项技术正在慢慢成熟。从过去这两年里,区块链在不同行业场景中应用的增加,以及国家对区块链这项技术的政策导向。区块链已经发生了巨大的改变,不再是加密货币的代名词。

区块链技术可能是因加密货币而生,但其价值绝不仅限于加密货币。区块链是一种安全可靠的技术,一旦融入主流安全措施,它可以为推进网络安全带来很多实际的好处。

随着黑客不断创造新的、更刁钻的数据窃取和攻击方式,网络安全的威胁在加剧,区块链技术很可能在未来几年成为网络安全的前沿。从一定程度上来说,如今的区块链正是网络安全的未来。

我的理解区块链是一种技术,互联网只是个载体或者信息整合的传播途径,不应该是互联网后时代。

区块链可以真正做到公正公开,发生过的事情记录下来不会被篡改。

区块链,去中心化,无法破解,唯一性无可替代

三、如何找到区块链的密码,区块链的密钥是什么

【深度知识】区块链之加密原理图示(加密,签名)

先放一张以太坊的架构图:

在学习的过程中主要是采用单个模块了学习了解的,包括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-basedMessageAuthenticationCode.其模型如下:

在以太坊的UDP通信时(RPC通信加密方式不同),则采用了以上的实现方式,并扩展化了。

首先,以太坊的UDP通信的结构如下:

其中,sig是经过私钥加密的签名信息。mac是可以理解为整个消息的摘要,ptype是消息的事件类型,data则是经过RLP编码后的传输数据。

其UDP的整个的加密,认证,签名模型如下:

区块链密码算法是怎样的?

区块链作为新兴技术受到越来越广泛的关注,是一种传统技术在互联网时代下的新的应用,这其中包括分布式数据存储技术、共识机制和密码学等。随着各种区块链研究联盟的创建,相关研究得到了越来越多的资金和人员支持。区块链使用的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)可追踪性。群签名中,群管理员的存在保证了签名的可追

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://www.ssyg068.com/biquanzx/23139.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年03月23日
下一篇 2025年03月23日

相关推荐

  • 虚拟币钱包密钥,比特币的概念是什么

    一、什么是数字纸工作原理是什么数字纸,也叫数码纸。它是一种超薄、超轻的显示屏,即理解为"象纸一样薄、柔软、可擦写的显示器"。在谈到数字纸时,必然会谈到电子墨。形像地说,数字纸是一张薄胶片,而在胶片上"涂"上的一层带电的物质,这便是电子墨。这也可看作是一个薄薄的

    2025-04-25 13:00:02
    18 0
  • 什么是私钥,区块链中密钥是什么(区块链密钥丢了怎么办)

    一、如何找到区块链的密码,区块链的密钥是什么【深度知识】区块链之加密原理图示(加密,签名)先放一张以太坊的架构图:在学习的过程中主要是采用单个模块了学习了解的,包括P2P,密码学,网络,协议等。直接开始总结:秘钥分配问题也就是秘钥的传输问题,如果对称秘钥,那么只能

    2025-04-18 18:00:01
    17 0
  • 谷歌验证器密钥匙在哪查,谷歌验证器的密钥在哪里能找到

    一、谷歌身份验证器密匙忘了,怎么办1、首先打开个人中心,点击下方的“安全中心”。2、点击谷歌验证器,如图所示,不要直接点击开启,否则退出后就要输入谷歌验证码。3、点击第一个,重置,如图所示,点错可以后退一步。4、按图示要求,点:复制,这是新的密钥。5、打开谷歌验

    2025-04-11 15:55:01
    18 0
  • 如何盗取钱包密钥,冷钱包是什么意思

    一、比特币钱包私钥是什么币姐为了让新人更容易理解,会使用一些比喻来讲,虽然不太严谨,但是会更好理解。私钥就好像你的银行卡密码比特币钱包地址就好像你的银行卡只要有了银行卡和密码,谁都能从ATM上取钱。而比特币钱包地址是公开的,相当于别人都有你的银行卡,所以这个

    2025-04-08 09:55:02
    16 0
  • 钱包密钥在哪里能找到,区块链钱包地址多少位

    一、数字钱包 私钥数字钱包相当于银行账户,用户可以通过分散的方式存储、接收和向他人发送数字化资产。任何拥有互联网连接的人都可以创建自己独特的钱包,该钱包在与此类资产的加密网络交互时注册自己的私钥和公钥。私钥是所有者获得访问此类钱包的唯一身份或密码。公钥是所

    2025-03-31 09:55:01
    15 0
  • 比特币私钥怎么生成,比特币的密钥是怎么样

    一、比特币有多少个比特币的最大总量是2100万枚。有多少比特币还有待挖掘?还有3109837.5个比特币需要挖掘。每日有多少比特币被挖掘?平均每日挖掘144个街区,每一街区有12.5个比特币。14412.5是1800,因此它是每日挖掘新的比特币的均值总数。由于许多矿工已经提升新的哈希率

    2025-03-20 10:55:01
    26 0

发表回复

8206

评论列表(0条)

    暂无评论

binance币安交易所
已有2000万用户加入币安交易所

立即下载