Coco Framework白皮書

1.執(zhí)行概要

在過去的幾年里墅茉,企業(yè)已經(jīng)意識到區(qū)塊鏈技術(shù)(例如比特幣和以太這樣為公共網(wǎng)絡(luò)提供動力的技術(shù))是如何被用來簡化他們自己的業(yè)務(wù)流程的凡蜻。但是辣之,他們還發(fā)現(xiàn)觅玻,大多數(shù)現(xiàn)有的區(qū)塊鏈協(xié)議都不能滿足以下幾個關(guān)鍵的企業(yè)需求——包括可接受的交易吞吐量和延遲想际、機(jī)密性、有效治理和計算效率(例如挖礦/POW的消耗)溪厘。為了適應(yīng)現(xiàn)有的公鏈協(xié)議或創(chuàng)建新的協(xié)議以滿足這些需求胡本,通常會犧牲一個必需的企業(yè)需求與另一個進(jìn)行交換——比如以更高的復(fù)雜性或更低的性能為代價改進(jìn)機(jī)密性。

Coco Framework是一個開放源碼系統(tǒng)畸悬,它支持高規(guī)模侧甫、機(jī)密的區(qū)塊鏈網(wǎng)絡(luò),滿足所有企業(yè)的關(guān)鍵性需求——提供一種方法來使企業(yè)更快采用區(qū)塊鏈技術(shù)蹋宦。Coco實現(xiàn)這一點是通過在一個保密聯(lián)盟的環(huán)境中重新評估公共區(qū)塊鏈協(xié)議的現(xiàn)有假設(shè)完成的披粟,在這個聯(lián)盟中,節(jié)點node和行動者actor(包括有投票權(quán)的成員和其他無投票權(quán)的參與者)被明確聲明和控制冷冗∈靥耄基于這一新的需求集,Coco將現(xiàn)有區(qū)塊鏈協(xié)議蒿辙、可信執(zhí)行環(huán)境拇泛、分布式系統(tǒng)和加密的功能集成在一起,以支持企業(yè)級的區(qū)塊鏈網(wǎng)絡(luò)思灌,從而完成:

  • 接近數(shù)據(jù)庫速度的吞吐量和延遲碰镜。

  • 更豐富、更靈活习瑰、針對業(yè)務(wù)的保密模型。

  • 通過分布式治理進(jìn)行網(wǎng)絡(luò)策略管理秽荤。

  • 支持不確定性交易甜奄。

  • 減少能源消耗柠横。

值得注意的是,Coco不是一個獨(dú)立的區(qū)塊鏈協(xié)議课兄;相反牍氛,它提供了一個可信的基礎(chǔ),現(xiàn)有的區(qū)塊鏈協(xié)議(如Ethereum烟阐、Quorum搬俊、Corda或Hyperledger Sawtooth)都可以集成到這個交付完整的、企業(yè)適用的分類解決方案中蜒茄。Coco設(shè)計開放唉擂,與任何區(qū)塊鏈協(xié)議兼容。

本文在機(jī)密聯(lián)盟的背景下重新檢查了區(qū)塊鏈網(wǎng)絡(luò)的需求檀葛。然后介紹了Coco Framework玩祟,包括網(wǎng)絡(luò)拓?fù)浜拖到y(tǒng)架構(gòu)、網(wǎng)絡(luò)創(chuàng)建和治理屿聋、交易流和架構(gòu)變體空扎。它還研究如何實現(xiàn)可擴(kuò)展性、保密性和分布式治理润讥,以及如何降低安全性風(fēng)險转锈。最后,討論了Coco的當(dāng)前工作實現(xiàn)楚殿,包括初始性能的發(fā)現(xiàn)撮慨。

2.促進(jìn)企業(yè)應(yīng)用區(qū)塊鏈

區(qū)塊鏈技術(shù)即將成為下一個轉(zhuǎn)型計算范式。它打破了現(xiàn)有的業(yè)務(wù)流程勒魔,減少了業(yè)務(wù)操作的摩擦甫煞,并釋放了新的業(yè)務(wù)模型——特別是跨組織的共享流程。Gartner表示冠绢,“到2025年抚吠,區(qū)塊鏈的商業(yè)增加值將略高于1760億美元楷力,到2030年將超過3.1萬億美元孵户∠舫”考慮到這些好處检柬,在我們快速發(fā)展的數(shù)字經(jīng)濟(jì)中,區(qū)塊鏈技術(shù)將很快成為分布式企業(yè)和消費(fèi)者應(yīng)用程序的關(guān)鍵基礎(chǔ)竖配。

框架問題

幾乎所有行業(yè)都對區(qū)塊鏈產(chǎn)生了濃厚的興趣。然而原押,當(dāng)企業(yè)希望應(yīng)用區(qū)塊鏈技術(shù)來滿足其業(yè)務(wù)需求時诸衔,他們已經(jīng)認(rèn)識到笨农,在性能磁餐、機(jī)密性诊霹、治理和所需的處理能力等方面脾还,大多數(shù)現(xiàn)有的區(qū)塊鏈協(xié)議都不能滿足企業(yè)的關(guān)鍵需求鄙漏。這是因為它們是為功能而設(shè)計的怔蚌,并需要在一個潛在的充滿敵意的環(huán)境中實現(xiàn)共識桦踊,在這種環(huán)境中终畅,匿名的、不受信任的參與者可以執(zhí)行事務(wù)或提議塊的提交杖狼。因此蝶涩,為了防止惡意行為的發(fā)生暗挑,事務(wù)對所有人都是“一目了然”的,網(wǎng)絡(luò)中的每個節(jié)點都會執(zhí)行每一個事務(wù)鲜屏,并且必須使用拜占庭容錯協(xié)商算法洛史。所有這些“保障”也殖,雖然對于確保公共區(qū)塊鏈網(wǎng)絡(luò)的完整性是必要的,但都需要在關(guān)鍵的企業(yè)需求(如可擴(kuò)展性和保密性)方面進(jìn)行權(quán)衡捆毫。

例如绩卤,以太坊網(wǎng)絡(luò)的處理速度平均為每秒20個交易濒憋,典型的交易延遲約為10-20秒。相比之下辐烂,Visa信用卡處理系統(tǒng)平均每秒處理2000筆交易纠修。此外扣草,所有的以太坊交易鹰祸、智能合約代碼和狀態(tài)都對連接網(wǎng)絡(luò)的任何人都清晰可見蛙婴。

公鏈網(wǎng)絡(luò)所需的處理能力以及相關(guān)的能源成本街图,對于企業(yè)場景也是不可行的餐济。Digiconomist的數(shù)據(jù)顯示,比特幣網(wǎng)絡(luò)的年能耗為14.96太瓦時(TWh)篙悯,估計年挖礦(交易處理)成本超過7.47億美元辕近。換句話說移宅,比特幣網(wǎng)絡(luò)消耗的能源足以為130多萬美國家庭供電。

為了滿足企業(yè)的需要浅乔,已經(jīng)有許多調(diào)整公鏈網(wǎng)絡(luò)協(xié)議或創(chuàng)建新協(xié)議的努力靖苇。但是,到目前為止脾拆,這些方法還沒有滿足所有的企業(yè)需求名船,大多數(shù)都需要在復(fù)雜性或性能方面采取不合需要的權(quán)衡措施蜈块。例如疯趟,雖然存在利用零知識證明或其他高級密碼學(xué)來隱藏交易細(xì)節(jié)的方法,但它們十分復(fù)雜,計算空間和時間的權(quán)衡使它們不適合大容量應(yīng)用程序隘庄,或者它們需要依賴可信的源來引導(dǎo)加密材料丑掺。

其他方案引入了剛性,因為機(jī)密通道需要對代幣化的資源作出“承諾”唆缴,使它們在通道處于活動狀態(tài)時無法在通道外訪問面徽。

可信聯(lián)盟方案

使現(xiàn)有的公鏈技術(shù)適應(yīng)企業(yè)的需要(或者更準(zhǔn)確地說,適應(yīng)企業(yè)聯(lián)盟)首先要重新檢查區(qū)塊鏈運(yùn)行的環(huán)境霎匈。在一個公鏈網(wǎng)絡(luò)中唧躲,任何人都可以在網(wǎng)絡(luò)上進(jìn)行交易饭入,網(wǎng)絡(luò)上的參與者都是偽匿名和不受信任的谐丢,任何人都可以在網(wǎng)絡(luò)中添加節(jié)點——完全訪問該分類賬,并具有參與協(xié)商一致的能力窄瘟。

