作者:譯文 / 來源:EOS WIKI
譯文/Translated:
上個月,我們宣布推出EOSIO Labs™,這個項目標志這我們開始對建立在EOSIO上的區塊鏈技術未來進行開放式創新。這個項目下我們首先發布探討的是關于私鑰管理的未來以及它對安全和密鑰管理的影響——通用認證庫(Universal Authenticator Library , UAL)。
本文會繼續討論EOSIO Labs,其中我們將主要探討EOSIO應用程序證明、聲明合約、以及它們背后蘊含的安全模型,以便用戶在區塊鏈應用上簽署交易時能增加信心。
分層式的安全模型
從定義上來說,公共的、無權限的區塊鏈可以讓任何應用代表區塊鏈上的有效用戶獲得區塊鏈上的任何合約。這種開放式架構讓無數服務商建立滿足用戶要求的應用。但是,這種開放生來具有一些問題:
簽名過程中,應用可能對用戶偽造身份(如,謊稱自己是example.com的官方應用)
簽名過程中,應用可能對用戶偽造簽名的內容(如,要求簽署用戶未授權的動作)
這里我們提供一個分層的安全模型,它會把“誰”和“什么”這兩個問題抽象化,使其成為應用要考慮的問題,這就把它和實際交易簽名通過可信的交易認證器(交易簽名者)獲取的方式分離開。
首先我們要介紹的是應用程序證明(Application Manifests)的概念,它能驗證應用程序來源、回答“你能合法地代表誰?“。第二,我們還在目標鏈上部署聲明合約(Assert Contract),它能根據應用程序證明上的鏈上內容檢驗交易內容,從而確保應用發起的交易是合法的。簡單來說,我們引入應用程序證明和聲明合約,其目的正如上所述。實際應用中,它們還要和一系列相應工具,如李嘉圖合約渲染器、授權傳輸協議等,共同承擔責任,保證區塊鏈用戶能夠獲得安全和可信的體驗。
安全模型
應用程序證明和聲明合約與相應能夠現實李嘉圖合約的認證器合作解決上述“誰”和“什么”的問題。我們要注意,在這個模型下,認證器不會直接代表應用和區塊鏈通信。驗證器代表用戶安全地簽署交易,然后把交易返回到應用,再由應用傳輸到相應的區塊鏈中。比如說,圖1是下面我們要詳細闡述的流程圖。
圖1:聲明、認證細則和李嘉圖合約支持的安全模型原理圖
應用程序證明
應用程序證明公開展示去中心化應用的元素據以及該應用可以傳遞到一個智能合約的所有動作。這個公示會在鏈上以及應用網站域名中的顯著地方呈現。這兩個聲明和聲明合約一起讓受信任的驗證器提供以下保證:
請求交易簽名的應用是該域名的授權應用。當應用要求交易簽名時,驗證器可以執行同源策略驗證應用是否提供了證明以及應用程序網站域名中的證明副本是否可以進行哈希驗證。這就讓用戶可以相信他們是在和該域名內合法的應用交互,因為只有控制該域名的合法的用戶才能在該位置進行證明。此外,在必要的時候,它還能讓應用程序資源,如圖標等,進行哈希驗證。
在對比證明中允許的動作之后,應用要求的動作是合法的,這樣才能避免應用惡意要求代幣轉移,如當動作不在區塊鏈游戲或拼車應用白名單時。
在這個模型下,我們還提供工具和渲染器來啟用受信任的驗證器,這就可以向終端用戶展示大量的李嘉圖合約內容,讓他們能夠驗證他們在授權的交易的具體內容。證明細則提供了上面流程圖的具體細節。李嘉圖細則和李嘉圖模板工具包向驗證器提供工具渲染李嘉圖合約。除了參考GitHub存儲庫,你還可以參考我們在Medium發布的最新帖子了解李嘉圖合約。
聲明合約
安裝在目標鏈上的聲明合約和應用程序證明協作驗證交易內容是否符合應用程序證明的鏈上內容,從而保證應用提出的交易是合法的。這個模型下,受信任的驗證器會對所有交易增加assert::require動作,強制驗證鏈上應用程序證明的關鍵細節。這個動作的目的是保證如果應用提供的任何細節不符合鏈上細節,那么整個交易都會被取消,從而保護終端用戶。
特別是,聲明合約:
1. 允許區塊鏈網絡注冊官方鏈名稱和鏈圖標。
2. 允許去中心化應用開發者注冊一個或多個應用程序證明描述其應用和注銷之前注冊的應用程序證明。
3. 允許用戶(通過受信任的驗證器)在交易中加入assert::requireaction,從而確保如果所需前提無效整個交易都會被取消。
受信任的驗證器現在可以運行交易處理前安全聲明,對比交易請求的內容和應用公布的允許的動作。這些聲明包括對比應用程序證明的哈斯值,應用提供的鏈信息哈希值、應用提供的ABI哈希值(包括呈現給用戶的李嘉圖協議)和鏈上匹配的ABI哈希值比值從而驗證提供給用戶的特定動作合約未被篡改。
敏銳的讀者可能已經意識到這個安全模型是如何維持一個受信任的驗證器和去中心化應用的邏輯分離。在給定的鏈中,符合該模型的驗證器只要在所有的交易中加入常見的驗證動作就可以保證終端用戶安全。
我們希望社區能夠共同探索,思考未來應用合約開發者是否可以選擇檢驗輸入交易驗證是否其中包含了相同的常見的驗證動作以決定是否進行下一步交易。這個檢查可以提供另一個鏈上交易驗證機制。技術詳情可以參考聲明合約。
優點
分層的應用架構讓受信任的驗證器成為用戶私鑰絕佳的保管人。此外,它能在執行安全模型、向終端用戶提供額外保障的同時還能清楚地描述特定應用的動作。通過這個方法,區塊鏈用戶不需要在使用前檢驗每個去中心化應用的所有源代碼,因為安全模型的每個部分本身都為終端用戶提供了重要的保證,讓他們能自信地和區塊鏈互動。
該方法至少包含以下好處:
不符合應用程序證明的交易會直接被受信任的驗證器拒絕、并永遠不會進入區塊鏈中
通過受信任的驗證器檢驗進入區塊鏈的交易依然要受到鏈上應用程序證明內容驗證
應用搜索引擎可以收聽證明注冊并建立已知的去中心化應用的完整目錄供終端用戶選擇
該模型還給應用開發者提供了方法保護自己,以免在第三方惡意冒用他們應用進行欺詐之后受到終端用戶指責
但是,這個模型本身不能解決所有冒名頂替的問題。如果用戶在簽署的交易來自bloçkçhainapplication.com的應用,而不是blockchainapplication.com?的應用,如果此時他們沒有仔細閱讀安全驗證器的李嘉圖合約,那么這個模型是不能保護用戶免受侵害的。我們希望社區能夠集思廣益思考這個框架可以如何擴展,從而解決這些攻擊媒介。我們希望這里呈現的模型能夠拋磚引玉,我們也希望能聽到您的聲音。
聯系我們
如果您愿意給我們反饋并想和我們團隊并肩完善EOSIO Labs儲存庫,你可以把問題和需求發在GitHub頁面上,您也可以給我們的開發者關系小組發郵件:developers@block.one.
您還可以通過在EOSIO開發者入口訂閱我們的更新。我們希望能夠不斷為EOSIO開發者提供更好用的軟件,同時,我們也不斷為區塊鏈技術的大規模應用奠定基礎。
未來對EOSIO Labs敞開了大門
通過EOSIO Labs,Block.one持續為EOSIO發布如本文所提的想法和研究。這只是我們作為社區的一員我們希望能深入和很多研究中的一小步。我們歡迎并鼓勵您在感興趣的領域對我們提出反饋,也期待著世界上最蓬勃發展、最有創意的科技社區能夠不斷發展。
免責聲明:Block.one是作為EOSIO社區的一員志愿對其做出貢獻,但是并不能保證軟件的整體性能和應用的性能。
原文鏈接/Original URL:
https://medium.com/eosio/eosio-labs-release-the-assert-manifest-security-model-cdd296a58710