書名: 區(qū)塊鏈架構(gòu)之美:從比特幣、以太坊、超級賬本看區(qū)塊鏈架構(gòu)設(shè)計作者名: 何昊編著本章字數(shù): 1968字更新時間: 2021-07-23 17:31:10
1.11 PKI體系
公開密鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI),又稱公開密鑰基礎(chǔ)架構(gòu)、公鑰基礎(chǔ)設(shè)施或公鑰基礎(chǔ)架構(gòu)。PKI是軟件和硬件及管理政策與流程組成的基礎(chǔ)架構(gòu),其目的在于有效地對數(shù)字證書進行創(chuàng)造、分配、使用、存儲和撤銷。PKI能夠為所有的網(wǎng)絡(luò)應(yīng)用提供加密和數(shù)字簽名等密碼服務(wù)需要的密鑰和證書。簡單來說,PKI的主要任務(wù)是在開放環(huán)境中為開放性業(yè)務(wù)提供基于非對稱密鑰密碼技術(shù)的一系列安全服務(wù)。
PKI體系是一種安全體系,通過一系列的手段來保證通信雙方的安全可靠,PKI體系建立在公私鑰基礎(chǔ)之上,是實現(xiàn)安全可靠傳遞消息和身份確認的一個通用框架,并不代表某個特定的密碼學(xué)技術(shù)和流程。實現(xiàn)了PKI體系的平臺可以安全可靠地管理網(wǎng)絡(luò)中用戶的密鑰和證書。目前PKI體系包括多個具體規(guī)范和實現(xiàn),知名的有RSA公司的PKCS(Public Key Cryptography Standards)規(guī)范和OpenSSL開源實現(xiàn)。
PKI體系對于區(qū)塊鏈來說并不是必要的。對于公有鏈來說,CA顯然過于中心化,并不符合公有鏈的設(shè)計思想。但是對于聯(lián)盟鏈或私有鏈來說,多個機構(gòu)可以自建CA或接入現(xiàn)有成熟CA,大大提高了區(qū)塊鏈系統(tǒng)的安全性,也易于對鏈上數(shù)據(jù)進行審計和監(jiān)管。基于這些優(yōu)勢,聯(lián)盟鏈大多都采用PKI體系,其中典型的例子是超級賬本(Hyperledger Fabric)。
PKI體系通過CA將用戶的個人身份與公鑰鏈接在一起,對于每個證書中心來說,用戶的身份必須是唯一的。鏈接關(guān)系由注冊和發(fā)布過程確定,鏈接關(guān)系可以由CA的各種軟件或在人為監(jiān)督下完成。PKI體系如圖1-6所示。
節(jié)點1:被稱為訂閱人或最終實體,是指那些需要證書來提供安全服務(wù)的團體或服務(wù)端節(jié)點。
登記機構(gòu)(Registration Authority,RA):主要完成一些證書簽發(fā)的相關(guān)管理工作。例如,RA首先會對用戶進行必要的身份驗證,然后才會去找CA簽發(fā)證書。在某些情況下,當CA希望在用戶附近建立一個分支機構(gòu)時(如在不同的國家建立當?shù)氐怯浿行模覀円卜QRA為本地登記機構(gòu)(Local Registration Authority,LRA)。實際上,很多CA也執(zhí)行RA的職責。RA確保公鑰和個人身份鏈接,可以防止抵賴。

