1091 字
5 分鐘
政府憑證卡數位簽章應用
2024-09-23
無標籤

https://grca.nat.gov.tw/index2.html

GPKI 政府機關公開金鑰基礎建設#

GPKI 是政府建立的公共金鑰基礎設施,透過數位憑證技術,提供資料傳輸的身份驗證、機密性及不可否認性,保障政府及民間的線上安全應用。

由 GRCA 管理根憑證,並發放中繼憑證。旗下憑證包含:內政部自然人憑證、經濟部工商憑證、數發部組織及團體憑證、衛福部醫事憑證等。


政府憑證卡開發知識#

  • 「私鑰」儲存於憑證卡上無法匯出
  • 「產生簽章、解密資料」在憑證卡晶片以私鑰計算,此為離線計算
  • 「驗證簽章、加密資料」不在憑證卡晶片計算,需開發程式以公鑰計算
  • 應用程式介接政府憑證卡,可透過 Hisecure 程式開發套件
  • 網頁介接政府憑證卡,可透過 HiPKI Local Server 跨平台元件,支援 Windows、macOS、Linux,不支援 Android、iOS

數位簽章封裝#

數位簽章與驗簽的過程為

  • 簽章:將原始檔案進行 Hash 後,以私鑰加密產生簽章值
  • 驗簽:將簽章值公鑰解密,並與原始檔案Hash 進行比對。然後檢查對憑證的信任鏈、有效時間、廢止清冊。

從上述過程得知,驗簽的過程至少需要以下資料:簽章值、公鑰憑證、原始檔案、Hash 演算法。以上資料缺一不可,只有簽章值是沒辦法驗簽的。因此有各種國際通用的數位簽章封裝格式來將上述四種資料打包成一個檔案,常見封裝格式為 PAdES、CAdES、XAdES。


數位簽章封裝種類#

數位簽章根據與原始檔案是否結合可分為兩種專有名詞:

  1. Detached Signature(分離式簽章):數位簽章與原始檔案分離存放,簽章獨立於檔案之外,但可以通過特定的方式將簽章與檔案進行驗證。這種方式通常用於需要單獨驗證簽章或允許檔案與簽章分別傳遞的情境。
  2. Attached Signature(結合式簽章):數位簽章與原始檔案結合在一起,簽章直接嵌入檔案內部,這使得檔案在傳輸過程中簽章不會與檔案分離,常見於PDF、XML等格式中的電子簽章。

這兩種方式的選擇取決於應用場景與檔案傳遞的需求。


數位簽章封裝格式#

系統要進行數位簽章的開發要先知道數位簽章的格式,國際上數位簽章有多種不同格式可以選擇,關於數位簽章封裝格式說明參考 RFC 9321,常見的封裝格式如下:

1. PAdES (PDF Advanced Electronic Signatures)#

PAdES 是一種基於 PDF 文件的電子簽章標準,確保簽章的長期有效性、完整性和法律效力,適用於簽署數位文件並滿足國際電子簽章法規。

  • 原始檔案:僅支援為 PDF,不支援其他檔案格式
  • 簽章種類:結合式簽章
  • 簽章檔案格式:PDF
  • 國際標準:ISO 32000–2

政府憑證卡做 PAdES 簽章與驗簽參考我的文章:自然人憑證為 PDF 做 PAdES 數位簽章,使用免費的 Adobe Acrobat Reader

2. CAdES (CMS Advanced Electronic Signatures)#

CAdES 是一種基於 CMS 的數位簽章標準,提供了擴展功能以支援長期有效性和時間戳記,適用於各種數位檔案的簽署。

  • 原始檔案:任何檔案、字串
  • 簽章種類:結合式簽章、分離式簽章
  • 簽章檔案格式:PKCS7,結合式簽章副檔名為 p7m,分離式簽章副檔名為 p7s
  • 國際標準: RFC 5126

政府憑證卡做 CAdES 簽章可以參考我的範例網站:產生 CAdES 數位簽章,驗簽則參考我的文章:OpenSSL 做 CAdES PKCS7 數位簽章與驗簽

3. XadES (XML Advanced Electronic Signatures)#

XAdES 是一種基於 XML 格式的電子簽名標準,旨在提供數位簽章的附加層級安全性和法律效力,特別適用於長期保存和驗證的需求。

  • 原始檔案:XML
  • 簽章種類:結合式簽章、分離式簽章
  • 簽章檔案格式:XML
  • 國際標準: XMLDSIG

XadES 相關應用參考:經濟部工商憑證 XadES 格式簡介