相比之下,在聯(lián)盟鏈中图云,成員身份和節(jié)點是已知的和受控制的竣况。角色通常是同樣成熟的,具有健壯和高度控制的IT環(huán)境嘀掸、安全策略和其他企業(yè)特性。

那么揩晴,我們?nèi)绾卫眠@些差異來滿足企業(yè)的需求呢?從根本上說硫兰,聯(lián)盟成員之間的信任關(guān)系不需要改變违孝。但是,如果我們可以創(chuàng)建一個可信的物理節(jié)點網(wǎng)絡(luò)校坑,而不需要控制這些節(jié)點的參與者相互信任耍目,那么我們就可以控制正在運(yùn)行的代碼并保證其輸出的正確性——從而簡化共識,減少重復(fù)驗證耕捞。這是微軟在開發(fā)Coco框架時采用的方法敞映,本文的其余部分將對此進(jìn)行描述振愿。

3.Coco Framework

Coco Framework是一個開放源碼系統(tǒng)萍歉,支持大規(guī)模、加密的區(qū)塊鏈網(wǎng)絡(luò)蔑舞。它滿足了所有關(guān)鍵的企業(yè)需求,提供了一種方法加速生產(chǎn)區(qū)塊鏈技術(shù)的應(yīng)用钧栖。Coco通過使用可信執(zhí)行環(huán)境TEEs(trusted execution environments)來實現(xiàn)這一點掏婶,例如Intel的SGX和Windows虛擬安全模式VSM气堕,從而創(chuàng)建一個可信任的物理節(jié)點網(wǎng)絡(luò),在該網(wǎng)絡(luò)上運(yùn)行分布式分類帳梅桩。

有了Coco,企業(yè)可以獲得如下優(yōu)勢:

  • 接近數(shù)據(jù)庫速度的吞吐量和延遲垦页。通過使用TEEs, Coco創(chuàng)建了一個可信節(jié)點網(wǎng)絡(luò),減少了從拜占庭式容錯到崩潰容錯的問題薄啥。這簡化了共識,從而提高了交易速度和延遲——所有這些都不影響安全性或假定信任到逊。

  • 更豐富、更靈活的保密模式掰曾。Coco使用授權(quán)行業(yè)標(biāo)準(zhǔn)和身份驗證來保護(hù)數(shù)據(jù)訪問掏熬。交易、智能合約代碼和智能合約狀態(tài)可以以透明的方式處理疮丛,但只能向授權(quán)方披露,不需要復(fù)雜的保密方案呢蔫。

  • 通過分布式治理進(jìn)行網(wǎng)絡(luò)策略管理。Coco提供一個網(wǎng)絡(luò)結(jié)構(gòu)來表達(dá)和管理聯(lián)盟的政策×瑁可以對網(wǎng)絡(luò)策略的表達(dá)進(jìn)行編碼季眷,可以通過標(biāo)準(zhǔn)的類賬本的交易管理策略威酒。

  • 不確定的交易。使用Coco尤仍,由于代碼執(zhí)行的結(jié)果是可信的苏遥,所以智能合約代碼只需由網(wǎng)絡(luò)中的單個節(jié)點執(zhí)行。當(dāng)以這種方式配置網(wǎng)絡(luò)時教硫,交易可以有不確定性的結(jié)果(例如通過在計算中加入隨機(jī)性),甚至可以直接與受信任的外部系統(tǒng)交互。

  • 減少能源使用丛肢。Coco通過消除計算密集型的共識算法(例如工作證明)來改善能源消耗。

概念概述

值得注意的是杠步,Coco不是一個獨(dú)立的區(qū)塊鏈協(xié)議;相反甸私,如圖1所示,它提供了一個可信的基礎(chǔ),提供了高效的一致算法和靈活的機(jī)密性方案——一個可以集成現(xiàn)有區(qū)塊鏈協(xié)議(如Ethereum幢痘、Quorum唬格、Corda或Hyperledger Sawtooth)的框架,以交付完整的、企業(yè)級的賬本解決方案西轩。

圖1 Coco Framework概觀

Coco設(shè)計用于提供任何區(qū)塊鏈協(xié)議都可以使用的安全员舵、可靠的基礎(chǔ)組件藕畔。圖2展示了Coco和區(qū)塊鏈協(xié)議之間的分離和重疊情況马僻,其中Coco組件用綠色陰影表示。在它的核心部分注服,Coco:

  • 通過TEEs的復(fù)制實現(xiàn)一致的韭邓、分布式的、持久的存儲(比如鍵值存儲)溶弟,包含應(yīng)用程序(業(yè)務(wù)交易)分類賬和用于網(wǎng)絡(luò)策略管理的Coco管理分類賬女淑。雖然邏輯上有兩個總賬,但它們都記錄在一個存儲中辜御,以便在網(wǎng)絡(luò)中的所有交易中保持相對的順序鸭你。

  • 提供安全的節(jié)點到節(jié)點的通信和應(yīng)用程序到節(jié)點的通信碑韵。

  • 使用易于使用的原語保證任意保密模型截粗。

  • 提供一個編碼化的治理模型來支持任意的、分布式的策略管理昵观。

Coco對分布式賬本模型碳抄、核心中的交易以及智能合約代碼處理使用特定的區(qū)塊鏈協(xié)議愉老。

圖2 區(qū)塊鏈協(xié)議的邏輯組件(Coco組件用綠色表示)

高級體系結(jié)構(gòu)

Coco系統(tǒng)是可信驗證節(jié)點validating nodes(VNs)*的分布式網(wǎng)絡(luò),每個節(jié)點都運(yùn)行Coco Framework和集成的區(qū)塊鏈協(xié)議剖效。VNs接受交易并參與網(wǎng)絡(luò)的協(xié)商一致算法嫉入。根據(jù)所選擇的協(xié)商一致算法,一個或幾個VNs處理交易并執(zhí)行智能合約代碼璧尸。

粗略地說咒林,Coco網(wǎng)絡(luò)中的VNs在功能上與公鏈網(wǎng)絡(luò)中的挖礦節(jié)點相似——盡管在Coco網(wǎng)絡(luò)中“挖礦”和通信的行為非常不同。與公共區(qū)塊鏈網(wǎng)絡(luò)不同爷光,Coco網(wǎng)絡(luò)中的每個VN都是完全可信的映九,因為VNs可以驗證所有其他VNs的身份,并驗證它們在運(yùn)行時通過TEE認(rèn)證的代碼瞎颗。

如圖3所示,VN可以分解為幾個邏輯子組件捌议。它們在host(潛在不受信任的管理程序和節(jié)點的操作系統(tǒng))和enclave (TEE中受保護(hù)的安全容器)之間進(jìn)行劃分哼拔。系統(tǒng)的所有敏感組件都在enclave內(nèi)部運(yùn)行,并負(fù)責(zé)維護(hù)分類帳的完整性瓣颅、機(jī)密性和安全性倦逐。

  • Coco interface(host)——實現(xiàn)客戶端和其他VNs連接的傳輸層接口的主進(jìn)程。此主進(jìn)程還與操作系統(tǒng)和代表enclave的其他外部服務(wù)連接宫补。(雖然host本身被要求保持VN的可用性和存儲在帳本中的數(shù)據(jù)的持久性檬姥,但它沒有責(zé)任維護(hù)賬本的完整性曾我、機(jī)密性或安全性。)

  • Coco core(enclave)——在enclave內(nèi)的host和所有其他功能之間的接口健民。

  • 持久存儲(enclave)——應(yīng)用賬本和Coco管理賬本的單個抒巢、全局有序、磁盤上的表示秉犹。(有一個內(nèi)存中的副本蛉谜,用于快速訪問;持久性是通過持久性存儲實現(xiàn)的崇堵。)

  • Coco配置狀態(tài)(enclave)——支持創(chuàng)建網(wǎng)絡(luò)構(gòu)造和所有后續(xù)更新的Coco狀態(tài)機(jī)實現(xiàn)型诚。

  • 區(qū)塊鏈核心和適配器(enclave)——處理交易和執(zhí)行智能合約代碼的邏輯,以及將區(qū)塊鏈協(xié)議集成到其他Coco系統(tǒng)的粘合劑鸳劳。