圖1-6 PKI體系
證書簽名申請(Certificate Signing Request,CSR):一種包含證書簽發(fā)時所需的公鑰、組織信息、個人信息(域名)等資料的文件,需要特別說明的是CRS不含私鑰信息。
證書頒發(fā)機構(gòu)(Certification Authority,CA):是指雙方都信任的證書頒發(fā)機構(gòu)。CA通過線上、線下等多種手段驗證申請者提供信息的真實性,如組織是否存在、企業(yè)是否合法、是否擁有域名的所有權(quán)等,待確認申請者的身份之后再簽發(fā)證書。同時,CA會在線提供其所簽發(fā)證書的最新吊銷信息,這樣信賴方就可以驗證證書是否仍然有效。
證書(Certificate)包含申請者公鑰、申請者的組織信息和個人信息、CA的信息、有效期、證書序列號等信息的明文,同時包含一個簽名(使用散列函數(shù)計算公開的明文信息的信息摘要,然后采用CA的私鑰對信息摘要進行加密,此密文即簽名)。簡單來說,證書=公鑰+申請者與頒發(fā)者信息+簽名。
節(jié)點2:也被稱為證書的信賴方(Relying Party),是指證書的使用者,一般是指那些需要證書驗證的網(wǎng)頁瀏覽器、其他程序及操作系統(tǒng)。信賴方通過維護可信自簽名證書庫來執(zhí)行驗證,這些證書庫中包含某些CA的最終可信證書(信任密鑰)。更廣泛地說,信賴方是指那些需要通過證書在互聯(lián)網(wǎng)上進行安全通信的最終用戶。用戶接收到證書后,讀取證書中的相關(guān)明文信息,采用相同的散列函數(shù)計算得到信息摘要,然后利用對應(yīng)CA的公鑰解密簽名數(shù)據(jù),對比證書的信息摘要,如果一致,則可以確認證書的合法性。驗證證書合法后,還要去查詢證書的吊銷情況。證書超出有效期后會作廢,或者用戶可以主動向CA申請吊銷某證書文件。由于CA無法強制收回已經(jīng)頒發(fā)出去的證書,因此,為了實現(xiàn)證書的作廢,往往還需要維護一個吊銷證書列表(Certificate Revocation List,CRL),用于記錄已經(jīng)吊銷的證書序列號。
證書吊銷列表:一個單獨的文件。該文件包含CA已經(jīng)吊銷的證書序列號(唯一)與吊銷日期,同時該文件包含生效日期和下次更新該文件的時間,當然該文件必然包含CA私鑰的簽名以驗證文件的合法性。證書中一般會包含一個URL地址,通知使用者去哪里下載對應(yīng)的CRL以校驗證書是否吊銷。這種吊銷方式的優(yōu)點是不需要頻繁更新,但是不能及時吊銷證書。因為CRL更新時間一般是幾天,這期間可能已經(jīng)造成了極大損失。
為了方便同步CRL信息,IETF提出了在線證書狀態(tài)協(xié)議(Online Certificate Status Protocol,OCSP):一個實時查詢證書是否吊銷的方式。請求者發(fā)送證書的信息并請求查詢,服務(wù)器返回正常、吊銷或未知中的任何一個狀態(tài)。證書中一般也會包含一個OCSP的URL地址,要求查詢服務(wù)器是否具有良好的性能。部分CA或大部分的CA自簽名證書都是未提供CRL地址或OCSP的,這對于吊銷證書會是一件非常麻煩的事情。
在一個依賴PKI體系的區(qū)塊鏈中,每個節(jié)點既作為數(shù)字證書的訂閱人,又作為數(shù)字證書的信賴方,為其他節(jié)點提供安全服務(wù)的同時信賴其他節(jié)點。
在以超級賬本為代表的聯(lián)盟鏈中依賴PKI體系實現(xiàn)區(qū)塊鏈網(wǎng)絡(luò)的節(jié)點證書的管理,以此來達到對網(wǎng)絡(luò)節(jié)點進行準入的目的。在超級賬本項目中,既允許啟動超級賬本項目提供的Fabric CA,又允許和用戶已有的CA系統(tǒng)進行結(jié)合。
- iOS 9 Game Development Essentials
- 無代碼編程:用云表搭建企業(yè)數(shù)字化管理平臺
- arc42 by Example
- 精通搜索分析
- 神經(jīng)網(wǎng)絡(luò)編程實戰(zhàn):Java語言實現(xiàn)(原書第2版)
- MySQL數(shù)據(jù)庫管理與開發(fā)實踐教程 (清華電腦學(xué)堂)
- The DevOps 2.4 Toolkit
- Mastering Backbone.js
- Advanced UFT 12 for Test Engineers Cookbook
- OpenCV Android Programming By Example
- 邊玩邊學(xué)Scratch3.0少兒趣味編程
- 數(shù)字媒體技術(shù)概論
- R語言實戰(zhàn)(第2版)
- MongoDB Administrator’s Guide
- 計算思維與Python編程