密碼學系列 - PKI

2020-08-10 11:30:17

PKI

公鑰基礎結構(PKI)是用於建立,儲存和分發數位憑證的系統,這些證書用於驗證特定公鑰是否屬於某個實體。PKI建立將公共金鑰對映到實體的數位憑證,將這些證書安全地儲存在中央儲存庫中,並在需要時將其吊銷。

一個 public key infrastructure(PKI)是一組角色,策略,硬體,軟體和建立,管理,分發所需的程式,使用,儲存和吊銷數位憑證和管理公共金鑰加密。

PKI至少包括如下核心元件:

  • CA(Certification Authority):負責證書的頒發和作廢,接收來自RA的請求,是最核心的部分;
  • RA(Registration Authority):對使用者身份進行驗證,校驗數據合法性,負責登記,審覈過了就發給CA;
  • 證書數據庫:存放證書,多採用X.500系列標準格式。可以配合LDAP目錄服務管理使用者資訊。
  • [option]VA (驗證機構): 託管CRL(證書吊銷列表), 提供用於驗證數位憑證有效性的服務
    在这里插入图片描述
    常見的操作流程爲,使用者通過RA登記申請證書,提供身份和認證資訊等;CA審覈後完成證書的製造,頒發給使用者。使用者如果需要復原證書則需要再次向CA發出申請

參考: PKI - WIKI

開源實現

  • OpenSSL是CA和PKI工具的最簡單形式。它是一個用C語言開發的工具包,已包含在所有主要的Linux發行版中,可用於構建自己的(簡單的)CA和啓用PKI的應用程式。Apache許可
  • EJBCA是用Java開發的功能齊全的企業級CA實施它既可以用於內部使用也可以作爲服務設定CA。LGPL許可
  • XiPKI,[26] CA和OCSP響應者。具有SHA3支援,以Java實現。Apache許可
  • OpenCA是使用許多不同工具的功能齊全的CA實施。OpenCA使用OpenSSL進行基礎PKI操作。
  • XCA是圖形介面和數據庫。XCA使用OpenSSL進行基礎PKI操作。
  • (已停產)TinyCA是OpenSSL的圖形介面。
  • IoT_pki是使用python 加密庫構建的簡單PKI
  • DogTag是功能齊全的CA,作爲Fedora專案的一部分進行開發和維護
  • CFSSL [27] [28]CloudFlare開發的開放式原始碼工具包,用於簽名,驗證和捆綁TLS證書。BSD 2條款許可
  • HashiCorp開發的用於安全管理機密(包括TLS證書)的Vault [29]工具(獲得Mozilla Public License 2.0許可
  • Libhermetik是一個嵌入在C語言庫中的自包含公鑰基礎結構系統Hermetik將LibSodium用於所有加密操作,並將SQLite用於所有數據永續性操作。該軟體是開源的,並根據ISC許可發佈。