本應用筆記介紹了一個基于 DS8007 多協議雙智能卡接口芯片和 DS5002 安全微控制器的智能卡支付交易系統。該系統可實現基本的智能卡存款、取款交易以及卡的初始化功能。雖然系統沒有進行任何與"實際"支付交易系統有關的安全測試,但這里演示的功能對于此類系統極具代表性。
演示中使用的硬件是 DS8007 評估(EV)板。該評估套件提供了一個方便的、經過驗證的平臺,用于測試基于 DS8007 器件的智能卡操作。評估板包括:作為主處理器的 DS5002 安全微控制器、一個 2 行 20 字符的液晶顯示(LCD)模塊、兩個智能卡插槽(分別為信用卡尺寸和 SIM 尺寸)。此外還提供一個 DB-9 連接器,用于通過 RS-232 串行接口傳輸信號。使用本公司的微控制器工具包(MTK)軟件(下載),用戶可將 PC 與 RS-232 口連接下載程序或數據文件,也可以與應用系統通信。評估板還包括 512k x 8 的電池備份 SRAM,用于存儲程序和數據信息。DS5002 安全處理器為電池備份的 SRAM 提供電源檢測和控制電路。
開發該應用系統使用的軟件工具集是 Keil 公司的 PK51 專業開發工具套件,包括μVision3?集成開發環境(IDE)和 CX51 ANSI C 編譯器。PK51 包提供匯編器、連接器、仿真器和調試器的完整開發環境。它生成的十六進制文件可使用 MTK 軟件直接從 PC 下載到 DS8007 評估板。
應用實例
本應用筆記提供的交易功能可看作是應用筆記 4036: 利用 DS8007 評估套件進行設計中描述的低層功能之上的附加層。
本交易實例可執行和正確管理應用協議數據單元(APDU)的發送和接收。APDU 由 ACOS3 智能卡 EMV 規范定義。通過生成和發送適當的 APDU 并處理其可能的響應,可演示典型的支付交易操作。
用于本應用系統的 C 語言源代碼可提供下載,文件名為 AN4120_SW.zip。前面提到的應用筆記 4036 中的代碼是這些交易實例的核心,它提供 DS8007 的所有基本接口 / 驅動函數和所有直接的低層智能卡接口函數。AN4036 中的代碼也在相同的網址提供下載,文件名為 AN4036_SW.zip。
交易實例詳述
為創建一組有代表性的交易功能,本實例實現了三種主要的智能卡操作。
取款交易,即扣除信用卡余額
存款交易,即增加信用卡余額
信用卡初始化交易,將信用卡余額和交易次數設定為初始值
卡中初始金額為$100.00,初始交易次數在初始化交易過程中被設定為 1。為簡化實例,每次存款、取款交易都固定在信用卡余額中增加或扣除$10.00。
為了提供一個合理的演示,首先要考慮的是如何利用 DS8007 評估板上的資源建立一個用戶接口。由于設計目標之一是無需借助其它設備就能單機運行,因此評估板上的 RS-232 串口不能作為用戶接口。最方便作為用戶輸入接口的硬件是開關 SW4,當該開關按下時,會將處理器的端口引腳 P3.2 下拉至地電平。P3.2 是一個多功能端口引腳,還可用作外部中斷輸入(INT0)。但是本應用實例軟件中不使能該中斷,因此,引腳 P3.2 通常由處理器的引腳驅動電路上拉到高電平,按下開關 SW4 時通過一個 1kΩ電阻拉至低電平。應用系統可簡單通過讀取該引腳的電平檢測開關是否閉合。
板載 LCD 模塊可作為用戶接口的輸出器件。DS8007 評估板的 LCD 模塊是一個 2 行 20 字符的顯示器。它包含液晶驅動電路,并為處理器提供 8 位并行接口。通過向模塊寫入必要的控制和字符就可進行顯示操作,由模塊管理實際的 LCD。
用戶完成一次輸入,軟件就以重復順序在 LCD 上顯示三種可能的交易類型供用戶選擇。按下開關 SW4 時,軟件執行選中的交易。
智能卡詳述
本應用實例中選用的智能卡是香港 Advanced Card Systems Limited (ACS)公司生產的 ACOS3 卡。該卡內含嵌入式處理器,運行 ACS 智能卡操作系統版本 3 (ACOS3)的操作系統,具有如下特性:
16kB 應用數據 EEPROM 存儲器
符合 ISO 7816-1/2/3 標準,T = 0 協議
兼容數字加密標準(DES)、3DES 和信息驗證能力(MAC)
5 個安全碼 + 發行密碼
卡持有者可更新 PIN 碼
密鑰對相互驗證
會話密鑰采用隨機數字
線性文件具有固定的記錄長度
帳戶數據結構可實現安全支付應用系統
ACOS3 性能的全部說明可在 ACS 網站上找到。對于本應用實例,沒有使用智能卡的任何安全功能,只使用其文件結構和 EEPROM 存儲空間。
智能卡存儲空間
本交易實例中,選用的智能卡必須包含一定的非易失存儲器空間,用于保存信息。僅有兩個數值保存在卡中:記錄成功處理的交易次數的"計數器"和虛擬帳戶的"余額"。對于該計數器,選用 1 個字節的無符號數,它可表示 0 至 255 次交易數。對于余額,選用 16 位整數,可表示數值 -32,768 至+32,767。這種方式允許用戶透支卡中的可用余額(即產生負的余額)。因此,本實例中總共需要 3 個字節的非易失存儲器。
ACOS3 的文件結構
制造 ACOS3 卡時,其 16kB EEPROM 存儲器劃分成內部數據存儲區和用戶數據存數區兩部分。內部數據存儲區保存配置數據,通常被操作系統用于管理特定的功能。用戶數據存儲區保存"實際"交易控制下正常使用智能卡的操作數據。在本實例代碼中,只使用內部數據存儲區,后續討論中將重點關注內部數據存儲區。
不論是內部數據存儲區還是用戶數據存儲區,訪問 ACOS3 卡的存儲器都要通過數據文件和數據記錄進行。每個數據文件都由一定數量的數據記錄組成,最多可達 255 個。不同數據文件的記錄長度可以不同,但對于給定的數據文件其記錄長度總是固定的。內部數據文件的文件結構(文件大小、記錄長度等)由操作系統定義且不能更改,但對于用戶數據存儲區,可由卡發行人在進行個性化智能卡設置時確定其文件結構。為簡單起見,只使用卡中已有的內部數據文件系統,不再生成一個專門的用戶數據文件系統。
所有文件都可通過 ACOS3 的讀記錄和寫記錄命令進行訪問。這些命令發送到智能卡,而任何響應都會被應用筆記 4036 中提供的 APDU 函數接收。每個文件都由 2 字節的文件標識符來識別。對于所有內部數據文件,標識符的第一個字節固定為 0xFF。表 1 列出了內部數據文件的文件名、文件標識符和記錄結構。
表 1. 內部數據文件信息
個性化文件 ID = 0xFF 0x02,包含三個記錄共 12 字節,各記錄的長度為 4 個字節。第一個記錄包含智能卡中某些選項的配置信息,而第二和第三個記錄則沒有預先定義。因此,這兩個記錄被用于保存本應用實例中智能卡的交易次數和帳戶余額。雖然單個記錄具有足夠的存儲空間(4 個字節)來保存交易次數和帳戶余額所需的三個字節,但這兩個數據還是存儲在不同的記錄中以便操作。這也使得增大這兩個數據的值成為可能。交易次數存儲在記錄 2 的第一個字節,而帳戶余額則存儲在記錄 3 的前兩個字節,高字節在前(大端)。
ACOS3 命令結構
ACOS3 卡有 13 條基本命令,本應用實例中主要用到其中的三條命令。它們分別是文件選擇、讀記錄和寫記錄命令。這三條命令都將在后面進行說明。ACOS3 卡的所有命令都符合 EMV 規范描述的應用協議數據單元(APDU)的格式。APDU 的一般格式包括如下幾部分:
CLA 命令類
INS 指令代碼
P1 指令參數 1
P2 指令參數 2
Lc(P3)命令數據域給出的字節數(可選)
命令發送數據字節中的數據序列
Le 應答中數據域所期望的數據 字節最大長度(可選)
文件選擇命令
文件選擇命令可打開文件,從而讀 / 寫文件的記錄。它是一個 7 字節命令,格式為:
個性化文件是本應用中用到的唯一文件(見表 1),它的文件 ID 0xFF 0x02 為命令的最后兩個字節。與所有 ACOS3 命令一樣,執行成功后返回 2 字節狀態信息,其數值為 0x90 0x00。若返回任何其它數值則表明命令執行錯誤。在前面提到的 ACS 網站上,ACOS3 參考手冊中列出了所有可能的錯誤狀態字節及其含義。
讀記錄命令
讀記錄命令可從當前所選文件的已識別記錄中讀取指定數量的字節。它是一個 5 字節命令,格式為:
可以看出,該命令包含兩個可變字節:一個字節指示記錄號,另一個字節指示要從指定記錄中讀取的字節數(長度)。在本應用實例中,每次都讀取個性化文件記錄的全部四個字節,因此長度固定為 0x04。若讀記錄命令執行成功,將返回 6 字節數據:記錄中存儲的 4 字節信息,2 字節狀態信息。若返回的狀態字節數值不是 0x90 0x00,則表明命令執行錯誤,應丟棄返回的數據。
寫記錄命令
寫記錄命令可向當前所選文件的指定記錄寫入數據。該命令的長度可以隨著要寫入的字節數變化。在本實例中,每次都寫入 4 個字節,因此該命令具有如下所示的格式:
可以看出,該命令總共包含 6 個可變字節;一個字節指示記錄號(0 至 N-1),另一個字節指示要寫入的字節數(長度 = 0x04),此外還有四個數據字節。若寫記錄命令執行成功,將返回兩字節狀態信息(執行成功時返回 0x90 0x00)。
裝載可執行文件
DS8007 評估板出廠時已裝有本智能卡交易實例的軟件。若要驗證是否安裝了該軟件,可以給評估板通電然后觀察顯示屏。如果顯示屏上出現"在下面的大插槽中插入智能卡",則表明已經加載了程序。如果沒有顯示這條信息,則可通過 MTK 軟件將交易軟件裝載到板上的電池備份 SRAM 中。應用筆記 4036 (參看上文)說明了如何裝載應用程序。要裝載的文件為 Trans.hex,包含在 AN4120_SW.zip 中,可從上面提到的 ftp 網站下載。
在安裝完交易軟件并斷開引導加載程序之后,處理器就立即開始運行應用程序。如果評估板此時仍然連接至 PC,則 MTK 屏幕上會顯示應用程序的 RS-232 串行輸出。這些信息可用于分析和調試,但可以忽略。用戶應按照 LCD 模塊上顯示的指令進行操作。如果必要,可分析源代碼以確定串行輸出的含義。
插入智能卡后,LCD 上會短暫的顯示智能卡的當前交易次數和帳戶余額。然后,LCD 上就開始循環顯示交易選項—取款、存款和智能卡初始化,大約每兩秒鐘按順序變化一次。當期望的交易選項出現時,按下 SW4 開關就可執行該項交易。這時 LCD 上會顯示交易執行情況。之后顯示交易完成信息,指示用戶取下智能卡。此時,交易選項將循環顯示,等待智能卡插入。
結束語
本應用筆記介紹一個基于 DS8007 多協議雙智能卡接口芯片和 DS5002 安全微控制器的智能卡支付交易系統。系統中使用具有 16kB EEPROM 存儲器的 ACOS3 智能卡,并利用它的讀記錄和寫記錄命令將信息存儲到非易失存儲器中。反饋信息通過板載的 2 行 20 字符 LCD 提供給用戶。系統可實現存款、取款交易和智能卡初始化功能。提供源代碼文件下載,可以此為基礎開發真正的支付交易系統。
審核編輯 黃昊宇
-
芯片
+關注
關注
456文章
51192瀏覽量
427295 -
智能卡
+關注
關注
0文章
137瀏覽量
24810
發布評論請先 登錄
相關推薦
評論