圖3 Coco體系結(jié)構(gòu)

4.行動者和身份

在Coco網(wǎng)絡(luò)中有兩種類型的角色狰贯,成員Members和參與者Participants。在一個高級別上:

  • 成員是一個聯(lián)盟的管理機(jī)構(gòu)赏廓,對誰可以在網(wǎng)絡(luò)上可以交易及其治理擁有集體控制權(quán)——治理包括網(wǎng)絡(luò)成員資格涵紊、在TEEs中運(yùn)行的代碼,以及網(wǎng)絡(luò)策略的定義楚昭。成員運(yùn)行VNs并可以在網(wǎng)絡(luò)上進(jìn)行交易栖袋。成員還定義Coco網(wǎng)絡(luò)的初始配置和設(shè)置,在網(wǎng)絡(luò)的整個生命周期中抚太,可以對其配置提出更改塘幅,并對其他成員提出的更改進(jìn)行投票。此外尿贫,每個成員都接收到一份網(wǎng)絡(luò)密鑰的共享(稍后將對此進(jìn)行描述)电媳,這允許成員的仲裁在發(fā)生災(zāi)難性故障時協(xié)同恢復(fù)網(wǎng)絡(luò)。在銀行聯(lián)盟中庆亡,成員可以是大型匾乓、全球性、具有系統(tǒng)重要性的金融機(jī)構(gòu)(GSIFIs)又谋。

  • 參與者與成員不同拼缝,不能投票,因此對誰可以直接訪問網(wǎng)絡(luò)或其治理沒有操作控制彰亥。參與者是由網(wǎng)絡(luò)成員決定的咧七,和成員一樣,參與者可以在網(wǎng)絡(luò)上進(jìn)行交易任斋。他們也可以继阻,而且很可能會運(yùn)行自己的VNs。在一個銀行聯(lián)盟中,參與者可能是一群國內(nèi)具有系統(tǒng)重要性的銀行(D-SIBs)瘟檩,它們在自己和GSIFIs之間進(jìn)行交易抹缕。

值得注意的是,根據(jù)該聯(lián)盟的目的和政策,Coco網(wǎng)絡(luò)并不一定需要兩種類型的行動者。例如墨辛,一個聯(lián)盟可以決定其內(nèi)部的所有各方都是成員卓研,具有同等的責(zé)任和權(quán)限。類似地背蟆,每個參與者都可以擁有成員和參與者標(biāo)識鉴分,作為分離業(yè)務(wù)和管理事務(wù)的手段。

每個成員和參與者都有一個私有/公共密鑰對(PrivKey_{M_i}, PubKey_{M_i}PrivKey_{P_i},PubKey_{P_i})带膀,并且在Coco網(wǎng)絡(luò)中使用組織范圍內(nèi)的X.509證書進(jìn)行標(biāo)識志珍。可以使用中間證書來惟一地標(biāo)識組織和組織內(nèi)的所有用戶垛叨,這是抽象的特定于代理的證書策略并可以從Coco系統(tǒng)中回購伦糯。在組織內(nèi)部,為了保持細(xì)粒度的控制嗽元,不同的部門(以及不同的Coco網(wǎng)絡(luò))可以使用不同的證書來最小化跨網(wǎng)絡(luò)訪問敛纲。這允許與現(xiàn)有的公司系統(tǒng)和公鑰基礎(chǔ)設(shè)施(PKIs)輕松集成。

終端用戶剂癌,比如銀行的客戶淤翔,在Coco網(wǎng)絡(luò)中沒有身份,不能直接在網(wǎng)絡(luò)上進(jìn)行交易佩谷。相反旁壮,他們通過成員或參與者的前端系統(tǒng)與它交互。

在典型的場景中谐檀,如圖4所示抡谐,使用現(xiàn)有的企業(yè)標(biāo)識管理機(jī)制,如Active Directory (AD)或Azure Active Directory (AAD)對終端用戶進(jìn)行身份驗證和授權(quán)桐猬。終端用戶向前端系統(tǒng)提交交易麦撵,之后前端系統(tǒng)使用成員或參與者的Coco標(biāo)識(PrivKey_{M_i}PrivKey_{P_i})將事務(wù)提交給Coco網(wǎng)絡(luò),標(biāo)識存儲在本地或基于云的密鑰管理系統(tǒng)中溃肪,例如硬件安全模塊(HSM)免胃。

圖4 終端用戶交易流程

5.網(wǎng)絡(luò)的創(chuàng)建和管理

Coco通過網(wǎng)絡(luò)章程(下面描述)和分布式投票過程來描述和管理網(wǎng)絡(luò)策略。這允許聯(lián)盟規(guī)則和協(xié)議在系統(tǒng)中進(jìn)行編碼惫撰,類似于智能合約代碼中編碼的方式羔沙。

任何成員都可以通過引導(dǎo)第一個VN啟動一個網(wǎng)絡(luò)。在此之后润绎,任何成員都可以提交修改Coco網(wǎng)絡(luò)章程(例如添加或刪除成員)的建議,進(jìn)行投票表決。與應(yīng)用程序交易一樣莉撇,此類Coco管理任務(wù)作為交易提交給Coco網(wǎng)絡(luò)呢蛤。

網(wǎng)絡(luò)章程

在Coco網(wǎng)絡(luò)中,網(wǎng)絡(luò)章程是網(wǎng)絡(luò)政策的完整表達(dá)棍郎。這些至少包括成員列表其障、VN列表、代碼清單涂佃、TEE清單和投票策略励翼。

  • 成員列表membership list是網(wǎng)絡(luò)中所有已批準(zhǔn)的行動者(成員和參與者)的列表。成員M_1由其私鑰/公鑰對(PrivKey_{M_1}, PubKey_{M_1})表示辜荠。如果M_1M_i是聯(lián)盟的成員汽抚,那么成員列表將由公鑰集\{PubKey_{M_1},…,PubKey_{M_i}\}表示。只有每個成員的公鑰證書被上傳到Coco網(wǎng)絡(luò)伯病,私鑰都保留在原始密鑰管理系統(tǒng)中造烁,該系統(tǒng)可以在本地或上傳到云中。參與者的處理方式與成員相同午笛。

  • 代碼清單Code manifest是所有可在Coco網(wǎng)絡(luò)中運(yùn)行的已批準(zhǔn)代碼的規(guī)范——包括但不限于Coco框架版本惭蟋、區(qū)塊鏈協(xié)議和特定的區(qū)塊鏈協(xié)議版本。任何一個代碼標(biāo)識都表示為單個度量药磺。

  • TEE清單TEE manifest是所有已批準(zhǔn)的可信執(zhí)行環(huán)境(硬件或軟件)的規(guī)范告组。Coco網(wǎng)絡(luò)中的VNs可以運(yùn)行不同的TEEs,前提是所有使用的TEEs都在清單中被接受癌佩。在這種混合的TEE環(huán)境中木缝,網(wǎng)絡(luò)安全性僅與所使用的最弱的TEE機(jī)制相同。

  • VN列表VN list是網(wǎng)絡(luò)中所有已批準(zhǔn)的驗證節(jié)點的列表驼卖。在Coco網(wǎng)絡(luò)中氨肌,VN由一個簽名元組表示,該元組包含成員的ID酌畜、物理節(jié)點的地址(DNS名稱或IP地址)怎囚,以及與在enclave中生成的私鑰相對應(yīng)的公鑰,以惟一地標(biāo)識VN/secure enclave對桥胞。對于第一個成員的第一個VN, VN_{M1\_1}=\{PubKey_{M_1}, Add VN_{M1\_1},PubKeyVN_{M1\_1}\}S_{PrivKey\_M1}.

  • 對網(wǎng)絡(luò)章程的任何更改恳守,如對成員或VN列表的添加或刪除,都必須通過投票過程完成(稍后將介紹)贩虾〈吆妫可接受的投票標(biāo)準(zhǔn)稱為投票政策voting policy,也在網(wǎng)絡(luò)章程中表達(dá)缎罢。投票政策的選項可以包括一致投票伊群、M/N考杉、1/N等。同樣舰始,投票是否能夠提交的政策會根據(jù)是否符合標(biāo)準(zhǔn)自動進(jìn)行崇棠。例如,投票提交可以是自動的丸卷,這樣每個成員都可以添加指定數(shù)量的VNs枕稀,前提是VNs正在運(yùn)行多數(shù)支持的代碼。

