iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
Security

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

第22天,pkcs11-tool 讀取 HiCOS 憑證卡

  • 分享至 

  • xImage
  •  

在開發或測試電子簽章時,pkcs11-tool 是與自然人憑證(或任何智慧卡)溝通的關鍵工具。
它屬於 OpenSC 套件的一部分,可直接呼叫 PKCS#11 介面 與卡片交互,用來:

  • 讀取憑證
  • 匯出公鑰或簽章用憑證
  • 測試加密/簽章功能

本文將介紹如何在 Windows 與 macOS 安裝、確認路徑,並以 HiCOS 驅動 實際操作讀取與匯出憑證。


一、什麼是 pkcs11-tool

pkcs11-tool 是 OpenSC 提供的命令列工具,用於測試和操作符合 PKCS#11 規範的模組(例如 HiCOS、TWCA、GPKI 等)。
主要功能包括:

功能 指令
查詢可用插槽 pkcs11-tool -L
讀取卡內物件(憑證、公私鑰) pkcs11-tool -O
匯出憑證 pkcs11-tool --read-object --type cert --id <ID> --output-file cert.der
簽章 pkcs11-tool --sign --mechanism SHA256-RSA-PKCS

二、在 Windows 安裝 pkcs11-tool

透過 choco 安裝 opensc

choco install opensc -y

pkcs11-tool 預設路徑為 C:\Program Files (x86)\OpenSC Project\OpenSC\tools\pkcs11-tool.exe

若要在任何資料夾使用,請將以下路徑加入系統 PATH:

C:\Program Files\OpenSC Project\OpenSC\tools\

三、在 macOS 安裝 pkcs11-tool

透過 brew 安裝 opensc

brew install opensc

pkcs11-tool 預設路徑為 /opt/homebrew/bin/pkcs11-tool,可以直接執行pkcs11-tool


四、HiCOS 驅動程式模組路徑

HiCOS 自然人憑證安裝後,會附帶 PKCS#11 模組(讓應用程式能呼叫卡片功能)。

Windows 為 HiCOSPKCS11.dll,macOS 為libHicos_p11v1.dylib,這個檔案作為驅動程式。該函式庫符合 PKCS11 規範,並轉換為 APDU 指令。

系統 模組路徑
Windows C:\Program Files (x86)\HiPKILocalSignServer\HiCOSPKCS11.dll
macOS /System/Volumes/Data/Users/<username>/Library/HiPKILocalSignServer/libHicos_p11v1.dylib

🧾 五、讀取卡片資訊與憑證

🔹 查詢可用插槽

以下卡片查詢目前的讀卡機資訊,driver_path放上面驅動程式模組的路徑。

pkcs11-tool --module <driver_path> -L

這會顯示:

Available slots:
Slot 0 (0x0): InfoThink USB reader
  token label        : HiCOS PKI Smart Card
  token manufacturer : Chunghwa TeleCom Co., Ltd.
  token model        : T7S0564412XXXXX
  token flags        : login required, rng, token initialized, PIN initialized
  hardware version   : 1.0
  firmware version   : 1.0
  serial num         : TP072405131XXXXX
  pin min/max        : 6/8
  uri                : pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card

接下來就來解析其中內容

Slot(插槽)

Available slots:
Slot 0 (0x0): InfoThink USB reader

這表示你的系統偵測到 1 個智慧卡讀卡機:

  • Slot 0 (0x0) → 第一個插槽
  • InfoThink USB reader → 讀卡機的品牌名稱(這台是市面上常見的 InfoThink 智慧卡機)

代表卡機驅動已安裝正確,PKCS#11 模組能夠透過 PC/SC 通訊層與它互動。


Token(卡片)基本資訊

這裡描述的是插在該讀卡機裡的「Token」= 智慧卡本身。

token label        : HiCOS PKI Smart Card
token manufacturer : Chunghwa TeleCom Co., Ltd.
token model        : T7S0564412XXXXX
serial num         : TP072405131XXXXX

逐行說明👇

欄位 意思 說明
token label 卡片名稱 HiCOS 驅動給卡片的識別標籤。
token manufacturer 製造商 中華電信(Chunghwa TeleCom Co., Ltd.),這就是 HiCOS 自然人憑證的發卡單位。
token model 模組型號 智慧卡晶片的型號(每張卡略不同,例如 T7S、T8E 等)。
serial num 卡片序號 每張卡唯一序號,可在驗章或憑證鏈中比對。

安全與功能旗標(token flags)

token flags        : login required, rng, token initialized, PIN initialized

這行是最關鍵的安全屬性描述,拆解如下:

Flag 含義 功能
login required 需要登入 操作私鑰(簽章、解密)前必須先輸入 PIN 碼。
rng 具備亂數產生器 晶片內建安全隨機數產生器(用於加密與簽章安全)。
token initialized Token 已初始化 卡片已設定完成、可使用。
PIN initialized PIN 碼已設定 使用者 PIN 已啟用(表示卡已註冊完成)。

✅ 代表這張卡可以被安全使用,也就是說你可以進行簽章、加密等操作。


卡片版本資訊

hardware version   : 1.0
firmware version   : 1.0
  • 晶片的硬體與韌體版本。
  • 主要用於識別卡片代數。

PIN 規則

pin min/max        : 6/8

這是登入卡片所需 PIN 碼的長度限制:

  • 最少 6 碼
  • 最多 8 碼

符合 HiCOS 自然人憑證的標準 PIN 長度規範。


PKCS#11 URI

uri: pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card

這是一個 PKCS#11 URI(統一資源識別碼),可以讓程式直接指向這張特定卡片。


🧠 小結整理

類別 資訊
讀卡機 InfoThink USB Reader
智慧卡標籤 HiCOS PKI Smart Card
製造商 Chunghwa Telecom (中華電信)
型號 T7S0564412XXXXX
序號 TP072405131XXXXX
功能 支援亂數生成、需 PIN 驗證
狀態 Token 已初始化、PIN 已設定
PIN 長度 6–8 碼
PKCS#11 URI 可用於程式指向該卡

上一篇
第21天,自然人憑證開發流程 / 湳雅腿庫豬腳飯 (新北板橋) | 30天滷肉飯
系列文
江湖在走,數位憑證要懂,懂得天天吃滷肉飯22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言