DPKI:利用區塊鏈消除中心化PKI的缺點

DPKI:利用區塊鏈消除中心化PKI的缺點

眾所周知,數位憑證技術是常用的輔助工具之一,沒有它,開放網路中的資料保護就不可能實現。 然而,眾所周知,該技術的主要缺點是對頒發數位憑證的中心的無條件信任。 ENCRY 技術與創新總監 Andrey Chmora 提出了一種新的組織方法 公鑰基礎設施 (公鑰基礎設施, PKI),這將有助於消除當前的缺點,並使用分散式帳本(區塊鏈)技術。 但首先要說的是。

如果您熟悉目前的公鑰基礎設施的工作原理並了解其主要缺點,則可以跳到我們下面建議更改的內容。

什麼是數位簽章和憑證?網路上的互動總是涉及資料傳輸。 確保資料安全傳輸符合我們所有人的利益。 但什麼是安全? 最受歡迎的安全服務是機密性、完整性和真實性。 為此,目前使用非對稱加密方法或使用公鑰的加密方法。

讓我們從以下事實開始:要使用這些方法,互動主體必須擁有兩個單獨的配對金鑰 - 公鑰和秘密。 在他們的幫助下,我們提供了上面提到的安全服務。

資訊傳輸的保密性如何實現? 在發送資料之前,發送訂戶使用接收者的公鑰對開放資料進行加密(密碼轉換),而接收者使用配對的金鑰對接收到的密文進行解密。

DPKI:利用區塊鏈消除中心化PKI的缺點

如何實現傳輸訊息的完整性和真實性? 為了解決這個問題,創建了另一種機制。 開放資料未加密,但應用加密雜湊函數的結果 - 輸入資料序列的「壓縮」影像 - 以加密形式傳輸。 這種雜湊的結果稱為“摘要”,並使用發送訂閱者(“見證人”)的金鑰進行加密。 加密摘要的結果是獲得數位簽章。 它與明文一起傳送給接收訂戶(「驗證者」)。 他解密證人公鑰上的數位簽名,並將其與應用加密雜湊函數的結果進行比較,驗證者根據收到的開放資料獨立計算該函數。 如果它們匹配,則表示資料是由發送訂戶以真實且完整的形式傳輸的,並且未被攻擊者修改。

DPKI:利用區塊鏈消除中心化PKI的缺點

大多數處理個人資料和支付資訊的資源(銀行、保險公司、航空公司、支付系統以及稅務服務等政府入口網站)都積極使用非對稱加密方法。

數位證書與它有什麼關係? 這很簡單。 第一個和第二個過程都涉及公鑰,由於它們起著核心作用,因此確保金鑰實際上屬於發送者(在簽章驗證的情況下為見證人)或接收者,而不是屬於接收者,這一點非常重要。替換為攻擊者的鑰匙。 這就是為什麼存在數位憑證來確保公鑰的真實性和完整性。

註:公鑰的真實性和完整性的確認方式與公共資料的真實性和完整性完全相同,即使用電子數位簽章(EDS)。
數位憑證從哪裡來?受信任的憑證授權單位或憑證授權單位 (CA) 負責核發和維護數位憑證。 申請人向CA申請頒發證書,在註冊中心(CR)進行身份驗證,並收到CA頒發的證書。 CA 保證憑證中的公鑰完全屬於為其頒發憑證的實體。

如果您不確認公鑰的真實性,那麼攻擊者在傳輸/儲存該金鑰時可以用自己的金鑰替換它。 如果發生替換,攻擊者將能夠解密發送訂閱者傳輸給接收訂閱者的所有內容,或自行決定更改開放資料。

只要非對稱加密可用,就可以使用數位憑證。 最常見的數位證書之一是 SSL 證書,用於透過 HTTPS 協定進行安全通訊。 在不同司法管轄區註冊的數百家公司參與頒發 SSL 憑證。 主要份額集中在五到十個大型可信中心:IdenTrust、Comodo、GoDaddy、GlobalSign、DigiCert、CERTUM、Actalis、Secom、Trustwave。

CA和CR是PKI的組成部分,PKI還包括:

  • 開啟目錄 – 提供數位憑證安全儲存的公共資料庫。
  • 證書吊銷清單 – 一個公共資料庫,提供已撤銷公鑰的數位憑證的安全儲存(例如,由於配對私鑰的洩漏)。 基礎設施主體可以獨立存取該資料庫,也可以使用專門的線上認證狀態協定(OCSP),這簡化了驗證過程。
  • 憑證用戶 – 已與 CA 簽訂使用者協議並根據憑證中的公鑰驗證數位簽章和/或加密資料的 PKI 服務主體。
  • 訂閱者 – 擁有與憑證中的公鑰配對的金鑰並已與 CA 簽訂訂戶協議的 PKI 主體。 訂戶可以同時是憑證的使用者。