這是Coco網(wǎng)絡(luò)實施的基本政策谜嫉;隨著時間的推移萎坷,我們計劃支持更多的政策。

啟動網(wǎng)絡(luò)

任何成員都可以通過引導(dǎo)第一個VN并上傳創(chuàng)世網(wǎng)絡(luò)章程來啟動網(wǎng)絡(luò)沐兰。啟動網(wǎng)絡(luò)的成員與加入網(wǎng)絡(luò)的后續(xù)成員相比沒有額外的特權(quán)哆档。

引導(dǎo)VN

成員或參與者執(zhí)行以下步驟來引導(dǎo)一個VN:

  1. 使用TEE設(shè)置服務(wù)器或虛擬機(jī),并安裝Coco Framework支持的操作系統(tǒng)僧鲁。

  2. 安裝Coco Framework和所需的區(qū)塊鏈協(xié)議虐呻。該軟件安裝在服務(wù)器上,服務(wù)器在TEE中創(chuàng)建一個enclave寞秃,以運(yùn)行敏感的Coco和區(qū)塊鏈功能斟叼。TEE生成其硬件/軟件機(jī)制的認(rèn)證和運(yùn)行在enclave內(nèi)部的代碼,參與者使用這些代碼來驗證一切都符合預(yù)期春寿。私鑰/公鑰對在enclave內(nèi)生成朗涩,公鑰作為代表enclave身份的認(rèn)證的一部分包含在enclave中。

  3. 將網(wǎng)絡(luò)章程上載到VN绑改。

  4. 在每個前端應(yīng)用程序和VN之間建立一個安全的通信通道谢床。

  5. 上傳它的私有/公鑰份額,用于數(shù)據(jù)完整性和機(jī)密性(稍后將介紹)厘线。

無論是網(wǎng)絡(luò)中的第一個VN识腿,還是后續(xù)的VN,引導(dǎo)VN的上述過程都是相同的造壮。后續(xù)的VNs將使用VN列表發(fā)現(xiàn)網(wǎng)絡(luò)中的其他VNs渡讼,并嘗試與它們建立安全的節(jié)點到節(jié)點的連接。只有在VN列表中的VN才可以與其他VNs建立安全連接耳璧,并且每個VN的TEE都可以提供有效的認(rèn)證成箫。

成員、參與者和節(jié)點管理

在網(wǎng)絡(luò)上線運(yùn)行后旨枯,任何現(xiàn)有成員都可以提議投票加入新成員或參與者蹬昌;添加一個屬于已有成員或參與者的VN;或刪除一個成員攀隔、參與者或VN皂贩。

添加新成員或參與者

可以在創(chuàng)世網(wǎng)絡(luò)章程中定義多個成員和/或參與者栖榨,在這種情況下,在網(wǎng)絡(luò)啟動并運(yùn)行之后不需要添加它們∶魉ⅲ現(xiàn)有成員可以在創(chuàng)世網(wǎng)絡(luò)章程中添加新成員或參與者治泥。

無論添加的是新成員還是參與者,過程都是相同的遮精。以下是新成員的工作流程:

  1. 新成員M_j使用上面描述的過程創(chuàng)建VN。要做到這一點败潦,新成員必須從現(xiàn)有成員接收當(dāng)前網(wǎng)絡(luò)章程的副本本冲,以便在引導(dǎo)期間使用。這發(fā)生在今天的Coco系統(tǒng)之外劫扒,通過任何安全手段完成成員之間的通信檬洞。(雖然擁有網(wǎng)絡(luò)章程的副本并不意味著流氓實體可以加入網(wǎng)絡(luò),但網(wǎng)絡(luò)章程確實包含敏感信息沟饥,這意味著在與他人共享時要小心添怔。

  2. 在新成員的VN準(zhǔn)備加入網(wǎng)絡(luò)之后,現(xiàn)有的成員M_i提議投票贤旷,提供M_j的身份和M_j的第一個VN加入網(wǎng)絡(luò):\{PubKey_{M_j}, VN_{Mj\_1}\}广料。如果投票成功,則將成員M_j添加到成員列表幼驶,并將其節(jié)點VN_{Mj\_1}添加到VN列表艾杏。

  3. 在成員進(jìn)入網(wǎng)絡(luò)后,將從另一個成員VN接收當(dāng)前的網(wǎng)絡(luò)章程和區(qū)塊鏈狀態(tài)盅藻,并確保網(wǎng)絡(luò)章程與自己的版本相匹配购桑。

為了簡化上述過程,在引導(dǎo)過程(上面的第1步)中氏淑,新成員的VN可以從網(wǎng)絡(luò)本身接收當(dāng)前的網(wǎng)絡(luò)章程勃蜘,以避免將其傳遞到系統(tǒng)之外。在這種情況下假残,在步驟3中缭贡,在VN下載數(shù)據(jù)或處理事務(wù)之前M_j必須有機(jī)會在VN安裝之后批準(zhǔn)網(wǎng)絡(luò)章程,以避免M_jM_j準(zhǔn)入時沒有批準(zhǔn)網(wǎng)絡(luò)章程的情況守问。

從技術(shù)上講匀归,如果新行動者(成員或參與者)想在第一個VN準(zhǔn)備好之前添加到成員列表中,那么添加行動者和第一個VN可以被解耦耗帕;然而穆端,在這種情況下,必須通過另一個成員基礎(chǔ)結(jié)構(gòu)進(jìn)行第二次投票仿便,以將新參與者的第一個VN添加到VN列表体啰。

類似地攒巍,如果新參與者過早地引導(dǎo)第一個VN,那么在啟動與網(wǎng)絡(luò)中現(xiàn)有VNs的連接時荒勇,該VN將被拒絕柒莉,因為新參與者的VN還沒有出現(xiàn)在VN列表中。在投票完成并將新的參與者的VN添加到VN列表之后沽翔,將需要重新啟動查找和連接嘗試兢孝。

為現(xiàn)有的行動者添加新的VNs

類似于添加新成員,成員可以提議對添加一個新的VN進(jìn)行投票仅偎,該VN屬于現(xiàn)有的行動者跨蟹。提案可以由任何行動者提出,而不僅僅是VN的所有者橘沥。投票過程是相同的窗轩,新的VN在投票成功之前不能加入網(wǎng)絡(luò)。

移除參與者或VNs

刪除一個行動者或VN的過程也是類似的座咆。行動者或VN在投票完成并生效之前不會正式從成員列表或VN列表中刪除痢艺,這意味著行動者或VN在此期間仍然可以訪問網(wǎng)絡(luò)。

投票

任何成員都可以提議對網(wǎng)絡(luò)章程中指定的任何策略進(jìn)行修改介陶,以便進(jìn)行投票堤舒,其方式與通過投票添加或刪除成員和VNs的方式類似。成員還可以為創(chuàng)世網(wǎng)絡(luò)章程中未指定的策略提出建議哺呜,前提是該策略由Coco系統(tǒng)支持植酥。類似地,成員可以建議從網(wǎng)絡(luò)結(jié)構(gòu)中刪除策略弦牡。還建議對Coco Framework代碼和區(qū)塊鏈協(xié)議代碼進(jìn)行更新并投票友驮。甚至連投票政策本身也可以通過這個過程來改變。(投票改變投票政策將使用舊的投票政策;如果投票成功驾锰,下次投票將采用新的投票政策卸留。)

當(dāng)提交修改網(wǎng)絡(luò)章程的建議時,將通知所有現(xiàn)有成員椭豫,并必須進(jìn)行投票耻瑟。每個成員都得到一票,不管它在網(wǎng)絡(luò)中有多少VNs赏酥。每個成員的投票都是一個Coco管理交易喳整,因此提交、處理并最終記錄在Coco管理賬本中裸扶。

在達(dá)到法定投票人數(shù)后框都,Coco系統(tǒng)根據(jù)指定的投票政策判定投票結(jié)果。成員可以隨時投票呵晨,這意味著投票結(jié)果的延遲完全取決于成員投票的速度以及網(wǎng)絡(luò)章程中規(guī)定的投票政策魏保。對任何網(wǎng)絡(luò)政策的變更熬尺,直到法定人數(shù)完成投票和批準(zhǔn)變更后才生效。

6.交易工作流

Coco網(wǎng)絡(luò)建立后谓罗,它可以接受成員或參與者的交易粱哼。交易有兩種類型:

  • 應(yīng)用程序交易,通過網(wǎng)絡(luò)進(jìn)行的業(yè)務(wù)交易的主要集合檩咱。
  • Coco管理交易揭措,例如添加一個成員。

Coco Framework使用類似的工作流來接收和處理這兩種類型的交易刻蚯,包括如何達(dá)成一致蜂筹。(回想一下,雖然邏輯上有兩個總賬芦倒,但它們都記錄在一個存儲中,以便在網(wǎng)絡(luò)中的所有交易中保持相對的順序不翩。)

不管交易類型如何兵扬,Coco都對所有應(yīng)用程序到節(jié)點的通信通道和節(jié)點到節(jié)點的通信通道使用安全通信通道來保護(hù)機(jī)密性。Coco還支持應(yīng)用程序?qū)拥募用芎蜕矸蒡炞C口蝠,而不是傳輸層器钟。

