• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 自媒體 查看內容
    • 1508
    • 0
    • 分享到

    譯文 | 分散式公鑰基礎設施

    2018-10-6 23:07

    來源: zcblockchain

    綜述

    當今的互聯網把在線身份的控制權交給第三方。電子郵件地址、用戶名和網站域名是通過DNS、X.509和社交網絡借用或“租借”的。這導致了整個互聯網范圍內嚴峻的可用性和安全性問題。


    本文描述了一種可能的替代方法,稱為分散式公鑰基礎設施(DPKI),它將在線身份的控制權返還給所屬的實體。通過這樣做,DPKI解決了許多困擾傳統公鑰基礎設施(PKI)的可用性和安全性問題。



    以下為譯文全文



    摘要


    當今的互聯網把在線身份的控制權交給第三方。電子郵件地址、用戶名和網站域名是通過DNS、X.509和社交網絡借用或“租借”的。這導致了整個互聯網范圍內嚴峻的可用性和安全性問題。本文描述了一種可能的替代方法,稱為分散式公鑰基礎設施(DPKI),它將在線身份的控制權返還給所屬的實體。通過這樣做,DPKI解決了許多困擾傳統公鑰基礎設施(PKI)的可用性和安全性問題。DPKI在PKI生命周期的每個階段都有優勢。它使得在線身份無許可引導成為可能,并提供了更強大的SSL證書的簡單創建。在使用中,它可以幫助“Johnny”最終加密,這要歸功于公鑰管理降級為安全的分散數據存儲。最后,它還包括恢復丟失或受損標識符的機制。


    1、簡介——為什么是DPKI


    互聯網促進了全球個人之間的通信和交易,通過諸如電子郵件地址、域名和用戶名等標識符進行的。但誰來控制這些標識符?如何管理?他們之間的安全通信是如何促進的?


    當今,第三方機構(如DNS注冊服務機構,ICANN,X.509證書頒發機構(CA)和社交媒體公司)負責創建和管理在線標識符以及它們之間的安全通信。不幸的是,這種設計顯示出嚴重的可用性和安全缺陷。


    1.1 在線標識符的控制和管理


    在設計DNS和X.509PKIX時,互聯網無法以可靠、分散的方式就注冊管理機構(或數據庫)的狀態達成一致。因此這些系統指定可信第三方來管理標識符和公鑰。幾乎所有的互聯網軟件都依賴這些權威機構。因此,網站域名并不屬于注冊它們的組織(注意:它們屬于第三方,如ICANN、域名注冊機構、證書頒發機構以及任何能夠影響、強制或入侵它們的任何人)。同樣,網站上的用戶名并不屬于這些用戶。


    這些可信第三方(有時縮寫為TTP)作為可破壞的中心故障點,每個都可能危及整個互聯網的完整性和安全性。由于這些標識符的控制權被賦予TTP,因此其可用性也受到影響。這些與可靠性和可用性有關的問題會導致其他問題:


    • 一些公司花費大量資源來解決由行為不當的CA導致安全漏洞;

    • 許多網站仍然不支持HTTPS;

    • 對于大多數網民來說,真正安全和用戶友好的交流仍然遙不可及。 [參考:“為什么約翰尼不能加密”


    由于所有這些原因,DPKI的基本原則是身份屬于它們所代表的實體。這就需要設計一個分散的基礎設施,其中每個身份不是由可信第三方控制,而是由其主要所有者控制。


    1.2 通信的安全性


    通過安全傳遞公鑰來保護通信安全。這些密鑰對應于身份。這些身份所代表的實體(稱為主體)使用相應的私鑰來解密發送給它們的消息,并且證明他們發送了一條消息(通過用私鑰對其進行簽名)。


    PKI系統負責公鑰的安全傳送。但是,常用的X.509 PKI、PKIX破壞了這些密鑰的創建和安全傳遞。


    1.2.1第三方面臨的挑戰:尋找“正確的密鑰”


    在X.509 PKIX中,通過創建由CA簽署的密鑰來保護Web服務。然而,在PKIX中生成和管理密鑰和證書的復雜性導致網絡托管公司自己管理這些密鑰的創建和簽署,而不是將其留給客戶。這從一開始就產生了重大的安全問題,因為它導致私鑰在CpoF(網絡托管公司)的積累,使訪問該密鑰存儲庫的任何人都可能以幾乎無法察覺的方式破壞與這些網站的連接的安全性。


    X.509 PKIX的設計還允許世界各地約1200個CA模擬任何網站。CA的強制或危害的風險使情況進一步復雜化。由于這些危險,用戶無法確定他們的通信是否會被允許進行MITM(中間人攻擊)的欺詐證書所破壞。這些攻擊非常難以發現; 像谷歌這樣生產網頁瀏覽器的公司有時可以識別自己網站上的攻擊,但它們無法阻止對任意網站的攻擊。



    解決方法已經被提出。HPKP是一種IETF標準,它允許網站告訴訪問者在一段時間內“扣住”他們收到的公鑰(忽略任何其他密鑰)。但是這種機制對于網站管理員來說很難使用,因此在實踐中可能不會使用太多。HPKP容易受到“敵意鎖定”的攻擊,如果密鑰需要被合法替換,則存在破壞網站的風險。更糟糕的是,HPKP的某些實現使第三方在沒有用戶同意的情況下覆蓋任意指針的做法變得輕而易舉。


    1.3 PKI的可用性


    即使可以信任權威第三方,目前的PKI系統也存在重大的可用性問題。 Brigham Young大學的一個小組調查了Mailvelope的可用性,Mailvelope是一種瀏覽器擴展,支持通過Gmail等第三方網站進行GPG加密通信。他們的研究表明參與者之間的安全通信嘗試失敗率高達90%。研究發現,公鑰管理是用戶無法正確使用軟件的主要原因。


    TextSecure / Signal - 由愛德華斯諾登認可的安全和信息易用性的安全郵件系統——由于無法順利處理公鑰更改而具有可用性問題。如果用戶刪除并重新安裝應用程序,他們的朋友將被警告其公鑰“指紋”已更改。這種情況與MITM攻擊無法區分,很少有用戶能夠理解或費力去驗證他們是否收到了正確的公鑰。


    1.3.1消息泄露的危險

     

    由于傳統PKI的可用性挑戰,今天大多數網絡交流都是未簽名和未加密的。這在主要的社交網絡上尤其明顯。由于PKI的復雜性,社交網絡不會以任何方式加密用戶的通信,除了依靠PKIX通過HTTPS發送它們。由于消息未經過簽名,因此無法確定用戶是否真正說出他們所說的內容,或顯示的文本是否是數據庫泄露的結果。類似地,用戶通信以能夠訪問這些數據庫的任何人都可以讀取的方式存儲——損害用戶隱私并增加具有巨大責任風險的社交網絡。


    2、DPKI解決網絡信任問題


    答案不是放棄PKI,而是尋找替代方案:DPKI,未來的分散式公鑰基礎設施標準。


    DPKI的目標是確保與PKIX不同,沒有任何一個第三方可以整體損害系統的完整性和安全性。通過技術使信任分散,使地理和政治上不同的實體能夠就共享數據庫的狀態達成共識。DPKI主要關注分散的key-value數據存儲,稱為區塊鏈,但它完全能夠支持其他提供類似或具有更安全屬性的技術。


    被稱為礦工(或驗證節點)的第三方依然存在,但它們的作用僅限于確保區塊鏈(或分布式賬本)的安全性和完整性。這些礦工通過遵循議共識協議得到財政激勵。偏離協議會導致經濟懲罰,而遵守共識協議通常會產生經濟回報。由中本聰創造的比特幣是第一個這樣成功的協議。它基于工作證明,其中“礦工”的能量消耗用于保護數據庫。


    通過在區塊鏈中注冊標識符,可以給主體直接控制和全局可讀標識符(如網站域)的所有權,像任何其他類型的交易一樣。在key-value數據存儲中(注意:在這種情況下,“key”是指數據庫查找字符串,而不是公鑰或私鑰),主體使用標識符作為查找密鑰。


    同時,區塊鏈允許為這些標識符分配任意數據(如公鑰),并允許這些值以安全的方式在全局可讀,而不易受PKIX中可能出現的MITM攻擊的影響。這是通過將標識符的查找值鏈接到該標識符的最新和最正確的公鑰來完成的。


    在該設計中,對標識符的控制將返回給主體。對于任何一個實體來說,破壞整個系統的安全性或者破壞不屬于它們的標識符不再是微不足道的。這就是DPKI如何解決困擾DNS和X.509 PKIX的安全性和可用性問題。


    區塊鏈及其共識協議的完整描述超出了本文的范圍。第5節“標識符和公鑰的安全性”討論了它們的一些安全屬性,附錄“輕客戶端詳細信息”描述了如何從不具有區塊鏈完整副本的移動設備安全地訪問這些區塊鏈中的數據。


    3、DPKI威脅模型


    與傳統的PKI系統一樣,DPKI假定一個持續的活躍對手Mal經常試圖欺騙一個主體Alice信任另一個主體Bob的錯誤密鑰。這可以采取以下形式:發現Bob的錯誤標識符(例如,在twitter.com上找到錯誤的帳戶)或在識別出標識符后緩存錯誤的密鑰。


    假設Mal是一個計算有限的對手,他能夠破壞或強迫集中的可信PKI方欺騙Alice信任錯誤的密鑰。這已經被證明是可行的,例如DigiNotar的案例,以及國家行為者迫使其轄區的CA簽署無效密鑰的情況。此外,假設Mal能夠改變或阻止Alice和Bob之間交換的消息的結合率(小于100%)。這在今天也是可行的,并且通過ISP級別的審查,請求重新定向以及為了破壞現有文件共享技術(如BitTorrent)而執行的的數據包修改攻擊來證明來自已知Tor出口節點的黑洞數據包,并阻止HTTP訪問政治敏感材料。


    鑒于Mal的權力,DPKI的兩個設計原則變得明顯:


    • 如前所述,每個主體必須完全控制其當前的標識符/公鑰綁定。如果只有主體可以修改他們的標識符,那么Mal就會被迫攻擊他希望破壞的每個主體。這與傳統的PKI形成對比,在傳統的PKI中,Mal只需要破解一個CA來欺騙許多主體。

    • 該系統必須完成全有或全無的任何進展:每個主體必須見證其他主體對其標識符/公鑰綁定的更新,否則無人會觀察到任何更新。這如果她檢查某些主體的更新,則需要通過向整個網絡警告其存在來防止Mal可能的網絡級攻擊。這使得針對特定用戶或密鑰對的針對性攻擊成本極高,因為它確保了Mal可以攻擊任何人的唯一方法是立即攻擊每個人。


    正如已經建議的那樣,DPKI通過使用安全的分散式key-value數據存儲庫來實現這些設計原則,以承載標識符和公鑰哈希之間的綁定。有關詳細信息,請參閱第5節“標識符和公鑰的安全性”。


    4、注冊和標識符


    如前幾節所述,DPKI的核心是分散式key-value數據存儲,可用作標識符注冊表,允許主體的公鑰與其標識符安全關聯。只要該注冊仍然有效并且主體能夠保持對其私鑰的控制,任何第三方都不能在不訴諸主體直接脅迫的情況下取得該標識符的所有權。


    DPKI沒有規定應該使用哪種類型的標識符,并且認識到可能的不同方法(例如,用戶名或UUID),這些方法在易用性、持久性、唯一性、安全性和其他屬性方面可能不同。


    對于DPKI使用分散式key-value存儲,必須具有以下屬性:


    • 無權寫入。任何主體都可以廣播符合語法規則的消息。系統中的其他對等體不需要準入控制。這意味著一種分散的共識機制。

    • 叉選規則。鑒于兩個更新歷史,任何主體都可以通過檢查確定哪一個是“最安全的”。


    這些需求可以通過區塊鏈來滿足,例如Namecoin,Ethereum,甚至可能是比特幣(通過Blockstore等技術)。


    4.1 DPKI注冊要求


    在DPKI中處理標識符注冊的方式與DNS不同。雖然注冊商可能存在于DPKI,但他們必須遵守DPKI的目標所產生的若干要求,以確保身份屬于他們所代表的實體:


    • 私鑰必須以分散的方式生成,以確保它們在主體的控制之下(例如,通過主體設備上的開源客戶端軟件)。這意味著明確禁止代表主體在服務器上生成密鑰對的注冊服務。否則將重新出現第一節“簡介 - 為什么是DPKI”中提到的問題。

    • 軟件必須確保主體始終控制其標識符和相應的密鑰。主體可將其標識符的控制權擴展到第三方(例如,為了恢復目的),但這必須始終是需要明確的、知情的決定,而不是軟件的默認、隱含或誤導行為。永遠不要以不安全的方式存儲或傳輸私鑰。

    • 軟件必須盡可能確保不存在允許單個實體在未經其同意的情況下剝奪其標識符的主體的機制。這意味著:


    在區塊鏈內創建了命名空間后(例如,通過以太坊的智能合約),就無法銷毀它。同樣,命名空間不能包含允許任何人使不屬于它們的標識符無效的黑名單機制。


    注冊和更新標識符的規則必須是透明的,并且必須以一種簡單的、難以忽略或誤解的方式(例如先到先得、拍賣)表達給用戶。特別是,如果注冊受到過期政策的約束,則必須明確告知主體,這可能導致主體失去對標識符的控制。


    一旦完成設置,就不能更改命名空間規則以引入更新或更新標識符的任何新限制,否則可以在未經其同意的情況下從主體中控制標識符。同樣,不能修改用于更新或升級標識符的客戶端軟件以引入用于更新或更新標識符的新限制。


    默認情況下,用于管理標識符的軟件必須確保用于創建、更新、恢復或刪除標識符的所有網絡通信都是通過分散的對等機制發送。這同樣是為了確保單個實體(如注冊服務商)無法阻止升級或更新標識符。


    我們推薦DPKI基礎設施也努力確保:


    • 至少有一類標識符一旦正確注冊后就不會過期。

    • 至少有一類中立注冊政策可供所有公眾以及希望提供注冊服務的任何服務提供商使用。


    4.2 DPKI注冊機制


    注冊標識符可能具有與其相關聯的兩種類型的密鑰:用于注冊和更新與標識符相關聯的數據的密鑰對,以及與標識符(子密鑰)相關聯的公鑰。


    建議主體使用子密鑰對消息進行簽名。它們可以直接或間接存儲在數據存儲區中:


    • 直接存儲意味著公鑰本身直接存儲在DPKI數據存儲中。對于大多數區塊鏈來說不太可能,因為一些密鑰非常大,大多數區塊鏈不可能存儲它們或非常昂貴。

    • 間接存儲意味著指針(例如,URI)與公鑰指紋一起存儲(或其本身包含公鑰指紋)。


    5、標識符和公鑰的安全


    在DPKI中,標識符通常是查找密鑰,其映射到只能由具有相應私鑰的實體(或多個實體)修改的值。在這樣的系統中,可能發生的最壞情況是:


    • 發送查找密鑰的過期值響應查找。

    • 標識符的所有者由于審查而無法更新其值,并且一旦標識符到期,他們就會失去所有權。


    通過使用輕客戶端(稍后討論)和審查規避工具,可以解決這些問題。


    雖然可能性極低,但也可能為標識符發送錯誤值。例如,如果通過工作證明保護的區塊鏈具有能夠壓倒誠實節點并且在注冊點之外反轉歷史的對手,則可能發生這種情況。但是系統的所有參與者都能夠檢測到這種攻擊,因為它會導致一條長鏈的孤立。


    這種問題最有可能來自區塊鏈的集中化,這是一個更大的安全問題。


    5.1 防止集中化


    權力下放的程度對系統的安全起著重要作用。集中式系統易受到操縱、審查和危害的影響。它們代表了用戶必須信任的單點故障。當集中式系統出現故障時,所有用戶都失效。


    雖然區塊鏈可能從分散開始,但并不一定會以這種方式結束。這意味著需要一個簡單的衡量標準,告訴我們“分散式數據存儲”是否仍然是分散的:


    你必須敲多少門才能與危害系統用戶?


    我們可以通過計算以下實體來粗略地定義用于測量大多數區塊鏈分散的度量標準(每個實體在集中時對整個系統起單一故障點):


    • “開發者”——控制區塊鏈行為(源代碼)的參與方數量。

    • “節點”——區塊鏈副本的數量,由完整節點的數衡量。

    • “驗證者”——區塊鏈礦工/驗證者的數量,負責創建新區塊和授權交易。


    由于任何一個組織的損害導致系統的損害,我們將區塊鏈的分散定義為:


    Decentralization(Blockchain) = MIN("Devs",“Nodes”, “Validators”)


    更通俗的說,用戶可以通過它提供的服務質量(QoS)來推斷數據存儲的分散。例如,如果用戶注意到他們突然無法更新其標識符,這可能表明由于集中化而導致的審查。


    5.1.1 防止集中化的數據存儲不可知協議


    如果DPKI將特定區塊鏈指定為其“事實上分散式數據存儲”,那么它就會對區塊鏈產生集中壓力。更糟糕的是,如果由于對鏈條缺乏興趣而導致區塊鏈被廢棄,那么使用事實上的數據存儲可能會破壞DPKI。對特定區塊鏈進行編碼支持的軟件開發人員將不得不花費大量精力重寫該軟件以遷移到不同的區塊鏈。同時,可能存在嚴重的安全問題或QoS問題。


    因此,使用不可知協議訪問分散數據庫是確保DPKI整體功能和分散的基本要求。如果不同的數據存儲更好地滿足其需求,則不可知協議使用戶和開發人員能夠更輕松地進行遷移。僅僅存在這種可能性就會產生分散的數據存儲市場,以滿足用戶的需求。


    5.2 安全訪問區塊鏈數據


    大多數終端設備由于所需的資源而無法運行完整節點,那么客戶端如何安全地訪問該區塊鏈?


    一種解決方案是是進行區塊鏈版本的融合,其中一組“區塊鏈公證人”告訴用戶區塊鏈維護的特定對象的狀態,并且客戶端軟件檢查一組可信的公證人之間的一致性協議。然而,這條路線可能會破壞區塊鏈技術的主要目的:消除對可信中介的需求。


    幸運的是,還有另一個技術解決方案:輕客戶端協議。輕客戶端下載區塊鏈的較小部分,足以提供比可信中介提供更強的安全保證,且足夠小以供任何現代設備使用。附錄“輕客戶端詳細信息”中討論了輕客戶端協議如何工作的詳細示例。


    對于缺少輕客戶端的區塊鏈,默認值應該是基于可信節點的隨機抽樣的類似收斂的一致共識。這些節點都應該看到相同的鏈,所以即使其中一個節點不一致,則表明有什么不對勁并且應該報告事件。


    一般來說,這表明采用模塊化設計,設備可以與任意區塊鏈通信并使用該鏈可用的最安全技術。沒有單一技術提供最大的安全性,在這種情況下,最少數量的技術可以組合起來以提供設備維持的最高安全級別。


    5.3 防止審查制度


    最后,DPKI的安全性必須解決審查問題:最終用戶是否可以訪問數據存儲。如果ISP正在審查區塊鏈,則區塊鏈無用。


    諸如網狀網絡、代理和洋蔥路由之類的審查規避技術可用于繞過區塊鏈網絡的審查。


    一個單獨但相關的問題是對區塊鏈引用的數據進行審查,例如當哈希值存儲在標識符的值中,該哈希值表示的數據存儲在別處。在這種情況下,除了在各種不同的存儲機制上查找哈希之外,還可以使用相同的技術(例如,洋蔥路由,代理)[參見IPFS,Blockstore]。


    6、恢復丟失的標識符 - 私鑰管理


    標識符的強大可靠的所有權可以使這些標識符非常有價值。標識符可用于驗證用戶的房門、車等。這些標識符開始代表“王國的鑰匙”。如果這些標識符丟失或受損,那將是災難性的。因此,解決這個問題對DPKI的成功至關重要。


    6.1 兩種形式的丟失


    由于其重要性,必須通過建立在DPKI之上的任何身份系統來最小化主密鑰的使用。事實上這是如Blockchain ID等身份系統已經采用的方法。不使用主密鑰對消息進行簽名,而是為與標識符一起使用的每個新服務創建子密鑰。


    這意味著有兩種類型的密鑰可能會丟失或泄露:


    • 主私鑰,用于控制與標識符關聯的數據。丟失此密鑰可能意味著失去對在線身份的控制權。

    • 子密鑰,鏈接到標識符并存儲為標識符數據的一部分。


    主密鑰和子密鑰的安全性和恢復屬性略有不同。以下是兩種可能性的概述; 對這個主題的完整處理超出了本文的范圍,留待未來進行。


    6.2 恢復主密鑰


    控制標識符的主密鑰的人是標識符的主人。


    有多種機制可用于在分散系統中恢復主密鑰。


    6.2.1 重組主密鑰分片


    通過將主密鑰碎片分發給可信實體,主體可以防止主密鑰丟失。Shamir 秘密共享和閾值簽名是兩種可用于生成和重組這些分片的技術。


    如果發生丟失,主體將向M個實體索要N個主密鑰的分片。N是恢復所需的不同分片數。收到N個分片后,主密鑰將被成功恢復。



    然而,這種技術在主密鑰泄露的情況下對保護主體沒有多大作用。


    6.2.2防止損害


    損害的危險來自于任何時間點擁有主密鑰的單個實體。我們可以通過確保任何單一實體在任何時間點都不擁有主密鑰來解決此問題。


    例如,我們可以設想一個系統,在注冊時,用戶可以選擇他們信任的五個實體來保護他們的身份。這些實體可以由可信任的人、組織或甚至設備來代表。雖然他們像權威一樣行事,但他們從不強迫任何人,而且總是由主體自己挑選。


    然后主密鑰短暫生成,分解成碎片,發送到這些實體,并立即銷毀。可以使用閾值簽名方案來代替Shamir秘密共享,以便永遠不需要在任何給定設備上完全重新組合主密鑰。


    6.2.3使用智能合約


    一些區塊鏈(如以太坊)支持任意計算。在這種情況下,主體可以建立與其偏程度成比例的恢復機制。


    作為一個簡單的例子,像Google這樣的公司可以通過使用智能合約來更新其價值的命名空間來保護他們對區塊鏈域的控制。智能合約只有在接收到由10個實體中的6個簽名的消息時才能夠編碼,或者遵循任何其他任意邏輯。


    6.3 恢復和/或撤銷子密鑰


    與主密鑰的丟失或損害相比,子密鑰泄露或損失不太重要,因為驗證通常使用標識符的當前子密鑰集來完成。如果子密鑰丟失或受損,主密鑰可以簡單地用于安全地生成和替換區塊鏈中的舊子密鑰。但根據它們的使用方式,舊的子密鑰可能仍然需要恢復或撤銷。


    如前所述,主密鑰的重要性意味著通過標識符的子密鑰簽署的消息進行身份驗證,而不是通過主密鑰簽名的消息進行身份驗證。但由于這些消息通常與標識符本身相關聯,因此它們實際上是由主密鑰簽名的(因為主密鑰直接與標識符綁定)。因此,主密鑰仍可用于簽署和傳播撤銷一個或多個歷史子密鑰的消息。


    可以使用先前描述的分片機制來恢復丟失的子密鑰。或者與上述基于分組的恢復方案一樣,主體可以選擇將其標識的權限指定給一個組。該組可以將新子密鑰簽名為屬于標識符,并且能夠簽署指示舊密鑰被泄露并因此被撤銷的消息。


    7、結論


    在本文中,我們討論了如何通過全局可讀的標識符(如網站域名)在線管理身份。我們在互聯網的兩個主要身份管理系統中發現了各種安全和可用性問題:DNS和X.509 PKIX。我們確定這些問題的根源是這些系統的集中性質,他們阻止了標識符代表的實體真正控制它們,從而使第三方有危害其安全的可能性。


    然后,我們展示了如何通過使用分散key-value數據存儲(如區塊鏈)來解決DNS和PKIX的安全性和可用性問題,從而為分散式公鑰基礎結構(DPKI)創建規范。在描述DPKI的屬性時,我們發現DPKI甚至可以在資源受限的移動設備上運行,并且能夠通過保護組織免受私鑰丟失或損害來保護標識符的完整性。


    我們未來的工作是通過像IETF這樣的互聯網標準機構為DPKI制定完整的規范。


    附錄:輕客戶端詳細信息


    信息類型


    輕客戶端想要知道什么樣的信息?


    以下是一些例子


    • 確定創建或首次看到特定記錄的時間

    • 查找當前與帳戶ID關聯的公鑰

    • 查找當前與域名關聯的IP地址和其他數據

    • 了解密鑰的撤銷(沒有指定的查找替換密鑰的過程)

    • 確定開發人員為特定軟件包發布的最新版本


    更通俗的說,我們可以將其分解為三類問題:


    • 證明存在:證明在T時刻發生了特定類型事件。

    • 證明不存在:證明在時間T_1和T_2之間沒有發生特定類型事件。

    • 證明狀態:證明應用程序的“狀態”,可能是復雜的“狀態轉換”規則的結果,應用了許多事務,在時間T等于X。


    這些大致按照難易程度的順序排列。證明存在是最容易的,證明狀態是最難的。


    安全等級


    一般來說,區塊鏈上層的輕客戶端協議可以提供三個級別的安全性:

    • 最高安全性:如果輕客戶端進行查詢,并且任何節點以對該查詢的有效回復進行響應,則(假設我們可以檢測到阻止預防攻擊),輕客戶端可以立即學習(i)查詢的正確答案,或(ii)答復無效,應予以忽略。

    • 1-of-N信任安全性:如果輕客戶端進行查詢,并且它被接受為安全假設,即至少一個誠實的節點在T秒內正確響應,則輕客戶端可以在T秒后學習正確答案,無論有多少離線/故障/拜占庭節點。

    • N/2-of-N 信任安全性:如果輕客戶端進行查詢,它必須選擇信任響應的一組節點(比如100),然后從該列表中隨機抽樣3個左右的節點并要求一致響應。只要所有3個節點不共謀,它就會得到正確的答案。如果任何節點處于脫機狀態,它可以繼續隨機搜索在線節點,直到它檢查到某個節點的上限閾值,并在達到該閾值時發生嚴重故障并出現錯誤。


    作為這些模型如何應用的示例:請考慮“查找與帳戶關聯的當前公鑰”的簡單情況,假設存在一個有權撤銷和替換密鑰的主密鑰(或一組主密鑰)。假設我們有一個區塊鏈,其中只有交易被放置在Merkle樹中。然后,輕客戶端發送請求,要求網絡提供替換公鑰的最近事務的Merkle證明。如果客戶收到答案,它知道:


    • 使用最高安全保證,這是過去某個時刻的有效密鑰。這是“存在證明”問題。

    • 使用1-of-N信任安全保證,這仍然是有效的密鑰。(從理論上講,可能存在更新的替代交易,但100%的合謀或審查可能導致客戶從未了解過它)。這是“不存在證明”問題。


    對于具有更復雜需求的協議(例如,實施復雜的名稱注冊規則),我們被迫處理更普遍的“證明狀態”問題。如果我們使用只跟蹤事務的簡單區塊鏈,客戶端只能通過N / 2-of-N信任安全保證知道答案。但是,如果我們有一個區塊鏈,狀態位于Merkle樹中,那么客戶端可以絕對地學習任何具有最大安全保障的事實。


    由于不同區塊鏈對Merkle證據的使用程度不同,我們提出的解決方案是開發一種抽象協議,通過該協議可以使用不同的區塊鏈(因為沒有單個區塊鏈被100%保證不會有致命缺陷,我們需要一個類似于用于加密算法選擇的抽象模型),并根據區塊鏈的功能自動嘗試提供最佳安全級別。公證人可以作為支持者使用,但是會存在區塊鏈插件,客戶端可以安裝這些插件來支持特定的區塊鏈。根據區塊鏈是否支持針對特定類型問題(存在證明,證明狀態等)的強大安全保證,智能地進行區塊鏈查詢,從而提供盡可能多的安全性。


    輕客戶端協議


    輕客戶端協議通常分兩個階段工作。


    首先,輕客戶端僅下載鏈的一部分,通常是塊頭。對于包含元數據的每個塊,塊頭通常包含非常少量的信息(通常為80-600字節),例如(i)工作隨機數證明; (ii)加密哈希樹的根,例如Merkle樹,包含諸如交易之類的數據; 和(iii)區塊鏈可能跟蹤的應用程序的狀態。


    其次,客戶端使用區塊鏈的基礎共識算法(例如檢查工作證明或證明簽名)來驗證塊頭。之后,客戶端將塊頭視為“可信”。它應用加密技術,將塊頭中的數據用作“根哈希”,從中可以驗證關于存儲在區塊鏈中的其余數據的聲明。


    獲取塊頭


    瘦客戶機端的首要任務是下載并驗證塊頭。假設有一個有效的網絡連接,這很容易。例如,在工作量證明的情況下,客戶端向網絡請求盡可能多的塊頭,網絡回復,并且客戶端檢查以確保每個塊頭具有有效的工作證明,然后確定“最長”的有效塊頭(其中“最長”表示“代表最累積的工作”)。存在更高級的使用跳過列表的協議,以至于客戶端甚至不需要下載每個塊頭,盡管對此的深入討論超出了本文的范圍。


    這種機制面臨的主要挑戰很簡單:如果網絡連接受到威脅會怎樣?潛在地,互聯網服務提供商可以通過審查告訴客戶端關于官方鏈的回復來攻擊用戶,并告知用戶他們自己的分支。通過工作量證明協議,可以通過注意到塊生產率的降低來統計檢測到這一點; 然而,需要更多的研究來確定最佳和最可靠的方法。


    用Merkle樹進行驗證


    在輕客戶端成功接收到一小段“可信”數據后,它必須能夠驗證關于區塊鏈中其余數據的聲明。這依靠Merkle樹。 Merkle樹是一種散列算法,其中大量“數據塊”一次散列幾塊,然后將所產生的散列放入小組中,并且遞歸地散列直至該過程生成一個哈希值,稱為根。這個簡單的描述顯示如下:



    這種方法的好處是可以通過Merkle分支來證明樹中任何單個數據塊的成員資格,Merkle分支是樹中節點的子集,其值用于計算根哈希的過程。


    只有這組節點,輕客戶端就可以驗證樹中特定塊是否具有特定的證據。該方案能夠確保抵碰撞; 為了讓攻擊者欺騙該方案,攻擊者需要打破底層的哈希函數。有許多不同種類的Merkle樹,包括簡單的二叉樹和更高級的設計,如Merkle Patricia樹,允許有效的插入和刪除操作,但基本原理是相同的。

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频