本應用筆記以DS8007作為接口器件和DS5002安全微控制器的智能卡支付終端交易為例。DS8007評估(EV)板和可用的C源代碼可實現基本的智能卡信用卡、借記卡和卡初始化功能。
概述
本應用筆記介紹了基于DS8007多協議、雙智能卡接口芯片和DS5002安全微控制器的智能卡支付交易系統。基本信用卡和借記交易與智能卡初始化功能一起實現。雖然沒有試圖包括通常與“真實”支付交易系統相關的任何安全措施,但此處演示的功能代表了這種系統。
本演示使用的硬件是DS8007評估(EV)板。該板為使用DS8007器件測試智能卡操作提供了一個方便、成熟的平臺。該板包括:DS5002安全微控制器作為主處理器;一個 2 行 x 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評估板。
應用說明
此事務示例實現并正確管理應用程序協議數據單元 (APDU) 的發送和接收,如 EMV 規范中對 ACOS3 智能卡的定義。通過操作和發送適當的 APDU,然后處理其潛在響應,演示代表典型支付交易的操作。
此應用程序的 C 源代碼可供下載,并且該文件AN4120_SW.zip。上述應用筆記4036中的代碼構成了這些交易示例的核心;它提供所有基本的DS8007接口/驅動器功能和所有直接的低級智能卡接口功能。AN4036 的代碼也可從文件 AN4036_SW.zip 中的同一網址下載。
交易詳情示例
為了創建具有代表性的事務函數組,此示例中實現了三個主要的智能卡操作。
借記交易,從卡的余額中扣除一定金額
信用交易,其中金額添加到卡的余額中
卡初始化交易,其中卡的余額和交易計數設置為初始值
初始余額 $100.00 存儲在卡中,初始計數在初始化事務期間設置為 10。為了簡化示例,在信用卡或借記交易的卡余額中添加或扣除固定金額 $00.<>。
為了實現合理的演示,首先要考慮的是如何使用DS8007評估板上的資源創建用戶界面。一個目標是它獨立運行,無需額外設備。因此,主板的RS-232串行端口被拒絕作為用戶界面。相反,可供用戶輸入的最方便的硬件是交換機 SW4。按下此開關時,將處理器的端口針腳 P3.2 拉至地。引腳 P3.2 是一個多功能端口引腳,也可用作外部中斷輸入 (INT0)。但是,在此應用程序中,軟件不會啟用此中斷。因此,引腳通常由處理器的引腳驅動電路拉高,并在按下SW1時通過4kΩ電阻拉低。應用只需讀取引腳即可檢測此開關閉合。
板載LCD模塊用作用戶界面的輸出設備。DS8007評估板上的LCD模塊為2行×20字符顯示。它包含創建液晶驅動信號所需的驅動器電路,并為處理器提供 8 位并行接口。通過將所需的控件和字母數字字符寫入模塊來操作顯示,模塊管理實際的LCD。
給定一個用戶輸入,軟件在LCD上以重復順序向用戶顯示三個可能的交易。然后,軟件執行按下開關SW4時顯示的交易。
智能卡詳細信息
本應用示例選擇的智能卡是由香港先進卡系統有限公司(ACS)制造的ACOS3卡。該卡包含一個嵌入式處理器,該處理器運行稱為 A CS S mart Card Operating System 版本 3 (ACOS3) 的操作系統,并具有以下功能:
16kB EEPROM 存儲器,用于存儲應用數據
符合 ISO 7816-1/2/3,T = 0 協議
數字加密標準 (DES)、三重 DES 和消息身份驗證功能 (MAC) 功能
五個密碼+發行人代碼
密碼,可由持卡人更改
用于相互身份驗證的密鑰對
基于隨機數的會話密鑰
具有固定記錄長度的線性文件
安全支付應用的賬戶數據結構
有關 ACOS3 功能的完整說明,請訪問
ACS 網站
。對于此應用程序,不使用卡的安全功能。僅使用文件結構和 EEPROM 存儲。
卡內存存儲
對于此事務示例,所選卡必須包含一些用于信息存儲的最小數量的非易失性存儲器。卡中僅存儲兩個值:包含成功處理的交易數量的“計數器”和虛構帳戶“余額”。對于計數器,選擇了 1 字節無符號值,因為它可以表示從 0 到 255 個事務的計數。對于余額,選擇16位整數,因為它可以表示-32,768到+32,767的值。這種方法允許用戶在可用余額之外從卡中扣款(即創建負余額)。因此,本例總共需要三個字節的非易失性存儲器。
ACOS3 文件結構
ACOS16卡中的3kBEEPROM存儲器在制造時被隔離為內部數據存儲器和用戶數據存儲器。內部數據存儲器存儲配置數據,通常由操作系統用于管理某些功能。用戶數據存儲器在“真實”交易應用程序的控制下存儲卡正常使用中操縱的數據。在此示例代碼中,僅使用內部數據存儲器,因此它將是其余討論的重點。
無論是使用內部數據存儲器還是用戶數據存儲器,都可以通過數據文件和數據記錄訪問ACOS3卡的存儲器。每個數據文件由一定數量的數據記錄組成,最多 255 條。不同文件的記錄長度可能不同,但在給定文件中始終是固定的。內部數據文件的文件結構(文件大小、記錄長度等)由操作系統定義,無法更改。但是,對于用戶數據存儲器,發卡機構在個性化卡時確定文件結構。為簡單起見,此處使用卡的現有內部數據文件系統,而不是實現任意用戶數據文件系統。
可以通過ACOS3讀取記錄和寫入記錄命令訪問所有文件。這些命令被發送到卡,任何響應都通過應用筆記4036中提供的APDU功能接收。每個文件都由一個 2 字節的文件標識符標識。對于所有內部數據文件,標識符的第一個字節固定為 0xFF。表 1 顯示了內部數據文件的文件名、文件標識符和記錄組織。
表 1.內部數據文件信息
文件名 |
單片機接口 | 制造者 | 個性化 | 安全 |
用戶文件 管理 |
帳戶文件 |
賬戶 安全 |
用戶文件 數據區域 |
文件編號 |
0xFF 0x00 | 0xFF 0x01 | 0xFF 0x02 | 0xFF 0x03 | 0xFF 0x04 | 0xFF 0x05 | 0xFF 0x06 | 0xFF 0x07 |
記錄 組織 |
2 x 8 字節 | 2 x 8 字節 | 3 x 4 字節 | 12 x 8 字節 | 變量 | 8 x 4 字節 | 4 x 8 字節 | 變量 |
個性化文件“File ID = 0xFF 0x02”包含 12 個字節,這些字節排列為三個記錄,每個記錄的長度為 <> 個字節。第一條記錄包含配置卡中某些選項的信息。但是,記錄二和記錄三沒有預先確定的定義。因此,這兩個記錄用于在卡中保存此應用程序的計數和余額值。雖然單個記錄包含足夠的存儲空間(四個字節)來保存計數和余額信息所需的三個字節的數據,但這兩個值存儲在不同的記錄中以簡化和闡明其操作。這也使得增加到更大的數字成為可能。計數存儲在第二條記錄的第一個字節中,余額存儲在第三條記錄的前兩個字節中,即高階字節優先(即大端序)。
ACOS3 命令結構
ACOS3 卡有 13 個基本命令。在此應用程序中,其中三個命令構成了所執行操作的核心。它們是“選擇文件”、“讀取記錄”和“寫入記錄”命令。下面介紹了這些命令中的每一個。所有 ACOS3 命令都遵循 EMV 規范中描述的應用協議數據單元 (APDU) 的形式。APDU 常規形式由以下元素組成:
命令的 CLA 類
INS 指令代碼
P1 指令參數 1
P2 指令參數 2
Lc(P3) 命令數據字段中存在的字節數(可選)
命令中發送的數據字節的數據系列
Le 響應數據字段中預期的最大數據字節數(可選)
“選擇文件”命令
“選擇文件”命令
可打開文件,以便可以讀取和/或寫入其記錄。它是一個 7 字節的命令,其格式為:
共軛亞油酸 | 移民局 | 小一 | 小一 | 小一 | 數據 1 | 數據 2 |
0x80 | 0xA4 | 0x00 | 0x00 | 0x02 | 文件 ID 高 (0xFF) | 文件 ID 低 (0x02) |
由于個性化文件(請參閱表 1)是此應用程序中使用的唯一文件,因此其文件 ID 0xFF 0x02是命令的最后兩個字節。與所有 ACOS3 命令一樣,如果成功完成,此命令將返回 2x0 90x0 的 00 字節狀態。任何其他返回的值都指示執行期間出錯。有關可能的錯誤狀態字節及其含義的完整列表,可在上述ACS網站上的ACOS3參考手冊中在線找到。
讀取記錄命令 讀取記錄命令
從當前選定文件的標識記錄中讀取指定的字節數。它是一個 5 字節命令,其格式為:
共軛亞油酸 | 移民局 | 小一 | 小一 | 小一 |
0x80 | 0xB2 | 記錄編號 (0..N-1) | 0x00 | 長度 (0x04) |
如圖所示,此命令有兩個可變字節:一個字節指示記錄號,另一個指示要從指定記錄讀取的字節數(長度)。在此應用程序中,每次都會讀取個性化文件記錄的所有四個字節,因此長度固定為 0x04。如果命令成功完成,它將返回六個字節的數據:四個字節的信息存儲在記錄中,兩個字節的狀態信息。如果返回除 0x90 0x00 以外的狀態字節的任何值,則該命令將生成錯誤,應忽略返回的數據。
“寫入記錄”命令 “寫入記錄”命令
將數據寫入當前所選文件的指定記錄。這是一個可變長度命令,取決于寫入的字節數。在此示例中,始終寫入四個字節,因此命令具有顯示的形式。
共軛亞油酸 | 移民局 | 小一 | 小一 | 小一 | 數據 | 數據 | 數據 | 數據 |
0x80 | 0xD2 | 記錄編號 (0..N-1) | 0x00 | 長度 (0x04) | 字節 1 | 字節 2 | 字節 3 | 字節 4 |
如圖所示,此命令總共有六個可變字節;一個字節表示記錄號(0 到 N-1),另一個字節表示要寫入的字節數(長度 = 0x04),并且有四個數據字節。如果命令成功完成,它將返回兩個字節的狀態信息(成功完成0x90 0x00)。
加載可執行文件
DS8007評估板自帶智能卡示例交易軟件。要驗證此軟件是否存在,請為開發板通電并觀察顯示屏。如果顯示以“將卡插入下面的大插槽”結尾的雙屏橫幅(圖1),則程序已加載。如果未顯示此橫幅,則可以使用MTK軟件將程序加載到電路板的電池備份SRAM中。應用筆記4036(見上文)描述了如何加載應用文件。要加載的文件是 Trans.hex,包含在可從上述 ftp 網站下載的AN4120_SW.zip文件中。
圖1.“插入卡”橫幅。
加載文件并斷開引導加載程序后,處理器立即開始運行應用程序。如果仍連接到PC,MTK屏幕可能會顯示程序的RS-232串行輸出。但是,此信息用于分析和調試,應忽略。用戶應按照液晶屏模塊上顯示的說明進行操作。如果需要,可以分析源代碼以確定串行輸出的含義。
插入智能卡后,卡的當前交易計數和帳戶余額會短暫顯示在LCD上。然后,顯示屏開始按順序循環瀏覽交易選項(借方、貸方和初始化),大約每兩秒更改一次。顯示所需事務時,按 SW4 開關執行此事務。然后,顯示屏將顯示執行的操作。將顯示一條結束消息,并指示用戶刪除智能卡。此時,事務周期重復等待重新插入卡。
結論
本應用筆記所述的系統基于DS8007多協議、雙智能卡接口芯片和DS5002安全微控制器實現智能卡支付交易系統。使用包含3kBEEPROM存儲器的ACOS16智能卡,其讀記錄和寫記錄命令用于將信息存儲在該非易失性存儲器中。反饋通過板載 2 行 x 20 個字符的 LCD 提供給用戶。信用卡和借記交易與智能卡初始化功能一起實現。源代碼文件可供下載,可以構成實際系統實現的基礎。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7559瀏覽量
151471 -
處理器
+關注
關注
68文章
19293瀏覽量
229941 -
lcd
+關注
關注
34文章
4426瀏覽量
167560
發布評論請先 登錄
相關推薦
評論