因此,公鑰基礎設施的可信任實體(包括 CA、CR 和開放目錄)負責:

1、核實申請人身分的真實性。
2. 分析公鑰憑證。
3、為身分可靠確認的申請人頒發公鑰憑證。
4. 變更公鑰憑證的狀態。
5. 提供有關公鑰憑證目前狀態的資訊。

PKI 的缺點是什麼?PKI 的根本缺陷是可信賴實體的存在。
使用者必須無條件信任CA和CR。 但是,實踐表明,無條件的信任會帶來嚴重的後果。

過去十年來,該領域發生了幾起與基礎設施脆弱性相關的重大醜聞。

— 2010 年,Stuxnet 惡意軟體開始在線上傳播,使用從 RealTek 和 JMicron 竊取的數位憑證進行簽署。

- 2017年,Google指控賽門鐵克頒發大量偽造證書。 當時,賽門鐵克是產量最大的 CA 之一。 在Google Chrome 70瀏覽器中,已於1年2017月XNUMX日之前停止支援該公司及其附屬中心GeoTrust和Thawte頒發的憑證。

CA 受到損害,結果每個人都受到影響——CA 本身以及用戶和訂戶。 對基礎設施的信心受到削弱。 另外,數位證書在政治衝突的背景下可能會被封鎖,這也會影響許多資源的運作。 這正是俄羅斯總統政府幾年前所擔心的事情,他們在 2016 年討論了創建國家認證中心的可能性,該中心將為 RuNet 上的網站頒發 SSL 憑證。 目前的情況是,即使是俄羅斯的國家入口網站 由美國公司 Comodo 或 Thawte(賽門鐵克的子公司)頒發的數位證書。

還有一個問題——問題 使用者的主要身份驗證(身份驗證)。 如何在沒有直接個人接觸的情況下識別已聯繫 CA 請求頒發數位憑證的使用者? 現在,根據基礎設施的能力,可以根據具體情況解決這個問題。 從公開登記冊中獲取一些資訊(例如,有關請求證書的法人實體的資訊);如果申請人是個人,則可以使用銀行辦事處或郵局,並使用身分證件(例如護照)確認其身分。

以冒充為目的而偽造憑證的問題是一個根本問題。 讓我們注意到,由於資訊理論的原因,這個問題沒有完整的解決方案:如果沒有先驗的可靠訊息,就不可能確認或否認特定主題的真實性。 通常,為了進行驗證,有必要出示一套證明申請人身分的文件。 有許多不同的驗證方法,但沒有一種方法可以完全保證文件的真實性。 因此,申請人身分的真實性也無法得到保證。

如何消除這些缺點呢?如果 PKI 目前狀態下的問題可以用中心化來解釋,那麼可以合理地假設去中心化將有助於部分消除已發現的缺點。

去中心化並不意味著存在可信實體 - 如果您創建 去中心化的公鑰基礎設施 (去中心化公鑰基礎設施, DPKI),那麼 CA 和 CR 都不需要。 我們放棄數位憑證的概念,使用分散式註冊表來儲存公鑰資訊。 在我們的例子中,我們將寄存器稱為線性資料庫,由使用區塊鏈技術連結的各個記錄(區塊)組成。 我們將引入「通知」的概念來取代數位憑證。

在擬議的 DPKI 中,接收、驗證和取消通知的流程如下:

1. 每位申請人在註冊時填寫表格,獨立提交通知申請,然後建立儲存在專門池中的交易。

2. 有關公鑰的資訊以及所有者的詳細資訊和其他元資料儲存在分散式註冊表中,而不是儲存在數位憑證中,而在集中式 PKI 中,數位憑證的頒發由 CA 負責。

3. 申請人身分真實性的驗證是由DPKI使用者社群共同完成的事後驗證,而非CR。

4. 只有此類通知的所有者才能更改公鑰的狀態。

5.任何人都可以存取分散式帳本並檢查公鑰的當前狀態。