應(yīng)用程序交易工作流

圖5展示了應(yīng)用程序交易的工作流:

  1. 在發(fā)送交易之前,應(yīng)用程序(例如Ethereum DApp)在網(wǎng)絡(luò)中建立了一個經(jīng)過身份驗證的妙蔗、加密的VN連接傲霸。應(yīng)用程序可以直接與VN或通過一個中間前端系統(tǒng)建立連接,這取決于DApp和前端的安全性和關(guān)鍵管理設(shè)計目標(biāo)眉反。

  2. 當(dāng)Coco Framework接收到一個交易時昙啄,它會解密它,然后將其路由到相應(yīng)的區(qū)塊鏈適配器寸五。(host接受連接梳凛,但在enclave內(nèi)部解密和處理。通過這種方法梳杏,VN在網(wǎng)絡(luò)和host操作系統(tǒng)層進(jìn)行交互時韧拒,對數(shù)據(jù)有效負(fù)載不可見,也無法進(jìn)行篡改十性。)

  3. 適配器啟動交易集叛溢,并與區(qū)塊鏈協(xié)議子系統(tǒng)(如塊生成邏輯和以太坊虛擬機(jī),或EVM)的組件進(jìn)行交互劲适,以處理交易楷掉。

  4. 適配器通過分布式存儲提交交易集,該存儲保存并使用配置的協(xié)商一致算法在網(wǎng)絡(luò)上復(fù)制所有狀態(tài)更改霞势。對單個交易的處理可能導(dǎo)致多個狀態(tài)更改靖诗。

Coco框架支持對應(yīng)用程序交易進(jìn)行批處理郭怪,但這降低了更高的吞吐量以提高延遲。當(dāng)適配器處理一組批處理的交易時刊橘,它將收集交易集中的所有更新鄙才,然后將它們提交到分布式存儲中。

圖5 應(yīng)用程序交易工作流

Coco管理交易工作流

處理Coco管理交易的工作流程與上述類似促绵;唯一的區(qū)別是攒庵,交易是由Coco掌控管理的部分處理而不是由區(qū)塊鏈核心的Coco。

達(dá)成共識

在Coco網(wǎng)絡(luò)中败晴,需要對分布式存儲的所有更新達(dá)成一致浓冒,包括應(yīng)用程序交易、智能合約狀態(tài)和管理交易尖坤。盡管協(xié)商一致是任何分布式網(wǎng)絡(luò)的基本方面稳懒,但與公鏈網(wǎng)絡(luò)相比,Coco網(wǎng)絡(luò)的獨(dú)特之處在于每個VN都完全信任網(wǎng)絡(luò)中的其他VN慢味。

正因為如此场梆,不需要防范惡意消息,并且可以毫不含糊地接受不與VN維護(hù)的現(xiàn)有狀態(tài)沖突的區(qū)塊鏈更新纯路。最終的結(jié)果是:Coco不需要浪費(fèi)能源計算密集型的工作證明算法或油、可能有潛在不公平的權(quán)益證明算法或引起延遲的時間限制算法。本文檔后面將介紹深入防御的措施驰唬,以降低TEE故障或執(zhí)行中的硬件錯誤風(fēng)險顶岸。

Coco Framework的設(shè)計目的是支持可插拔式協(xié)商一致算法——計劃最初集成類似paxos的協(xié)商一致算法和Caesar協(xié)商一致算法(一種來自微軟研究院的算法)。Coco網(wǎng)絡(luò)可由其他協(xié)商一致的算法構(gòu)建叫编;為了實現(xiàn)高效的協(xié)議和最大吞吐量辖佣,理想的實現(xiàn)應(yīng)該利用通過受信任的VN的安全通道接收的消息本身是受信任的這一事實。

無論采用何種協(xié)商一致算法搓逾,只要算法的持久性和可串行性要求得到滿足凌简,協(xié)商一致都可以很快實現(xiàn)。在整個網(wǎng)絡(luò)中分布事務(wù)可以使用多播恃逻、廣播樹或任何其他被認(rèn)為對物理Coco網(wǎng)絡(luò)的大小和拓?fù)溆行У膮f(xié)議來執(zhí)行雏搂。

Paxos共識

在Paxos共識下,一個VN當(dāng)選為領(lǐng)導(dǎo)人寇损。所有其他VNs都是跟隨者凸郑,它們只是接受事務(wù)并將其轉(zhuǎn)發(fā)給leader進(jìn)行處理。在leader處理事務(wù)之后矛市,由于Coco使用了TEEs芙沥,所以follower可以簡單地接受leader的事務(wù)結(jié)果。

Paxos共識(以及類似于Paxos的算法,如Raft)對于較少的節(jié)點來說是非常高效的而昨,并且受到傳統(tǒng)節(jié)點之間的中值延遲的限制救氯。因此,類似paxos的一致性算法對于Coco網(wǎng)絡(luò)的適用性取決于VNs的數(shù)量歌憨,而VNs的數(shù)量又取決于聯(lián)盟中的行動者數(shù)量和每個行動者的節(jié)點數(shù)量着憨。

在Coco的未來版本中,可以通過采用分布式系統(tǒng)研究(如靈活的paxos)來解決節(jié)點的可伸縮性問題务嫡,這是一個簡單的觀察甲抖,即不需要Paxos中的所有法定成員都進(jìn)行交叉。這足以要求領(lǐng)導(dǎo)人選舉階段使用的法定人數(shù)與以前復(fù)制階段使用的法定成員重疊心铃。這使Coco以更慢的速度進(jìn)行領(lǐng)導(dǎo)選舉(一個不常見的事件)准谚,以便更快的復(fù)制(一個常見的事件)。

還可以通過分布式事務(wù)支持來解決節(jié)點的可伸縮性去扣,使用諸如樂觀提交和依賴于follower的方法柱衔。這允許所有節(jié)點(不僅僅是領(lǐng)導(dǎo)者)處理事務(wù),將計算負(fù)載分散到整個Coco網(wǎng)絡(luò)中愉棱。

更多關(guān)于Paxos的信息可以在這里找到唆铐,更多關(guān)于Raft的信息可以在這里找到。

Caesar共識

Caesar 共識是一種構(gòu)建安全羽氮、高效的區(qū)塊鏈聯(lián)盟網(wǎng)絡(luò)的新的協(xié)商一致算法。它利用區(qū)塊鏈的密碼屬性使區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點能夠在有效的賬本上達(dá)成一致惫恼。Caesar共識支持靈活的網(wǎng)絡(luò)節(jié)點容錯模型——包括崩潰档押、拜占庭式、兩者的混合祈纯,或者近乎完全的妥協(xié)(除一個節(jié)點外全部崩潰的妥協(xié))令宿。

