发布网友 发布时间:2024-09-27 16:06
共1个回答
热心网友 时间:2024-10-30 05:34
区块链常见的三大共识机制
区块链是建立在P2P网络,由节点参与的分布式账本系统,最大的特点是“去中心化”。也就是说在区块链系统中,用户与用户之间、用户与机构之间、机构与机构之间,无需建立彼此之间的信任,只需依靠区块链协议系统就能实现交易。
可是,要如何保证账本的准确性,权威性,以及可靠性?区块链网络上的节点为什么要参与记账?节点如果造假怎么办?如何防止账本被篡改?如何保证节点间的数据一致性?……这些都是区块链在建立“去中心化”交易时需要解决的问题,由此产生了共识机制。
所谓“共识机制”,就是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;当出现意见不一致时,在没有中心控制的情况下,若干个节点参与决策达成共识,即在互相没有信任基础的个体之间如何建立信任关系。
区块链技术正是运用一套基于共识的数学算法,在机器之间建立“信任”网络,从而通过技术背书而非中心化信用机构来进行全新的信用创造。
不同的区块链种类需要不同的共识算法来确保区块链上最后的区块能够在任何时候都反应出全网的状态。
目前为止,区块链共识机制主要有以下几种:POW工作量证明、POS股权证明、DPOS授权股权证明、Paxos、PBFT(实用拜占庭容错算法)、dBFT、DAG(有向无环图)
接下来我们主要说说常见的POW、POS、DPOS共识机制的原理及应用场景
概念:
工作量证明机制(Proofofwork),最早是一个经济学名词,指系统为达到某一目标而设置的度量方法。简单理解就是一份证明,用来确认你做过一定量的工作,通过对工作的结果进行认证来证明完成了相应的工作量。
工作量证明机制具有完全去中心化的优点,在以工作量证明机制为共识的区块链中,节点可以自由进出,并通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。
应用:
POW最著名的应用当属比特币。在比特币网络中,在Block的生成过程中,矿工需要解决复杂的密码数学难题,寻找到一个符合要求的BlockHash由N个前导零构成,零的个数取决于网络的难度值。这期间需要经过大量尝试计算(工作量),计算时间取决于机器的哈希运算速度。
而寻找合理hash是一个概率事件,当节点拥有占全网n%的算力时,该节点即有n/100的概率找到BlockHash。在节点成功找到满足的Hash值之后,会马上对全网进行广播打包区块,网络的节点收到广播打包区块,会立刻对其进行验证。
如果验证通过,则表明已经有节点成功解迷,自己就不再竞争当前区块,而是选择接受这个区块,记录到自己的账本中,然后进行下一个区块的竞争猜谜。网络中只有最快解谜的区块,才会添加的账本中,其他的节点进行复制,以此保证了整个账本的唯一性。
假如节点有任何的作弊行为,都会导致网络的节点验证不通过,直接丢弃其打包的区块,这个区块就无法记录到总账本中,作弊的节点耗费的成本就白费了,因此在巨大的挖矿成本下,也使得矿工自觉自愿的遵守比特币系统的共识协议,也就确保了整个系统的安全。
优缺点
优点:结果能被快速验证,系统承担的节点量大,作恶成本高进而保证矿工的自觉遵守性。
缺点:需要消耗大量的算法,达成共识的周期较长
概念:
权益证明机制(ProofofStake),要求证明人提供一定数量加密货币的所有权。
权益证明机制的运作方式是,当创造一个新区块时,矿工需要创建一个“币权”交易,交易会按照预先设定的比例把一些币发送给矿工本身。权益证明机制根据每个节点拥有代币的比例和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。
应用:
2012年,化名SunnyKing的网友推出了Peercoin(点点币),是权益证明机制在加密电子货币中的首次应用。PPC最大创新是其采矿方式混合了POW及POS两种方式,采用工作量证明机制发行新币,采用权益证明机制维护网络安全。
为了实现POS,SunnyKing借鉴于中本聪的Coinbase,专门设计了一种特殊类型交易,叫Coinstake。
上图为Coinstake工作原理,其中币龄指的是货币的持有时间段,假如你拥有10个币,并且持有10天,那你就收集到了100天的币龄。如果你使用了这10个币,币龄被消耗(销毁)了。
优缺点:
优点:缩短达成共识所需的时间,比工作量证明更加节约能源。
缺点:本质上仍然需要网络中的节点进行挖矿运算,转账真实性较难保证
概念:
授权股权证明机制(DelegatedProofofStake),与董事会投票类似,该机制拥有一个内置的实时股权人投票系统,就像系统随时都在召开一个永不散场的股东大会,所有股东都在这里投票决定公司决策。
授权股权证明在尝试解决传统的PoW机制和PoS机制问题的同时,还能通过实施科技式的民主抵消中心化所带来的负面效应。基于DPoS机制建立的区块链的去中心化依赖于一定数量的代表,而非全体用户。在这样的区块链中,全体节点投票选举出一定数量的节点代表,由他们来代理全体节点确认区块、维持系统有序运行。
同时,区块链中的全体节点具有随时罢免和任命代表的权力。如果必要,全体节点可以通过投票让现任节点代表失去代表资格,重新选举新的代表,实现实时的民主。
应用:
比特股(Bitshare)是一类采用DPOS机制的密码货币。通过引入了见证人这个概念,见证人可以生成区块,每一个持有比特股的人都可以投票选举见证人。得到总同意票数中的前N个(N通常定义为101)候选者可以当选为见证人,当选见证人的个数(N)需满足:至少一半的参与投票者相信N已经充分地去中心化。
见证人的候选名单每个维护周期(1天)更新一次。见证人然后随机排列,每个见证人按序有2秒的权限时间生成区块,若见证人在给定的时间片不能生成区块,区块生成权限交给下一个时间片对应的见证人。DPoS的这种设计使得区块的生成更为快速,也更加节能。
DPOS充分利用了持股人的投票,以公平民主的方式达成共识,他们投票选出的N个见证人,可以视为N个矿池,而这N个矿池彼此的权利是完全相等的。持股人可以随时通过投票更换这些见证人(矿池),只要他们提供的算力不稳定,计算机宕机,或者试图利用手中的权力作恶。
优缺点:
优点:缩小参与验证和记账节点的数量,从而达到秒级的共识验证
缺点:中心程度较弱,安全性相比POW较弱,同时节点代理是人为选出的,公平性相比POS较低,同时整个共识机制还是依赖于代币的增发来维持代理节点的稳定性。
区块链中的每个区块中记录要经历哪些验证环节?
会经历三个验证环节,分别是:
1.账本验证问题实际上对于第一个问题,很容易想到解决方法,那就是少数服从多数,如果某个节点的账本数据被篡改了,那么只需要和全网其他节点的数据比对,就必然能发现异常。但问题在于,随着时间的推移,记录的累积,数据量会越来越庞大,记得在13年的时候,笔者下载的比特币钱包,从网络同步下载下来的交易账本数据就已经多达几十GB,如果说要对这么大的数据进行逐一传输、比对,可以说是不现实的。
2.账户所有权的证明如果我要通过某个账户给另一个账户转账,必然需要证明我对此账户的所有权。对于中心化的货币系统,我们只需要向银行出示密码即可,但是对于去中心化的系统,如果我们也通过出示密码给其他节点,来证明我们对账户的所有权,那么我们的密码也就泄露给了其他节点(即用户)。
3.事实上这是一个现代密码学中比较基础的问题,说白了就是如何在不暴露自己私钥的前提下,自证身份,也有很成熟的解决方法:利用非对称加密算法。关于算法的细节,计划在后面单独说说现代密码学的一些基础算法,这里我们就用类比的方法描述一下。
4.记账问题:去中心化的前提就是,时刻需要有节点在线,否则就没有人处理记账、验证交易等工作,那么,比特币有什么机制,让人们心甘情愿的时刻保持在线呢?我们之前说过,比特币_10分钟,会将这10分钟内的交易数据打包记录成一个区块,也就是记账。但是不是所有人都有权利去记账的,全网的每个节点,都会去计算一个问题,只有第一个解出符合要求的答案的节点,才有记账权,而作为奖励,该节点会得到一定数量的比特币。
5.随着比特币的价格越来越高,越来越多的人参与到这种解题竞赛中去,并将这一过程戏称为“挖矿”,也正是这些“矿工”,维持着整个比特币网络的运转。而这也就是比特币的发行过程:_10分钟,通过奖励矿工的形式,产生新的比特币。
如何检测区块链智能合约的风险等级高低随着上海城市数字化转型脚步的加快,区块链技术在政务、金融、物流、司法等众多领域得到深入应用。在应用过程中,不仅催生了新的业务形态和商业模式,也产生了很多安全问题,因而安全监管显得尤为重要。安全测评作为监管重要手段之一,成为很多区块链研发厂商和应用企业的关注热点。本文就大家关心的区块链合规性安全测评谈谈我们做的一点探索和实践。
一、区块链技术测评
区块链技术测评一般分为功能测试、性能测试和安全测评。
1、功能测试
功能测试是对底层区块链系统支持的基础功能的测试,目的是衡量底层区块链系统的能力范围。
区块链功能测试主要依据GB/T25000.10-2016《系统与软件质量要求和评价(SQuaRE)第10部分:系统与软件质量模型》、GB/T25000.51-2016《系统与软件质量要求和评价(SQuaRE)第51部分:就绪可用软件产品(RUSP)的质量要求和测试细则》等标准,验证被测软件是否满足相关测试标准要求。
区块链功能测试具体包括组网方式和通信、数据存储和传输、加密模块可用性、共识功能和容错、智能合约功能、系统管理稳定性、链稳定性、隐私保护、互操作能力、账户和交易类型、私钥管理方案、审计管理等模块。
2、性能测试
性能测试是为描述测试对象与性能相关的特征并对其进行评价而实施和执行的一类测试,大多在项目验收测评中,用来验证既定的技术指标是否完成。
区块链性能测试具体包括高并发压力测试场景、尖峰冲击测试场景、长时间稳定运行测试场景、查询测试场景等模块。
3、安全测评
区块链安全测评主要是对账户数据、密码学机制、共识机制、智能合约等进行安全测试和评价。
区块链安全测评的主要依据是《DB31/T1331-2021区块链技术安全通用要求》。也可根据实际测试需求参考《JR/T0193-2020区块链技术金融应用评估规则》、《JR/T0184—2020金融分布式账本技术安全规范》等标准。
区块链安全测评具体包括存储、网络、计算、共识机制、密码学机制、时序机制、个人信息保护、组网机制、智能合约、服务与访问等内容。
二、区块链合规性安全测评
区块链合规性安全测评一般包括“区块链信息服务安全评估”、“网络安全等级保护测评”和“专项资金项目验收测评”三类。
1、区块链信息服务安全评估
区块链信息服务安全评估主要依据国家互联*息办公室2019年1月10日发布的《区块链信息服务管理规定》(以下简称“《规定》”)和参考区块链国家标准《区块链信息服务安全规范(征求意见稿)》进行。
《规定》旨在明确区块链信息服务提供者的信息安全管理责任,规范和促进区块链技术及相关服务的健康发展,规避区块链信息服务安全风险,为区块链信息服务的提供、使用、管理等提供有效的法律依据。《规定》第九条指出:区块链信息服务提供者开发上线新产品、新应用、新功能的,应当按照有关规定报国家和省、自治区、直辖市互联*息办公室进行安全评估。
《区块链信息服务安全规范》是由中国科学院信息工程研究所牵头,浙江大学、中国电子技术标准化研究院、上海市信息安全测评认证中心等单位共同参与编写的一项建设和评估区块链信息服务安全能力的国家标准。《区块链信息服务安全规范》规定了联盟链和私有链的区块链信息服务提供者应满足的安全要求,包括安全技术要求和安全保障要求以及相应的测试评估方法,适用于指导区块链信息服务安全评估和区块链信息服务安全建设。标准提出的安全技术要求、保障要求框架如下:
图1区块链信息服务安全要求模型
2、网络安全等级保护测评
网络安全等级保护测评的主要依据包括《GB/T22239-2019网络安全等级保护基本要求》、《GB/T28448-2019网络安全等级保护测评要求》。
区块链作为一种新兴信息技术,构建的应用系统同样属于等级保护对象,需要按照规定开展等级保护测评。等级保护安全测评通用要求适用于评估区块链的基础设施部分,但目前并没有提出区块链特有的安全要求。因此,区块链安全测评扩展要求还有待进一步探索和研究。
3、专项资金项目验收测评
根据市经信委有关规定,信息化专项资金项目在项目验收时需出具安全测评报告。区块链应用项目的验收测评将依据上海市最新发布的区块链地方标准《DB31/T1331-2021区块链技术安全通用要求》开展。
三、区块链安全测评探索与实践
1、标准编制
上海测评中心积极参与区块链标准编制工作。由上海测评中心牵头,苏州同济区块链研究院有限公司、上海七印信息科技有限公司、上海墨珩网络科技有限公司、电信科学技术第一研究所等单位参加编写的区块链地方标准《DB31/T1331-2021区块链技术安全通用要求》已于2021年12月正式发布,今年3月1日起正式实施。上海测评中心参与编写的区块链国标《区块链信息服务安全规范》正处于征求意见阶段。
同时,测评中心还参与编写了国家人力资源和社会保障部组织,同济大学牵头编写的区块链工程技术人员初级和中级教材,负责编制“测试区块链系统”章节内容。
2、项目实践
近年来,上海测评中心依据相关技术标准进行了大量的区块链安全测评实践,包括等级保护测评、信息服务安全评估、项目安全测评等。在测评实践中,发现的主要安全问题如下:
表1区块链主要是安全问题
序号
测评项
问题描述
1
共识算法
共识算法采用Kafka或Raft共识,不支持拜占庭容错,不支持容忍节点恶意行为。
2
上链数据
上链敏感信息未进行加密处理,通过查询接口或区块链浏览器可访问链上所有数据。
3
密码算法
密码算法中使用的随机数不符合GB/T32915-2016对随机性的要求。
4
节点防护
对于联盟链,未能对节点服务器所在区域配置安全防护措施。
5
通信传输
节点间通信、区块链与上层应用之间通信时,未建立安全的信息传输通道。
6
共识算法
系统部署节点数量较少,有时甚至没有达到共识算法要求的容错数量。
7
智能合约
未对智能合约的运行进行监测,无法及时发现、处置智能合约运行过程中出现的问题。
8
服务与访问
上层应用存在未授权、越权等访问控制缺陷,导致业务错乱、数据泄露。
9
智能合约
智能合约编码不规范,当智能合约出现错误时,不提供智能合约冻结功能。
10
智能合约
智能合约的运行环境没有与外部隔离,存在外部攻击的风险。
3、工具应用
测评中心在组织编制《DB31/T1331-2021区块链技术安全通用要求》时,已考虑与等级保护测评的衔接需求。DB31/T1331中的“基础设施层”安全与等级保护的安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心等相关要求保持一致,“协议层安全”、“扩展层安全”则更多体现区块链特有的安全保护要求。
测评中心依据DB31/T1331相关安全要求,正在组织编写区块链测评扩展要求,相关成果将应用于网络安全等级保护测评工具——测评能手。届时,使用“测评能手”软件的测评机构就能准确、规范、高效地开展区块链安全测评,发现区块链安全风险,并提出对应的整改建议
区块链如何更好的保证电子合同效力电子合同本身就是一种电子数据,具有易篡改与易删除等安全缺陷,不利于该服务的长期发展。为了保证用户在电子合同平台上签署的电子文件与电子合同的法律效力,需要对电子合同签署的全过程进行存证。
在根据区块链存证技术实现的“法链”应用中,平台将对电子合同签署的关键环节进行存档,并将关键信息与数据分布存储到整个区块链当中,从而实现电子合同的全流程存证。
深究其实现原理,区块链通过深度使用密码学算法、特别设计的数据结构和多方参与的共识算法,由机器算法来解决多方交易记录的一致性、可靠存储和防篡改问题,与电子数据存证有着天然的强关联。
首先,电子合同签约记录存储在由多方共同维护的共享账本上,不可篡改,不可抵赖,当然也不会丢失。
其次,电子合同文本、电子合同要素加密存储,包括电子合同参与人也采取加密存储,只有参与人才可以解密查看,在数据上保护签约方隐私。
再次,机器按照预定义的规则(智能合约)严格执行,不再仅靠与第三方一纸协议保证。基于区块链的KYC服务自动检查验证证书有效性和身份,在保证隐私的基础上确保参与人身份有效真实。
目前,我们的电子合同平台上所签的电子合同都通过区块链技术实现了电子文件数字指纹的分布式存证,进一步强化了平台电子合同的法律效力。
区块链使用安全如何来保证呢区块链本身解决的就是陌生人之间大规模协作问题,即陌生人在不需要彼此信任的情况下就可以相互协作。那么如何保证陌生人之间的信任来实现彼此的共识机制呢?中心化的系统利用的是可信的第三方背书,比如银行,银行在老百姓看来是可靠的值得信任的机构,老百姓可以信赖银行,由银行解决现实中的纠纷问题。但是,去中心化的区块链是如何保证信任的呢?
实际上,区块链是利用现代密码学的基础原理来确保其安全机制的。密码学和安全领域所涉及的知识体系十分繁杂,我这里只介绍与区块链相关的密码学基础知识,包括Hash算法、加密算法、信息摘要和数字签名、零知识证明、量子密码学等。您可以通过这节课来了解运用密码学技术下的区块链如何保证其机密性、完整性、认证性和不可抵赖性。
基础课程第七课区块链安全基础知识
一、哈希算法(Hash算法)
哈希函数(Hash),又称为散列函数。哈希函数:Hash(原始信息)=摘要信息,哈希函数能将任意长度的二进制明文串映射为较短的(一般是固定长度的)二进制串(Hash值)。
一个好的哈希算法具备以下4个特点:
1、一一对应:同样的明文输入和哈希算法,总能得到相同的摘要信息输出。
2、输入敏感:明文输入哪怕发生任何最微小的变化,新产生的摘要信息都会发生较大变化,与原来的输出差异巨大。
3、易于验证:明文输入和哈希算法都是公开的,任何人都可以自行计算,输出的哈希值是否正确。
4、不可逆:如果只有输出的哈希值,由哈希算法是绝对无法反推出明文的。
5、冲突避免:很难找到两段内容不同的明文,而它们的Hash值一致(发生碰撞)。
举例说明:
Hash(张三借给李四10万,借期6个月)=1234567012
账本上记录了1234567012这样一条记录。
可以看出哈希函数有4个作用:
简化信息
很好理解,哈希后的信息变短了。
标识信息
可以使用1234567012来标识原始信息,摘要信息也称为原始信息的id。
隐匿信息
账本是1234567012这样一条记录,原始信息被隐匿。
验证信息
假如李四在还款时欺骗说,张三只借给李四5万,双方可以用哈希取值后与之前记录的哈希值1234567012来验证原始信息
Hash(张三借给李四5万,借期6个月)=987654321098
987654321098与1234567012完全不同,则证明李四说谎了,则成功的保证了信息的不可篡改性。
常见的Hash算法包括MD4、MD5、SHA系列算法,现在主流领域使用的基本都是SHA系列算法。SHA(SecureHashAlgorithm)并非一个算法,而是一组hash算法。最初是SHA-1系列,现在主流应用的是SHA-224、SHA-256、SHA-384、SHA-512算法(通称SHA-2),最近也提出了SHA-3相关算法,如以太坊所使用的KECCAK-256就是属于这种算法。
MD5是一个非常经典的Hash算法,不过可惜的是它和SHA-1算法都已经被破解,被业内认为其安全性不足以应用于商业场景,一般推荐至少是SHA2-256或者更安全的算法。
哈希算法在区块链中得到广泛使用,例如区块中,后一个区块均会包含前一个区块的哈希值,并且以后一个区块的内容+前一个区块的哈希值共同计算后一个区块的哈希值,保证了链的连续性和不可篡改性。
二、加解密算法
加解密算法是密码学的核心技术,从设计理念上可以分为两大基础类型:对称加密算法与非对称加密算法。根据加解密过程中所使用的密钥是否相同来加以区分,两种模式适用于不同的需求,恰好形成互补关系,有时也可以组合使用,形成混合加密机制。
对称加密算法(symmetriccryptography,又称公共密钥加密,common-keycryptography),加解密的密钥都是相同的,其优势是计算效率高,加密强度高;其缺点是需要提前共享密钥,容易泄露丢失密钥。常见的算法有DES、3DES、AES等。
非对称加密算法(asymmetriccryptography,又称公钥加密,public-keycryptography),与加解密的密钥是不同的,其优势是无需提前共享密钥;其缺点在于计算效率低,只能加密篇幅较短的内容。常见的算法有RSA、SM2、ElGamal和椭圆曲线系列算法等。对称加密算法,适用于大量数据的加解密过程;不能用于签名场景:并且往往需要提前分发好密钥。非对称加密算法一般适用于签名场景或密钥协商,但是不适于大量数据的加解密。
三、信息摘要和数字签名
顾名思义,信息摘要是对信息内容进行Hash运算,获取唯一的摘要值来替代原始完整的信息内容。信息摘要是Hash算法最重要的一个用途。利用Hash函数的抗碰撞性特点,信息摘要可以解决内容未被篡改过的问题。
数字签名与在纸质合同上签名确认合同内容和证明身份类似,数字签名基于非对称加密,既可以用于证明某数字内容的完整性,同时又可以确认来源(或不可抵赖)。
我们对数字签名有两个特性要求,使其与我们对手写签名的预期一致。第一,只有你自己可以制作本人的签名,但是任何看到它的人都可以验证其有效性;第二,我们希望签名只与某一特定文件有关,而不支持其他文件。这些都