iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
Security

江湖在走,數位憑證要懂,懂得天天吃滷肉飯系列 第 23

第23天,pkcs11-tool 分析自然人憑證 / 大鐤肉羹 (新北萬華) | 30天滷肉飯

  • 分享至 

  • xImage
  •  

在這篇文章中,我們實際使用 pkcs11-tool 指令,讀出中華電信 HiCOS 憑證卡中的金鑰與憑證內容,並逐一分析各欄位代表的意義。這對研究台灣電子憑證體系(例如自然人憑證、GPKI 憑證)的人非常有幫助。


🔧 指令說明

pkcs11-tool --module <driver_path> -O

這個指令做的事情是:

  • --module:指定 PKCS#11 模組,也就是 HiCOS 驅動的 .dylib 動態連結檔。
  • -O:列出(Object List)卡片中所有可見的物件(公鑰、私鑰、憑證、資料物件等)。

自然人憑證結果會如下

Using slot 0 with a present token (0x0)
Public Key Object; RSA 2048 bits
  label:      k1
  ID:         5349474e
  Usage:      verify
  Access:     local
  uri:        pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card;id=%5349474e;object=k1;type=public
Public Key Object; RSA 2048 bits
  label:      k1
  ID:         4b455958
  Usage:      encrypt, wrap
  Access:     local
  uri:        pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card;id=%4b455958;object=k1;type=public
Public Key Object; RSA 2048 bits
  label:      k3
  ID:         5349474e3032
  Usage:      verify
  Access:     local
  uri:        pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card;id=%5349474e3032;object=k3;type=public
Certificate Object; type = X.509 cert
  label:      ROOT CA Cert
  subject:    DN: C=TW, O=Government Root Certification Authority
  serial:     B64B8807E223EEC85C12ADA60E0XXXXX
  ID:         524f4f54434143657274
  uri:        pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card;id=%524f4f54434143657274;object=ROOT%20CA%20Cert;type=cert
Certificate Object; type = X.509 cert
  label:      CA Cert
  subject:    DN: C=TW, O=\xE8\xA1\x8C\xE6\x94\xBF\xE9\x99\xA2, OU=\xE5\x85\xA7\xE6\x94\xBF\xE9\x83\xA8\xE6\x86\x91\xE8\xAD\x89\xE7\xAE\xA1\xE7\x90\x86\xE4\xB8\xAD\xE5\xBF\x83
  serial:     51C3B5C1A9A1588609222231D61XXXXX
  ID:         434143657274
  uri:        pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card;id=%434143657274;object=CA%20Cert;type=cert
Certificate Object; type = X.509 cert
  label:      cert1
  subject:    DN: C=TW, CN=\xE5\x91\xA8\xE8\xA9\xB3/serialNumber=0000000117399182
  serial:     A9CEF71E5BC6B99FECBBBD29F1DXXXXX
  ID:         5349474e
  uri:        pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card;id=%5349474e;object=cert1;type=cert
Certificate Object; type = X.509 cert
  label:      cert2
  subject:    DN: C=TW, CN=\xE5\x91\xA8\xE8\xA9\xB3/serialNumber=0000000117399182
  serial:     ED684BACDF5E0E6D51DB168AD96XXXXX
  ID:         4b455958
  uri:        pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card;id=%4b455958;object=cert2;type=cert
Data object 11
  label:          'k1'
  application:    'HiCOSPKI'
  app_id:         1.24
  flags:           modifiable
  uri:            pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card;object=k1;type=data
Data object 12
  label:          'k3'
  application:    'HiCOSPKI'
  app_id:         1.24
  flags:           modifiable
  uri:            pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card;object=k3;type=data

🧩 Slot 與 Token

Using slot 0 with a present token (0x0)
  • slot 0:代表第一個讀卡機。
  • token:表示實際插入的卡片。
    這裡可以看到 HiCOS PKI Smart Card 已經被驅動識別。

🔑 公鑰物件(Public Key Objects)

卡片內有三組 RSA 2048 位元公鑰:

Label ID 用途 (Usage) 說明
k1 5349474e verify 用於數位簽章驗證
k1 4b455958 encrypt, wrap 用於資料加密與金鑰包裝
k3 5349474e3032 verify 備用公鑰,不會使用到

這些公鑰對應到後面列出的憑證(cert1cert2 等),代表卡片內含多張證書與金鑰配對。


📜 憑證物件(Certificate Objects)

每張憑證都以 X.509 格式 儲存,並以 labelsubjectserial numberID 區分:

Label Subject Serial 用途
ROOT CA Cert C=TW, O=Government Root Certification Authority B64B8807... 政府憑證體系根憑證
CA Cert C=TW, O=行政院, OU=內政部憑證管理中心 51C3B5C1... GCA 下層的中繼 CA 憑證
cert1 CN=周詳 / serialNumber=00000001173XXXXX A9CEF71E... 使用者簽章憑證
cert2 CN=周詳 / serialNumber=00000001173XXXXX ED684BAC... 使用者加密憑證

可以發現:

  • 一張 HiCOS 卡通常會有 簽章憑證加密憑證 各一張。
  • 這兩張憑證的 subject 相同,但序號(Serial)不同。
  • 上層還包含 政府根憑證中繼 CA 憑證,組成完整的憑證鏈(Root → CA → User)。

🧠 Data Object(資料物件)

Data object 11
  label: 'k1'
  application: 'HiCOSPKI'
  app_id: 1.24
  flags: modifiable

這些 Data Object 通常是卡片內部的 設定資料狀態記錄

  • application:指出這筆資料屬於哪個應用(這裡是 HiCOSPKI)。
  • app_id:驅動版本或卡片應用版本。
  • flags: modifiable:代表該資料在某些情況下可以更新(例如在更新使用狀態或註記時)。

🏗️ 卡片結構總覽

以這張 HiCOS 憑證卡為例,我們可以將結構整理成以下層級:

HiCOS Smart Card (T7S0564412XXXXX)
├─ Public Keys
│  ├─ k1 (verify)
│  ├─ k1 (encrypt, wrap)
│  └─ k3 (verify)
├─ Certificates
│  ├─ ROOT CA Cert  → 政府根憑證
│  ├─ CA Cert       → 內政部憑證中心
│  ├─ cert1         → 使用者簽章憑證
│  └─ cert2         → 使用者加密憑證
└─ Data Objects
   ├─ k1 / HiCOSPKI / v1.24
   └─ k3 / HiCOSPKI / v1.24

這代表一張卡裡,同時包含完整的 信任鏈 (Trust Chain)金鑰對 (Key Pair),卡片中的私鑰則不可導出,只能透過 PKCS#11 介面進行簽章或解密操作。


✍️ 結語

HiCOS 憑證卡是台灣常見的 PKI 晶片卡之一,遵循國際標準 PKCS#11
透過 pkcs11-tool,我們不僅能觀察卡片內部的結構,也能理解背後的信任機制與安全設計。這對研究電子憑證應用、卡片驅動與 OpenSSL 整合非常有參考價值。

大鐤肉羹

https://ithelp.ithome.com.tw/upload/images/20251007/201634163ARtVZ7QeS.jpg

肉羹、滷肉飯好ㄔ


上一篇
第22天,pkcs11-tool 讀取 HiCOS 憑證卡 / 阿義魯肉飯 (台北萬華) | 30天滷肉飯
系列文
江湖在走,數位憑證要懂,懂得天天吃滷肉飯23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言