基于公共網絡進行“關系”的確立及保障-IIII

智能合約協議的柱石

協議

在計算機科學中,協議指的是兩臺及兩臺以上計算機之間,傳遞的一系列消息。在更高層面的抽象上,協議包括了通過消息傳遞的算法。這些程序作為人類用戶的中間人,或者代理,讓人類用戶可以通過用戶界面來溝通。 我們為了方便,用“Alice”和“Bob”來指代協議的一個端點,但我們必須清楚這些端點實際上是計算機處理單元,它們也許處在人類用戶的控制下,也許不在人類用戶控制下,它們的動作也許違背人類用戶的意愿,也許不違背人類的意愿,這都有可能。 人類用戶通常對協議并沒有徹底的認知,僅僅從用戶界面、手冊或者其它方面獲得一點隱喻上的理解。與現實世界的合同不一樣,協議必須是準確無誤的,必須是完整的。

協議有三種基本類型。 我對 Schneier [5]的術語進行了修改,這樣與商業術語更加貼近:

自我執行:? Alice <--> Bob,

經由中介:? Alice <--> intermediary <--> Bob

經由仲裁:? (Alice <--> Bob) --> [evidence] --> adjudicator

相應使用“Alice”說明的智能合約,也要區分軟件(有兩個軟件組件,一個是協議的端點,一個是用戶界面)和“Alice”本人。密碼安全機制和其他計算機安全機制,給了我們很多工具和部件,可以用來構造協議,以形成智能合約的基礎。

“網絡空間的物理學”

物理媒介的安全屬性,是基于我們習以為常的物理屬性,例如,一個金原子是無法偽造的。網絡空間結構上的約束(“物理”)中,與安全相關的都描述為數學理論,計算機科學家研究它們,并稱之為密碼學。 下面是密碼學世界里,重要的“基本粒子”:

-- 偽隨機功能家族 -->

? ? ? 秘鑰加密,哈希,MAC,...

-- 陷門密碼體制 單向函數 -->

? ? ? 公鑰加密

-- 偽隨機數生成器 -->

? ? ? 生成秘鑰, padding, cookies ??

--信息理論/無條件的 -->

? ? ? ?一次一密

這些“粒子”是構建安全協議的強大材料。想像一下,有一種材料是如此堅固,即便是超新星的能力也毀不掉它,而且又是那么便宜,你可以隨意取用來建造墻壁、鎖、保險箱和信封來保護日常的用品。 這并非是一個比喻:破解 4,096 位 RSA 秘鑰,即便使用已知最好的算法,計算機要耗掉的電能都要超過一個超新星的全部能量。密碼學的這些早期的技術,將成為全球化商務的第四次成本革命的主要驅動力。

密碼學協議

協議中有一個類別,稱之為密碼協議,因為它們的第一個應用就是用來計算“加密書寫”,提供許多基本的磚石,幫助智能合約實現“可觀察性”,“可驗證性”,“相對性”和“可執行性”等目標,并在這幾種目標之間進行平衡。與一般的觀念相反,隱秘對于安全性非常重要。密碼學協議在稱之為“秘鑰”的隱秘性因素之上建設。秘鑰極大的、不可知的隨機性,令系統的其余部分非常簡單,而且可以公開。大隨機數的隱秘性,是如此巨大,憑運氣猜中的可能性之小,是天文尺度上的。這就是密碼學協議和智能合約的基石。

當我們考慮如何把密碼協議用在網絡關系中時,兩種嚴重的警告依次出現。第一種是,協議常常給出安全程度“高達”的假設。這種假設就是薄弱環節,一個完整的運行系統,必須以合理的方式應對這個薄弱點。 一個非常普遍的薄弱點,是假設第三方是可信的。 而這種信任程度,或者信任的功能,卻沒有詳細指出,需要現實世界中的系統分析師對這種風險進行特征分析并改進。最佳的中介協議,對中介和對方當事人的信任,都是有限的。

即便沒有對第三方給予信任,密碼協議也經常信任合約對手。 例如,對一條信息的加密,會把機密性寄托于擁有解密秘鑰的一方。加密并不會阻止秘鑰擁有者在網上張貼明文文本。我們不能說加密提供了“保密性”,然后就把我們對保密性的擔憂,全數留給加密來解決。

第二個警告是,在加密學語義中用來命名密碼(“簽名”,“現金”,等等)的許多術語,都有誤導性。 有時候,術語忽略了本質的含義:例如,一個“數字簽名”,并非是基于生物識別技術的,而是基于秘鑰,如果沒有另外的機制保護,秘鑰很容易被復制。密碼學協議經常被擴大含義,用來表示更廣泛的意圖。例如,“電子貨幣”就是一個非常廣泛的協議,可以實施很多種類的不記名憑證,和分布式對象的保護封裝。

