区块链相关技术概述

区块链可以看作可信的分布式数据库,用P2P网络通信机制、块链式账本存储机制、密码机制共识机制4大核心机制,保证了系统的分布式特性、不可篡改特性、不可抵赖特性,使区块链系统“诚实”而“透明”,在应用中具有大范围、跨主体、高效率、低成本的特点。

技术包括:P2P组网技术、块链式账本结构、共识机制、数字签名、加密机制、隐私保护机制等。
P2P组网技术——区块链的通信基础
块链式账本结构——不可篡改
共识机制——通过算法协调系统各个参与方最终达成一致
数字签名——通过数字签名算法给系统各个参与方分派数字证书
加密机制
隐私保护机制——通过加密算法加密当事人身份,匿名参与系统,内容公开的同时隐藏当事人身份

一、对等网络

自治性(相比中央服务器而言)
分布性,利用网络边缘的资源,如存储/计算能力和信息资源
动态性,网络边缘的资源处在动态的变化中,有新的资源加入和已有资源退出
P2P因为节点信息存储于搜索方式的不同,分为结构化覆盖网络和非结构化覆盖网络两类。
(1) Bitcoin(比特币)——非结构化的P2P覆盖网络
每个节点存储自身的信息或索引,某结点用户在P2P系统中查询时,该节点没有其他节点的信息,如简单的泛洪式查找(类似于广播)和扩展环查找(从最近的n个节点开始,层层转发直到找到目标或超出了跳数上限为止)
优点:实现结构简单、无中心、节点之间完全平等、网络层次单一、节点之间无需维护拓扑信息
缺点:搜索算法带有一定的盲目性
Bitcoin采用的通信协议Gossip协议就是非结构化的覆盖网络,完全基于TCP协议构建,主网端口为8333

(2) Ethereum(以太坊)——结构化的P2P覆盖网络
每个节点只存储特定的信息或特定信息的索引,当用户需要在P2P系统中获取信息时,他们需要知道信息或索引可能存在哪些节点中,这样避免了非结构化P2P系统中使用的泛洪式查找,提高了信息搜索效率。
以太坊采用的通讯协议是Kademlia协议,这是一种结构化P2P网络,提供UDP和TCP两种通信方式,节点发现是基于UDP的,节点数据交换基于TCP。主网端口为30303,推荐UDP端口30301.

二、账本结构

区块链系统的账本以区块链为单位,以特定算法获取上以区块链的特征嵌入下一个区块,连缀成链。区块链账本结构涉及到哈希算法、默克尔证明等技术

1. 哈希函数

也叫散列函数、摘要函数,是一个把任意长度的数据映射成固定长度数据的函数。任何一种能将任意大小数据映射为固定大小数据的函数,都能被称为散列函数。哈希函数的返回值被称为哈希,也被称为散列值、摘要。
哈希函数特性:

  1. 消息长度不受限制
  2. 确定性:对于相同的输入,使用同一哈希函数,它始终生成相同的哈希值,输入相同,生成的哈希值一定相同;输入不同也可能会生成相同的哈希(哈希碰撞),概率极小,一般从哈希值来确认唯一的输入值
  3. 均匀性:良好的哈希函数应该输入尽可能均匀的映射到输出范围上
  4. 单向性:在加密应用程序中,哈希函数实际是不可逆的,对于给定的哈希值没有有效方法反向计算出原始输入,因此很难伪造

2.默克尔证明(Merkel Proof)

最早应用是Bitcoin,Bitcoin的Blockchain利用Merkle Proofs来存储每个区块的交易,这样做好处是中本聪描述到的“简化支付验证”:一个“请客户端”(Light Client)可以仅下载链的区块头,即每个区块中的80字节的数据库,仅包含5个元素(上一区块头的哈希值,时间戳,挖矿难度值,工作量证明随机数Nonce,包含该区块交易的Merkle Tree的根哈希),而不是下载每一笔交易以及每一个区块
客户端想确认交易状态,只需要简单地发起一个Merkle Proof请求,这个请求显示出这个特定的交易在Merkle Trees之中,而且这个Merkle Tree树根在主链的一个区块头中。