注意:乍一看,社區對申請人身分的驗證似乎並不可靠。 但我們必須記住,如今所有數位服務的用戶都不可避免地留下數位足跡,而這個過程只​​會繼續獲得動力。 法人實體的開放電子登記冊、地圖、地形圖像數位化、社交網路——所有這些都是公開可用的工具。 它們已經在記者和執法機構的調查過程中成功使用。 例如,只要回憶Bellingcat或聯合調查小組JIT的調查就足夠了,該小組正在研究馬來西亞波音飛機墜毀的情況。

那麼去中心化的公鑰基礎設施在實務上如何運作呢? 讓我們詳細討論一下技術本身的描述,我們 2018年獲得專利 我們理所當然地將其視為我們的專業知識。

想像一下,某個所有者擁有許多公鑰,其中每個密鑰都是儲存在註冊表中的特定交易。 在沒有 CA 的情況下,您如何理解所有金鑰都屬於該特定所有者? 為了解決這個問題,創建了一個零交易,其中包含有關所有者及其錢包的資訊(從中扣除將交易放入註冊表的佣金)。 空交易是一種“錨”,後續帶有公鑰資料的交易將附加到該“錨”上。 每個這樣的事務都包含一個專門的資料結構,或者換句話說,一個通知。

通知是一組結構化數據,由功能欄位組成,包括有關所有者公鑰的信息,其持久性透過放置在分散式註冊表的關聯記錄之一中來保證。

下一個邏輯問題是零交易是如何形成的? 空交易與後續交易一樣,是六個資料欄位的聚合。 在零交易的形成過程中,涉及錢包的金鑰對(公鑰和配對金鑰)。 這對密鑰在用戶註冊錢包時出現,將從中扣除在註冊表中放置零交易以及隨後進行通知操作的佣金。

DPKI:利用區塊鏈消除中心化PKI的缺點

如圖所示,依序應用SHA256和RIPEMD160雜湊函數產生錢包公鑰摘要。 這裡RIPEMD160負責資料的緊湊表示,其寬度不超過160位。 這很重要,因為註冊表不是一個廉價的資料庫。 公鑰本身輸入到第五個欄位。 第一個欄位包含與前一個交易建立連線的資料。 對於零交易,該欄位不包含任何內容,這將其與後續交易區分開來。 第二個欄位是用於檢查交易連通性的資料。 為了簡潔起見,我們將第一個和第二個欄位中的資料分別稱為「連結」和「檢查」。 這些欄位的內容是透過迭代哈希產生的,如下圖連結第二個和第三個交易所示。

DPKI:利用區塊鏈消除中心化PKI的缺點

前五個欄位的資料透過電子簽名進行認證,電子簽名是使用錢包的金鑰產生的。

就這樣,空交易被發送到池中,並在驗證成功後輸入註冊表。 現在您可以將以下交易「連結」到它。 讓我們考慮一下除零以外的交易是如何形成的。

DPKI:利用區塊鏈消除中心化PKI的缺點

首先引起您注意的可能是大量的密鑰對。 除了已經熟悉的錢包密鑰對之外,還使用普通密鑰對和服務密鑰對。

普通的公鑰是一切的開始。 此密鑰涉及外部世界展開的各種程序和流程(銀行和其他交易、文檔流等)。 例如,普通金鑰對中的金鑰可用於產生各種文件(付款訂單等)的數位簽名,而公鑰可用於在隨後執行這些指令時驗證該數位簽名,前提是它已驗證。

服務對發布給註冊的DPKI主體。 這對的名稱與其用途相對應。 請注意,在形成/檢查零交易時,不使用服務金鑰。

讓我們再次闡明這些鍵的用途:

  1. 錢包密鑰用於產生/驗證空交易和任何其他非空交易。 錢包的私鑰只有錢包的擁有者知道,他也是許多普通公鑰的擁有者。
  2. 普通公鑰的用途與在集中式 PKI 中為其頒發憑證的公鑰類似。
  3. 服務密鑰對屬於DPKI。 金鑰頒發給註冊實體,並在為交易(零交易除外)產生數位簽章時使用。 公用用於在將交易發佈到註冊表之前驗證交易的電子數位簽章。

因此,有兩組鍵。 第一個包括服務密鑰和錢包密鑰 - 它們僅在 DPKI 上下文中有意義。 第二組包括普通金鑰 - 它們的範圍可能有所不同,並由使用它們的應用程式任務決定。 同時DPKI保證了普通公鑰的完整性和真實性。