對智能合約的攻擊

智能合約的協議,必須設計成能夠令合約:

(a) 足夠健壯,能夠抵御初級的、無意的破壞行為

(b) 足夠健壯,能夠抵御復雜的、利益驅動的、非破壞性(理性的)的攻擊

一個破壞者,可以是博弈中的一個策略或者子策略。其功效,最少也應該是某人負面功效的一部分。 或者是由某個合約方錯誤造成的效果。 “初級的”不過是說缺乏對攻擊后果的提前認知,以及缺少足夠的資源用以施加攻擊。“初級的”攻擊者,非常普遍,必須認真對待。 第三類,(c)復雜的、無意攻擊行為(攻擊者可以,也愿意犧牲足夠的資源),例如第三方發起的軍事攻擊,就是一種特殊的、困難的類型,在典型的合約中很少出現,所以我們可以將之放至單獨的類型,并在此處忽略不談。“初級的”和“復雜的”兩種類型之間的區別,已經在《算法信息理論》中形成計算機理論。

第三方攻擊帶來的預期損失,稱之為泄漏。 第三方為了攻破安全機制,需要耗費的成本,稱之為破壞成本。 如果破壞成本小于預期可獲得的利益,那么就一定會有利益驅動的、非破壞性的攻擊發生。

公鑰和私鑰加密

信用成本所發生的革命,一個重要的驅動力,來自于近些年出現的許多新的加密協議。最傳統的密碼學是密鑰加密法。在這種方法下,Alice 和 Bob (智能合約用來舉例的兩個人)使用一個共享的,預先約定的秘鑰,對兩人之間的消息進行加密。這種協議的關鍵問題,在于如何對秘鑰進行保密,而公鑰加密則解決了這個問題。使用這種技術,Alice 生成兩個密鑰,一個叫做公鑰,一個叫做私鑰。 她自己保存好私鑰,把公鑰對外公開。 當 Bob 想要發送消息給 Alice,他用 Alice 的公鑰加密消息,然后發送加密好的消息給 Alice,Alice 收到消息后便可以用私鑰解密消息。私鑰實現了“密碼陷門”,讓 Alice 方便的計算出用公鑰加密的逆向解密。公鑰和私鑰雖然在數學上是有關系的,但無法從公鑰計算出私鑰來。 RSA 算法是公鑰加密方法中,最流行的。

公共認證

公鑰加密也產生了許多種數字簽名技術。 證明了數據(之后用“對象”來指代)與所謂的簽名,也就是私鑰是動態相關的:對象被密鑰“簽字”了。一個認證協議有兩個步驟:簽名和驗證。 兩個步驟可以同步發生。也可以異步進行,在很多公共協議種,對簽名的驗證可以在未來很久之后才執行。

數字簽名,也許稱之為“數字蓋章”或者“數字封印”更好,因為它的功能結合了所有這些方法,而不僅僅是簽名。 總之,它不是基于生物計量的,和真的簽名不同,當然在私鑰中設置密碼來簽字,能夠替代簽名。 在很多亞洲國家,常常使用木頭塊雕刻成“印”,來替代簽名。 每個“印”都是獨一無二的,因為那雕刻是特殊的,而且木頭的紋理也是無法復制的。 數字簽名類似于“印”,因為每個新生成的密鑰都是獨特的。數字簽名依賴于簽名者保存好私鑰。

盲簽名公開的認證私有信息(那么我們是否可以使用非私有簽名)/數字簽名和密鑰結合,便擁有了交換的數學屬性,這樣就可以按照相反的順序將其解密。如同使用復寫紙在未知的文件上蓋章(無需擔心弄臟了什么)。效果是 Bob"簽署"了一個東西,這個東西在大概的內容上已得以驗證,但在某些具體的內容上,卻并未泄漏。通常的做法,用簽名的密鑰,來定義和確認所簽對象的含義,而非所簽對象的內容,從而保證 Bob 所簽署的不會是一個空白的支票。 盲簽使用在數字無記名證書,在這里 Bob 是清算代理,而在喬姆證書(Chaumian credentials)中,Bob是證書的發布者。

相對性認證

很多密碼學者都發明過“魔法墨水簽名”,盲簽是其中的一個例子。這一類協議的另一個例子是用來在不披露具體信息給對方的情況下,允許對方來驗證簽名或者獲得簽名者的身份。最私密的是零知識證明,使用這種方法,只有對手方才能鑒定證明者。指定的確認者簽名,讓簽名者指定某方作為驗證者。例如,某公司可以給予某個審計者、調查者或者仲裁者以權力去驗證簽名的對象,而其他第三方,比如競爭者,無法從簽名中獲得任何內容。群組簽名,可以讓成員作為組織的認證成員,進行簽名,而不會披露是哪一個成員所簽的名。