每个以太坊区块头不是包括一个Merkle Root,而是为三种对象设计的3棵树:交易收据状态
对于验证列表格式的信息 二叉Merkle Tree是很好的数据结构,对于交易数来说也可以,但对于状态数情况会复杂。以太坊中状态数包含一个减值映射,键是地址,值包括声明、余额、随机数、代码及每个账户的存储。不同于交易历史记录,状态树需要经常更新,余额和随机数经常变更,新的账户会频繁插入,存储的键(Key)也会经常被插入和删除。所以需要一个数据结构,能在一次插入、更新、删除操作后快速计算到树根,而不需要重新计算整个树的Hash。
Merkle Tree 数据结构优点

  1. 树的深度有限制。考虑到攻击者故意制造交易使树尽可能深,不然攻击者可以通过操纵树的深度执行拒绝服务攻击(DDoS Attack),使得更新变得极其缓慢。
  2. 树根只取决于数据,与其中更新顺序无关。

三、共识机制

共识机制本质上是控制参与方数据一致性。

1. 权益类共识

工作量证明PoW(Proof of Work)在区块总递增一个nonce值,针对每次的nonce计算整个区块的哈希值,直到找到一个满足所有要求的零比特位数量的哈希值,这个节点获得打包权限,所有节点同步该节点打出的区块。这种算法中,遍历速度是获得符合哈希值的重要参数,可以用硬件加速,如GPU或其他专用芯片。
这个算法有一定的偶然性,算力高的节点获得打包权的几率上升,但不一定
这种共识机制去中心化程度较高,安全性较强,但资源消耗大,需要代笔作为激励机制维持系统健康运行。
股权证明PoS(Proof of Stake)、DPoS(Delegates Proof of Stake,股份授权证明)以抵押资产的多少来分配获取打包权的概率,一定程度上缩短了共识达成的世界,不需要大量资源去竞争记账。
这种共识去中心化程度较弱,安全性相比PoW较弱,同时DPoS节点代理是人为选出的 公平性相比POS更低。

2.拜占庭类共识

拜占庭问题
一群参与方中有不超过一定数目的而乙方发送欺骗消息时,参与方总体能通过三轮投票做出正确的决定,拜占庭问题能容忍不高于参与方综述1/3的恶意方。
拜占庭共识(Practical Byzantine Fault Tolerance,PBFT)PBFT是一种基于消息传递的一致性算法,经历三个阶段:预准备、准备、确认 达成一致性。拜占庭共识算法具备(N-1)/3 容错性;当有1/3或以上记账人停止工作后,系统将无法提供服务
比较:
PoW(工作量证明)特点:安全、去中心化,但速度低,共识时间长,耗能大;
PoS(权益证明)特点:共识时间短,耗能小;
DPoS(股份授权证明)特点:出块时间很短,效率非常高。
DPoS算法要求系统做三件事:

  1. 随机制定生产者的顺序;
  2. 不按顺序生产区块无效;
  3. 一个周期洗牌一次,打乱原有顺序。

分布式数据一致性共识:在联盟链应用广泛,采用分布式数据库的一致性算法,在信任环境中使用RAFT或Kafka来控制区块链参与方的数据一致性。引用他人的分布式系统的raft算法相关介绍:分布式系统的Raft算法; Raft共识算法。
这类共识机制无分叉可能、无交叉验证、通讯量小,但是仅能运行在可信环境中,读关联交易支持有限,区块链特性较弱。

四、证书机制

1.数字签名

任何一个共要密码体系都可以单独作为一种数字签名方案使用,流程:发送方使用私钥对消息原文做签名(加密)处理 —>生成出消息原文的“数字签名”

2. 数字身份和认证

系统参与方的数字证书(Digital Certificate)是经认证中心授权办法并经认证中心数字签名的包含公开秘钥拥有者及公开密钥相关信息的电子文件,可以来判别数字证书拥有者身份。
数字证书包含:公钥、证书名称、签发机构对证书的数字签名以及匹配的私钥。
认证中心(Certificate Authority)一般是一个公认 可信的第三方机构,其作用主要是为每个用户颁发一个独一无二的包含名称和公钥的数字证书。