注意:服務密鑰對可能為不同的 DPKI 實體所知。 例如,對每個人來說可能都是一樣的。 正是由於這個原因,在產生每筆非零交易的簽名時,都會使用兩個密鑰,其中之一是錢包密鑰——只有錢包的所有者知道,他也是許多普通錢包的所有者公鑰。 所有按鍵都有自己的意義。 例如,始終可以證明交易是由註冊的 DPKI 主體輸入註冊表的,因為簽名也是在秘密服務金鑰上產生的。 並且不可能存在濫用行為,例如 DOS 攻擊,因為所有者為每筆交易付費。

零一之後的所有交易都以類似的方式形成:公鑰(不是零交易情況下的錢包,而是來自普通金鑰對)透過兩個雜湊函數 SHA256 和 RIPEMD160 運作。 第三字段的資料就是這樣形成的。 第四個欄位包含附帶資訊(例如,有關當前狀態、到期日、時間戳記、所使用的加密演算法的識別碼等的資訊)。 第五個欄位包含服務金鑰對中的公鑰。 在它的幫助下,數位簽名將被檢查,因此它將被複製。 讓我們證明這種方法的必要性。

回想一下,交易被輸入到池中並儲存在那裡,直到被處理。 儲存在池中會帶來一定的風險—交易資料可能被偽造。 所有者使用電子數位簽名來驗證交易資料。 用於驗證該數位簽章的公鑰在交易欄位之一中明確指示,並隨後輸入註冊表中。 交易處理的特殊性在於,攻擊者能夠自行更改數據,然後使用他的金鑰對其進行驗證,並指示配對的公鑰以驗證交易中的數位簽章。 如果僅透過數位簽章來確保真實性和完整性,那麼這種偽造行為將不會被注意到。 然而,如果除了數位簽章之外,還有一個額外的機制來確保所儲存資訊的歸檔和持久性,則可以偵測到偽造。 為此,只需將所有者的真實公鑰輸入註冊表即可。 讓我們解釋一下這是如何工作的。

讓攻擊者偽造交易資料。 從金鑰和數位簽章的角度來看,可以有以下選項:

1. 攻擊者將自己的公鑰放入交易中,而所有者的數位簽章保持不變。
2. 攻擊者在其私鑰上創建數位簽名,但保持所有者的公鑰不變。
3. 攻擊者在其私鑰上創建數位簽名,並將配對的公鑰放入交易中。

顯然,選項1和2是沒有意義的,因為它們在數位簽章驗證過程中總是會被偵測到。 只有選項 3 才有意義,如果攻擊者在自己的密鑰上形成數位簽名,那麼他被迫在交易中保存與所有者的公鑰不同的配對公鑰。 這是攻擊者強加偽造資料的唯一方法。

我們假設所有者有一對固定的金鑰 - 私鑰和公鑰。 使用該對中的金鑰透過數位簽章來驗證數據,並且公鑰在交易中指示。 我們還假設該公鑰先前已輸入註冊表並且其真實性已得到可靠驗證。 然後,交易中的公鑰與註冊表中的公鑰不對應的事實將表明偽造。

我們總結一下。 在處理擁有者的第一筆交易資料時,需要驗證輸入註冊表的公鑰的真實性。 為此,請從註冊表中讀取金鑰並將其與安全邊界(相對不易受到攻擊的區域)內所有者的真實公鑰進行比較。 如果金鑰的真實性得到確認,並且在放置時保證其持久性,則透過將後續交易中的金鑰與註冊表中的金鑰進行比較,可以輕鬆確認/反駁該金鑰的真實性。 換句話說,註冊表中的密鑰用作​​參考樣本。 所有其他所有者交易均以類似方式處理。

交易透過電子數位簽章進行認證 - 這就是需要金鑰的地方,而且不是一個,而是同時兩個 - 服務金鑰和錢包金鑰。 由於使用了兩個金鑰,確保了必要的安全等級——畢竟,服務金鑰可以為其他使用者所知,而錢包的金鑰只有普通金鑰對的擁有者知道。 我們將這種兩密鑰簽章稱為「合併」數位簽章。

非空交易的驗證是使用兩個公鑰執行的:錢包和服務金鑰。 驗證過程可以分為兩個主要階段:第一個是檢查錢包公鑰的摘要,第二個是檢查交易的電子數位簽名,這是使用兩個金鑰形成的相同的綜合簽名(錢包和服務) 。 如果確認數位簽章的有效性,則經過額外驗證後,交易將輸入暫存器。

DPKI:利用區塊鏈消除中心化PKI的缺點

可能會出現一個邏輯問題:如何檢查一筆交易是否屬於以零交易形式「根」的特定鏈? 為此,驗證過程又補充了一個階段──連結性檢查。 這是我們需要前兩個欄位的資料的地方,到目前為止我們已經忽略了這些資料。