在Coco網(wǎng)絡(luò)中,Caesar 共識可以與傳統(tǒng)的容錯算法(如Paxos)一起使用腕窥,以幫助提供額外的安全性和故障檢測粒没,比如在TEE故障的情況下。在這種結(jié)合的方法下簇爆,follower節(jié)點不是明確地接受來自leader節(jié)點的事務(wù)癞松,而是在分布式帳本中存儲少量的加密信息(稱為心跳交易),以啟用分布式協(xié)商一致入蛆,這也可以跟蹤進(jìn)展并使leader負(fù)責(zé)响蓉。如果檢測到不當(dāng)行為,那么follower節(jié)點就可以聚集在一起哨毁,從網(wǎng)絡(luò)中驅(qū)逐出領(lǐng)導(dǎo)者枫甲,而另一個領(lǐng)導(dǎo)者重新被選舉出來。(回想一下,在Coco網(wǎng)絡(luò)中想幻,領(lǐng)導(dǎo)者只有在TEE被破壞的情況下才能做出惡意的行為粱栖。Caesar共識檢測到這種危害并啟動故障轉(zhuǎn)移協(xié)議來啟動新的領(lǐng)導(dǎo)人,這反過來又解決了這種危害脏毯。)

更多關(guān)于Caesar共識的信息可以在文章第3.4節(jié)中找到闹究。

安全通信

Coco強(qiáng)制執(zhí)行安全的應(yīng)用程序到節(jié)點和節(jié)點到節(jié)點的通信通道,這兩個通道都使用相互驗證的TLS連接抄沮,這些連接終止于enclave跋核。(技術(shù)上,有兩個應(yīng)用程序到節(jié)點的通信通道——一個用于應(yīng)用程序交易叛买,另一個用于Coco管理交易砂代。)

這確保只有有效的成員和參與者可以提交、處理和查看網(wǎng)絡(luò)交易率挣,并且只有有效的VNs才能加入網(wǎng)絡(luò)刻伊。類似地,由于數(shù)據(jù)是跨所有連接加密的椒功,并且只在enclave內(nèi)部是透明的捶箱,所以主機(jī)級對VN的訪問不允許檢查網(wǎng)絡(luò)流量。

7.機(jī)密性和完整性

Coco網(wǎng)絡(luò)的持久狀態(tài)(即寫入持久存儲的狀態(tài))包括三種類型的數(shù)據(jù):應(yīng)用程序交易动漾、智能合約狀態(tài)和管理交易序攘。所有這些都受到保護(hù),以確保網(wǎng)絡(luò)機(jī)密性和數(shù)據(jù)完整性蜜暑,也就是時確保只有Coco網(wǎng)絡(luò)上的有效參與者才能訪問數(shù)據(jù)画恰,并且數(shù)據(jù)不會被修改。Coco還支持細(xì)粒度的數(shù)據(jù)訪問控制删豺,這是為了適應(yīng)業(yè)務(wù)需求以實現(xiàn)更細(xì)粒度的機(jī)密性——比如2+ party機(jī)密性共虑。

網(wǎng)絡(luò)機(jī)密性和數(shù)據(jù)完整性

至少,Coco保護(hù)賬本條目呀页,以確保網(wǎng)絡(luò)之外的任何實體都不能查看或操縱持久狀態(tài)妈拌。通過使用門限加密(如下所述),Coco可以實現(xiàn)網(wǎng)絡(luò)機(jī)密性和數(shù)據(jù)完整性蓬蝶,而無需授予任何單個參與者完全控制權(quán)尘分。

在VN上的一個enclave內(nèi),數(shù)據(jù)可以明文處理丸氛,以簡化計算并提高性能音诫。但是,考慮到TEE具有有限的安全內(nèi)存雪位,寫入持久存儲的數(shù)據(jù)在最終寫入磁盤之前必須經(jīng)過不受信任的host竭钝。Coco通過使用經(jīng)過驗證的加密以加密和完整性保護(hù)的形式從enclave中編寫所有數(shù)據(jù)來解決這個問題梨撞。這確保數(shù)據(jù)只能通過Coco Framework訪問,從而確保正確的訪問控制香罐,防止對主機(jī)或磁盤的未經(jīng)授權(quán)的直接訪問卧波,并確保檢測篡改數(shù)據(jù)。

為了確保高可用性和防止惡意(或非故意)數(shù)據(jù)刪除庇茫,可以將磁盤上的加密數(shù)據(jù)備份到其他場所或云存儲中港粱。

加密持久狀態(tài)

為了加密持久狀態(tài),Coco為在協(xié)商一致算法中指定為leader的VN的enclave內(nèi)生成一個對稱會話密鑰Key_{session}旦签。密鑰是在一個定義的紀(jì)元(網(wǎng)絡(luò)章程中成員設(shè)置的固定時間)上生成的查坪,紀(jì)元的具體持續(xù)時間由聯(lián)盟成員確定,需要權(quán)衡安全性的增加和更頻繁的密鑰生成操作開銷宁炫。其他對網(wǎng)絡(luò)狀態(tài)的改變偿曙,如行動者添加或刪除,也將迫使一個紀(jì)元的轉(zhuǎn)變羔巢。

對稱會話密鑰本身是加密的望忆,并被寫入Coco管理帳本以實現(xiàn)持久性。對稱會話密鑰也在內(nèi)存中保持一段固定的時間(在網(wǎng)絡(luò)章程中可配置)竿秆;如果不在內(nèi)存中启摄,則根據(jù)需要檢索和解密密鑰。

Coco用于加密和持久化會話密鑰的過程利用了一個完全獨(dú)立的非對稱門限加密系統(tǒng)幽钢。在這種方法下歉备,N個參與者交換材料,建立\frac{M}{N}的門限加密方案如下:

  1. 每個參與者生成一個私鑰份額(PrivKeyShare_{M_i}PrivKeyShare_{P_i})匪燕,創(chuàng)建一個相應(yīng)的公鑰份額(PubKeyShare_{M_i}PubKeyShare_{P_i})蕾羊,并將兩者都上傳到其VN。如果需要谎懦,為了避免在系統(tǒng)之間移動私鑰/公鑰份額肚豺,這一步可以在VN上的Coco系統(tǒng)中完成溃斋。

  2. VNs與其他VNs共享其行動者的公鑰份額(PubKeyShare_{M_i}PubKeyShare_{P_i})界拦。私有密鑰共享(PrivKeyShare_{M_i}PrivKeyShare_{P_i})僅保留在每個行動者的節(jié)點上。

  3. 然后梗劫,每個VN使用共享的公鑰份額材料(PubKeyShare_{M_i}PubKeyShare_{P_i}i)來形成一個單紀(jì)元公鑰——即公共共享網(wǎng)絡(luò)密鑰public shared network key——來加密對稱會話密鑰Key_{session}享甸。一個\frac{N}{N}計劃可以簡單把所有公鑰份額相乘:\prod_{i=0}^nPubKeyShare Z_i。復(fù)雜方案可以使用可以使用\frac{M}{N}梳侨,需要進(jìn)行更復(fù)雜的推導(dǎo)蛉威。

對稱會話密鑰的門限加密允許:

  • 訪問控制:惡意的VN無法自己解密數(shù)據(jù);相反走哺,它需要從網(wǎng)絡(luò)中的其他M-1角色的VNs中獲取部分解密蚯嫌,然后才能進(jìn)行這種嘗試。

  • 業(yè)務(wù)連續(xù)性和災(zāi)難恢復(fù):在發(fā)生災(zāi)難性故障的情況下,參與者可以通過合并對稱會話密鑰的解密份額來共同解密Coco之外的數(shù)據(jù)择示。(需要一個足夠大的M束凑,足夠的行動者不太可能會在其他非被擔(dān)保的情況下惡意串通解密數(shù)據(jù))。

  • 審計:審計人員可以請求解密對稱會話密鑰的份額栅盲,而不需要完整的私有共享網(wǎng)絡(luò)密鑰或依賴一個行動者來提供數(shù)據(jù)汪诉。

解密持久狀態(tài)

