RFID世界網(wǎng) >
技術(shù)文章 >
其他 >
正文
CPU卡發(fā)卡程序設(shè)計(jì)過(guò)程中應(yīng)當(dāng)注意的幾個(gè)問(wèn)題
作者: 許正軍 王蓉 毛祖學(xué)
來(lái)源:RFID世界網(wǎng)
日期:2005-06-01 10:18:28
摘要:CPU卡發(fā)卡程序設(shè)計(jì)過(guò)程中應(yīng)當(dāng)注意的幾個(gè)問(wèn)題
1 引 言
構(gòu) 建 IC卡 應(yīng) 用 系 統(tǒng) 過(guò) 程 中 , 如 何 定 義 卡 中 的 數(shù) 據(jù) 信 息 ( 相 對(duì) 邏 輯 加 密 卡 ) 或 卡 中 的 應(yīng) 用 類 型 及 其 數(shù) 據(jù) 信 息 ( 相 對(duì) CPU卡 ) 及 將 數(shù) 據(jù) 信 息 寫(xiě) 入 卡 中 , 以 便 應(yīng) 用 于 系 統(tǒng) 中 進(jìn) 行 交 易 是 一 個(gè) 重 要 環(huán) 節(jié) 。 這 一 環(huán) 節(jié) 在 業(yè) 界 通 常 稱 為 卡 片 個(gè) 人 化 。 卡 片 個(gè) 人 化 既 可 以 在 專 門(mén) 的 設(shè) 備 機(jī) 器 上 進(jìn) 行 , 以 便 于 對(duì) 大 批 量 的 卡 片 進(jìn) 行 個(gè) 人 化 ; 也 可 以 在 PC機(jī) 上 通 過(guò) 連 接 IC卡 讀 寫(xiě) 器 進(jìn) 行 , 以 便 于 對(duì) 小 批 量 的 卡 片 進(jìn) 行 個(gè) 化 。 不 管 硬 件 設(shè) 備 如 何 , 都 必 須 設(shè) 計(jì) 一 套 程 序 軟 件 來(lái) 進(jìn) 行 個(gè) 人 化 。 這 個(gè) 程 序 軟 件 通 常 稱 為 發(fā) 卡 程 序 。 本 文 討 論 CPU卡 發(fā) 卡 程 序 設(shè) 計(jì) 過(guò) 程 中 將 會(huì) 遇 到 的 關(guān) 鍵 技 術(shù) 問(wèn) 題 及 其 解 決 方 法 。
CPU卡 發(fā) 卡 大 體 可 分 為 三 個(gè) 組 成 部 分 : ( 1) 卡 結(jié) 構(gòu) 建 立 ; ( 2) 密 鑰 寫(xiě) 入 ; ( 3) 個(gè) 人 化 數(shù) 據(jù) 寫(xiě) 入 。 當(dāng) 然 , 為 確 保 正 確 發(fā) 卡 , 程 序 設(shè) 計(jì) 過(guò) 程 中 最 好 是 采 用 一 邊 建 立 卡 結(jié) 構(gòu) , 一 邊 寫(xiě) 入 密 鑰 和 個(gè) 人 化 數(shù) 據(jù) 。
2 發(fā) 卡 前 的 準(zhǔn) 備 工 作
一 般 地 , 卡 片 供 應(yīng) 商 提 供 卡 片 時(shí) , 已 經(jīng) 對(duì) 卡 片 進(jìn) 行 過(guò) 初 始 化 ( 主 要 用 于 對(duì) 卡 片 進(jìn) 行 測(cè) 試 ) , 亦 即 卡 片 上 已 經(jīng) 建 立 了 主 文 件 ( MF) 及 主 密 鑰 文 件 ( MF下 的 Keyfile文 件 ) , 主 密 鑰 文 件 中 也 已 寫(xiě) 入 了 初 始 卡 片 主 控 密 鑰 。
在 對(duì) CPU卡 建 立 特 定 的 卡 結(jié) 構(gòu) 及 寫(xiě) 入 密 鑰 和 數(shù) 據(jù) 之 前 , 程 序 設(shè) 計(jì) 中 的 第 一 步 應(yīng) 該 對(duì) 卡 片 進(jìn) 行 外 部 認(rèn) 證 。 外 部 認(rèn) 證 所 使 用 的 密 鑰 正 是 初 始 卡 片 主 控 密 鑰 。
當(dāng) 完 成 外 部 認(rèn) 證 后 , 接 下 來(lái) 最 好 是 擦 除 卡 片 上 已 有 的 卡 片 結(jié) 構(gòu) , 然 后 再 開(kāi) 始 重 新 建 立 卡 片 結(jié) 構(gòu) 。
許 多 發(fā) 卡 程 序 在 設(shè) 計(jì) 過(guò) 程 中 , 沒(méi) 有 考 慮 到 擦 除 卡 片 上 已 有 的 卡 片 結(jié) 構(gòu) , 而 是 在 完 成 外 部 認(rèn) 證 后 直 接 改 寫(xiě) 原 有 卡 片 的 主 密 鑰 文 件 的 卡 片 主 控 密 鑰 。 常 見(jiàn) 問(wèn) 題 是 由 于 原 有 主 密 鑰 文 件 創(chuàng) 建 時(shí) 的 空 間 大 小 不 夠 , 而 發(fā) 卡 程 序 試 圖 寫(xiě) 入 除 卡 片 主 控 密 鑰 外 還 想 寫(xiě) 入 卡 片 維 護(hù) 密 鑰 時(shí) , 勢(shì) 必 造 成 寫(xiě) 入 空 間 不 夠 而 導(dǎo) 致 寫(xiě) 入 不 成 功 。
3 密 鑰 文 件 的 建 立 與 密 鑰 值 的 寫(xiě) 入
為 了 獨(dú) 立 地 管 理 一 張 卡 上 不 同 應(yīng) 用 之 間 的 安 全 問(wèn) 題 , CPU卡 中 的 每 一 個(gè) 應(yīng) 用 放 在 一 個(gè) 單 獨(dú) 的 ADF中 。 各 個(gè) ADF及 其 下 屬 各 文 件 數(shù) 據(jù) 的 訪 問(wèn) ( 包 括 改 寫(xiě) 、 讀 取 ) 只 能 應(yīng) 用 該 ADF下 的 密 鑰 文 件 中 的 密 鑰 數(shù) 值 。 為 討 論 方 便 , 此 處 假 設(shè) 只 有 一 個(gè) ADF。
用 戶 卡 結(jié) 構(gòu) 中 主 要 存 在 以 下 兩 個(gè) 密 鑰 文 件 及 相 應(yīng) 的 幾 個(gè) 密 鑰 :
(1)MF下 的 密 鑰 文 件 (簡(jiǎn) 稱 KMF), 其 裝 載 的 密 鑰 是 卡 片 主 控 密 鑰 (簡(jiǎn) 稱 CCK, 以 下 同 );
(2)ADF下 的 密 鑰 文 件 (簡(jiǎn) 稱 KADF), 其 裝 載 的 密 鑰 有 應(yīng) 用 主 控 密 鑰 (簡(jiǎn) 稱 ACK, 以 下 同 ),應(yīng) 用 維 護(hù) 密 鑰 (簡(jiǎn) 稱 AMK), 及 其 它 應(yīng) 用 密 鑰 ;
(3)其 它 密 鑰 , 如 口 令 密 鑰 PIN, 口 令 解 鎖 密 鑰 , DES運(yùn) 算 密 鑰 等 等 。
3.1 密 鑰 文 件 的 創(chuàng) 建
各 密 鑰 文 件 在 建 立 時(shí) 必 須 慎 重 考 慮 以 下 兩 個(gè) 要 素 :
(1)文 件 大 小 的 分 配 ;
(2)有 關(guān) 權(quán) 限 和 密 鑰 使 用 后 的 后 續(xù) 狀 態(tài) 值 的 規(guī) 定 。
密 鑰 文 件 的 大 小 分 配 取 決 于 要 裝 載 的 密 鑰 個(gè) 數(shù) 。 每 個(gè) 密 鑰 均 為 一 條 可 變 長(zhǎng) 的 記 錄 , 每 條 記 錄 的 長(zhǎng) 度 為 密 鑰 數(shù) 據(jù) 長(zhǎng) 度 加 7。 以 此 可 以 計(jì) 算 密 鑰 文 件 的 大 小 。 在 發(fā) 卡 程 序 設(shè) 計(jì) 過(guò) 程 中 , 常 常 會(huì) 出 現(xiàn) 因 為 密 鑰 文 件 的 大 小 分 配 不 夠 而 造 成 后 面 的 密 鑰 無(wú) 法 寫(xiě) 入 。
密 鑰 文 件 建 立 過(guò) 程 中 的 有 關(guān) 權(quán) 限 和 密 鑰 使 用 后 的 后 續(xù) 狀 態(tài) 值 的 規(guī) 定 一 方 面 起 到 對(duì) 密 鑰 文 件 本 身 的 安 全 維 護(hù) 作 用 , 另 一 方 面 也 將 決 定 對(duì) 卡 片 操 作 的 流 程 。 顯 然 這 個(gè) 要 素 至 關(guān) 重 要 。
3.2 各 密 鑰 值 的 寫(xiě) 入
關(guān) 于 密 鑰 值 的 寫(xiě) 入 , 關(guān) 鍵 問(wèn) 題 是 要 弄 清 楚 該 密 鑰 要 求 以 何 種 形 式 寫(xiě) 入 。 通 常 有 以 下 幾 種 形 式 :
(1)以 明 文 形 式 寫(xiě) 入 ( 常 見(jiàn) 的 如 口 令 密 鑰 PIN的 寫(xiě) 入 ) ;
(2)以 帶 線 路 保 護(hù) 的 形 式 寫(xiě) 入 ( 要 求 計(jì) 算 MAC) ;
(3)以 對(duì) 密 鑰 值 進(jìn) 行 加 密 后 的 密 文 形 式 寫(xiě) 入 ( 要 求 計(jì) 算 DES或 3DES) ;
(4)以 對(duì) 密 鑰 值 進(jìn) 行 加 密 并 帶 線 路 保 護(hù) 的 形 式 寫(xiě) 入 ( 要 求 計(jì) 算 DES& MAC) 。
如 果 密 鑰 值 的 寫(xiě) 入 要 求 加 密 并 帶 線 路 保 護(hù) , 則 密 鑰 值 寫(xiě) 入 時(shí) 須 對(duì) 該 密 鑰 值 進(jìn) 行 DES& MAC計(jì) 算 后 以 密 文 形 式 寫(xiě) 入 ( 當(dāng) 然 卡 片 操 作 系 統(tǒng) 內(nèi) 部 會(huì) 自 動(dòng) 將 其 解 釋 成 明 文 ) , 帶 線 路 保 護(hù) 的 目 的 是 防 止 密 鑰 值 在 寫(xiě) 入 的 過(guò) 程 中 被 劫 取 。 如 果 不 要 求 帶 線 路 保 護(hù) 寫(xiě) 入 , 可 直 接 以 明 文 方 式 寫(xiě) 入 。
在 發(fā) 卡 程 序 設(shè) 計(jì) 過(guò) 程 中 , 尤 其 要 注 意 卡 片 主 控 密 鑰 、 應(yīng) 用 主 控 密 鑰 、 應(yīng) 用 維 護(hù) 密 鑰 及 其 它 密 鑰 之 間 的 關(guān) 系 及 其 寫(xiě) 入 要 求 。
3.2.1卡 片 主 控 密 鑰 與 應(yīng) 用 主 控 密 鑰
卡 片 主 控 密 鑰 是 對(duì) 整 個(gè) 卡 片 的 訪 問(wèn) 起 控 制 作 用 的 密 鑰 , 由 卡 片 生 產(chǎn) 商 寫(xiě) 入 , 由 發(fā) 卡 方 替 換 為 發(fā) 卡 方 的 卡 片 主 控 密 鑰 。 發(fā) 卡 程 序 設(shè) 計(jì) 過(guò) 程 中 ,在 對(duì) 卡 片 進(jìn) 行 任 何 操 作 之 前 ,必 須 使 用 卡 片 主 控 密 鑰 作 外 部 認(rèn) 證 ,
應(yīng) 用 主 控 密 鑰 是 應(yīng) 用 的 控 制 密 鑰 , 在 卡 片 主 控 密 鑰 控 制 下 寫(xiě) 入 。 一 般 地 , 發(fā) 卡 方 替 換 卡 片 的 主 控 密 鑰 之 后 , 為 驗(yàn) 證 替 換 工 作 正 確 , 再 用 新 的 卡 片 主 控 密 鑰 作 一 次 外 部 認(rèn) 證。
構(gòu) 建 IC卡 應(yīng) 用 系 統(tǒng) 過(guò) 程 中 , 如 何 定 義 卡 中 的 數(shù) 據(jù) 信 息 ( 相 對(duì) 邏 輯 加 密 卡 ) 或 卡 中 的 應(yīng) 用 類 型 及 其 數(shù) 據(jù) 信 息 ( 相 對(duì) CPU卡 ) 及 將 數(shù) 據(jù) 信 息 寫(xiě) 入 卡 中 , 以 便 應(yīng) 用 于 系 統(tǒng) 中 進(jìn) 行 交 易 是 一 個(gè) 重 要 環(huán) 節(jié) 。 這 一 環(huán) 節(jié) 在 業(yè) 界 通 常 稱 為 卡 片 個(gè) 人 化 。 卡 片 個(gè) 人 化 既 可 以 在 專 門(mén) 的 設(shè) 備 機(jī) 器 上 進(jìn) 行 , 以 便 于 對(duì) 大 批 量 的 卡 片 進(jìn) 行 個(gè) 人 化 ; 也 可 以 在 PC機(jī) 上 通 過(guò) 連 接 IC卡 讀 寫(xiě) 器 進(jìn) 行 , 以 便 于 對(duì) 小 批 量 的 卡 片 進(jìn) 行 個(gè) 化 。 不 管 硬 件 設(shè) 備 如 何 , 都 必 須 設(shè) 計(jì) 一 套 程 序 軟 件 來(lái) 進(jìn) 行 個(gè) 人 化 。 這 個(gè) 程 序 軟 件 通 常 稱 為 發(fā) 卡 程 序 。 本 文 討 論 CPU卡 發(fā) 卡 程 序 設(shè) 計(jì) 過(guò) 程 中 將 會(huì) 遇 到 的 關(guān) 鍵 技 術(shù) 問(wèn) 題 及 其 解 決 方 法 。
CPU卡 發(fā) 卡 大 體 可 分 為 三 個(gè) 組 成 部 分 : ( 1) 卡 結(jié) 構(gòu) 建 立 ; ( 2) 密 鑰 寫(xiě) 入 ; ( 3) 個(gè) 人 化 數(shù) 據(jù) 寫(xiě) 入 。 當(dāng) 然 , 為 確 保 正 確 發(fā) 卡 , 程 序 設(shè) 計(jì) 過(guò) 程 中 最 好 是 采 用 一 邊 建 立 卡 結(jié) 構(gòu) , 一 邊 寫(xiě) 入 密 鑰 和 個(gè) 人 化 數(shù) 據(jù) 。
2 發(fā) 卡 前 的 準(zhǔn) 備 工 作
一 般 地 , 卡 片 供 應(yīng) 商 提 供 卡 片 時(shí) , 已 經(jīng) 對(duì) 卡 片 進(jìn) 行 過(guò) 初 始 化 ( 主 要 用 于 對(duì) 卡 片 進(jìn) 行 測(cè) 試 ) , 亦 即 卡 片 上 已 經(jīng) 建 立 了 主 文 件 ( MF) 及 主 密 鑰 文 件 ( MF下 的 Keyfile文 件 ) , 主 密 鑰 文 件 中 也 已 寫(xiě) 入 了 初 始 卡 片 主 控 密 鑰 。
在 對(duì) CPU卡 建 立 特 定 的 卡 結(jié) 構(gòu) 及 寫(xiě) 入 密 鑰 和 數(shù) 據(jù) 之 前 , 程 序 設(shè) 計(jì) 中 的 第 一 步 應(yīng) 該 對(duì) 卡 片 進(jìn) 行 外 部 認(rèn) 證 。 外 部 認(rèn) 證 所 使 用 的 密 鑰 正 是 初 始 卡 片 主 控 密 鑰 。
當(dāng) 完 成 外 部 認(rèn) 證 后 , 接 下 來(lái) 最 好 是 擦 除 卡 片 上 已 有 的 卡 片 結(jié) 構(gòu) , 然 后 再 開(kāi) 始 重 新 建 立 卡 片 結(jié) 構(gòu) 。
許 多 發(fā) 卡 程 序 在 設(shè) 計(jì) 過(guò) 程 中 , 沒(méi) 有 考 慮 到 擦 除 卡 片 上 已 有 的 卡 片 結(jié) 構(gòu) , 而 是 在 完 成 外 部 認(rèn) 證 后 直 接 改 寫(xiě) 原 有 卡 片 的 主 密 鑰 文 件 的 卡 片 主 控 密 鑰 。 常 見(jiàn) 問(wèn) 題 是 由 于 原 有 主 密 鑰 文 件 創(chuàng) 建 時(shí) 的 空 間 大 小 不 夠 , 而 發(fā) 卡 程 序 試 圖 寫(xiě) 入 除 卡 片 主 控 密 鑰 外 還 想 寫(xiě) 入 卡 片 維 護(hù) 密 鑰 時(shí) , 勢(shì) 必 造 成 寫(xiě) 入 空 間 不 夠 而 導(dǎo) 致 寫(xiě) 入 不 成 功 。
3 密 鑰 文 件 的 建 立 與 密 鑰 值 的 寫(xiě) 入
為 了 獨(dú) 立 地 管 理 一 張 卡 上 不 同 應(yīng) 用 之 間 的 安 全 問(wèn) 題 , CPU卡 中 的 每 一 個(gè) 應(yīng) 用 放 在 一 個(gè) 單 獨(dú) 的 ADF中 。 各 個(gè) ADF及 其 下 屬 各 文 件 數(shù) 據(jù) 的 訪 問(wèn) ( 包 括 改 寫(xiě) 、 讀 取 ) 只 能 應(yīng) 用 該 ADF下 的 密 鑰 文 件 中 的 密 鑰 數(shù) 值 。 為 討 論 方 便 , 此 處 假 設(shè) 只 有 一 個(gè) ADF。
用 戶 卡 結(jié) 構(gòu) 中 主 要 存 在 以 下 兩 個(gè) 密 鑰 文 件 及 相 應(yīng) 的 幾 個(gè) 密 鑰 :
(1)MF下 的 密 鑰 文 件 (簡(jiǎn) 稱 KMF), 其 裝 載 的 密 鑰 是 卡 片 主 控 密 鑰 (簡(jiǎn) 稱 CCK, 以 下 同 );
(2)ADF下 的 密 鑰 文 件 (簡(jiǎn) 稱 KADF), 其 裝 載 的 密 鑰 有 應(yīng) 用 主 控 密 鑰 (簡(jiǎn) 稱 ACK, 以 下 同 ),應(yīng) 用 維 護(hù) 密 鑰 (簡(jiǎn) 稱 AMK), 及 其 它 應(yīng) 用 密 鑰 ;
(3)其 它 密 鑰 , 如 口 令 密 鑰 PIN, 口 令 解 鎖 密 鑰 , DES運(yùn) 算 密 鑰 等 等 。
3.1 密 鑰 文 件 的 創(chuàng) 建
各 密 鑰 文 件 在 建 立 時(shí) 必 須 慎 重 考 慮 以 下 兩 個(gè) 要 素 :
(1)文 件 大 小 的 分 配 ;
(2)有 關(guān) 權(quán) 限 和 密 鑰 使 用 后 的 后 續(xù) 狀 態(tài) 值 的 規(guī) 定 。
密 鑰 文 件 的 大 小 分 配 取 決 于 要 裝 載 的 密 鑰 個(gè) 數(shù) 。 每 個(gè) 密 鑰 均 為 一 條 可 變 長(zhǎng) 的 記 錄 , 每 條 記 錄 的 長(zhǎng) 度 為 密 鑰 數(shù) 據(jù) 長(zhǎng) 度 加 7。 以 此 可 以 計(jì) 算 密 鑰 文 件 的 大 小 。 在 發(fā) 卡 程 序 設(shè) 計(jì) 過(guò) 程 中 , 常 常 會(huì) 出 現(xiàn) 因 為 密 鑰 文 件 的 大 小 分 配 不 夠 而 造 成 后 面 的 密 鑰 無(wú) 法 寫(xiě) 入 。
密 鑰 文 件 建 立 過(guò) 程 中 的 有 關(guān) 權(quán) 限 和 密 鑰 使 用 后 的 后 續(xù) 狀 態(tài) 值 的 規(guī) 定 一 方 面 起 到 對(duì) 密 鑰 文 件 本 身 的 安 全 維 護(hù) 作 用 , 另 一 方 面 也 將 決 定 對(duì) 卡 片 操 作 的 流 程 。 顯 然 這 個(gè) 要 素 至 關(guān) 重 要 。
3.2 各 密 鑰 值 的 寫(xiě) 入
關(guān) 于 密 鑰 值 的 寫(xiě) 入 , 關(guān) 鍵 問(wèn) 題 是 要 弄 清 楚 該 密 鑰 要 求 以 何 種 形 式 寫(xiě) 入 。 通 常 有 以 下 幾 種 形 式 :
(1)以 明 文 形 式 寫(xiě) 入 ( 常 見(jiàn) 的 如 口 令 密 鑰 PIN的 寫(xiě) 入 ) ;
(2)以 帶 線 路 保 護(hù) 的 形 式 寫(xiě) 入 ( 要 求 計(jì) 算 MAC) ;
(3)以 對(duì) 密 鑰 值 進(jìn) 行 加 密 后 的 密 文 形 式 寫(xiě) 入 ( 要 求 計(jì) 算 DES或 3DES) ;
(4)以 對(duì) 密 鑰 值 進(jìn) 行 加 密 并 帶 線 路 保 護(hù) 的 形 式 寫(xiě) 入 ( 要 求 計(jì) 算 DES& MAC) 。
如 果 密 鑰 值 的 寫(xiě) 入 要 求 加 密 并 帶 線 路 保 護(hù) , 則 密 鑰 值 寫(xiě) 入 時(shí) 須 對(duì) 該 密 鑰 值 進(jìn) 行 DES& MAC計(jì) 算 后 以 密 文 形 式 寫(xiě) 入 ( 當(dāng) 然 卡 片 操 作 系 統(tǒng) 內(nèi) 部 會(huì) 自 動(dòng) 將 其 解 釋 成 明 文 ) , 帶 線 路 保 護(hù) 的 目 的 是 防 止 密 鑰 值 在 寫(xiě) 入 的 過(guò) 程 中 被 劫 取 。 如 果 不 要 求 帶 線 路 保 護(hù) 寫(xiě) 入 , 可 直 接 以 明 文 方 式 寫(xiě) 入 。
在 發(fā) 卡 程 序 設(shè) 計(jì) 過(guò) 程 中 , 尤 其 要 注 意 卡 片 主 控 密 鑰 、 應(yīng) 用 主 控 密 鑰 、 應(yīng) 用 維 護(hù) 密 鑰 及 其 它 密 鑰 之 間 的 關(guān) 系 及 其 寫(xiě) 入 要 求 。
3.2.1卡 片 主 控 密 鑰 與 應(yīng) 用 主 控 密 鑰
卡 片 主 控 密 鑰 是 對(duì) 整 個(gè) 卡 片 的 訪 問(wèn) 起 控 制 作 用 的 密 鑰 , 由 卡 片 生 產(chǎn) 商 寫(xiě) 入 , 由 發(fā) 卡 方 替 換 為 發(fā) 卡 方 的 卡 片 主 控 密 鑰 。 發(fā) 卡 程 序 設(shè) 計(jì) 過(guò) 程 中 ,在 對(duì) 卡 片 進(jìn) 行 任 何 操 作 之 前 ,必 須 使 用 卡 片 主 控 密 鑰 作 外 部 認(rèn) 證 ,
應(yīng) 用 主 控 密 鑰 是 應(yīng) 用 的 控 制 密 鑰 , 在 卡 片 主 控 密 鑰 控 制 下 寫(xiě) 入 。 一 般 地 , 發(fā) 卡 方 替 換 卡 片 的 主 控 密 鑰 之 后 , 為 驗(yàn) 證 替 換 工 作 正 確 , 再 用 新 的 卡 片 主 控 密 鑰 作 一 次 外 部 認(rèn) 證。