华为 张子怡 - 《区块链服务在华为公有云平台上的重要问题设计实现及解决方法》_部分2

吉悦心

2018/05/13 发布于 技术 分类

区块链是在点对点网络中对交易具有防篡改功能的共享数据账本,Hyperledger fabric是一个比较知名的开源区块链框架,其中作为分布式系统的核心问题就是共识算法以及共识算法的效率问题。如何既保证这个共识算法能让参与区块链的联盟各方都认可它的安全可信,又能提高联盟成员间的共识效率就是一个所有人都关注的重要问题,这里我们将会介绍一种优化的bft共识算法的设计和使用方式。 对于区块链服务的使用者,数据安全性是一个非常重要的问题,例如同态加密,零知识证明和国密算法等,我们会介绍这些高级功能特性,讲解这些特性的原理,以及介绍华为提供的这些特性支持中接口是怎么使用,还有通过代码示例演示怎么使用这些高级特性,让大家对区块链服务的基础和基于它的一些高级功能能有初步认识到基本实践的能力。

文字内容
1. 共识算法 节点数 错误节点容忍 交易性能 SOLO kafka(CFT) FBFT 1 2f+1 3f+1 不容忍 最多1/2个crash节点 最多1/3个拜占庭错误节点 一般 10000+TPS 2000+TPS – 快速拜占庭容错算法(Fast Byzantine Fault Tolerance ) 从节点将消息发 送给主节点 HUAWEI TECHNOLOGIES CO., LTD. 主节点对交 易进行验证 每个节点收到2f个准 备消息后对交易进行 验证 从节点收到2f+1 个commit后进行 写区块
2. u 简单易用 • • • • 5分钟完成区块链配置、部署,相对于自建节约80%开发部署时间和成本 开发、测试、部署、管理和监控全覆盖 同时支持联盟链和私有链 和华为云其他服务打通 u 高可用 • 动态邀请联盟成员,快速组建联盟链 • 按需付费、节点弹性伸缩,故障自动恢复 • 可扩展、海量弹性文件存储共享账本。 • 支持SQL访问和存储共享账本 • 支持Go,Java等多语言智能合约 u 高安全 • 华为云安全立体安全防护 • 多级加密:签名、通道、内容 • 支持国密、加法同态保护数据隐私 • 零知识证明保护用户隐私 HUAWEI TECHNOLOGIES CO., LTD. u 高性能 • 秒级共识。 • 多种高效共识算法可选 (kafka, FBFT) 交易性能2000-10000 TPS • 电信级网络,系统延时小于300毫秒 u 全球部署 • • • 支持华为云大陆和香港站点部署 规划和合营云全球公有云部署区块链 (德电、法电等) 和私有云结合形成混合部署
3. 目录 1. 区块链介绍及选型说明 2. 华为平台架构及使用介绍 3. 分布式系统共识问题 4. 密码学以及安全技术 HUAWEI TECHNOLOGIES CO., LTD.
4. 区块链共 识改进思 路 HUAWEI TECHNOLOGIES CO., LTD. 工作量证明机制(PoW)· 股权证明机制(PoS)· 权威证明机制(PoA)· 共识 机制 概览 证明 类共 识机 制 投票 类共 识机 制 结合 的共 识机 制 · 不考虑拜占庭容错 (Paxos/RAFT) · 考虑拜占庭容错(BFT)
5. HUAWEI TECHNOLOGIES CO., LTD. 一致性问题 什么是拜占庭 问题? N > 3f+1 共识算法 FLP不可能原理
6. HUAWEI TECHNOLOGIES CO., LTD. 工作量证 明机制 (PoW) 股权证 明机制 (PoS) 权威证明 机制PoAClique
7. 经典Paxos HUAWEI TECHNOLOGIES CO., LTD. 投票类共 识机制 不考虑拜 占庭 (RAFT) 拜占庭容 错机制 (PBFT) 拜占庭容 错机制 (其他 BFT类)
8. HUAWEI TECHNOLOGIES CO., LTD. 原理理 • 节点先通过VRF算法选举出⼀一批节点作为committee成员节 点,这些节点会通过BFT共识后确认⼀一个最终⼀一致性的结果, 最后通过gossip⼴广播将区块分发给所有节点。 VRF函数的特点 •选举结果不不可预知性; • 选举结果数量量确定性 优点 缺点 • 没有分叉; • 防⽌止节点作恶; • 具有很好的可扩展性 • 缺乏算法完备性; • 相对⾼高的延迟
9. 共识算法名称 实⽤用拜占庭容错 (PBFT) Paxos/Raft ⼯工作量量证明 Proof-ofWork(PoW) 中⼼心化 部分去中⼼心化, 预设了了决策⻆角⾊色 (⽆无Leader) Paxos允许有多 个Leader,Raft 有单⼀一Leader 延时/吞 吐量量 低/较⾼高 低/⾼高 ⼀一致性 最终收敛 最终收敛 完全去中⼼心化 ⾼高/低 依概率收 敛 股权持有证明 Proof-of- Stake(PoS) 持有更更多股份者 有较⼤大权利利,可 能有中⼼心化倾向 中/依赖 实现 依赖实现 典型改进协议 (Ripple、Stellar、 依赖实现 Tendermint等) InteHlUAPWoEIETETCHNOLOGIES (Elapse Time) CO., L去TD中. ⼼心化 低/⾼高 最终收敛 低/⾼高 最终收敛 适⽤用区块链 场景 N/A 私有链、信 任度⾼高的联 盟链 公有链 公有链、联 盟链 联盟链 联盟链 备注 后⾯面所有协议本质上都是拜占庭容错的改进。⼏几位将军如何在有 ⼀一定数量量个叛徒的条件下达成⼀一致决策,即分布式系统如何在部 分信任环境下如果取得状态⼀一致 简化了了拜占庭将军问题,排除拜占庭节点的存在,仅考虑节点之 间由于⽹网络中断、系统崩溃等原因导致⽆无法正常沟通时的状态⼀一 致性问题 ⾸首个在完全不不信任的⽹网络环境中可以达成状态⼀一致的共识算法; 需要消耗⼤大量量的计算资源,安全性依赖⽹网络中诚实节点的计算资 源总和 克服了了PoW浪费⼤大量量算⼒力力的缺点。PoS的基本原理理是将区块链系 统内⽤用户的⼀一部分资源作为其信⽤用的凭证,让其在⼀一致性决策时 拥有较⼤大的话语权。例例如和PoW结合可以依据资产降低挖矿难度; 或者由资产最多的⽤用户选择100位其它⽤用户作为代表决策投票; 或每若⼲干块由持股⼈人投票持久化分⽀支;设计时考虑需短程攻击、 ⻓长程攻击、⽆无成本作恶等问题 Ripple是拜占庭容错的⼀一个实现,每个节点可以按照规则信任其 它节点,每个共识周期中对尚未确认的Tx进⾏行行多轮投票来决定是 否将其永久记录;Tendermint可以看作是PoS和PBFT的结合; Stellar恒星协议是提供了了更更灵活信任容忍度的经典PBFT改进⽅方 案 使⽤用Intel的可信执⾏行行环境(TEE),根据芯⽚片产⽣生的等待时间随 机产⽣生Leader,⽣生成新的Block;所有节点必须使⽤用Intel的芯⽚片
10. – 快速拜占庭容错算法(Fast Byzantine Fault Tolerance ) 从节点将消息发 送给主节点 主节点对交 易进行验证 每个节点收到2f个准 备消息后对交易进行 验证 从节点收到2f+1 个commit后进行 写区块 HUAWEI TECHNOLOGIES CO., LTD.
11. 目录 1. 区块链介绍及选型说明 2. 华为平台架构及使用介绍 3. 分布式系统共识问题 4. 密码学以及安全技术 HUAWEI TECHNOLOGIES CO., LTD.
12. 哈希算法(Hash) • 一段数字内容的Hash可以用于验证数据的完整性 • 数字内容的微小修改都会引起Hash值的巨大变化 • 合格的Hash算法很容易由数字内得到Hash值, 却几乎不可能通过Hash值反算出原数字内容 公私钥体系(PKI) • 公私钥体系是现在加密通讯的基石,通过加密算法随机生成公私钥对,一般私钥需要在用户手中绝对安全保存,保证只有用户才能接触到, 公钥可以对外公开。可靠的加密算法可以保证任何人无法通过公钥计算出其对应的私钥 基于PKI的加密(Encr yption) • 加密一般是指向特定用户发送加密内容,保证只有接收方才能解密原内容。具体地,发送方用接收方的公钥加密原内容,得到密文,将密 文发送给接收方,接收方用自己的私钥便可由密文解密(Decryption)出原内容 基于PKI的签名(Signature) • 签名用于他人验证消息内容确实来自声明的内容发送者。具体地,内容发送者发送一段明文,并将明文的Hash用自己的私钥加密,生成 签名。任何接收方收到明文后,同样对明文进行Hash,然后用发送者的公钥解密签名,将得到的数据与自己对明文Hash的结果对比如果 一致,则可以证明消息确实是该公钥对应的私钥持有者发出的 HUAWEI TECHNOLOGIES CO., LTD.
13. 国密算法 身份服务 应用 应用 Peer (Endorser/commiter) Orderer Peer (Endorser/commiter) Orderer Orderer Peer (Endorser/commiter) 应用 HUAWEI TECHNOLOGIES CO., LTD. Orderer Peer (Endorser/commiter) 应用 │ ├── peers │ │ ├── peer0.org1.example.com │ │ │ ├── msp │ │ │ │ ├── admincerts │ │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ │ ├── cacerts │ │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ │ ├── keystore │ │ │ │ │ ├── aeddeddd3f2e9cff9df633ebb1f94593c1af5889a0fa3ff2dc18b93754392c06_sk │ │ │ │ │ └── e793df0a0c15141f643f7dd28fa53ef4270778f647f2740d52b88958e7b2f2d7_sk │ │ │ │ ├── signcerts │ │ │ │ │ └── peer0.org1.example.com-cert.pem │ │ │ │ └── tlscacerts │ │ │ │ └── tlsca.org1.example.com-cert.pem │ │ │ └── tls │ │ │ ├── ca.crt │ │ │ ├── server.crt │ │ │ └── server.key │ │ └── peer1.org1.example.com │ │ ├── msp │ │ │ ├── admincerts │ │ │ │ └── Admin@org1.example.com-cert.pem │ │ │ ├── cacerts │ │ │ │ └── ca.org1.example.com-cert.pem │ │ │ ├── keystore │ │ │ │ ├── 2382e79a6a79843472b1b8c4fd058fcfdcde3fc2aff4453d524fc9e2bd7cf3b3_sk │ │ │ │ └── 51c4a538ef160f608af028956843ac7e255181078f14ef4c1c563f8775e181da_sk │ │ │ ├── signcerts │ │ │ │ └── peer1.org1.example.com-cert.pem │ │ │ └── tlscacerts │ │ │ └── tlsca.org1.example.com-cert.pem │ │ └── tls │ │ ├── ca.crt │ │ ├── server.crt │ │ └── server.key SM1: 为对称加密。其加密强度与AES相当。该算法不公开, 调用该算法时,需要通过加密芯片的接口进行调用。 SM2: 为非对称加密,基于ECC。该算法已公开。由于该算 法基于ECC,故其签名速度与秘钥生成速度都快于RSA。 ECC 256位(SM2采用的就是ECC 256位的一种)安全强度 比RSA 2048位高,但运算速度快于RSA。 SM3: 消息摘要。可以用MD5作为对比理解。该算法已公开。 校验结果为256位。 SM4: 无线局域网标准的分组数据算法。对称加密,密钥长 度和分组长度均为128位。
14. 同态加密 问题:A向B转账10元,需要区块链节点记账,但是不想让区块链节点知道交易金额以及最新余额 2 区块节点计算 A:'>A: 当前余额100元 交易后余额100-10=90元 B:'>B: 当前余额50元 交易后余额50+10=60元 1 交易 转账10元 A B 区块链网络 现状 2 区块节点计算 A:'>A: 当前余额***元 交易后余额***-***=***元 B:'>B: 当前余额***元 交易后余额***+***=***元 1 交易 转账***元 A B 区块链网络 同态加密 明文操作: 当前余额 - 转账金额 = 交易余额 加法同态加密: E(当前余 HUAWEI TECHNOLOGIES CO., LTD. 额) E(转账金 额) E(交易余 额) 挑战:如何解决区块链技术应用的 隐私和可用性? 方案:引入同态加密(解决隐私问题)
15. 我们提供客户端 SDK库和Chaincode库,该库主要用于交易类的密文运算服务,达到用 户交易的隐私保护。 • SDK库:用于在client端提供加法同态功能和生成交易金额的证明信息。 • 同态加密链代码IDChaincode.go:在同态加密的场景下,用户在部署应用前需要下 载安装并且实例化此链代码至区块链服务。 • Chaincode库:提供零知识证明功能,用于在密文条件下,校验用户交易的证明, 并生成交易后的数据,使背书者无需解密用户交易的数据,达到余额范围的判断。 HUAWEI TECHNOLOGIES CO., LTD. example
16. 为用户生成一对同态公私钥 • privKeyStr, pubKeyStr,err := pswapi_sdk.GenerateKey(propwd) check(err) fmt.Println("key is nil") userdata.PubKey = pubKeyStr userdata.PriKey = privKeyStr 注册公钥 • res, err := sdk_client.Invoke(setup, "Register", [][]byte{[]byte(userdata.PubKey), []byte(senderAddr)}) if err != nil { fmt.Println("Fail to register user pk ", err.Error()) } else { addrByte := res[0].ProposalResponse.GetResponse().Payload fmt.Println("Register addr: ", string(addrByte)) 注册初始余额 • balanceInfo, err := pswapi_sdk.InitBalance(initbalance, userdata.PubKey) check(err) setup.ChainCodeID = txchaincode _, err = sdk_client.Invoke(setup, "init", [][]byte{[]byte(userdata.PubKey), []byte(balanceInfo)}) if err != nil { fmt.Println("Register error for user:'>user: ", senderAddr, err.Error()) } else { fmt.Println("init balance successfully: ", senderAddr) } check(err) 查询代码 • balanceInfo,err:=pswapi_sdk.InitBalance(balance,userdata.PubKey) check(err) • setup.ChainCodeID = "TxChaincode" _, err = sdk_client.Invoke(setup,"init", [][]byte{[]byte(userdata.PubKey), []byte(balanceInfo)}) if err != nil { fmt.Println("Register error for user:'>user: ", senderAddr, err.Error()) } else { fmt.Println("Register success: ", senderAddr, "->", string(userdata.PubKey)) } HUAWEI TECHNOLOGIES CO., LTD.
17. 更大的吞吐 量 跨链对接 同步接口及 低时延 HUAWEI TECHNOLOGIES CO., LTD. 支持复杂的 查询功能 隐私保护 更灵活的节 点管理
18. THANK YOU Building a better connected world HUAWEI TECHNOLOGIES CO., LTD. Copyright©2018 Huawei Technologies Co., Ltd. All Rights Reserved.