對稱會話密鑰的解密需要N個行動者中的M個,其中M可以配置為1到N中的任意數(shù)谈秫。解密時扒寄,leader需要請求M個VN組合解密共享,形成對稱會話密鑰的完整解密拟烫。值得注意的是该编,私有密鑰共享(PrivKeyShare_{M_i}PrivKeyShare_{P_i})從未在Coco網(wǎng)絡(luò)中合并,因此永遠(yuǎn)不會顯示完整的私有共享網(wǎng)絡(luò)密鑰构灸。

值得注意的是,雖然M可以等于N上渴,或者甚至可以是1,一個典型的Coco實現(xiàn)M將需要至少\frac{1}{2}N + 1喜颁,以確保機(jī)密性仍將保護(hù)提供了大多數(shù)行動者不勾結(jié)稠氮。這也確保了網(wǎng)絡(luò)可以繼續(xù)運(yùn)行,只要它能夠維護(hù)至少代表M+1個行動者的VNs的連接半开,使它能夠在一個或多個行動者的VNs從網(wǎng)絡(luò)中掉線或分區(qū)時繼續(xù)運(yùn)行隔披。

2+方保密

當(dāng)網(wǎng)絡(luò)中的兩個或多個參與者需要私下進(jìn)行交易(例如出于監(jiān)管原因)時,將交易可見性限制在網(wǎng)絡(luò)上的有效行動者可能是不夠的寂拆。為了使行動者能夠?qū)⒆约汉鸵粋€或多個其他行動者之間的交易指定為機(jī)密奢米,應(yīng)該在集成的區(qū)塊鏈協(xié)議中提供(或添加)對此類表達(dá)式的支持。

通過使用TEEs纠永,這變成了一個標(biāo)準(zhǔn)的數(shù)據(jù)訪問控制問題鬓长。同樣,交易可以在enclave內(nèi)部進(jìn)行明文處理尝江,然后以加密格式存儲在enclave外部涉波。然后VNs只允許交易中涉及的行動者看到它。同樣的模型可以應(yīng)用于智能合約代碼和智能合約狀態(tài)炭序,而不僅僅是交易數(shù)據(jù)啤覆。在本文后面的功能原型和演示中,我們將討論如何在以太坊中實現(xiàn)這一點惭聂。

對于某些類型的交易窗声,可能需要額外的安全措施。Coco中的任何內(nèi)容都不能阻止應(yīng)用程序在向網(wǎng)絡(luò)提交事務(wù)之前使用其他保密技術(shù)(如同態(tài)加密)對事務(wù)進(jìn)行加密辜纲;這僅僅是在特定于Coco的網(wǎng)絡(luò)和2+方機(jī)密性之上的另一層笨觅。

使用上面的2+方方法拦耐,數(shù)據(jù)駐留在所有VNs上,即使只對某些人可見见剩。然而揩魂,在某些管理場景中,交易數(shù)據(jù)不能駐留在網(wǎng)絡(luò)中的所有節(jié)點上炮温。為了解決這個問題火脉,除了上面描述的標(biāo)準(zhǔn)2+方機(jī)密性之外,Coco系統(tǒng)中還可以集成點對點模型柒啤。

8.減輕故障

Coco VNs信任它們的節(jié)點倦挂,支持高效、可伸縮和高性能的事務(wù)處理担巩。然而方援,這種方法存在潛在的脆弱性。如果VN上的TEE被破壞涛癌,攻擊者可能會訪問私有數(shù)據(jù)并發(fā)布虛假的事務(wù)犯戏。這與傳統(tǒng)的區(qū)塊鏈實現(xiàn)不同,在傳統(tǒng)的實現(xiàn)中拳话,單個節(jié)點的故障是一個本地化失敗先匪,不會影響到更廣泛的網(wǎng)絡(luò)∑埽考慮到這一點呀非,可以采取一些措施,以大大減少與TEE故障有關(guān)的風(fēng)險:

編譯時的技巧

可以在編譯時使用技巧來消除可以用于破壞TEE的bug類镜盯,如VC3中的第7節(jié)所述:使用SGX在云中進(jìn)行可靠的數(shù)據(jù)分析岸裙。

最小化可信代碼庫

最小化潛在攻擊面,降低了故障的風(fēng)險速缆。這可以通過將在enclave內(nèi)部運(yùn)行的代碼分解為兩個部分來實現(xiàn):

  • 管理員enclave Manager enclave降允。管理員enclave負(fù)責(zé)敏感操作,包括私有密鑰管理艺糜、加密處理和治理邏輯剧董。這段代碼的大小是有限制的,并且不需要隨著每次區(qū)塊鏈集成而變化倦踢。此外送滞,它可以得到正式的驗證和大量的審計侠草。

  • 工作enclave worker enclave辱挥。工作enclave托管區(qū)塊鏈協(xié)議代碼,并為敏感操作調(diào)用管理員enclave边涕。如果工作enclave被入侵晤碘,則攻擊者可以訪問駐留在工作enclave內(nèi)存中的任何明文數(shù)據(jù)褂微,但不能直接訪問密鑰、獨(dú)立地解密磁盤上的數(shù)據(jù)园爷,或者提議或批準(zhǔn)對網(wǎng)絡(luò)的更改宠蚂。

另外,軟件故障隔離技術(shù)可以在單個enclave中使用童社。這種方法不僅實用求厕、低開銷,而且可以防止單個enclave密鑰的泄露扰楼。微軟研究院的論文A Design and Verification Methodology for Secure Isolated Regions提供了關(guān)于這種方法的更多信息呀癣。

VN租賃

此外,網(wǎng)絡(luò)可以要求VNs獲得定期更新的租約弦赖。更新過程可能需要將VN的TEE重置為原始狀態(tài)项栏,從而消除攻擊者可能獲得的任何立足點。沒有更新租約的VNs被隔離在網(wǎng)絡(luò)上蹬竖,阻止他們訪問在隔離生效后被添加到區(qū)塊鏈的數(shù)據(jù)沼沈。

共識變化

最后,可以從其他VNs接收VNs示例事務(wù)币厕,并在承諾之前同步驗證它們列另。這將允許快速檢測惡意VN,而無需進(jìn)行重大性能權(quán)衡旦装。類似地访递,單獨(dú)的VN可以異步地驗證所有事務(wù)。

9.功能原型和演示

為了展示其可行性和v1.0設(shè)計同辣,微軟創(chuàng)建了Coco Framework的功能原型拷姿,并使用它創(chuàng)建展示可擴(kuò)展性和保密性的演示。

功能原型

Coco框架架構(gòu)在邏輯上分為幾個部分:具有一致算法的持久分布式存儲旱函、應(yīng)用程序到節(jié)點和節(jié)點的安全通信通道响巢、機(jī)密性加密方案和分布式治理。該功能原型具有以下實現(xiàn)特征:

  • 基于RAFT協(xié)商一致算法的持久棒妨、分布式鍵值存儲踪古。

  • 英特爾SGX的TEE硬件。

  • 通過互TLS身份驗證保護(hù)應(yīng)用程序到節(jié)點的通信和節(jié)點到節(jié)點的通信券腔。(這是通過mbed TLS的修改版本實現(xiàn)的伏穆,一個開源的TLS實現(xiàn))

  • 一個只支持成員和節(jié)點管理的簡化網(wǎng)絡(luò)結(jié)構(gòu)。

  • 現(xiàn)有的以太坊協(xié)議對交易和智能合約實現(xiàn)的版本纷纫,并對與Coco的集成做了微小的修改枕扫。

微軟期望在Coco Framework內(nèi)的許多組件可以插拔,以支持特定于行業(yè)的需求——包括但不限于一致的算法和通信協(xié)議辱魁。

演示

使用這個原型烟瞧,微軟部署了一個多節(jié)點的Coco網(wǎng)絡(luò)來評估可伸縮性和展示機(jī)密性诗鸭。

可伸縮性測試

為了評估可擴(kuò)展性,微軟從公開的以太坊網(wǎng)絡(luò)中選擇了2000筆交易参滴,并通過原型進(jìn)行反饋强岸。一般來說,交易速率大約是Coco不可用協(xié)議的100倍砾赔。

