在這篇文章中,我們實際使用 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
Using slot 0 with a present token (0x0)
卡片內有三組 RSA 2048 位元公鑰:
Label | ID | 用途 (Usage) | 說明 |
---|---|---|---|
k1 |
5349474e |
verify |
用於數位簽章驗證 |
k1 |
4b455958 |
encrypt, wrap |
用於資料加密與金鑰包裝 |
k3 |
5349474e3032 |
verify |
備用公鑰,不會使用到 |
這些公鑰對應到後面列出的憑證(cert1
、cert2
等),代表卡片內含多張證書與金鑰配對。
每張憑證都以 X.509 格式 儲存,並以 label、subject、serial number、ID 區分:
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... | 使用者加密憑證 |
可以發現:
Data object 11
label: 'k1'
application: 'HiCOSPKI'
app_id: 1.24
flags: modifiable
這些 Data Object 通常是卡片內部的 設定資料 或 狀態記錄:
以這張 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 整合非常有參考價值。
肉羹、滷肉飯好ㄔ