五、加密机制

加密简单而言就是通过一种算法手段将对原始信息进行转换,信息的接收者能够通过秘钥对密文进行解密从而得到原文的过程。按照加密方和解密方秘钥相同与否可以将加密算法大致分为3种类型。

1. 对称加密

对称加密的加密解密方都使用相同的密钥
优点:加密速度快
缺点:密钥的安全分发困难

2. 非对称加密

非对称加密体系也称为公钥体系,加解密时 加密方有公钥和私钥,可以将公钥发送给其他相关方,私钥自己保留。例如银行颁发给个人用户的私钥存储在个人的U盾里;非对称加密可以通过私钥加密,他人使用公钥解密。
非对称加密算法一般比较复杂,执行时间相对对称机密较长,好处在于无密钥分发问题
常见的非对称加密算法有RSA、ECC,区块链中主要使用ECC椭圆曲线算法。
公钥密码系统的加密算法ECC与RSA的对比:
第六届国际密码学会议对应用于公钥密码系统的加密算法推荐了两种:基于大整数因子分解问题(IFP)的RSA算法和基于椭圆曲线上离散对数计算问题(ECDLP)的ECC算法。RSA算法的特点之一是数学原理简单、在工程应用中比较易于实现,但它的单位安全强度相对较低。目前用国际上公认的对于RSA算法最有效的攻击方法–一般数域筛(NFS)方法去破译和攻击RSA算法,它的破译或求解难度是亚指数级的。ECC算法的数学理论非常深奥和复杂,在工程应用中比较难于实现,但它的单位安全强度相对较高。用国际上公认的对于ECC算法最有效的攻击方法–Pollard rho方法去破译和攻击ECC算法,它的破译或求解难度基本上是指数级的。正是由于RSA算法和ECC算法这一明显不同,使得ECC算法的单位安全强度高于RSA算法,也就是说,要达到同样的安全强度,ECC算法所需的密钥长度远比RSA算法低。这就有效地解决了为了提高安全强度必须增加密钥长度所带来的工程实现难度的问题。

3. 对称加密与非对称加密的结合

这种方式将加密过程分为两个阶段,阶段一使用非对称加密进行秘钥的分发使得对方安全地得到对称加密的秘钥,阶段二使用对称加密对原文进行加解密

六、隐私保护机制

区块链系统尤其是非许可类区块链,其交易内容是公开透明的,需要附加隐私保护机制来保证参与方的隐私权。通常采用的策略有3种:一是基于事务隔离的策略,主要面向分片、多链、多通道等模式;二是基于隐私保护算法的策略,多种开源非许可链采用的模式;三是基于应用层权限控制的策略,许可类区块链采用的模式。
(1) 事务隔离
事务隔离是一个事务使用的资源或数据与其他事务相隔离。在区块链中,基于隔离的隐私保护策略将不同参与方或不同类型的业务隔离开,使不同参与方或不同类型事务中的数据部分共享,以此达到简单的 隐私保护的目的。
优点:思路简单,实现较容易;数据隐私性好,硬隔离的机制使数据保护安全等级较高。
缺点:数据共享性差,硬隔离的机制使数据共享变得困难;互操作性差,同样的参与方对于不同的业务,或者不同参与方对于同一业务,因为隔离的原因,互操作性受到影响。
(2) 隐私保护算法
基于隐私保护算法的策略主要是保护参与方的私密信息不被明文获取。实现方式有挖矿、同态加密、零知识证明、环签名等多种方式。这种策略的内容保护指向性更好,更便于互操作性和日后可能的互联互通,但是实现难度较大,容易出现安全漏洞,也存在一定的监管风险。

(3) 应用层权限控制
在许可类区块链中,通过隐藏底层链入口,来实现数据分类分级管理,进而通过控制数据访问权来达到隐私信息保护的目的。这种策略简单、容易实现,主要依赖于应用层控制,根据业务场景的适应性好。但是这种策略仅适用于许可类区块链,而且性能受密码算法的影响。

你可能感兴趣的:(区块链)