区块链示意图可能是相关行业人士需要注意的知识。这里详细介绍一下区块链的基本原理,还有一些相关的知识分享给你,希望能给你带来帮助!
Let';先放一张以太坊的架构图:
在学习的过程中,我们主要是利用单一的模块进行学习和理解,包括P2P、密码学、网络、协议等等。直接开始总结:
密钥分发问题也是密钥传输问题。如果密钥是对称的,那么密钥只能离线交换。。如果密钥在线传输,可能会被截获。所以采用非对称加密,两个密钥,一个私钥保留,一个公钥公开。公钥可以在互联网上传输。没有线下交易。确保数据的安全性。
如上图,节点A向节点b发送数据。此时,采用公钥加密。节点A获得节点B';的公钥对明文数据进行加密,得到密文发送给节点B.并且节点B使用其自己的私钥来解密。
2。消息篡改无法解决。
如上图。节点A使用B';的公钥进行加密,然后将密文发送到节点B.节点b用节点a的公钥解密密文。因为一';的公钥是公开的,一旦网络黑客截获消息,密文就没用了。说白了,这种加密方式只需要截取消息。你可以解开它。
2。还存在无法确定消息来源和消息被篡改的问题。
如上图所示,节点A在发送数据之前,用B'加密;的公钥得到密文1,然后用一个';的私钥来获得密文2。。节点B得到密文后,用A的公钥解密得到密文1,再用B的私钥解密得到明文。
1。当数据密文2在网络上被截获时,因为A'的公钥是公开的,可以用一个';s公钥得到密文1。。所以看起来是双重加密,但是最后一层的私钥签名是无效的。一般来说,我们都希望签名签在最原始的资料上。如果把签名放在后面,因为公钥是公开的,签名缺乏安全性。
2。存在性能问题。非对称加密本身效率不高,加密过程进行了两次。
如上图,节点A先用A的私钥加密,再用B的公钥加密,节点B收到消息后,先用B'解密;的私钥,然后用一个';的公钥。
1。当密文数据2被黑客截获时,因为密文数据2只能被B'解密;的私钥,和B';的私钥只有NodeB拥有,其他人可以';不要保守秘密。所以安全性最高。
2。当节点B解密得到密文1时,只能用a的公钥解密。。只有被加密的数据才被A'的私钥可以被一个';的公钥和一个';的私钥仅由一个节点拥有,因此可以确定数据是由一个节点传输的。
经过两次非对称加密,性能问题严重。
基于上述篡改数据的问题,我们引入了消息认证。消息认证后的加密过程如下:
节点A发送消息前,明文数据哈希一次。得到一个汇总,然后和原始数据同时发送给nodeB。。当节点B接收到消息时,它解密该消息。对哈希摘要和原始数据进行分析,然后对原始数据进行同样的哈希计算得到摘要1,并与摘要1进行比较。如果是一样的,说明没有被篡改;如果不一样,说明被篡改了。
在传输过程中,只要密文2被篡改,产生的hash就会和hash1不一样。
签名问题解决不了,就是双方互相攻击。a总是否认他发出的信息。例如,A向b发送一条错误消息。,导致b的损失。但否认没有';不要单独发送。
在(3)的过程中,双方的相互攻击是没有办法解决的。你什么意思?可能是因为A发的消息对节点A不利,后来A否认没有发消息。
为了解决这个问题,引入了签名。这里,我们将(2)-4中的加密方法与消息签名相结合。
上图中,我们用节点A的私钥对其发送的摘要信息进行签名,然后对原文进行签名。然后用b'要加密的公钥。得到密文后,B用B'解密;的私钥,然后用一个';的公钥,只能通过比较两个摘要的内容。这样既避免了防篡改问题,又避免了来自两边的攻击。因为a签了信息。,所以不可能否认。
为了解决数据非对称加密的性能问题,经常使用混合加密。这里有必要介绍一下对称加密,如下图:
加密数据时,我们使用双方共享的对称密钥进行加密。。对称密钥尽量不要在网络上传输,以免丢失。这里的共享对称密钥是根据自己的私钥和对方计算的';的公钥,然后应用对称密钥来加密数据。当另一方收到数据时,它也计算对称密钥并解密密文。
上面的对称密钥是不安全的,因为A的私钥和B的公钥一般在短时间内是固定的,所以共享的对称密钥也是固定的。为了增强安全性,最好的方法是为每次交互生成一个临时共享对称密钥。。那么如何在每次交互中生成一个随机的对称密钥而不传输呢?
那么如何生成随机共享密钥进行加密呢?
对于发送方A节点,每次传输都会生成一个临时非对称密钥对。然后,根据节点B的公钥和临时非对称私钥,可以计算出一个对称密钥(KA算法-密钥协商)。然后使用对称密钥加密数据。对于共享密钥,这里的流程如下:nodeB的
。当接收到传输的数据时,解析节点A的随机公钥,然后使用节点A的随机公钥和节点B的私钥计算对称密钥(KA算法).然后使用对称密钥对数据进行加密。
对于上述加密方法,实际上还有很多问题,比如如何避免重放攻击(给消息添加Nonce)和彩虹表(参考KDF机制)。由于时间和能力有限,暂时忽略。
那么我们应该使用哪种加密方式呢??
主要是基于要传输的数据的安全级别。其实不重要的数据经过认证和签名就够了,但是非常重要的数据需要用更高的安全级别加密。
密码系统是网络协议的一个概念。。主要包括身份认证、加密、消息认证(MAC)和密钥交换算法。
在全网的传输过程中,根据密码套件,主要有以下几种算法:
密钥交换算法:如ECDHE、RSA等。。主要用于客户端和服务器握手时的认证。
消息认证算法:如SHA1、SHA2、SHA3。主要用于消息摘要。
批量加密算法:比如AES,主要用来加密信息流。
伪随机数算法:比如TLS1.2的伪随机数函数,利用MAC算法的哈希函数创建一个主密钥——来连接一个双方共享的48字节私钥。当创建会话密钥(例如,创建MAC)时,主密钥充当熵源。
在网络中,消息的传输一般需要在以下四个阶段进行加密,以保证消息的安全可靠传输。
握手/网络协商阶段:
在双方握手阶段。,需要链路协商。主要的加密算法有RSA的
认证阶段,DH,ECDH等。
认证阶段,需要确定发送消息的来源。。主要的加密方法有RSA,DSA,ECDSA(ECC加密,DSA签名)等。
消息加密阶段:
消息加密是指对发送的信息流进行加密。。主要的加密方法包括DES、RC4和AES。
消息认证阶段/防篡改阶段:
主要是保证消息在传输过程中没有被篡改。。主要的加密方法包括MD5、SHA1、SHA2、SHA3等。ECC:椭圆曲线加密,椭圆曲线加密。它是根据椭圆上的点的乘积来生成公钥和私钥的算法。用于生成公钥和私钥。
ECDSA:用于数字签名,是一种数字签名算法。有效的数字签名使接收者有理由相信消息是由已知的发送者创建的。这样发送者就不能否认消息已经被发送(验证和不可否认)并且消息在传输过程中没有被改变。ECDSA签名算法是ECC和DSA的结合。整个签名过程类似于DSA,不同的是签名中采用的算法是ECC。,最终的签名值也分为r,s.主要用于身份认证阶段。
ECDH:也是基于ECC算法的霍夫曼树密钥。通过ECDH,双方可以在不共享任何秘密的情况下协商共享秘密。而这个共享密钥是为当前通信临时随机生成的,一旦通信中断就会消失。主要用于握手协商阶段。
种类:是一种集成加密方案,也可以称为混合加密方案。,它针对选定的明文和选定的密码文本攻击提供语义安全性。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,得到如下曲线:这条曲线上的
。我随机选取两个点,如何计算这两个点的乘积?我们可以把问题简单化,乘法可以用加法来表示,比如2^2=2^2,3^5=5^5^5。那么只要能算出曲线上的加法,理论上就能算出乘法。因此只要在这条曲线上可以计算加法,那么乘法就可以从理论上计算,表达式k*G的值也可以从理论上计算。在
曲线上加两个点怎么样?这里为了保证不可逆,ECC定制了曲线上的加法系统。
现实中1^1=2,2^2=4,但是在ECC算法中,我们是不可能理解这个加法系统的。所以需要定制一套适合这条曲线的加法系统。
ECC定义,在图形中随机找一条直线。,与ECC曲线相交于三个点(也可能是两个点),分别是P、Q和R。
那么PQR=0。其中0不是坐标轴上的一个点,而是ECC中的一个无穷远的点。也就是说,无穷远点定义为0点。
同样,我们可以得到PQ=-Rr,由于R和-R关于X轴对称,所以我们可以求出它们在曲线上的坐标。
PRQ=0,所以PR=-Q,如上图。
以上描述了在ECC曲线世界中如何执行加法运算。
从上图可以看出,直线和曲线只有两个交点,也就是说直线就是曲线的切线。在这一点上,p和r重合。
即P=R,根据上述ECC加法系统,PRQ=0,所以我们可以得到PRQ=2PQ=2RQ=0
。所以我们得到2P=-Q(是不是越来越接近我们非对称算法的公式K=kG)。
于是我们得出一个结论,我们可以计算乘法,但是我们只能在接触到点的时候计算乘法,而且只能计算2的乘法。。
如果2可以变成任意数进行乘法运算,那么它就可以在ECC曲线中表示乘法运算,那么ECC算法就可以满足非对称加密算法的要求。
那么我们可以随机计算任意数的乘法吗?答案是肯定的。即点积计算法。
选一个随机数k,那么k*P是什么?
我们知道在计算机世界里,一切都是二进制的。既然ECC可以计算2的乘法,我们就可以把随机数k描述成二进制,然后再计算。假设k=151=10010111由于2P=-Q,因此计算出kP。这就是点乘算法。因此,在ECC的曲线系统下可以计算乘法,因此认为这种非对称加密方法是可行的。
至于为什么这个计算是不可逆的。这需要大量的推导,而我不';我不明白。但我觉得可以这样理解:在我们的手表上,一般都会有一个时间刻度。现在如果我们以1990年1月1日0:00:00为起点,如果我们告诉你,起点已经过去了整整一年,那么我们就可以计算出出现的时间,也就是我们可以将时针、分针、秒针指向手表上的00:00:00。但是反过来。我说我手表上的时针现在指向00:00:00。你能告诉我从起点到现在已经过去多少年了吗?
ECDSA签名算法和其他DSA、RSA基本相似,都采用私钥签名和公钥验证。。只是算法系统采用了ECC算法。交互的双方应该采用同一套参数系统。签名原理如下:
选择曲线上的一个无穷远点作为基点G=(x,y)。随机取曲线上的一个点k作为私钥。,K=k*G计算公钥。
签名流程:
生成随机数R,计算RG。
根据随机数r,消息M的哈希值H,私钥k,签名S=(Hkx)/r
消息M,RG,S发送给接收方。
签名验证流程:
收到的消息M,RG,S
计算哈希值H
根据发送方计算HG/SxK/S';s公钥k,并将计算结果与RG进行比较。如果它们相等,则验证成功。
公式推导:
Hg/sxk/s=Hg/sxk(kg)/s=(hxk)/GS=rg
在介绍原理之前,让';说明ECC满足结合律和交换律。也就是说ABC=ABC=(AC)B.
这里';这是一个来自WIKI的示例,用来说明如何生成共享密钥。也可以参考爱丽丝和鲍勃的例子。
如果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。采用最安全的SHA3算法Keccak作为哈希算法。
2。签名算法是ECDSA
3。认证方法是H-MAC
。4。ECC的参数系统采用secp256k1。其他参数系统请参考此处的
。ThewholeprocessofH-MACiscalledmessageverificationcodebasedonhash.Itsmodelisasfollows:
在以太坊的UDP通信中(RPC通信的加密方式不同),采用并扩展了上述实现方式。
首先以太坊中UDP通信的结构如下:
其中,sig是用私钥加密的签名信息。Mac可以理解为整个报文的总结,ptype是报文的事件类型,data是RLP编码的传输数据。
其UDP的整个加密、认证和签名模型如下:
区块链消息比特币之于区块链,就像电子邮件之于互联网。众所周知,电子邮件在人类信息传播和交流史上第一次实现了将数据及时、免费、可验证地发送给世界上任何一个人的功能。发送方和接收方都可以保存在电子邮件中发送的数据的副本。但是,双方保留的邮件资料的复印件也成为了网上价值转移的固有缺陷,因为双方都有自己的价值观。所以要保证价值不被第三方机构双重支付,比如、银行、证券交易所、清算中心或公证处。比特币作为一种互联网协议,可以即时、安全地相互转移价值,不需要信用第三方等中介机构的存在,从而降低交易成本,提高交易效率。。边肖现在为大家整理区块链技术示意图和相关技术原理。
从字面上看,区块链是由一系列密码学产生的数据块组成的分布式账本系统,每个数据块包含大量的交易信息。,用于验证其信息的有效性并生成下一个块。这些块按照生成的顺序排列,每个块都是一个节点。
区块链的显著特点是作为中心服务器没有第三方监管,区块链内的交易信息无法更改。。块中包含的信息可以是金融交易或任何其他数字交易,包括文档。然而,长期主导人类社会商业世界的互联网商业模式的成功,依赖于作为处理和调解电子交易的第三方金融机构。第三方的作用是核实、保护和保存交易记录。
尽管如此,仍然存在大量的欺诈性网络交易,需要第三方进行中介,导致交易成本较高。基于区块链技术的比特币使用加密证明,而不是通过信用给第三方。,让愿意交易的各方都能通过互联网实现网上交易。
每笔交易都可以通过数字签名进行保护,并发送到"公钥"利用发送者的接收者';s"私钥"用于数字签名。比特币也就是说,加密货币的所有者需要证明其"私钥"为了在网上消费和交易。接收数字货币的一方使用发送方';s"公钥"以验证交易中的数字签名,即对方的所有权';s"私钥"。
每一笔交易都会广播到比特币网络中的每一个节点,经过验证后记录在公共账本中。此外,在将每笔交易记入公共分类账之前,都需要对其进行验证。因此,在记录每个事务之前,验证节点需要确保两件事:即,
(1)消费者对其加密的电子货币进行签名认证;
(2)消费者账户中有足够的加密电子货币。
图1显示了基于区块链技术的交易过程和原理。
希望这个回答对你有帮助
1。区块链是通过使用密码学产生的一系列数据块。每个数据块包含了过去十分钟比特币网络交易的所有信息,用来验证其信息的有效性(防伪)并生成下一个块。。它是比特币的底层技术,像数据库账本一样,记录所有的交易记录。
2。广义定义:一种全新的去中心化基础设施和分布式计算范式,使用加密链结构验证和存储数据,使用分布式节点共识算法生成和更新数据,使用自动化脚本代码(智能合约)转换和操纵数据。
3。狭义定义:将数据块按照时间顺序以链式方式组合成特定数据结构,并有密码保障的去中心化共享账户。
4。区块链的特点:去中心化:区块链数据的验证、记账、存储、维护和传输过程基于分布式系统机制,分布式节点之间的信任关系是通过纯数学方法而不是中心结构建立的,从而形成一个去中心化的、可信任的分布式系统。。
5。时间序列数据:区块链使用带时间戳的链块结构来存储数据,从而为数据增加了一个时间维度,具有高度的可验证性和可追溯性。
6。集体维护:区块链系统采用特定的经济激励机制,保证分布式系统中的所有节点都能参与数据块的验证过程,并通过共识算法选择特定的节点向区块链中添加新的区域。
7。可编程:区块链技术提供了灵活的脚本代码系统,支持用户创建高级智能合约、货币或其他去中心化应用。8。安全可信:区块链技术使用非对称加密技术对数据进行加密。同时,借助分布式系统中各节点的工作量证明等共识算法形成的强大计算能力,可以抵御外部攻击,保证区块链数据不可篡改和伪造,因此具有较高的安全性。
9。区块链应用场景:数字货币:以比特币为代表。,本质上是一种分布式网络系统产生的数字货币,在其发行过程中不依赖于特定的中心化组织。
Let';s以比特币为例:
区块链是比特币的重要概念。本质上,它是一个去中心化的数据库,并作为比特币的底层技术。区块链是由密码学关联的一系列数据块,每个数据块包含一个比特币网络交易的信息,用于验证其信息的有效性(防伪)并生成下一个块。
区块链在互联网上是公开的,可以在每一个线下的比特币钱包数据中查询。比特币钱包的功能取决于与区块链的确认,有效的检查称为确认。通常,一项交易需要多次确认才能进行。。轻量级比特币钱包使用在线确认,即区块链数据不会被下载到设备存储中。
比特币的很多竞品币也采用了同样的设计,只是在工作量证明上与算法略有不同。例如,使用衡平法和密码学的证明等等。
此外,莱特币、以太币、魏梦币、dogecoin、瑞泰币等数字加密货币也采用了区块链技术。
最近很火的区块链技术是什么样的技术?区块链技术被认为是金融科技中最闪亮的明星。并且将来有可能继续发展区块链技术。它有许多特征,包括数据分布、数据信任和集体共识机制。最重要的是公开透明,匿名隐私。根据这些区块链的数据,我们可以得到一些关于当代社会的基本信息。
?要了解区块链的工作原理,我们必须先了解几个概念。第一个概念是什么是区块链,区块链是一些数据,这已经是正确的。然后由计算机输入数据货币网络,永久记录在这个平台上。也就是说,当我们需要寻找这些信息时,它是可以被找到的。所以这个块的意思是一些数据是正确的,然后添加到区块链的末尾。一旦添加到区块链的末尾,就不能更改或删除。因此,区块链是非常强大的。你还需要知道块的结构表。
?块的结构表由不同的字节组成,包括这些块的4字节和80字节。,它代表不同的数据,这些专业术语可能很难理解,但基本意思是块是由这些字符决定的,不同的字符长度代表不同的信息。最后一个称为块头,由元数据组成。。当我们在浏览器中查询一些块信息时,我们可以看到诸如字符长度及其块头由什么组成等信息。通过这些信息,我们大概可以了解所有的内容是什么。
?区块链技术就是这样一个安全科学的数据库。可以简单理解为权威数据库,基本内容都是真实的,都是经过别人验证和审核的。在金融科技方面,,找到一些想要的数据会非常容易,对于商务人士来说非常好。
区块链是一种分布式共享的记账技术。它需要做的是让参与的各方在技术层面建立信任关系。
区块链大致可以分为两个层次,一个是做区块链的底层技术;二是做区块链的上层应用,即基于区块链的改造、优化或创新应用。
区块链的核心含义是什么?我们的理解是区块链的核心意义在于建立参与者之间的数据信用,通过单方面的对抗,为明确规定下的单方面生态共同保护创造完整的机会。这是一个系统,这个系统可以在区块链之前,在区块链之前解决问题。共享数据时,无法实现新的共享。就算你做定向,也只会给你一个界面。区块链可用后,让参与者实现信用共享。欢迎关注连哥区块链学院。
经过以上对区块链原理图的分享和介绍我相信你已经对区块链的基本原理有了一个大致的了解,并且想知道更多关于区块链的示意图。关注我们会继续为你分享!