密碼學技術是信息技術的基石,區塊鏈中大量使用了現代信息安全和密碼學的技術成果,主要包括:哈希算法、對稱加密、非對稱加密、數字簽名、數字證書等。哈希算法解決了信息完整性驗證問題,對稱算法提高了加密運算效率,非對稱算法解決了對稱密鑰傳遞問題,數字證書則為公鑰所有者背書,解決了公鑰持有者的證明問題,PKI/CA 體系形成了解決信息安全、信息機密性、完整性和抗抵賴的完整解決方案。
目前在中國主流發展的區塊鏈技術被稱為開放許可鏈,什麼叫做許可鏈呢?就是所有組成許可鏈的節點所有者,其身份都是被認證過,被許可授權後,才能加入到該區塊鏈網絡的。
在這種場景中,網絡向授權的組織或機構開放,鏈上各參與方之間是一種協作關係,存在准入機制。PKI/CA 體系作為完整解決方案,可以為許可鏈各參與方提供身份認證證書,實現准入權限控制。可以説,證書機制是許可鏈網絡安全的基石。本文對 PKI/CA 基本概念進行必要描述後,詳細闡述 Ultrain 證書管理體系。
01 公鑰基礎設施
公鑰基礎設施(Public Key Infrastructure,簡稱 PKI)是一個包含硬件、軟件和策略等集合,用來實現基於公鑰密碼體制的密鑰和證書的產生、管理、存儲、分發和撤銷等功能的完整系統。
PKI 系統包括證書機構 CA(Certificate Of Authority,認證中心)、註冊機構 RA 和相應的 PKI 存儲庫。CA 用於簽發並管理證書;RA 可作為 CA 的一部分,也可以獨立,其功能包括個人身份審核、CRL管理、密鑰產生和密鑰對備份等;PKI 存儲庫包括 LDAP(Lightweight Directory Access Protocol,輕量目錄訪問協議)目錄服務器和普通數據庫,用於對用户申請、證書、密鑰、CRL(Certificate revocation lists)和日誌等信息進行存儲和管理,並提供一定的查詢功能。
圖1 PKI系統
• 用户申請:
用户生成自己的公鑰和私鑰,將公鑰和自己的身份信息提交給安全服務器,安全服務器將用户的申請信息傳送給 RA 服務器。
• RA 審核:
用户向 RA 證明自己的身份,RA 收到用户的申請後進行核對。如果 RA 同意用户申請證書的請求,則對證書申請信息做數字簽名;否則拒絕用户的申請。
• CA 發行證書:
RA 將用户申請和 RA 簽名傳輸給 CA,CA 對 RA 數字簽名做認證,如果驗證通過,則同意用户請求,頒發證書,然後將證書輸出。如果驗證不通過,則拒絕證書申請。
• RA 轉發證書:
RA 從CA 得到新的證書,首先將證書輸出到 LDAP 服務器以提供目錄瀏覽,再通知用户證書發行成功,告知證書序列號,到指定的網址去下載證書。
• 用户證書獲取:
用户使用證書序列號去指定網址下載自己的數字證書。
主流的證書格式為 X.509 格式。X.509 標準規定了證書可以包含什麼信息,並説明了記錄信息的方法。
X.509 結構中包括版本號(Version Number)、序列號(Serial Number)、簽名算法(Signature Algorithm)、頒佈者(Issuer)、有效期(Validity)、主體(Subject)、主體公鑰信息(Subject Public Key Info)、主體公鑰算法(Public Key Algorithm)、主體公鑰(Subject Public Key)、證書籤名算法(Certificate Signature Algorithm)和證書籤名(Certificate Signature)。
1. 對證書中的明文利用相同的散列函數得到摘要值 H1。
2. 用 CA 根證書驗證客户證書的簽名合法性,即證書中的簽名用 CA 根證書的公鑰解籤,解籤的結果與步驟 1 中的 H1 對比,如果一致,説明證書是由信任的根證書籤發,且證書的內容沒有被篡改。
3. 檢查客户證書是否有效 (當前時間在證書結構中的所定義的有效期內)。
4. 檢查客户證書是否作廢 (OCSP 方式或 CRL 方式)。
5. 驗證客户證書結構中的證書用途。
上述所有信息都驗證通過,那麼證書中客户的公鑰信息就能夠在後續的操作中使用。
02 Ultrain 證書管理體系
許可鏈經過授權的節點組成聯盟從而共享和訪問數據。PKI 體系是一套用户審核、身份管理和隱私保護的完整的、成熟的體系,Ultrain 定義了一套從上而下的證書管理流程,從而實現許可鏈節點的權限管理和訪問控制。
Ultrain 採用面向 CA 的准入機制,實現基於 X.509 格式證書的認證和動態管理。根據現有業務場景,證書體系如圖 2 所示,自上而下包含以下類型:根證書、鏈證書、節點證書和用户證書。
根證書:根證書是一個自簽名的證書,為所有證書的根,對應的私鑰 key 文件由聯盟委員會共同管理。
鏈證書:在多鏈架構中,單鏈管理機構生成鏈私鑰,並生成請求文件 chain.csr 發送給聯盟委員會,聯盟委員會審核通過後簽發鏈證書 chain.crt。
節點證書:節點證書由鏈證書籤發。節點生成並保存自己的私鑰文件 node.key,並生成請求文件 node.csr 發送給鏈管理機構,鏈管理機構審核通過後簽發節點證書 node.crt。節點證書是節點的身份憑證,擁有節點證書的節點能夠與區塊鏈網絡中節點建立 SSL 鏈接,實現節點間的加密通信。
用户證書:用户證書由提供鏈訪問接口的節點簽發。用户生成並保存自己的私鑰文件 sdk.key,並生成請求文件 sdk.csr 發送給需要訪問的節點管理機構,節點管理機構審核通過後簽發用户證書 sdk.crt。用户證書是客户端的身份憑證,擁有用户證書的客户端才能正常訪問鏈接口。
Ultrain 提供了一套證書申請簽發管理程序,方便各級證書的申請、驗證及簽發。
圖2 Ultrain 證書體系
根證書由 Ultrain 聯盟委員會共同管理,目前採用自簽名證書,也可以與商業證書籤發機構對接,使用權威機構簽發的證書。當業務需要建立新的側鏈時,該側鏈管理機構提交證書請求文件,聯盟委員會審核通過後使用根證書籤發鏈證書;鏈證書由該鏈管理委員會進行管理,鏈管理委員會接收聯盟成員成為運行節點的證書請求文件,委員會審核通過後簽發節點證書;聯盟成員使用節點證書以接入該側鏈節點網絡,才可以進行共識及交易信息的正常收發。如果該節點提供鏈上數據訪問接口,則需簽發用户證書提供給客户端使用;客户端使用特定節點簽發的用户證書,才可以正常訪問該節點提供的數據接口,進行數據讀取、交易發送等操作。
節點證書在節點間建鏈時使用。基於證書驗證的鏈接建立之後,節點才能組成 P2P 網絡,從而實現共識協議信息和交易信息的傳播,下圖為節點證書的使用流程。
圖3 Ultrain 節點證書驗證流程
節點在啓動時,攜帶自己的節點證書可以與同樣擁有節點證書的節點建立 SSL 安全鏈接。當證書過期、被篡改時,不能加入到 P2P 網絡中,從而不能共享和傳播鏈上數據。
在 Ultrain 的證書吊銷(CRL)管理體系中,證書的吊銷由該證書籤發機構完成。節點可以向 CA 管理中心定期獲取 CRL 列表。節點間的心跳報文中需攜帶自己的節點證書,當不攜帶節點證書或攜帶的證書在 CRL 列表時,心跳報文檢測端會主動拆掉與被檢測端的鏈接,實現實時的接入管理控制。
用户證書驗證
客户端訪問節點提供的鏈接口時,可以選擇校驗節點證書,以驗證節點身份,此時需使用根證書、鏈證書組成的證書鏈對節點證書校驗。另外,客户端需提供用户證書給節點,節點的 HTTPS 服務會校驗客户端所提供的用户證書(使用根證書、鏈證書以及節點證書組成的證書鏈進行校驗),同時會檢查 CRL 吊銷列表,校驗通過且該用户證書不在 CRL 列表時,則成功建立 SSL 鏈接,進行正常通信,否則則不能建立鏈接,從而保證了客户端與節點間的通信安全。
作者:Ultrain超腦鏈;來自鏈得得內容開放平台“得得號”,本文僅代表作者觀點,不代表鏈得得官方立場凡“得得號”文章,原創性和內容的真實性由投稿人保證,如果稿件因抄襲、作假等行為導致的法律後果,由投稿人本人負責得得號平台發佈文章,如有侵權、違規及其他不當言論內容,請廣大讀者監督,一經證實,平台會立即下線。如遇文章內容問題,請發送至郵箱:[email protected]