密鑰的保護

至此,我們可以假設Alice 和 Bob 雙方是鐵板一塊。但是在智能合約的世界里,他們會使用計算機軟件代理和智能卡來進行電子投標。密鑰不需要和身份捆綁在一起,而進行這種捆綁的任務實際上比想像的要困難。一旦密鑰捆上了,就必須認真保護,而很多地方網絡是非常不安全的。

我們假設黑客可以攔截任何網絡協議下的消息,并將信息重新轉發。這也確實在互聯網上的很多區域頻繁發生。我們還必須假設,在實際的應用中,所有的商業操作系統,他們都可以入侵,并找到硬盤上保存的密鑰。

對于終端操作的安全問題,根本就沒有徹底完美的解決方案來防范網絡攻擊。但對于基于公鑰的系統,有一種策略可以很好的弱化這個問題:

公鑰操作,可以在機器的“不可讀”的硬件電路板或者智能卡中執行,并且通過非常狹窄的串口線(只承載簡單的,單一用途的協議,安全驗證)連接到專門的防火墻。這對于高流量的服務器來說,是非常經濟的,但對于單個用戶而言,則沒有實用價值。 除了更好的安全性外,最大的價值在于加快了公鑰的運算。

如果 Mallet 的“能力”可以從物理上控制機器,那么一種較弱形式的密鑰保護方法就足夠了。要訣在于將密鑰存在內存中。 這樣 PC 就可以免受物理攻擊-只要關閉 PC 就能夠毀掉密鑰。 如果密鑰的備份藏在其它安全的地方,PC的用戶就能夠將大容量的數據加密,并保存在 PC 或者公共的計算機網絡上,而不必擔心對 PC 的物理攻擊能夠獲取到數據。數據依然處在“橡膠管攻擊”的威脅下,在這種攻擊下,主人受到強迫,透露出所藏的密鑰。

“能力” (capability 是一種安全模式)

面向對象,或者“能力”,安全性,是深刻且極具前景的區域,但這個不在本文范疇之內。 “能力”可以簡化許多分布式安全協議的設計。 有了“能力”,我們不必為每一合約問題,都開發新的加密協議,也不必修改加密協議。我們可以利用“能力”,在公共的加密框架上設計豐富的分布式安全協議。

要了解更多信息,可以參考?Introduction to Capability Based Security

Quora (最低法定人數)

對資源的執行或者控制上,Quorum 分布可以基于密鑰的加密共享,來執行或者控制資源。這一類技術也稱之為閾值技術。這種技術將密鑰(以便對用密鑰加密的對象進行控制)分割成為N個部分,僅需要其中的 M 部分便可以復原出密鑰,但少于 M 個部分,則無法拼出密鑰。加密共享用來在不同的負責人之間實現對象的分布式控制,是一個不錯的工具。

例如,Markus Jacobsson?設計了一個基于?quorum 的貨幣系統,用于簽署數字化的貨幣。Quorum 建立的機制,也是基于“需要共謀”原則,并且執行某個職能,需要 N 中的 M 方配合。比之在通常的職責分離模式下,只需要 N 方中的兩方便可執行,在安全性上要更強一層,而且在分權模式下的保密性也更佳。

“事后無法偽造” 交易記錄?

傳統方法中,審計者要去聯系雙方,以對交易是否發生進行驗證。(“需要共謀原則”再次生效)。 使用“事后無法偽造”日志,通過單向哈希功能的分層體系,某一方可以對交易數據的累積哈希值做簽名,并公開,完成后,即可公開提交此交易。 交易是完全保密的,除非某個審計者“查找(pings)”這個交易,來判斷交易的實際屬性。而交易對方的身份,依然是保密的,因為并不需要建立交易的其他事實。 唯一可能的攻擊,是在交易發生的時候,實時的偽造交易,而這在現實世界中幾乎是不可能的。 大多數的會計欺詐,都是對已完成的大量交易進行分析,然后進行偽造,并利用偽造的交易計算出自己想要的結果。

互為保密計算

密碼學者開發了一種協議,可以在兩方或者多方之間,創建虛擬機器。多方安全計算可以讓任意多的各方參與共享計算,每一方僅僅知道自己的輸入得到的結果,以及計算的輸出。 這種虛擬機器的特性令人興奮,每一方的輸入都對其它各方保密。 程序和輸出,則由各方共享。 由此,可以舉例,我們能夠在這種虛擬計算機上,通過互聯網運行一個電子表格。 我們還可以約定一組公式,用這些公式設置虛擬計算機,每一方輸入自己的私有數據。 而對其它各方的輸入,我們只能從我們自己的輸入和計算輸出中進行推導。

