Posted on 2006-06-29 16:49
奔跑的阿甘 閱讀(996)
評論(0) 編輯 收藏 引用 所屬分類:
ATM Technology/EMV Notes
ICC的數據存儲
Michael 2006/06/29
ICC卡支持多應用,每個應用都存儲著相關的信息,這些信息像操作系統的文件結構一樣存儲。
最小的信息單位是數據元素,它包含數據元素名稱、內容描述、格式和編碼,比如:
Name??????????|??????????Description???????????????|???Source??|???????Format??????????|Template |?Tag???|????Length
Application?|?Valid cardholder account number?| ICC?| cn var. up to 19 |??'70' or '77' |?'5A'?|?var. up to 10
Primary Account
Number (PAN)
數據對象,由TAG、LENGTH、VALUE組成,每個數據對象由一個該應用范圍內唯一的TAG進行標識。和OS的文件夾類似,一個數據對象可僅僅包含數據元素,或者子數據對象,如果該數據對象值為數據元素,則被稱作“原始數據對象(Primitive Data Object)”;如果該數據對象值為其他(一個或多個)數據對象,則它被稱作“組合數據對象(Constructed Data Object)”,相應地,它的值被稱作“模板(Template)”。這兩類數據對象的TAG是不一樣的,所以,從TAG可以知道它屬于哪一種類型。例如,77099F1A0208409F350101,它是一個組合對象,TAG='77',組合對象的長度為9個字節,組合對象的值為"9F1A0208409F350101",即它包含兩個原始數據對象,分別是對象"9F1A"(LEN=02, VALUE=0840)和"9F35"(LEN=01, VALUE=01)。
上面我們討論了一些邏輯概念,現在讓我們具體看看ICC中對上述概念是如何存儲的。
每個應用包含一個或多個文件(Files),它是ICC中信息的存儲格式,文件中包含大量的記錄(Records),記錄就是模板(即它存放了一個或多個數據對象)。關于他們之間的關系,我們可以做個形象的比喻,文件就像數據庫系統中的數據庫,記錄如同數據庫中的表,數據對象則似表中的每條記錄。
那么如何訪問文件呢?
文件有三種類型:AEF(Application Elementary File)、ADF(Application Definition File)、DDF(Directory Definition File)。對于ADF和DDF,采用文件名稱進行訪問,文件不可以重名,它在卡中必須是獨一無二的。對于AEF,采用一個整數標識(范圍從1-30)即SFI(Short File Identifier)進行訪問,同樣地,該標識不可以重復,它在同一應用中是獨一無二的。
我們再來看看終端通過哪些命令來和ICC交互。
不同的發卡行對IC卡的定義是不一樣的,在EMV標準中,定義了以下命令集,除此之外,發卡行可以定義針對自身的命令集。
終端發給ICC的命令集合(共13個):
命令類別 ? 指令碼 ? 含義
‘8x’ ?? ?? ? ‘1E’ ??? APPLICATION BLOCK
‘8x’ ??? ??? ‘18’ ??? APPLICATION UNBLOCK
‘8x’ ?? ?? ? ‘16’ ??? CARD BLOCK
‘0x’ ?? ?? ? ‘82’ ??? EXTERNAL AUTHENTICATE【請求ICC校驗ISSUER AUTHENTICATION DATA】
‘8x’ ?? ?? ? ‘AE’ ??? GENERATE APPLICATION CRYPTOGRAM【返回CID(Cryptogram Information Data),?ATC
?????????????????????????????????????(Application??Transaction Counter, AC(Application Cryptogram)數據】
‘0x’ ?? ?? ? ‘84’?? ? GET CHALLENGE【獲取隨機數】
‘8x’ ? ??? ? ‘CA’ ??? GET DATA【限于讀取ATC(tag '9F36'), Last Online ATC Register(tag '9F13'), PIN Try
?????????????????????????????????????Counter(tag '9F17')】
‘8x’ ??? ? ? ‘A8’?? ? GET PROCESSING OPTIONS【返回AIP(Application Interchange Profile)和AFL
????????????????????????????????????(Application?File Locator)】
‘0x’ ?? ?? ? ‘88’?? ? INTERNAL AUTHENTICATE【請求ICC計算并返回Signed Dynamic Application Data】
‘8x’ ? ??? ? ‘24’?? ? PERSONAL IDENTIFICATION NUMBER (PIN)CHANGE/UNBLOCK【激活PIN,
????????????????????????????????????重設PIN RETRY Counter】
‘0x’ ?? ?? ? ‘B2’?? ? READ RECORD【讀取RECORD數據,如Application Expiration Date, Application PAN,?
???????????????????????????Card Risk?Managemt Data Object List1, Card Risk Management Data Object List2, etc】
‘0x’ ? ??? ? ‘A4’?? ? SELECT
‘0x’ ?? ?? ? ‘20’?? ? VERIFY【要求ICC進行脫機密碼校驗(Transaction PIN & Reference PIN)】
‘8x’ ? ??? ? ‘Dx’?? ? RFU for the payment systems
‘8x’ ? ??? ? ‘Ex’?? ? RFU for the payment systems
‘9x’ ? ??? ? ‘xx’?? ? RFU for manufacturers for proprietary INS coding
‘Ex’ ?? ?? ? ‘xx’?? ? RFU for issuers for proprietary INS coding
終端發給ICC的命令由4個字節的命令包頭和命令碼以及相關參數組成。ICC返回給終端的數據是我們在前面提到的數據對象或模板,再添加2個字節的命令執行狀態。
到這里,我們知道了ICC中有哪些數據,以及它們如何存儲,終端如何訪問它們。