iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
Security

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

第21天,自然人憑證開發流程 / 湳雅腿庫豬腳飯 (新北板橋) | 30天滷肉飯

  • 分享至 

  • xImage
  •  

在使用政府憑證卡(自然人憑證、工商憑證等)或HiPKI憑證卡登入政府網站、簽署電子文件,或企業系統透過智慧卡進行身分驗證時,背後其實是一套複雜的通訊機制。今天就讓我們透過下圖,來理解「應用程式、驅動程式、卡片」之間是如何溝通的。

https://ithelp.ithome.com.tw/upload/images/20251005/20163416qJk44EzOvf.png---

🧩 架構總覽

這張圖展示了兩條常見的應用路徑:

  1. 傳統應用程式模式(上半部)
  2. 網頁應用模式(下半部)

雖然最終目的都是與「憑證卡」互動,但溝通方式與封裝層級卻有所不同。

--

🖥️ 一、傳統應用程式:透過 PKCS#11 介面操作卡片

1. 應用程式(Application)

一般的桌面應用或系統軟體(例如報稅軟體、簽章工具),會透過 PKCS#11 函式庫 介面與中介軟體(middleware)進行通訊。

PKCS#11 是一種標準化的「加密模組介面規範」,讓應用程式不必關心卡片廠牌與硬體細節,就能操作金鑰與簽章。

2. HiSecure 程式開發套件(SDK)

中華電信提供免費的函式庫Hisecure,支援C、Java,讓開發者不需要了解PKCS11,就能輕鬆操作憑證卡。它本身也透過 PKCS#11 與底層驅動程式溝通。

3. HiCOS 驅動程式(Driver)

這層負責與智慧卡讀卡機溝通,使用 APDU 指令(Application Protocol Data Unit) 傳遞命令,例如讀取憑證、進行簽章、PIN 驗證等。

4. 憑證卡(Smart Card)

實際存放私鑰與憑證的晶片卡。所有簽章操作都在卡片內完成,私鑰永遠不會離開卡片,確保安全性。


🌐 二、網頁應用:透過本地端服務橋接

隨著瀏覽器不支援直接呼叫 PKCS#11 的方式已不可行。是以下這條新路徑

1. 網頁(Browser Web App)

使用者在網頁上執行登入或簽章操作時,JavaScript 程式會透過本地端 API localhost:61161 呼叫服務。

2. ChtICToken.js 函式庫

這是由 Hiscure 提供的前端 JS 函式庫,用來與本地服務通訊。
它通常會發送請求到 localhost:61161,這是 HiPKI Local Server 預設監聽的埠號。

3. HiPKI Local Server

這是一個安裝在使用者電腦上的背景程式,並監聽在 localhost:61161,負責接收網頁傳來的請求(例如簽章、驗證 PIN),再轉換成 PKCS#11 呼叫與卡片溝通。
它就像是「網頁與憑證卡之間的翻譯官」。

4. 驅動程式 → 憑證卡

最後依舊透過驅動程式將指令轉換為 APDU,實際在卡片中完成加解密與簽章。


🔒 安全設計理念

整個架構的核心是**「私鑰永不離卡」**。
即使應用程式或網頁取得簽章結果,也無法直接存取私鑰,這能有效防止惡意程式竊取使用者的身分金鑰。

同時,使用 APDU 指令通訊的卡片需要輸入 PIN 碼才能啟用私鑰,確保操作人為使用者本人。

湳雅腿庫豬腳飯

https://ithelp.ithome.com.tw/upload/images/20251005/20163416ogzv5GMx25.jpg

這家滷肉飯魯的超級入味,雖然有點油,不過口味不錯

https://ithelp.ithome.com.tw/upload/images/20251005/20163416pyyRqvBuO8.jpg


上一篇
第20天,實作PKCS#7數位信封 / 歐買尬豬霸王豬腳飯 (台北中山) | 30天滷肉飯
系列文
江湖在走,數位憑證要懂,懂得天天吃滷肉飯21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言