《區塊鏈項目的安全落地.pdf》由會員分享,可在線閱讀,更多相關《區塊鏈項目的安全落地.pdf(46頁珍藏版)》請在三個皮匠報告上搜索。
1、目錄區塊鏈對數據安全的積極影響從安全3要素看區塊鏈工信部白皮書區塊鏈2.0技術架構和對應的安全層次TOP 8 安全控制智能合約的安全身份管理POSITIVE IMPACT OF BLOCKCHAIN FOR DATA AND TRANSACTION SECURITY(區塊鏈對數據和事物安全的積極影響)Hash of Public KeySignedConsensus ChainedReplicated從安全3要素看區塊鏈:Confidentiality(保密性)Hash of Public KeyHyperLedger Transaction Certificate(full Confiden
2、tiality of the user identity)Encryption of Data using Zero knowledge(零知識)Zcash using zk-SNARK for bitcoin like transaction Hawk using zk-SNARK for smart contractData invisibility(不可見)via State Channel Lightning network for Bitcoin Raiden Network for EtheriumFungibility(同等性)of zcashHomomorphic encryp
3、tion(同態加密)從安全3要素看區塊鏈:Integrity(完整性)SignedChained ReplicatedOpen Source從安全3要素看區塊鏈:Availability(可用性)Each Transaction(or Data)is replicated(availability)But what about the latency?工信部白皮書區塊鏈2.0技術架構和對應的安全層次Application Level Security(OWASP TOP 10);Formal Verification,EVM vulnerability,IAMMaintain the secu
4、rity of public and/or community BlockchainGovernanceFault TolerancePerformanceP2P network encryptionClient to Node Communication EncryptionDefense against DDOSData EncryptionDigital Signature Key Management(key rotation,key escrow,key recovery)HSMTop 8 安全控制智能合約安全檢查區塊鏈與身份管理系統應用層源代碼安全檢查節點的安全加固數據加密(鏈上和
5、鏈下,國密算法)數據傳輸的加密DDOSKey Management智能合約的安全智能合約本身可以存儲幾千萬甚至幾個億美金的資產。智能合約在鏈上面的部署是通過共識的,一旦部署成功就不能修改。公有鏈上的智能合約對大家都是公開的,一般沒有傳統的加密,審計和訪問控制。目前智能合約的開發還在初級階段,編程模式和傳統的DevSecOps需要進行有效的改造來適應智能合約的安全需求避免外部調用/mapping(address=uint)private userBalances;function withdrawBalance()public uint amountToWithdraw=userBalances
6、msg.sender;if(!(msg.sender.call.value(amountToWithdraw)()throw;/此時,調用方的代碼已經被執行,并且可以再次調用 withdrawBalanceuserBalancesmsg.sender=0;一定要調用外部函數怎么辦?mapping(address=uint)private userBalances;function withdrawBalance()public uint amountToWithdraw=userBalancesmsg.sender;userBalancesmsg.sender=0;/用戶的余額已經 被設置為
7、0,所以未來的調用不會轉走任何資金if(!(msg.sender.call.value(amountToWithdraw)()throw;/代碼失敗要盡快(Fail Fast)/不安全的代碼contract BadFailEarly uint constant DEFAULT_SALARY=50000;mapping(string=uint)nameToSalary;function getSalary(string name)constant returns(uint)if(bytes(name).length!=0&nameToSalaryname!=0)returnnameToSalar
8、yname;else return DEFAULT_SALARY;/不安全的代碼 代碼失敗要盡快(Fail Fast)/安全的代碼contract GoodFailEarly mapping(string=uint)nameToSalary;function getSalary(string name)constant returns(uint)if(bytes(name).length=0)throw;/名字為空,throwif(nameToSalaryname=0)throw;/找不到名字所對應的工資,throwreturn nameToSalaryname;自動淘汰modifier is
9、Active()if(block.number SOME_BLOCK_NUMBER)throw;function deposit()publicisActive()/some codefunction withdraw()public/some code緊急停止contract Stoppable address public curator;bool public stopped;modifier stopInEmergency if(!stopped)_ modifieronlyInEmergency if(stopped)_ function Stoppable(address _cur
10、ator)if(_curator=0)throw;curator=_curator;function emergencyStop()external if(msg.sender!=curator)throw;stopped=true;智能合約的安全開發過程建議簡化智能合約,犧牲一部分圖靈完備性換取安全性嚴格執行智能合約代碼審查強化對智能合約程序員的安全培訓盡量使用安全的樣本DevSecOps傳統身份管理與訪問控制系統的問題傳統身份管理與訪問控制系統的問題問題的描述身份碎片化一個人的在線身份是碎片化的。例如微信,淘寶,滴滴,等等都會有我們的身份。實際上,我們都不清楚這些中心化的公司掌握了我們哪一
11、些信息,他們是怎么用我們的信息進行變現。但是對黑客而言,身份是在每一家中心化的公司的數據庫里面,一旦攻擊成功就可以獲得很多甚至所有用戶數據。所以在互聯網歷史上有很多黑客成功偷取大量用戶的例子。用戶對身份沒有控制權利由于我們不清楚中心化的公司掌握了我們哪一些信息,我們對我們的身份屬性沒有控制,也沒有辦法保護我們的隱私??诹畹耐纯辔覀冇刑嗟目诹钚枰涀?,我們也經常忘記口令??诹钍莻鹘y身份管理系統最大的痛點。沒有人喜歡口令,但是我們不得不用它。身份證明是一個手工和昂貴的過程如果我們需要在銀行開立賬戶,我們需要攜帶身份證,我們需要去銀行分行。我們需要提供其他信息。銀行需要驗證你的標識??赡苄枰獣r間。
12、作為KYC的一部分(知道您的客戶),身份證明是一個非常昂貴的過程。成本每年都在增加。一些銀行可以為KYC支付5億美元以上。https:/ Directory Schema。一旦定義,很難擴展或修改。身份屬性的每個變化都需要重新啟動應用程序。22家身份鏈公司High Level Network Architecture身份擁有者身份消費者KYC 請求中國銀行KYC API聯通中國移動華為其他身份提供者身份鏈ILP鏈上和鏈下身份中介單鏈或者多鏈的身份管理生態系統Overall Layered ArchitectureIdentity and PolicyAPI and Admin LayerIde
13、ntity and Policy LayerAccess Control Policy Admin APIIdentity Life Cycle APIIdentity Smart ContractAccess Control Policy Smart Contract身份鏈的數據模型Key Idea:Smart Contract on BlockchainHave states APIs(public and private API)Given RAM and CPU resource for the API to executeNeeds strong security or formal
14、 verification before store it on blockchainMay need some capability of updating/deleting a smart contract.(right to forgotten)Is the key for Blockchain Identity implementation.Blockchain Identity Eco-SystemIdentity Oracle:perform identity proofing,identity attribute attestation.Identity Provider:the
15、 Blockchain with Identity Smart ContractIdentity Consumer:users and/or systems who need identity to perform a task.Owner of the Identity:The actual person or entity who owns the identity(using Private Key to prove ownership).Identity Smart ContractThe attribute of the identity can be attested and in
16、serted by Identity Oracle under Owners request and approval.The attribute can be encryptedOnly the owner of identity can decide which Identity Consumer has access to which Identity attribute.Identity Life Cycle APICRUD of identity and Attributes Can support Rest APIEncrypt/Decrypt Attributes.Access
17、Control Policy Smart Contract Group Smart Contact Role Smart Contract Resource Smart Contract(similar to ARN in AWS).Managed Access Policy Smart Contract(examples)Read/Write Access to Identity Attributes via HTTPS and Oauth Customized Smart ContractAccess Control Policy Admin API CRUD of Access Cont
18、rol Policy CRUD of Resource Tags Attach/Detach Policy to User/Group/Role API Can support Rest API Example:create a policy:grant access to Bank of China to access my Drivers license number.身份鏈的幾個應用場景Use Case 1:Sequence Diagram for User Access to Website with Blockchain IdentityKen Huang-NameIDWallet-
19、Private Key6:granted access with OpenID tokenWebsite with OpenID5:Yes,and got OpenID token1:Login with kenhuang atusing Secure Token Service4:do you have the private KeyFor kenHuang,Secure Token Service(NameID)2:Redirect to NameID3:check if kenhuang exist?Kenhuang=Blockchain Ledger with Identity Sma
20、rt Contract and APIm1Use case 2:Create a human identity by Identity OracleIdentity Oracle(can be a government organization)1:I am Bill Gates,here is myDriver license.I need an identity on the blockchainBill Gatess Identity ContractAccess Control GatewaySmart ContractIdentity Oracle Smart Contract3:C
21、heck if this Oracle can create Identity(assumed the oracle Authenticated previously)4:Create Bill Gates and send Bill his private Key,only record the hash of Bills private key2:I verified billCan I create Bill?m1Use case 3:Identity Oracle attest an attribute for identityIdentity Oracle(can be a gove
22、rnment organization)1:I am Bill Gates,I was CEO of Microsoft.Can you attest it and record it on the blockchainBill Gatess Identity ContractAccess Control GatewaySmart ContractIdentity Oracle Smart Contract3:Check if this Oracle can attest attributes(assumed the oracle Authenticated previously)4:Bill
23、 Gatess identity is updated to state that he was CEO Of Microsoft2:I need updateBill and attest that He was CEO of M.S.總結區塊鏈的5個安全屬性區塊鏈的5個安全層次和8個Top安全控制智能合約的安全區塊鏈與身份管理系統華為BaaS云服務總體架構華為BaaS特色功能介紹技術點內容華為BaaS特點區塊鏈類型私有鏈、聯盟鏈與私有鏈、聯盟鏈對應的共識算法和安全策略共識算法聯盟鏈:優化PBFT算法,目前2000+TPS(50節點以內)私有鏈:Raft/Paxos算法,3萬+TPSPBFT
24、結合華為云消息隊列,未來1萬+TPS(100節點以內)管控方式混合管控支持多云BaaS集中管理、監控安全方案三級證書+KMS除通信證書和身份證書外,增強管理證書,并與KMS結合部署方案支持私網部署、公網部署、混合部署支持區塊鏈本地地址表,可以混合部署硬件加速高性能哈希、加密、壓縮技術使用FusionSphere硬件資源加速智能合約安全執行環境、負載分擔FusionSphere安全容器執行智能合約,多容器負載分擔智能合約鏈外處理鏈上鏈下原子操作華為專利技術BaaS公有云場景-高可靠,多租戶基于云體系的高可靠、安全的BaaS云服務:基于云原生CloudNative架構,跨AZ/DC高可用基于云平臺
25、的安全體系,包括DDoS防攻擊、漏洞掃描、WAF基于KMS云服務的秘鑰管理基于VPC支持多租戶區塊鏈:區塊鏈位于租戶的VPC內,實現與租戶的數據庫、大數據、WEB應用的無縫結合賬本數據庫可插拔,可使用云數據庫(Redis等)解決數據安全、數據單向增長問題Fabric專屬VM實例支撐高性能網絡、硬件加速、云主機安全 ELBBaaS ServerREST APIUI Console DDS KMS IAMAdminUsersAppsInvokeQueryManageDeployWeb ClientDevelopersContractsFabric CAEIPBaaS AgentFabric Pee
26、rEIPBaaS AgentFabric OrdererEIPBaaS AgentBaaS物理部署方案X省分行數據中心X2區塊鏈節點X省區塊鏈節點X省區塊鏈節點華為公有云 VPCX省區塊鏈節點X省政務云/房管局機房私網環境部署專線/MPLS VPN私網:192.168.1.X私網:192.168.2.X私網:192.168.3.X專線/IPsec VPN 所有區塊鏈節點位于私網內 區塊鏈操作及節點交互位于私網內 僅基金管理平臺需要公網地址 網絡安全性高X省基金管理平臺X省移動端APPX省政務門戶網站SDK公網FIP 66.143.82.1Y省分行數據中心Y省區塊鏈節點Y省區塊鏈節點華為公有云
27、VPCY省區塊鏈節點Y省政務云/房管局機房公網環境部署Y省基金管理平臺Y省移動端APPY省政務門戶網站公網IPSDK公網IP公網IP 所有區塊鏈節點需要從公網可訪問 區塊鏈操作及節點交互位于公網 可以通過EIP或NAT方式實現 需要考慮網絡、端口的安全性混合環境部署:BaaS支持區塊鏈本地地址表,不同的節點可以使用內網地址、公網地址訪問指定區塊鏈節點BaaS:混合云管理&多級秘鑰保護證書類型是否可導出頒發方用途管理證書否華為BaaSBaaS管理本地、遠程區塊鏈節點驗證管理權限并加密通信證書否華為BaaS區塊鏈節點間gRPC通信是驗證聯盟鏈節點并加密身份證書是華為BaaS操作區塊鏈智能合約的用戶
28、權限,從BaaS平臺頒發并由基金管理平臺持有FusionSpere/公有云FusionSpereVMFabricFusionSpereDockerFabricVMFabricBlockChainBaaS主服務BaaS管理員稻香湖數據中心X數據中心華為公有云Y省基金管理平臺X省移動端APPX省政務門戶網站SDK華為BaaS使用的證書秘鑰 多個華為云的BaaS可組成混合管理集群 可以通過主BaaS實現多個云區塊鏈的統一管理,包括節點加入/刪除;智能合約加載/升級、部署/監控 可以通過從BaaS實現本地區塊鏈節點的部署/監控系統的安全性:訪問權限通過華為BaaS,控制身份證書和智能合約的關系管理身份
29、證書可以調用的的智能合約身份證書可以從BaaS導出,用于對應的平臺智能合約權限區塊鏈X省區塊鏈Channel2Channel1維修基金智能合約1用戶交易1用戶交易2智能合約2基金交易1基金交易2智能合約3維修交易1維修交易2基金管理平臺建行平臺用戶智能合約通過華為BaaS,控制身份證書和交易賬本的訪問權限以Channel為粒度,可以讀取賬本歷史交易身份證書可以從BaaS導出,用于對應的平臺賬本權限區塊鏈X省區塊鏈Channel2Channel1維修基金智能合約1用戶交易賬本智能合約2基金交易賬本智能合約3維修交易賬本審計平臺大數據分析用戶賬本權限智能合約的生命周期ChainCode開發Chai
30、nCode測試ChainCode部署ChainCode實例化ChainCode升級需求云服務功能ChainCode開發華為軟件開發云Eclipse IDE整合DevCloud:項目管理(ProjectMan)DevCloud:配置管理(CodeHub)DevCloud:代碼檢查(CodeCheck)DevCloud:編譯構建(CodeCI)ChainCode測試華為軟件開發云DevCloud:測試管理(TestMan)ChainCode部署華為軟件開發云華為BaaS云服務DevCloud:部署服務(DeployMan)BaaS:部署ChainCode到PeerChainCode實例化華為Baa
31、S云服務BaaS:初始化ChainCode及初始節點ChainCode升級華為BaaS云服務BaaS:確保使用最新版本ChainCode智能合約:支撐多種業務策略區塊鏈X省區塊鏈Channel2Channel1A市智能合約基金交易1基金交易2B市智能合約基金交易1基金交易2A市用戶或基金管理平臺B市用戶或基金管理平臺用戶智能合約不同城市由于策略不同,可以使用不同智能合約不同智能合約可以設定訪問的權限適用于多平臺、多用戶場景區塊鏈X省區塊鏈Channel2Channel1智能合約A市投票交易B市投票交易X省基金管理平臺用戶智能合約不同城市的策略,可以通過不同的合約交易來實現不同的交易也可以設定訪
32、問的權限適用于統一平臺場景舉例:A市要求業主投票70%以上才能使用住房公共維修基金B市規則更為細致,特殊情況下,如頂層漏雨等維修,只需要相關頂層業主同意即可智能合約:支撐多種簽署策略區塊鏈節點 X省住建廳的數據中心中有兩個區塊鏈節點 兩個區塊鏈節點中有一個簽署,智能合約即可生效 兩個節點起到備份作用Y省分行數據中心Y省區塊鏈節點住建部數據中心X省分行數據中心Y省區塊鏈節點Y省政務云Y省基金管理平臺SDKX省區塊鏈節點X省基金管理平臺SDKX省區塊鏈節點X省政務云住建部區塊鏈節點Endorse節點Endorse節點Endorse節點X2X2X2 住建部數據中心中有兩個區塊鏈節點,Y省住建廳的數據
33、中心中有兩個區塊鏈節點 Y省住建廳數據中心兩個區塊鏈節點中有一個簽署,并且住建部數據中心的兩個區塊鏈節點中有一個簽署,智能合約即可生效 兩個節點起到備份作用舉例:X省智能合約的執行結果,僅需要X省住建廳簽署即可生效Y省智能合約的執行結果,需要Y省住建廳和國家住建部簽署才能生效智能合約:通過合約執行鏈間操作舉例:X省支取住房公積金,需要查詢支取人的信用狀況,有信用問題則不予支取X省基金管理平臺信用記錄區塊鏈提供身份證書,允許查詢信用記錄公積金區塊鏈的支取交易,使用證書查詢信用記錄,根據結果進行后續邏輯處理信用記錄區塊鏈Channel2Channel1智能合約信用記錄查詢交易信用異常交易公積金區塊
34、鏈Channel2Channel1智能合約支取交易繳存交易區塊鏈的監控運維監控環境信息CPU、內存、硬盤、網絡節點信息節點訪問量、訪問時耗、節點健康狀態節點日志業務信息業務訪問量、成功率、耗時分布交易欺詐、賬本篡改短信、郵件、電話通知告警設置告警根據監控信息設置閾值告警區塊鏈的監控告警區塊鏈節點故障處理節點內數據一致性檢測Fabric:周期性BlockChain和State DataBase一致性校驗節點間數據一致性檢測Fabric:依據共識算法,周期性跨節點BlockChain數據一致性檢測節點故障恢復(節點動態加入)Fabric:啟動節點的數據一致性恢復,并加入共識算法DAO(Decent
35、ralized Autonomous Organization)分布式自治組織Attack 的簡單剖析 The basic idea is this:the DAO smart contract has a recursion program which does not terminate correctly.The caller of the program can call the recursion program again without withdrawing the either.As such,the hacker was able to accumulate the tot
36、al either to be withdrawn until a large sum($50 millions in virtual currency)by recursively calling the program.The problem can be mitigated if Recursive program is checked before deployed Formal verification.Bitfinex 安全問題的簡單剖析的簡單剖析Bitfinex user has their own set of keys created on the platform,usin
37、g a 2-of-3 key arrangement whereby Bitfinexheld two of the keys(including one offline)and BitGo used the third to co-sign transactions.Bitfinex keys got stolen by hacker.BitGo trusted withdraw request from Bitfinex and signed the request.$65 millions got stolen.The security breach could have been mitigated if Bitfinex use HSM for storage of private keys.BitGo limit the withdraw amount.謝謝