假設我們需要檢查第 3 筆交易是否確實發生在第 2 筆交易之後。 為此,使用組合雜湊方法,對 2 號交易的第三、第四和第五欄位的資料計算雜湊函數值。 然後執行來自事務號3的第一字段的資料和先前獲得的來自事務號2的第三、第四和第五字段的資料的組合雜湊函數值的串聯。 這一切也是透過兩個雜湊函數SHA256和RIPEMD160來運作的。 如果接收到的值與交易 2 的第二個欄位中的資料匹配,則檢查通過並確認連接。 下圖中更清楚地顯示了這一點。

DPKI:利用區塊鏈消除中心化PKI的缺點
DPKI:利用區塊鏈消除中心化PKI的缺點

一般來說,產生通知並將其輸入暫存器的技術看起來與此完全相同。 下圖直觀地展示了形成通知鏈的過程:

DPKI:利用區塊鏈消除中心化PKI的缺點

在本文中,我們不會詳細討論毫無疑問存在的細節,而是回到討論去中心化公鑰基礎設施的想法本身。

因此,由於申請人本人提交了通知註冊申請,通知的註冊申請不是儲存在 CA 資料庫中,而是儲存在註冊表中,因此應考慮 DPKI 的主要架構元件:

1. 有效通知註冊(RDN)。
2. 撤銷通知登記冊 (RON)。
3. 暫停通知登記(RPN)。

有關公鑰的資訊以雜湊函數值的形式儲存在 RDN/RON/RPN 中。 還值得注意的是,當有關普通公鑰的狀態(撤銷、暫停等)的資訊輸入到註冊表中時,這些可以是不同的註冊表,也可以是不同的鏈,甚至可以是作為單一註冊表的一部分的一條鏈。此資料結構的第四個欄位的形式為對應的代碼值。 DPKI 的架構實作有多種不同的選擇,其中一種或另一種的選擇取決於多種因素,例如用於儲存公鑰的長期記憶體的成本等最佳化標準。

因此,DPKI 即使不是更簡單,至少在架構複雜性方面也可以與集中式解決方案相提並論。

主要問題仍然是—— 哪個註冊表適合實施該技術?

對註冊表的主要要求是能夠產生任何類型的交易。 分類帳最著名的例子是比特幣網路。 但在實現上述技術時,會出現一定的困難:現有腳本語言的限制、缺乏處理任意資料集的必要機制、產生任意類型交易的方法等等。

我們 ENCRY 試圖解決上述問題並開發了一個註冊表,我們認為該註冊表具有許多優點,即:

  • 支援多種類型的交易:它既可以交換資產(即執行金融交易),也可以創建任意結構的交易,
  • 開發人員可以使用專有的程式語言 PrismLang,它在解決各種技術問題時提供了必要的靈活性,
  • 提供了一種處理任意資料集的機制。

如果我們採用簡化的方法,則會發生以下操作序列:

  1. 申請人在DPKI註冊並收到數位錢包。 錢包地址是錢包公鑰的哈希值。 錢包的私鑰只有申請者知道。
  2. 註冊主體有權存取服務金鑰。
  3. 主體產生零交易並使用錢包的金鑰透過數位簽章對其進行驗證。
  4. 如果形成的交易不為零,則使用兩個金鑰(錢包和服務金鑰)透過電子數位簽章進行認證。
  5. 主體向池中提交交易。
  6. ENCRY網路節點從池中讀取交易並檢查數位簽章以及交易的連接性。
  7. 如果數位簽章有效且連線得到確認,則它準備將交易輸入暫存器。

這裡,註冊表充當分散式資料庫,儲存有關有效、取消和暫停通知的資訊。

當然,去中心化並不是萬能的。 主用戶認證的根本問題並沒有在任何地方消失:如果目前對申請人的驗證是由CR進行的,那麼在DPKI中建議將驗證委託給社區成員,並利用財務動機來刺激活動。 開源驗證技術是眾所周知的。 這種驗證的有效性已在實踐中得到證實。 讓我們再次回顧一下線上出版物 Bellingcat 進行的一系列備受矚目的調查。

但總的來說,出現了以下情況:DPKI 是糾正(如果不是全部的話)集中式 PKI 的許多缺點的機會。

訂閱我們的 Habrablog,我們計劃繼續積極報導我們的研發,並關注 推特,如果您不想錯過有關 ENCRY 項目的其他新聞。

來源: www.habr.com

添加評論