這種模式,存在兩個主要的弊端。一個是,虛擬計算機非常慢: 每次網絡消息,只能處理一個機器指令。 另一個是某些參與方,總是比其它參與方更早得知結果。 有幾篇論文就在討論,為了保證能夠獲得正確的輸出,需要信任多少數量的參與方。 必須將機制設計成,給予足夠多的參與方以某種激勵,使之有動力去傳遞正確的結果,或者進行計算,或者對合同進行認證,等等。

有了這些提前警告,理論上,任何算法的中間代理,都可以使用可信的虛擬計算機替代。在實際應用中,由于存在以上兩個弊端,我們通常在設計時從更加有效的元素中,挑選使用更加有限的協議。

可信任的第三方:

數學上可信的協議:



多方安全計算機理論,在實現了私有虛擬中介的基礎上,對合約的各個階段都有重大意義。 在協商談判的領域中,可以清楚的看到這一點。 在經濟學中“機制”是一個機構的抽象模型,該機構通過消息與參與者進行通信,而且其規則可以使用算法描述。 這種機構可以是拍賣、交易所、投票站等等。 他們都需要應用某種協商談判和決策過程。

經濟學家假設一個可信任的中介操作該機制。舉一個使用虛擬計算機來運行“機制”的例子。 Alice 可以提交一個買入價格,而 Bob 則提交一個賣出價,兩個價格都提交到他們共享的虛擬計算機。該虛擬計算機有一個指令,“A 是否大于 B?”。 如果 Alice 的買入大于 Bob 的賣出價,計算機則返回“真”。 更復雜一點的計算機,則可以根據一些不同的算法(Alice的買入價,Bob 的賣出價,折中成交,等等。)這種機制,就使用了“雙盲議價”的模式,無需可信任的中介參與。

原則上,這種虛擬計算機(它們都是“圖靈完備的”)可以解決任何可計算的問題,任何可計算的經濟機制,都能夠得以實施,而無須任何中介。 在實際應用中,這些安全的虛擬計算機運行非常慢(每個網絡消息,執行一次虛擬計算機指令),而且參與方獲得結果的順序,非常關鍵。但我們能夠證明,任何經濟機制都可以在沒有可信中介的情況下運行,這就足夠令人興奮了。這意味著,原則上來說,任何可以通過可信任第三方(例如拍賣行或者交易所)進行協商的合約,都能夠直接進行協商議價了。所以,在抽象的概念上,智能合約協商議價上,僅存的“困難”問題包括 (a)在使用可信中介情況下,也存在的麻煩問題(由標準的經濟原因導致),(b) 在獲知結果上的不同步問題,和(c) 從算法上描述議價規則,以及輸出合約條款的工作 (包括,當合約參與者缺乏某方面知識時,中介要幫助補足所缺乏的知識。例如,律師對如何起草合約,給出建議)。

對合約的執行階段,進行這樣的分析,就不那么簡單了。 首先,執行階段的經濟理論,就不如議價機制的理論那么健全和簡單。實際上,大多數經濟理論,都簡單的假設所有合約都會得到完美執行,而且沒有任何成本。 一些關于“交易成本”的文獻,開始質疑這種假設,但在合約執行的技術和成本領域,我們依然缺乏真正的成就和一致的理論。

使用多方安全計算機理論,進行執行階段分析,看上去只能用于那些可以在虛擬計算機內部執行的合約。但是,使用事后無法偽造的審計日志,結合在共享虛擬計算機中運行的審計協議,我們可以在虛擬計算機之外,由選定的仲裁者對各種合約執行動作,進行監控和驗證,雖然并非預先設定的自動執行。

在這種互相保密的審計協議中,參與方能夠給出驗證,賬目與之前所提交的交易記錄,能夠匹配,數字累加也完全正確。 參與方可以基于他們保密的共享交易日志,計算出匯總數值,并且能夠在不泄漏日志的情況下,與各個對手方對日志進行交叉驗證。他們都無法看到交易的細節,僅僅能夠從統計上進行推斷。 另外有趣的是,虛擬計算機可以長時間的保存狀態,從而實現了復雜形式的個人隱私和自我執行的安全信用。

有了互相保密的審計方法,我們就能夠對其他參與方所做聲明和報告的真實性,給予足夠信任,同時還不必將這些報告中體現的交易信息,以及交易主體信息,泄漏出去。這就為穩固的信譽系統,以及其他可信任的第三方系統,提供了基礎。達到了跨越時間、交流和匯總的完整性,并為交易的參與者保密。 只要明確了,在原則上,互相保密的審計是可以達成的,那么我們就可以找到實用的解決方案。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容