分散式公鑰基礎(chǔ)設(shè)施DPKI是如何促進(jìn)互聯(lián)網(wǎng)安全通信的
今天的互聯(lián)網(wǎng)把在線(xiàn)身份的控制權(quán)交給第三方。電子郵件地址、用戶(hù)名和網(wǎng)站域名是通過(guò)DNS、X.509和社交網(wǎng)絡(luò)借用或“租借”的。這導(dǎo)致了整個(gè)互聯(lián)網(wǎng)范圍內(nèi)嚴(yán)峻的可用性和安全性問(wèn)題。本文描述了一種可能的替代方法,稱(chēng)為分散式公鑰基礎(chǔ)設(shè)施(DPKI),它將在線(xiàn)身份的控制權(quán)返還給他們所屬的實(shí)體。通過(guò)這樣做,DPKI解決了許多困擾傳統(tǒng)公共密鑰基礎(chǔ)設(shè)施(PKI)的可用性和安全性問(wèn)題。DPKI在PKI生命周期的每個(gè)階段都有優(yōu)勢(shì)。它使得在線(xiàn)身份無(wú)許可bootstrapping(自舉:程序語(yǔ)言編譯器用自身的語(yǔ)言及其特性來(lái)編譯自己)成為可能,并提供了更簡(jiǎn)單的更強(qiáng)大的放法創(chuàng)建SSL證書(shū)。在使用中,它可以幫助“Johnny”最終加密,這要?dú)w功于公鑰管理的降級(jí),以確保分散的數(shù)據(jù)存儲(chǔ)。最后,它還包括恢復(fù)丟失或損壞的標(biāo)識(shí)符的機(jī)制。
簡(jiǎn)介——為什么是DPKI
互聯(lián)網(wǎng)促進(jìn)了全球個(gè)人之間的通信和交易,是通過(guò)諸如電子郵件地址、域名和用戶(hù)名等標(biāo)識(shí)符進(jìn)行的。但誰(shuí)來(lái)控制這些標(biāo)識(shí)符?如何管理?他們之間的安全通信是如何促進(jìn)的?
現(xiàn)代社會(huì),第三方機(jī)構(gòu)(如DNS注冊(cè)服務(wù)機(jī)構(gòu),ICANN,X.509證書(shū)頒發(fā)機(jī)構(gòu)(CA)和社交媒體公司)負(fù)責(zé)創(chuàng)建和管理在線(xiàn)標(biāo)識(shí)符以及它們之間的安全通信。不幸的是,這種設(shè)計(jì)顯示出嚴(yán)重的可用性和安全缺陷。
1.1在線(xiàn)標(biāo)識(shí)符的控制和管理
在設(shè)計(jì)DNS和X.509 PKIX時(shí),互聯(lián)網(wǎng)無(wú)法以可靠、分散的方式就注冊(cè)管理機(jī)構(gòu)(或數(shù)據(jù)庫(kù))的狀態(tài)達(dá)成一致。因此這些系統(tǒng)指定可信第三方來(lái)管理標(biāo)識(shí)符和公鑰。現(xiàn)在幾乎所有的互聯(lián)網(wǎng)軟件都依賴(lài)這些可信第三方。因此,網(wǎng)站域名并不屬于注冊(cè)它們的組織(注意:它們屬于第三方,如ICANN,域名注冊(cè)機(jī)構(gòu),證書(shū)頒發(fā)機(jī)構(gòu)以及任何能夠影響、強(qiáng)制或入侵它們的任何人)。同樣,網(wǎng)站上的用戶(hù)名并不屬于這些用戶(hù)。
這些可信第三方(有時(shí)縮寫(xiě)為T(mén)TP)作為可破壞的CPoF,每個(gè)都可能有損害整個(gè)互聯(lián)網(wǎng)的完整性和安全性。 因?yàn)檫@些標(biāo)識(shí)符的控制權(quán)是給予TTP的,所以其可用性也受到損害。這些與可靠性和可用性有關(guān)的問(wèn)題會(huì)導(dǎo)致其他問(wèn)題:
· 一些公司花費(fèi)大量資源來(lái)對(duì)付由不當(dāng)行為造成的安全漏洞;
· 許多網(wǎng)站仍然不支持HTTPS;
· 對(duì)于大多數(shù)網(wǎng)民來(lái)說(shuō),真正安全和用戶(hù)友好的交流仍然遙不可及。
出于所有這些原因,DPKI的基本原則是身份屬于他們所代表的實(shí)體。這就要求設(shè)計(jì)一個(gè)分散的基礎(chǔ)設(shè)施,其中每個(gè)身份不是由可信第三方控制,而是由其所有者控制。
1.2在線(xiàn)交互的安全性
在線(xiàn)交互通過(guò)安全傳遞公鑰得到保護(hù)。這些密鑰對(duì)應(yīng)于身份。這些身份所代表的實(shí)體(稱(chēng)為委托人)使用相應(yīng)的私鑰來(lái)解密發(fā)送給它們的消息,并且證明他們發(fā)送了消息(通過(guò)用私鑰對(duì)其進(jìn)行簽名)。
PKI系統(tǒng)負(fù)責(zé)公鑰的安全傳送。但是,常用的X.509 PKI、PKIX破壞了這些密鑰的創(chuàng)建和安全傳遞。
1.2.1第三方面臨的挑戰(zhàn):尋找“正確的密鑰”
在X.509 PKIX中,通過(guò)創(chuàng)建由CA簽署的密鑰來(lái)保護(hù)Web服務(wù)。然而,在PKIX中生成和管理密鑰和證書(shū)的復(fù)雜性使得網(wǎng)絡(luò)托管公司自己管理這些密鑰的創(chuàng)建和簽署,而不是將其留給客戶(hù)。這從一開(kāi)始就產(chǎn)生了主要的安全問(wèn)題,因?yàn)樗鼘?dǎo)致私鑰在CpoF(網(wǎng)絡(luò)托管公司)的積累,使得有權(quán)訪(fǎng)問(wèn)該密鑰存儲(chǔ)庫(kù)的任何人都可能以幾乎無(wú)法察覺(jué)的方式危害與這些網(wǎng)站的連接的安全性。
X.509 PKIX的設(shè)計(jì)還允許世界各地約1200個(gè)CA模擬任何網(wǎng)站。CA的強(qiáng)制或妥協(xié)的風(fēng)險(xiǎn)使情況進(jìn)一步復(fù)雜化。由于這些危險(xiǎn),用戶(hù)不能確定他們的通信沒(méi)有被允許進(jìn)行MITM(中間人攻擊)的欺詐證書(shū)所破壞。 這些攻擊非常難以發(fā)現(xiàn); 像谷歌這樣的產(chǎn)生網(wǎng)頁(yè)瀏覽器的公司有時(shí)可以識(shí)別他們自己網(wǎng)站上的攻擊,但是它們不能阻止對(duì)任意網(wǎng)站的攻擊。
解決方法已經(jīng)被提出。HPKP是一種IETF標(biāo)準(zhǔn)它允許網(wǎng)站告訴訪(fǎng)問(wèn)者在一段時(shí)間內(nèi)“扣住”他們收到的公鑰(忽略任何其他密鑰)。但是這種機(jī)制對(duì)于網(wǎng)站管理員來(lái)說(shuō)很難使用,因此在實(shí)踐中可能不會(huì)使用太多。HPKP容易受到“敵意鎖定”的影響,并且在合法的情況下,如果密鑰需要被合法替換,則存在破壞網(wǎng)站的風(fēng)險(xiǎn)。更糟糕的是,HPKP的某些實(shí)現(xiàn)使第三方在沒(méi)有用戶(hù)同意的情況下覆蓋任意指針的做法變得輕而易舉。
1.3 PKI的可用性
即使可以信任權(quán)威第三方,目前的PKI系統(tǒng)也存在重大的可用性問(wèn)題。 Brigham Young大學(xué)的一個(gè)小組調(diào)查了Mailvelope的可用性,Mailvelope是一種瀏覽器擴(kuò)展,支持通過(guò)Gmail等第三方網(wǎng)站進(jìn)行GPG加密通信。他們的研究表明參與者之間的安全通信嘗試的失敗率高達(dá)90%。研究發(fā)現(xiàn),公鑰管理是用戶(hù)無(wú)法正確使用軟件的主要原因。
TextSecure / Signal – 由愛(ài)德華斯諾登認(rèn)可的安全和信息易用性的安全郵件系統(tǒng) —由于無(wú)法順利處理公鑰更改而導(dǎo)致可用性問(wèn)題。如果用戶(hù)刪除并重新安裝應(yīng)用程序他們的朋友將被警告其公鑰“指紋”已更改。這種情況與MITM攻擊無(wú)法區(qū)分,很少有用戶(hù)能夠理解或費(fèi)力去驗(yàn)證他們收到了正確的公鑰。
1.3.1消息妥協(xié)的危險(xiǎn)
由于傳統(tǒng)PKI的可用性挑戰(zhàn),今天大多數(shù)網(wǎng)絡(luò)交流都是未簽名和未加密的。這在主要的社交網(wǎng)絡(luò)上尤其明顯。由于PKI的復(fù)雜性,社交網(wǎng)絡(luò)不會(huì)以任何方式加密用戶(hù)的通信,除非通過(guò)HTTPS發(fā)送它們來(lái)依賴(lài)PKIX。由于郵件未經(jīng)過(guò)簽名,因此無(wú)法確定用戶(hù)是否真正說(shuō)出他們所說(shuō)的內(nèi)容,或顯示的文本是否是數(shù)據(jù)庫(kù)泄密的結(jié)果。同樣,用戶(hù)通信的存儲(chǔ)方式使任何有權(quán)訪(fǎng)問(wèn)這些數(shù)據(jù)庫(kù)的人都可以閱讀 – 危害用戶(hù)隱私并給社交網(wǎng)絡(luò)帶來(lái)巨大責(zé)任風(fēng)險(xiǎn)。
2. DPKI解決網(wǎng)絡(luò)信任問(wèn)題
答案不是放棄PKI,而是尋找替代方案:DPKI,未來(lái)的分散式公鑰基礎(chǔ)設(shè)施標(biāo)準(zhǔn)。
DPKI的目標(biāo)是確保與PKIX不同,任何單一的第三方都不可能危及整個(gè)系統(tǒng)的完整性和安全性。通過(guò)技術(shù)使信任分散化,使地理和政治上不同的實(shí)體可以就共享數(shù)據(jù)庫(kù)的狀態(tài)達(dá)成共識(shí)。DPKI主要關(guān)注分散的key-value數(shù)據(jù)存儲(chǔ),稱(chēng)為區(qū)塊鏈,但它完全能夠支持其他提供類(lèi)似或具有更安全屬性的技術(shù)。
被稱(chēng)為礦工(或驗(yàn)證節(jié)點(diǎn))的第三方依然存在,但它們的作用僅限于確保區(qū)塊鏈(或分歩式賬本)的安全性和完整性。這些礦工通過(guò)遵循議一致性協(xié)議得到財(cái)政激勵(lì)。偏離協(xié)議會(huì)導(dǎo)致經(jīng)濟(jì)懲罰,而與協(xié)議的一致性通常會(huì)產(chǎn)生經(jīng)濟(jì)回報(bào)。由中本聰創(chuàng)造的比特幣是第一個(gè)這樣成功的協(xié)議。它基于工作證明,其中“礦工”的能量消耗用于保護(hù)數(shù)據(jù)庫(kù)。
通過(guò)在區(qū)塊鏈中注冊(cè)標(biāo)識(shí)符,可以像任何其他類(lèi)型的交易一樣,授予委托人直接控制和擁有像網(wǎng)站域這樣的全球可讀標(biāo)識(shí)符。在key-value數(shù)據(jù)存儲(chǔ)中(注意:在這種情況下,“key”是指數(shù)據(jù)庫(kù)查找字符串,而不是公鑰或私鑰),委托人使用標(biāo)識(shí)符作為查找密鑰。
同時(shí),區(qū)塊鏈允許將任意數(shù)據(jù)(例如公鑰)分配給這些標(biāo)識(shí)符,并允許這些值以安全的方式在全局可讀,而不易受PKIX中可能出現(xiàn)的MITM攻擊的影響。 這是通過(guò)將標(biāo)識(shí)符的查找值鏈接到該標(biāo)識(shí)符的最新和最正確的公鑰來(lái)完成的。
在該設(shè)計(jì)中,標(biāo)識(shí)符的控制權(quán)返回給委托人。對(duì)于任何一個(gè)實(shí)體來(lái)說(shuō),破壞整個(gè)系統(tǒng)的安全性或者損害不屬于它們的標(biāo)識(shí)符都不再是輕而易舉的。這就是DPKI如何能夠解決困擾DNS和X.509 PKIX的安全性和可用性問(wèn)題。
區(qū)塊鏈及其共識(shí)協(xié)議的完整描述超出了本文的范圍。第5節(jié)“標(biāo)識(shí)符和公鑰的安全性”討論了它們的一些安全屬性,附錄“輕客戶(hù)端詳細(xì)信息”描述了這些區(qū)塊鏈中的數(shù)據(jù)如何從移動(dòng)設(shè)備安全地訪(fǎng)問(wèn),而這些移動(dòng)設(shè)備本身并沒(méi)有完整的區(qū)塊鏈副本。
3. DPKI威脅模型
與傳統(tǒng)的PKI系統(tǒng)一樣,DPKI假定一個(gè)持續(xù)的活躍對(duì)手Mal經(jīng)常試圖欺騙一個(gè)委托人Alice信任另一個(gè)委托人Bob的錯(cuò)誤密鑰。這可以采取發(fā)現(xiàn)Bob的錯(cuò)誤標(biāo)識(shí)符(例如,在twitter.com上找到錯(cuò)誤的帳戶(hù))或一旦知道標(biāo)識(shí)符就緩存錯(cuò)誤的密鑰的形式。
假設(shè)Mal是一個(gè)計(jì)算有限的對(duì)手,他能夠妥協(xié)或迫使集中的可信PKI方欺騙Alice信任錯(cuò)誤的密鑰。這已經(jīng)被證明是可行的,就像DigiNotar的情況一樣,并且在國(guó)家行為者迫使其轄區(qū)的CA簽署無(wú)效密鑰的情況下也是如此。另外,假設(shè)Mal能夠改變或阻止Alice和Bob之間交換的消息的約束分?jǐn)?shù)(小于100%)。 這在今天也是可行的,并且通過(guò)ISP級(jí)審查,通過(guò)請(qǐng)求重新定向以及為了破壞像BitTorrent這樣的現(xiàn)有文件共享技術(shù)而執(zhí)行的分組修復(fù)攻擊,從已知的Tor出口節(jié)點(diǎn)發(fā)送黑洞數(shù)據(jù)包, 并阻止對(duì)政治敏感資料的HTTP訪(fǎng)問(wèn)。
鑒于Mal的權(quán)力,DPKI的兩個(gè)設(shè)計(jì)原則變得明顯:
· 如前所述,每個(gè)委托人必須完全控制其當(dāng)前的標(biāo)識(shí)符/公鑰綁定。如果只有委托人可以修改他們的標(biāo)識(shí)符,那么Mal就不得不攻擊每個(gè)委托人。這與傳統(tǒng)的PKI相反,Mal只需要危害一個(gè)CA來(lái)欺騙許多委托人。
· 該系統(tǒng)必須完成全有或全無(wú)的任何進(jìn)展:每個(gè)主體必須見(jiàn)證其他主體對(duì)其標(biāo)識(shí)符/公鑰綁定的更新,否則無(wú)人會(huì)觀察到任何更新。這是必要的,以防止Mal可能發(fā)生的網(wǎng)絡(luò)級(jí)攻擊,如果她檢查某些主體的更新,則通知整個(gè)網(wǎng)絡(luò)她的存在。這使得針對(duì)特定用戶(hù)或密鑰對(duì)的針對(duì)性攻擊極其昂貴,因?yàn)樗筂al攻擊任何人的唯一方式是立即攻擊所有人。
如前所述,DPKI通過(guò)使用安全的分散式key-value數(shù)據(jù)存儲(chǔ)庫(kù)來(lái)實(shí)現(xiàn)這些設(shè)計(jì)原則,以承載標(biāo)識(shí)符和公鑰之間的綁定。有關(guān)詳細(xì)信息,請(qǐng)參閱第5節(jié)“標(biāo)識(shí)符和公鑰的安全性”。
4. 注冊(cè)和標(biāo)識(shí)符
如前幾節(jié)所述,DPKI的核心是分散式key-value數(shù)據(jù)存儲(chǔ)區(qū),可用作標(biāo)識(shí)符注冊(cè)表,允許委托人的公鑰與其標(biāo)識(shí)符安全關(guān)聯(lián)。只要這種注冊(cè)在有效狀態(tài),并且委托人能夠保持對(duì)其私鑰的控制權(quán),則任何第三方都不能對(duì)該標(biāo)識(shí)符擁有所有權(quán),而不訴諸直接脅迫委托人。
DPKI沒(méi)有指定應(yīng)該使用哪種類(lèi)型的標(biāo)識(shí)符,并且認(rèn)識(shí)到可能有不同的方法(例如,用戶(hù)名或UUID),這些方法在易用性、持久性、唯一性、安全性和其他屬性方面可能不同。
對(duì)于DPKI使用key-value存儲(chǔ),必須具有以下屬性:
· 無(wú)權(quán)寫(xiě)入。任何委托人都可以廣播符合語(yǔ)法規(guī)則的消息。系統(tǒng)中的其他同等權(quán)限的人不需要準(zhǔn)入控制。這意味著分散的共識(shí)機(jī)制。
· 叉選規(guī)則。給定兩個(gè)更新歷史,任何委托人都可以通過(guò)檢查確定哪一個(gè)是最“安全”的。
這些需求可以通過(guò)區(qū)塊鏈來(lái)滿(mǎn)足,例如Namecoin,Ethereum,甚至可能是比特幣(通過(guò)Blockstore等技術(shù))。
4.1 DPKI注冊(cè)要求
在DPKI中標(biāo)識(shí)符注冊(cè)與DNS不同。雖然注冊(cè)商可能存在于DPKI中,但他們必須遵守DPKI的目標(biāo)中出現(xiàn)的幾項(xiàng)要求,以確保身份屬于他們所代表的實(shí)體:
· 私鑰必須以分散的方式生成,以確保其在委托人的控制之下(例如,通過(guò)委托人的設(shè)備上的開(kāi)源客戶(hù)端軟件)。這意味著明確禁止代表委托人在服務(wù)器上生成密鑰對(duì)的注冊(cè)服務(wù)。否則將重新創(chuàng)建§1“簡(jiǎn)介 – 為什么DPKI”中提到的問(wèn)題。
· 軟件必須確保委托人始終控制其標(biāo)識(shí)符和相應(yīng)的密鑰。委托人可以將其標(biāo)識(shí)符的控制權(quán)擴(kuò)展到第三方例如,為了恢復(fù)目的),但這必須始終是需要明確的、知情的決定,而不是軟件的默認(rèn),隱含或誤導(dǎo)行為。永遠(yuǎn)不要以不安全的方式存儲(chǔ)或傳輸私鑰。
· 軟件必須盡最大可能確保沒(méi)有任何機(jī)制能夠允許單一實(shí)體在未經(jīng)其同意的情況下剝奪委托人的標(biāo)識(shí)符。這意味著:
· 一旦在區(qū)塊鏈內(nèi)創(chuàng)建了一個(gè)名稱(chēng)空間(例如,通過(guò)以太坊的智能合約),它就不會(huì)被銷(xiāo)毀。同樣,命名空間不能包含黑名單機(jī)制,這將允許任何人使不屬于它們的標(biāo)識(shí)符失效。
· 注冊(cè)和更新標(biāo)識(shí)符的規(guī)則必須是透明的,并且必須以一種簡(jiǎn)單的、難以忽略或誤解的方式(例如先到先得、拍賣(mài))表達(dá)給用戶(hù)。特別是,如果注冊(cè)受制于到期政策,則必須明確告知委托人,這可能導(dǎo)致委托人失去對(duì)標(biāo)識(shí)符的控制權(quán)。
· 一旦完成設(shè)置,命名空間規(guī)則就不能改變以引入任何新的更新或恢復(fù)標(biāo)識(shí)符的限制,否則將有可能在未經(jīng)其同意的情況下標(biāo)識(shí)符脫離委托人控制。同樣,用于更新或更新標(biāo)識(shí)符的客戶(hù)端軟件也不能被修改以引入用于更新或恢復(fù)標(biāo)識(shí)符的新限制。
· 默認(rèn)情況下,用于管理標(biāo)識(shí)符的軟件必須確保用于創(chuàng)建、更新、恢復(fù)或刪除標(biāo)識(shí)符的所有網(wǎng)絡(luò)通信都是通過(guò)分散的對(duì)等機(jī)制發(fā)送的。 這也是為了確保單個(gè)實(shí)體(如注冊(cè)服務(wù)商)不能阻止標(biāo)識(shí)符被更新或恢復(fù)。
我們推薦DPKI基礎(chǔ)設(shè)施也努力確保:
· 至少有一類(lèi)標(biāo)識(shí)符在正確注冊(cè)后不會(huì)過(guò)期。
· 至少有一類(lèi)中立注冊(cè)政策可供所有公眾以及希望提供注冊(cè)服務(wù)的任何服務(wù)提供商使用。
4.2 DPKI注冊(cè)機(jī)制
注冊(cè)標(biāo)識(shí)符可能有兩種類(lèi)型的密鑰與它們相關(guān)聯(lián):密鑰對(duì)用于注冊(cè)和更新與標(biāo)識(shí)符相關(guān)聯(lián)的數(shù)據(jù)以及與標(biāo)識(shí)符(子密鑰)關(guān)聯(lián)的公鑰。
建議委托人使用子密鑰對(duì)消息進(jìn)行簽名。它們可以直接或間接存儲(chǔ)在數(shù)據(jù)存儲(chǔ)中:
· 直接存儲(chǔ)意味著公鑰本身直接存儲(chǔ)在DPKI數(shù)據(jù)存儲(chǔ)中。對(duì)于大多數(shù)區(qū)塊鏈來(lái)說(shuō)不太可能的,因?yàn)橐恍┟荑€非常大,大多數(shù)區(qū)塊鏈不可能存儲(chǔ)或非常昂貴。
· 間接存儲(chǔ)意味著指針(例如,URI)與公鑰指紋一起存儲(chǔ)(或其本身包含)。
· 標(biāo)識(shí)符和公鑰的安全
在DPKI中,標(biāo)識(shí)符通常是查找密鑰,映射到只能由具有相應(yīng)私鑰的實(shí)體(或多個(gè)實(shí)體)修改的值。在這樣的系統(tǒng)中,可能發(fā)生的最壞情況是:
· 發(fā)送查找鍵的過(guò)期值響應(yīng)查找。
· 標(biāo)識(shí)符的所有者由于審查而無(wú)法更新其值,并且一旦標(biāo)識(shí)符到期,他們就會(huì)失去所有權(quán)。
這些問(wèn)題可以通過(guò)使用輕客戶(hù)端(稍后討論)和審查規(guī)避工具來(lái)解決。
雖然可能性極低,但也有可能為標(biāo)識(shí)符發(fā)送錯(cuò)誤的值。例如,如果由工作證明保護(hù)的區(qū)塊鏈擁有能夠壓倒誠(chéng)實(shí)節(jié)點(diǎn)并在注冊(cè)點(diǎn)之外扭轉(zhuǎn)歷史的對(duì)手,則可能發(fā)生這種情況。但是系統(tǒng)的所有參與者都能夠檢測(cè)到這種攻擊,因?yàn)檫@會(huì)導(dǎo)致一個(gè)非常長(zhǎng)的鏈的孤立。
這類(lèi)問(wèn)題很可能是由于區(qū)塊鏈的集中化引起的,是更大的安全問(wèn)題。
5.1 防止集中化
權(quán)力下放的程度對(duì)系統(tǒng)的安全起著重要作用。中心化系統(tǒng)容易受到操縱、審查和妥協(xié)。它們代表了用戶(hù)必須信任的SPoF。當(dāng)中心化系統(tǒng)停機(jī)時(shí),所有用戶(hù)都失效。
雖然區(qū)塊鏈可能從分散開(kāi)始,但不一定會(huì)以這種方式結(jié)束。這意味著需要一個(gè)簡(jiǎn)單的衡量標(biāo)準(zhǔn),告訴我們“分散式數(shù)據(jù)存儲(chǔ)”是否仍然是分散的:
你必須敲多少門(mén)才能與系統(tǒng)的用戶(hù)達(dá)成妥協(xié)?
我們可以粗略定義衡量大多數(shù)區(qū)塊鏈分散度量的指標(biāo),方法是對(duì)以下實(shí)體進(jìn)行計(jì)數(shù)(當(dāng)整個(gè)系統(tǒng)時(shí)中心化的,每個(gè)實(shí)體作為SPoF):
“開(kāi)發(fā)者” – 控制區(qū)塊鏈行為(源代碼)的參與方數(shù)量。
“節(jié)點(diǎn)” – 區(qū)塊鏈副本的數(shù)量,以完整節(jié)點(diǎn)的數(shù)衡量。
“驗(yàn)證者” – 區(qū)塊鏈采礦者/驗(yàn)證者的人數(shù),他們負(fù)責(zé)創(chuàng)建新塊和授權(quán)交易。
由于任何一個(gè)組織的妥協(xié)導(dǎo)致系統(tǒng)的妥協(xié),我們將區(qū)塊鏈的分散化定義為:
Decentralization(Blockchain) = MIN(“Devs”, “Nodes”, “Validators”)
更通俗的說(shuō),用戶(hù)可以通過(guò)它提供的服務(wù)質(zhì)量(QoS)來(lái)推斷數(shù)據(jù)存儲(chǔ)的分散。例如,如果用戶(hù)注意到他們突然無(wú)法更新他們的標(biāo)識(shí)符,這可能表明由于集中化而導(dǎo)致的審查。
5.1.1防止中心化的數(shù)據(jù)存儲(chǔ)不可知協(xié)議
如果DPKI將特定區(qū)塊鏈指定為其“事實(shí)上分散的數(shù)據(jù)存儲(chǔ)區(qū)”,那么它將會(huì)在該區(qū)塊鏈上施加集中化壓力。更糟糕的是,如果區(qū)塊鏈由于對(duì)鏈條缺乏興趣而被放棄,那么使用事實(shí)上的數(shù)據(jù)存儲(chǔ)可能會(huì)破壞DPKI。對(duì)特定區(qū)塊鏈進(jìn)行編碼支持的軟件開(kāi)發(fā)人員將不得不花費(fèi)大量精力重寫(xiě)該軟件以遷移到不同的區(qū)塊鏈。 同時(shí),可能存在嚴(yán)重的安全問(wèn)題或QoS問(wèn)題。
因此,使用不可知協(xié)議訪(fǎng)問(wèn)分散數(shù)據(jù)庫(kù)是確保整個(gè)DPKI運(yùn)作和下放的基本要求。如果不同的數(shù)據(jù)存儲(chǔ)更好地滿(mǎn)足他們的需求,則不可知協(xié)議使用戶(hù)和開(kāi)發(fā)人員能夠更輕松地進(jìn)行遷移。這種可能性的存在創(chuàng)造了一個(gè)分散的數(shù)據(jù)存儲(chǔ)市場(chǎng),相互競(jìng)爭(zhēng)以滿(mǎn)足用戶(hù)的需求。
5.2 安全訪(fǎng)問(wèn)區(qū)塊鏈數(shù)據(jù)
大多數(shù)終端設(shè)備由于所需的資源而無(wú)法運(yùn)行完整節(jié)點(diǎn),那么客戶(hù)如何安全地訪(fǎng)問(wèn)該區(qū)塊鏈?
一種解決方案是做一個(gè)區(qū)塊鏈版本的集合,其中一組“區(qū)塊鏈公證人”告訴用戶(hù)區(qū)塊鏈維護(hù)的特定對(duì)象的狀態(tài),并且客戶(hù)端軟件檢查一組可信的公證人之間的一致性協(xié)議。這條路線(xiàn)可以說(shuō)是區(qū)塊鏈技術(shù)的主要目的:消除對(duì)可信中介的需求。
幸運(yùn)的是,還有另一個(gè)技術(shù)解決方案:輕客戶(hù)端協(xié)議。輕客戶(hù)端下載較小的區(qū)塊鏈部分,足以提供比受信任中介提供的更強(qiáng)的安全保證,而且足夠小,可供任何現(xiàn)代設(shè)備使用。 附錄“輕客戶(hù)端詳細(xì)信息”中討論了輕客戶(hù)端協(xié)議如何工作的詳細(xì)示例。
對(duì)于沒(méi)有輕客戶(hù)端的區(qū)塊鏈,缺省值應(yīng)該是基于可信節(jié)點(diǎn)的隨機(jī)抽樣的類(lèi)似于Convergence的一致共識(shí)。這些節(jié)點(diǎn)都應(yīng)該看到相同的鏈,所以如果其中一個(gè)節(jié)點(diǎn)不同意,則表明有什么不對(duì)勁并且應(yīng)該報(bào)告事件。
一般來(lái)說(shuō),建議采用模塊化設(shè)計(jì),其中設(shè)備可以任意與區(qū)塊鏈對(duì)話(huà)并使用該鏈可用的最安全的技術(shù)。可能沒(méi)有單一技術(shù)提供最大的安全性,在這種情況下,最少數(shù)量的技術(shù)被結(jié)合起來(lái)以提供設(shè)備維持的最高級(jí)別的安全性。
5.3防止審查
最后,DPKI的安全必須解決審查問(wèn)題:數(shù)據(jù)存儲(chǔ)是否可供最終用戶(hù)訪(fǎng)問(wèn)。 如果ISP正在審查它,區(qū)塊鏈就沒(méi)用了。
審查制度規(guī)避技術(shù),如網(wǎng)狀網(wǎng)絡(luò),代理和洋蔥路由,可以用來(lái)繞過(guò)區(qū)塊鏈網(wǎng)絡(luò)的審查。
一個(gè)獨(dú)立但相關(guān)的問(wèn)題是對(duì)區(qū)塊鏈引用的數(shù)據(jù)進(jìn)行審查,比如當(dāng)一個(gè)哈希值存儲(chǔ)在標(biāo)識(shí)符的值中,而由該哈希值表示的數(shù)據(jù)存儲(chǔ)在別處。在這種情況下,除了在各種不同的存儲(chǔ)機(jī)制上查找散列之外,還可以使用相同的技術(shù)(例如,洋蔥路由,代理)[參見(jiàn)IPFS,Blockstore]。
6. 恢復(fù)丟失的標(biāo)識(shí)符 – 私鑰管理
標(biāo)識(shí)符的強(qiáng)大可靠可以使這些標(biāo)識(shí)符非常有價(jià)值。標(biāo)識(shí)符可以用來(lái)認(rèn)證用戶(hù)到他們房子的門(mén),他們的車(chē)等。這些標(biāo)識(shí)符開(kāi)始代表“王國(guó)的鑰匙”。 如果這些標(biāo)識(shí)符丟失或受損,那將是災(zāi)難性的。 因此,解決這個(gè)問(wèn)題對(duì)DPKI的成功至關(guān)重要。
6.1兩種形式的丟失
由于其重要性,必須通過(guò)建立在DPKI之上的任何身份系統(tǒng)來(lái)最小化對(duì)主密鑰的使用。事實(shí)上這是身份系統(tǒng)已經(jīng)采用的方法,如Blockchain ID。不使用主密鑰對(duì)消息進(jìn)行簽名,而是為每個(gè)使用該標(biāo)識(shí)符的新服務(wù)創(chuàng)建子密鑰。
這意味著有兩種類(lèi)型的密鑰可能會(huì)丟失或泄露:
· 主私鑰,用于控制與標(biāo)識(shí)符關(guān)聯(lián)的數(shù)據(jù)。丟失此密鑰可能意味著失去對(duì)您的在線(xiàn)身份的控制權(quán)。
· 子密鑰,它們被鏈接到標(biāo)識(shí)符并被存儲(chǔ)為標(biāo)識(shí)符數(shù)據(jù)的一部分。
主密鑰和子密鑰的安全性和恢復(fù)屬性稍有不同。以下是兩種可能性的概述; 對(duì)這個(gè)話(huà)題的全面處理超出了本文的范圍,留待未來(lái)進(jìn)行。
6.2 恢復(fù)主密鑰
將主密鑰控制為標(biāo)識(shí)符的人是標(biāo)識(shí)符的主人。
有多種機(jī)制可用于在分散系統(tǒng)中恢復(fù)主密鑰。
6.2.1重組主密鑰碎片
通過(guò)將主密鑰碎片分發(fā)給可信實(shí)體,委托人可以防止主密鑰丟失。 Shamir Secret Sharing和Threshold Signatures是兩種可用于生成和重組這些碎片的技術(shù)。
如果發(fā)生丟失,委托人將向M個(gè)實(shí)體索要N個(gè)主密鑰的碎片。N是恢復(fù)所需的不同碎片的數(shù)量。在收到N個(gè)碎片后,主密鑰將被成功恢復(fù)。
然而,這種技術(shù)在主密鑰泄露的情況下對(duì)保護(hù)委托人沒(méi)有多大作用。
6.2.2防止妥協(xié)
妥協(xié)的危險(xiǎn)來(lái)自單一實(shí)體擁有任何時(shí)間點(diǎn)的主密鑰。我們可以通過(guò)確保任何單一實(shí)體在任何時(shí)間點(diǎn)都不擁有主密鑰來(lái)解決此問(wèn)題。
例如,我們可以設(shè)想一個(gè)系統(tǒng),在注冊(cè)后,用戶(hù)選擇他們信任的五個(gè)實(shí)體來(lái)保護(hù)他們的身份。這些實(shí)體可以由可信任的人、組織或甚至設(shè)備來(lái)代表。雖然他們像權(quán)威一樣行事,但他們從不強(qiáng)迫任何人,而且總是由委托人自己挑選。
然后主密鑰短暫生成,分解成碎片,發(fā)送到這些實(shí)體,并立即銷(xiāo)毀??梢允褂瞄撝岛灻桨竵?lái)代替Shamir Secret Sharing,以便主密鑰不需要在任何給定設(shè)備上完全重新組合。
6.2.3使用智能合約
一些區(qū)塊鏈(如以太坊)支持任意計(jì)算。在這種情況下,委托人可以建立與其偏執(zhí)狂水平成正比的恢復(fù)機(jī)制。
作為一個(gè)簡(jiǎn)單的例子,像Google這樣的公司可以通過(guò)使用智能合約來(lái)更新其價(jià)值的名稱(chēng)空間來(lái)保護(hù)他們對(duì)區(qū)塊鏈域的控制。智能合約只能在接收到由10個(gè)實(shí)體中的6個(gè)簽名的消息時(shí)才能夠編碼,或者遵循任何其他任意邏輯。
6.3恢復(fù)和/或撤銷(xiāo)子密鑰
子密鑰泄露或丟失不如主密鑰泄露或丟失更嚴(yán)重,因?yàn)轵?yàn)證通常使用當(dāng)前標(biāo)識(shí)符的子密鑰集來(lái)完成。如果子密鑰丟失或被破壞,主密鑰可以簡(jiǎn)單地用于在區(qū)塊鏈中安全地生成和替換舊的子密鑰。但根據(jù)它們的使用方式,舊的子密鑰可能仍然需要恢復(fù)或撤銷(xiāo)。
如前所述,主密鑰的重要性意味著通過(guò)標(biāo)識(shí)符的子密鑰簽署的消息來(lái)驗(yàn)證標(biāo)識(shí)符,而不是由主密鑰簽署的消息。但由于這些消息通常與標(biāo)識(shí)符本身相關(guān)聯(lián),所以它們實(shí)際上由主密鑰簽名(因?yàn)橹髅荑€直接與標(biāo)識(shí)符相關(guān)聯(lián))。 因此,主密鑰仍可用于簽署和傳播撤銷(xiāo)一個(gè)或多個(gè)歷史子密鑰的消息。
恢復(fù)丟失的子密鑰可以使用前面描述的分片機(jī)制來(lái)完成?;蛘吲c上述基于分組的恢復(fù)方案一樣,委托人可以選擇將其標(biāo)識(shí)的權(quán)限指定給一個(gè)組。這個(gè)組有能力簽署屬于標(biāo)識(shí)符的新子密鑰,并簽名表示舊密鑰已被泄密并被撤銷(xiāo)的消息。
結(jié)論
在本文中,我們討論了如何通過(guò)全球可讀的標(biāo)識(shí)符(如網(wǎng)站域)在線(xiàn)管理身份。我們?cè)诨ヂ?lián)網(wǎng)的兩個(gè)主要身份管理系統(tǒng)中發(fā)現(xiàn)了各種安全和可用性問(wèn)題:DNS和X.509 PKIX。 我們將這些問(wèn)題的根源確定為這些系統(tǒng)的中心化,他們阻止這些標(biāo)識(shí)符代表的實(shí)體真正控制它們,從而使第三方有危害其安全的可能性。
然后,我們展示了如何通過(guò)使用分散式鍵值數(shù)據(jù)存儲(chǔ)(如區(qū)塊鏈)來(lái)解決DNS和PKIX的安全性和可用性問(wèn)題,以便為分散式公鑰基礎(chǔ)結(jié)構(gòu)(DPKI)創(chuàng)建規(guī)范。在描述DPKI的屬性時(shí),我們發(fā)現(xiàn)DPKI即使在資源受限的移動(dòng)設(shè)備上也能正常工作,并且能夠通過(guò)保護(hù)組織免受私鑰丟失或損害來(lái)保護(hù)標(biāo)識(shí)符的完整性。
我們未來(lái)的工作是通過(guò)像IETF這樣的互聯(lián)網(wǎng)標(biāo)準(zhǔn)機(jī)構(gòu)為DPKI制定完整的規(guī)范。