可伸縮性測試的具體結(jié)果包括:

  • 每秒大約1600個交易的吞吐量蝌箍。(吞吐量定義為每單位時間處理和提交的交易總數(shù)。演示中的速度計顯示每秒的交易總數(shù))

  • 在幾百毫秒內(nèi)的延遲暴心,用100交易批處理大小來度量——表示區(qū)塊鏈塊的平均大小十绑。(延遲定義為從接收交易到網(wǎng)絡(luò)中所有節(jié)點提交交易的總時間,而不是在leader上提交交易的本地時間酷勺。如果需要本橙,可以通過減少批處理大小來減少延遲,盡管是以交易吞吐量為代價的脆诉。)

應(yīng)該注意的是甚亭,吞吐量數(shù)字取決于Coco Framework及其優(yōu)化、選擇的一致和密碼原語击胜,以及可能的其他網(wǎng)絡(luò)治理策略亏狰。微軟希望通過對v1.0的框架優(yōu)化來進(jìn)一步提高吞吐量,但要注意偶摔,在啟用其他安全機(jī)制時暇唾,可能會出現(xiàn)一些性能上的折衷。

保密

微軟與合作伙伴Mojix合作辰斋,將其供應(yīng)鏈DApp移植到基于coco的以太坊協(xié)議中策州。一般來說,DApps可以“提升和轉(zhuǎn)移”宫仗,只需對與Coco集成的以太坊賬簿進(jìn)行最小的更改够挂;惟一需要的更改是支持對Coco網(wǎng)絡(luò)的認(rèn)證,并利用Coco的機(jī)密性特性藕夫。因此孽糖,可以通過訪問控制策略實現(xiàn)機(jī)密性,并通過特定賬本的構(gòu)造進(jìn)行公開毅贮,而不需要復(fù)雜的加密方案办悟。

因為以太坊沒有Solidity(一個以太坊智能合約語言)的保密模型,而且由于微軟不希望修改EVM滩褥,所以這個原型使用了TEE病蛉,通過在每個智能合約中編寫的訪問控制策略來實現(xiàn)機(jī)密性。為此,微軟在Coco以太坊適配器中禁用了對交易和區(qū)塊級信息的訪問铡恕。然后,Mojix開發(fā)人員可以通過驗證調(diào)用者的地址丢间,在智能合約中實施訪問控制規(guī)則探熔。所有智能合約成員都是私有的,所有的讀函數(shù)都需要有一個簽名烘挫,這個簽名是通過ecrecover()來檢查配置的诀艰、授權(quán)的地址列表的。

對于事件饮六,Microsoft添加了RPC方法其垄,要求在讀取事件之前使用簽名檢查訪問。Mojix開發(fā)人員隨后能夠?qū)崿F(xiàn)智能合約方法卤橄,Coco以太坊適配器調(diào)用智能合約函數(shù)來檢查最終用戶是否被授權(quán)绿满。如果沒有檢查訪問方法,則在Coco網(wǎng)絡(luò)中將智能合約視為公開窟扑。

對許多人來說喇颁,機(jī)密性演示程序似乎是一個標(biāo)準(zhǔn)的企業(yè)應(yīng)用程序。它的美麗之處就在于這個事實嚎货;看起來由集中式數(shù)據(jù)庫支持的標(biāo)準(zhǔn)企業(yè)應(yīng)用程序?qū)嶋H上是由跨組織的分布式賬本支持的以太坊區(qū)塊鏈應(yīng)用程序橘霎。

觀看演示

可以在這里找到兩個演示的錄像。

10.結(jié)論

區(qū)塊鏈?zhǔn)且环N轉(zhuǎn)換技術(shù)殖属,能夠顯著減少業(yè)務(wù)操作的摩擦姐叁,特別是在跨組織的共享業(yè)務(wù)流程方面。越來越多的企業(yè)正在調(diào)查或嘗試將其作為一種安全洗显、透明的方式外潜,以數(shù)字跟蹤跨信任邊界的資產(chǎn)所有權(quán),開放跨組織協(xié)作的新機(jī)遇挠唆,以及富有想象力的新商業(yè)模式橡卤。

微軟致力于將區(qū)塊鏈引入企業(yè),并與客戶损搬、合作伙伴和區(qū)塊鏈社區(qū)合作碧库,繼續(xù)推進(jìn)其企業(yè)準(zhǔn)備工作。我們的使命是幫助企業(yè)在這個安全多方計算的新時代蓬勃發(fā)展巧勤,通過提供開放嵌灰、可擴(kuò)展的平臺和服務(wù),從分類公司到政府颅悉、醫(yī)療機(jī)構(gòu)和全球銀行沽瞭,都可以用來創(chuàng)造新的價值。

Coco框架是我們這一旅程的最新一步剩瓶,它通過交付企業(yè)需要的關(guān)鍵元素驹溃,為區(qū)塊鏈在企業(yè)中的應(yīng)用提供了基礎(chǔ)城丧。當(dāng)區(qū)塊鏈賬本實現(xiàn)與Coco集成時,它將處理傳統(tǒng)的集中數(shù)據(jù)庫的性能和可擴(kuò)展性豌鹤。Coco還為賬本的內(nèi)容提供任意的數(shù)據(jù)保密規(guī)則亡哄,例如基于角色的事務(wù)數(shù)據(jù)訪問控制。最后布疙,Coco提供了一個全面的分布式治理系統(tǒng)蚊惯,而不需要外部管理機(jī)制。

正如本文中提到的灵临,Coco不是一個獨(dú)立的區(qū)塊鏈協(xié)議截型;相反,它提供了一個可信的基礎(chǔ)儒溉,可以將現(xiàn)有的區(qū)塊鏈協(xié)議(如Ethereum宦焦、Quorum、Corda和Hyperledger Sawtooth)集成在一起顿涣,以交付完整的赶诊、企業(yè)級的分類解決方案。根據(jù)設(shè)計园骆,Coco是開放的舔痪,并與任何區(qū)塊鏈協(xié)議兼容。它甚至可以在區(qū)塊鏈解決方案之外支持通用锌唾、安全和可解釋的多方計算锄码。

J. P. Morgan (Quorum), R3 (Corda)晌涕, Intel (Hyperledger Sawtooth)已經(jīng)同意將其專有的區(qū)塊鏈分類平臺與Coco集成在一起滋捶,并同意在框架和Ethereum提供支持方面進(jìn)行合作。微軟計劃于2018年在GitHub上發(fā)布這個框架余黎,作為一個開源項目——可以在Linux和Windows上重窟,也可以在云上,也可以在本地惧财。與此同時巡扇,微軟將繼續(xù)與客戶、合作伙伴和區(qū)塊鏈技術(shù)和商業(yè)社區(qū)合作垮衷,繼續(xù)推進(jìn)產(chǎn)品的使用厅翔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搀突,隨后出現(xiàn)的幾起案子刀闷,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甸昏,死亡現(xiàn)場離奇詭異顽分,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)施蜜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門卒蘸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人花墩,你說我怎么就攤上這事悬秉〕尾剑” “怎么了冰蘑?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長村缸。 經(jīng)常有香客問我祠肥,道長,這世上最難降的妖魔是什么梯皿? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任仇箱,我火速辦了婚禮,結(jié)果婚禮上东羹,老公的妹妹穿的比我還像新娘剂桥。我一直安慰自己,他們只是感情好属提,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布权逗。 她就那樣靜靜地躺著,像睡著了一般冤议。 火紅的嫁衣襯著肌膚如雪斟薇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天恕酸,我揣著相機(jī)與錄音堪滨,去河邊找鬼。 笑死蕊温,一個胖子當(dāng)著我的面吹牛袱箱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播义矛,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼犯眠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了症革?” 一聲冷哼從身側(cè)響起筐咧,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后量蕊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铺罢,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年残炮,在試婚紗的時候發(fā)現(xiàn)自己被綠了韭赘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡势就,死狀恐怖泉瞻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苞冯,我是刑警寧澤袖牙,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站舅锄,受9級特大地震影響鞭达,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜皇忿,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一畴蹭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鳍烁,春花似錦叨襟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至铺峭,卻和暖如春墓怀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卫键。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工傀履, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人莉炉。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓钓账,卻偏偏與公主長得像,于是被迫代替她去往敵國和親絮宁。 傳聞我的和親對象是個殘疾皇子梆暮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容