DS8007是一款多協(xié)議、低成本、雙智能卡接口,支持所有ISO 7816、EMV?和GSM11-11要求。這個(gè)混合信號(hào)外設(shè)管理微控制器和兩個(gè)獨(dú)立智能卡之間接口的所有細(xì)節(jié)。本應(yīng)用筆記介紹了智能卡的一些基礎(chǔ)知識(shí)以及如何與智能卡通信。提供的軟件使用DS8007將智能卡與DS5002安全微處理器連接。
概述
什么是智能卡?智能卡通常定義為包含嵌入式集成電路的任何袖珍卡。由于嵌入式集成電路,智能卡有時(shí)被稱為集成電路卡或ICC。圖 1 顯示了一個(gè)典型示例。這些卡用于各種不同的應(yīng)用,取代了熟悉的支付(借記卡或信用卡)卡,后者使用磁條來存儲(chǔ)有關(guān)卡帳戶的信息。在支付應(yīng)用中向智能卡的過渡主要是因?yàn)楣δ茉黾樱貏e是因?yàn)樵摷夹g(shù)可以提高安全性。但是,必須根據(jù)智能卡的較高成本來評(píng)估后一種功能。
嵌入在智能卡中的集成電路可以是簡單的非易失性存儲(chǔ)設(shè)備,也可以是能夠執(zhí)行復(fù)雜操作的微控制器等復(fù)雜設(shè)備。支付卡中的簡單非易失性存儲(chǔ)設(shè)備可以取代用于存儲(chǔ)數(shù)據(jù)的磁條。在許多此類設(shè)備中,存儲(chǔ)器與附加邏輯相結(jié)合,以限制對(duì)部分或全部存儲(chǔ)器的訪問。然而,智能卡的真正功能在于嵌入式微控制器執(zhí)行數(shù)據(jù)處理和/或加密功能的能力。這種處理能力允許增強(qiáng)安全功能。然而,隨著復(fù)雜性的增加,卡的成本也在增加。帶有嵌入式處理器的智能卡的成本在 7.00 美元到 15.00 美元之間,而帶有磁條的支付卡的成本可能低至 0.75 美元1 (美元)。智能卡的這種較高成本減緩了從更簡單技術(shù)的普遍轉(zhuǎn)換,但隨著對(duì)安全性的要求增加,對(duì)智能卡的需求也將增加。
DS8007提供微控制器與兩個(gè)獨(dú)立智能卡物理接口所需的所有電信號(hào)。該器件包含一個(gè)專用的內(nèi)部定序器,用于控制自動(dòng)卡激活和停用,以及一個(gè)用于數(shù)據(jù)通信的ISO UART。電荷泵和穩(wěn)壓器允許該器件在 2.7V 至 6.0V 電源電壓下工作,并產(chǎn)生兩個(gè)獨(dú)立的智能卡電源電壓,其中任一電壓可以是 1.8V、3.0V 或 5V。與微控制器的通信由標(biāo)準(zhǔn)的并行8位總線提供,該總線在非多路復(fù)用配置中傳輸數(shù)據(jù),或在多路復(fù)用配置中傳輸數(shù)據(jù)和地址。
智能卡詳細(xì)信息
雖然最熟悉的智能卡外形規(guī)格是信用卡大小的設(shè)備,但術(shù)語“智能卡”也適用于用戶識(shí)別模塊 (SIM),其大小約為郵票大小,常見于移動(dòng)電話中。這種SIM卡外形還用于支付終端,為終端提供特定的支付系統(tǒng)數(shù)據(jù)和詳細(xì)的應(yīng)用信息。信用卡大小設(shè)備的卡部分通常由聚氯乙烯(PVC)制成,并且通常浮雕有帳號(hào)和可能的有效期。無論外形尺寸如何,所有機(jī)電規(guī)格均基于 ISO 7816 系列標(biāo)準(zhǔn)。此外,由EuroCard,MasterCard和Visa(EMV)公司組成的聯(lián)盟已經(jīng)制定了一套專門針對(duì)智能卡及其在支付系統(tǒng)中的應(yīng)用的標(biāo)準(zhǔn)。EMV規(guī)范通?;贗SO 7816文檔。???
智能卡聯(lián)系人
智能卡上觸點(diǎn)的數(shù)量、位置和功能由上述標(biāo)準(zhǔn)明確定義。集成電路在標(biāo)準(zhǔn)智能卡上的位置和觸點(diǎn)尺寸如圖2所示。ISO 7816 定義了八個(gè)可能的接觸位置。在這八個(gè)地點(diǎn)中,有五個(gè)目前用于EMV應(yīng)用。這些觸點(diǎn)的名稱和功能如表1所示。而觸點(diǎn) C6 定義為 V聚丙烯根據(jù) ISO 7816,根據(jù) EMV 規(guī)范,此編程電壓不用于電流卡。不使用觸點(diǎn) C4 和 C8,也不需要實(shí)際存在。下面將更詳細(xì)地討論EMV規(guī)格中指定的各個(gè)觸點(diǎn)。
Contact Name | Contact Function |
C1 | Supply voltage to card (VCC) |
C2 | Reset (RST) |
C3 | Clock (CLK) |
C4 | Provided on the DS8007; not used in EMV |
C5 | Ground (GND) |
C6 | VPP; not used in EMV |
C7 | Input/output (I/O) |
C8 | Provided on the DS007; not used in EMV |
圖2.接觸尺寸和位置。
Vcc觸點(diǎn) (C1)
此觸點(diǎn)為卡提供電源電壓。V的原始規(guī)格抄送僅包括 5V 直流 ±10%。但是,目前已分階段遷移到低壓卡。僅支持此原始規(guī)范的卡(稱為 A 類卡)將在 2009 年 《》 月底之前替換為 AB 類或 ABC 類卡。五世抄送這些卡類別的規(guī)格如下:
A 類卡:4.5V ≤ VCC ≤ 5.5V at ≤ 50mA
AB類卡:2.70V ≤ VCC ≤ 3.3V at ≤ 50mA
ABC類卡:1.62V ≤ VCC ≤ 1.98V at ≤ 30mA
DS8007卡接口包含電荷泵和穩(wěn)壓器,當(dāng)器件采用2.6V至6.0V電源供電時(shí),可為三種卡類別中的任何一種提供適當(dāng)?shù)碾妷骸?/p>
輸入/輸出觸點(diǎn) (C7)
智能卡上的I/O觸點(diǎn)用作輸入(接收模式)以從終端接收數(shù)據(jù)或作為輸出(傳輸模式)以將數(shù)據(jù)傳輸?shù)浇K端。
在接收模式下,當(dāng)輸入符合以下規(guī)范時(shí),卡將識(shí)別有效數(shù)據(jù)。
A類卡
輸入高壓:0.7 × VCC ≤ VIH ≤ VCC
輸入低電壓:0.0 ≤ VIL ≤ 0.8V
上升時(shí)間/下降時(shí)間:≤ 1μs
AB 類或 ABC 卡
輸入高壓:0.7 × VCC ≤ VIH ≤ VCC
輸入低電壓:0.0 ≤ VIL ≤ 0.2 × VCC
上升時(shí)間/下降時(shí)間:≤ 1μs
在傳輸模式下,I/O 觸點(diǎn)將提供如下信號(hào)電平:
A類卡
輸出高壓:0.7 × VCC ≤ VOH ≤ VCC, -20μA 《 IOH 《 0, VCC = min
輸出低電壓:0.0 ≤ VOL ≤ 0.4V, 0 《 IOL 《 1mA, VCC = min
上升時(shí)間/下降時(shí)間:≤ 1.0μs
AB 類或 ABC 卡
輸出高壓:0.7 × VCC ≤ VOH ≤ VCC, -20μA 《 IOH 《 0, VCC = min
輸出低電壓:0.0 ≤ VOL ≤ 0.15 × VCC, 0 《 IOL 《 1mA, VCC = min
上升時(shí)間/下降時(shí)間:≤ 1.0μs
EMV 規(guī)范規(guī)定,除非 I/O 觸點(diǎn)正在傳輸,否則智能卡的 I/O 觸點(diǎn)驅(qū)動(dòng)程序?qū)⒃O(shè)置為接收模式。
CLK 聯(lián)系人 (C3)
CLK觸點(diǎn)是由接口端子(即DS8007)提供的輸入。該信號(hào)用于控制交易過程中數(shù)據(jù)傳輸?shù)臅r(shí)間。頻率范圍指定在 1.0MHz 和 5.0MHz 之間。此觸點(diǎn)具有以下電氣規(guī)格:
A類卡
輸入高壓:VCC - 0.7 ≤ VIH ≤ VCC
輸入低電壓:0.0 ≤ VIL ≤ 0.5V
上升時(shí)間/下降時(shí)間:時(shí)鐘周期的≤9%
AB 類或 ABC 卡
輸入高壓:0.7 × VCC ≤ VIH ≤ VCC
輸入低電壓:0.0 ≤ VIL ≤ 0.2 × VCC
上升時(shí)間/下降時(shí)間:時(shí)鐘周期的≤9%
RST 觸點(diǎn) (C2)
RST觸點(diǎn)是由接口端子源的卡的輸入。該信號(hào)為低電平有效信號(hào),將導(dǎo)致卡異步復(fù)位。該觸點(diǎn)具有與CLK觸點(diǎn)相同的電氣規(guī)格,但最大上升和下降時(shí)間為1.0μs。
從上述規(guī)范可以看出,與智能卡接口的終端必須提供各種電源電壓和信號(hào)電平。接口規(guī)格還要求端子能夠承受卡的任意兩個(gè)觸點(diǎn)之間的短路。由于這些原因,使用專用器件提供必要的電源電壓和信號(hào)電平顯然比組裝大量分立模擬IC更有利。DS8007就是這樣一款專用器件。除了提供這些功能所需的模擬電路外,它還包含F(xiàn)IFO和其他數(shù)字控制邏輯,以支持完整的卡會(huì)話所需的狀態(tài)排序和時(shí)序。
終端接口要求
所有卡片會(huì)話都包括以下步驟。
將卡插入終端;聯(lián)系人的連接和激活
重置卡;在終端和卡之間建立通信(ATR 序列 — 見下文)
交易的執(zhí)行
停用聯(lián)系人;取出卡
插入后對(duì)卡進(jìn)行初始重置后,卡會(huì)以一系列稱為重置答案或 ATR 的字符進(jìn)行響應(yīng)。這一系列字符建立初始通信詳細(xì)信息,包括所有后續(xù)通信的特定協(xié)議、位定時(shí)和數(shù)據(jù)傳輸詳細(xì)信息。雖然后續(xù)數(shù)據(jù)傳輸可以更改某些通信參數(shù),但 ATR 會(huì)建立初始通信條件。以下各節(jié)將廣泛討論 ATR。
個(gè)人角色詳細(xì)信息
在智能卡和終端之間的接口期間,信息通過雙向 I/O 觸點(diǎn)串行傳輸。位持續(xù)時(shí)間定義為元素時(shí)間單位或 ETU。ETU 的時(shí)間段與 CLK 觸點(diǎn)上的端子提供的時(shí)鐘信號(hào)具有直接線性關(guān)系。ATR 期間字符的位時(shí)序稱為初始 ETU。此初始 ETU 由以下等式定義:
初始 ETU = 372/? 秒
其中 ? 是以赫茲為單位的時(shí)鐘信號(hào)的頻率。
在 ATR 之后,位持續(xù)時(shí)間稱為電流 ETU,它是參數(shù) F 和 D 以及時(shí)鐘頻率的函數(shù)。(參數(shù) F 和 D 在下面的 TA1 字符部分中進(jìn)行了更詳細(xì)的討論。
當(dāng)前 ETU = F/(D?) 秒
其中 ? 是以赫茲為單位的時(shí)鐘信號(hào)的頻率。
任何通信中的每個(gè)字符都由 10 位組成,因此持續(xù)時(shí)間為 1 個(gè) ETU。字符的第一個(gè)位稱為起始位;它總是很低。在起始位之前,I/O 行保持其默認(rèn)高電平狀態(tài)。字符的最后一位是奇偶校驗(yàn)位;它由源確定為高或低,因此字符中的 3 總數(shù)是偶數(shù)。該位模式如圖<>所示。
圖3.10 位字符幀。
智能卡通信協(xié)議
在ISO 7816規(guī)范中,四個(gè)位用于選擇卡會(huì)話的通信協(xié)議。目前,可能的 2 種協(xié)議中有 16 種正在使用中。它們被稱為 T=0 和 T=1。兩種協(xié)議都是半雙工(一次一個(gè)方向),異步通信。T=0 協(xié)議是基于字符的格式,而 T=1 是基于塊的格式。所有符合EMV標(biāo)準(zhǔn)的智能卡必須支持T=0或T=1協(xié)議,而終端必須同時(shí)支持兩者。
將卡插入端子后,當(dāng)所有觸點(diǎn)保持在“低”狀態(tài)時(shí),電源電壓立即施加到卡的 V抄送聯(lián)系。在端子驗(yàn)證電壓穩(wěn)定且在指定限值內(nèi)后,將端子的 I/O 觸點(diǎn)驅(qū)動(dòng)器置于接收模式,并將時(shí)鐘信號(hào)施加到卡的 CLK 觸點(diǎn)。在時(shí)鐘信號(hào)啟動(dòng)后的 200 個(gè)周期內(nèi),終端將其 I/O 線置于接收模式,卡將其 I/O 線置于傳輸模式。在 40,000 到 45,000 個(gè)時(shí)鐘周期的間隔之后,終端在卡的 RST 觸點(diǎn)上應(yīng)用高電平有效信號(hào)。在 400 到 40,000 個(gè)時(shí)鐘周期后,該卡以一系列稱為 ATR 的字符進(jìn)行響應(yīng)。ATR 包括詳細(xì)說明后續(xù)通信將如何進(jìn)行的信息,包括 T=0 或 T=1 協(xié)議選擇。如果未指定協(xié)議,則假定 T=0。(下面介紹了 ATR 的完整詳細(xì)信息以及其中包含的信息。
復(fù)位答案 (ATR)
最初由終端重置后,EMV 智能卡以一串字符響應(yīng),稱為重置答案或 ATR。這些字符由初始字符 TS 組成,后跟最多 32 個(gè)附加字符。這些字符一起向終端提供有關(guān)如何在會(huì)話的剩余時(shí)間內(nèi)與卡通信的信息。以下各節(jié)將介紹每個(gè)字符。
表 0 給出了協(xié)議 T=2 的 EMV 規(guī)范定義的 ATR 內(nèi)容,表 1 給出了協(xié)議 T=3 定義的 ATR 內(nèi)容。
字符 | 價(jià)值 | 言論 |
TS | “3B”或“3F” | 表示直接 (3B) 或反向 (3F) 約定。 |
T0 | '6x | 存在 TB1 和 TC1,不存在 TA1 和 TD1;x 表示存在的歷史字節(jié)數(shù)。 |
TB1 | '00' | VPP is not required. |
UCP | “00”到“FF” | 指示所需的額外保護(hù)時(shí)間量。值“FF”具有特殊含義。(請(qǐng)參閱下面的 TC1 說明。 |
字符 | 價(jià)值 | 言論 | |
TS | “3B”或“3F” | 表示直接 (3B) 或反向 (3F) 約定。 | |
T0 | 'Ex' | 存在 TB1、TC1 和 TD1,不存在 TA1;x 表示存在的歷史字節(jié)數(shù)。 | |
TB1 | '00' | V聚丙烯不是必需的。 | |
UCP | “00”到“FF” | 指示所需的額外保護(hù)時(shí)間量。 | |
UDP | '81' | TA2、TB2 和 TC2 缺失;存在 TD2;T=1 使用。 | |
UDP | '31' | 存在 TA3 和 TB3;TC3 和 TD3 缺失;T=1 使用。 | |
UAR | “10”到“FE” | 返回 IFSI,它指示卡的信息字段大小和 IFSC 的初始值 16 字節(jié)到 254 字節(jié)。 | |
TB3 | m.s. nibble* '0' to '4'; l.s. nibble '0' to '5' |
BWI = 0 到 4 CWI = 0 到 5 |
|
TCK | 檢查字符。從 T0 到 TCK (含)的所有 ATR 字節(jié)的獨(dú)占 OR 為空。 | ||
*Note: m.s. nibble = most significant nibble; l.s. nibble = least significant nibble. |
TS 初始字符
ATR 序列的第一個(gè)字符定義為初始字符 TS。憑借其位模式,此字符同步信息并定義所有后續(xù)字符的極性。TS的前四位由一個(gè)低起始位組成,后跟兩個(gè)高位,后跟一個(gè)附加低位。此固定位模式允許定時(shí)同步。以下三位要么全部為高電平表示直接約定,要么全部為低電平以表示反向約定。對(duì)于直接約定,I/O 線上的高狀態(tài)等效于邏輯 1,并且首先傳輸數(shù)據(jù)的最低有效位。對(duì)于反約定,I/O線上的低狀態(tài)等效于邏輯1,數(shù)據(jù)首先傳輸最高有效位。雖然規(guī)范允許反向約定,但EMV建議將直接約定用于所有當(dāng)前的卡設(shè)計(jì)。最后三位是兩個(gè)低位,后跟一個(gè)高位。此字符幀或任何其他 10 位字符幀中的最后一位是奇偶校驗(yàn)位;它將被設(shè)置或清除以使幀中的 1 數(shù)成為偶數(shù)。
T0 格式字符
ATR 序列的第二個(gè)字符定義為格式字符,稱為 T0。此字符包含兩個(gè)部分,這兩個(gè)部分確定剩余 ATR 序列中包含的字符。最重要的四個(gè)位稱為Y1,它們指示是否將傳輸TA1,TB1,TC1或TD1。對(duì)于 Y1 的每個(gè)邏輯 1,相應(yīng)字符的存在確定如下:
位 8 (msb) = 1 表示將傳輸字符 TD1 位 7 = 1 表示將傳輸字符 TC1 位 6 = 1 表示將傳輸字符 TB1 位 5 = 1 表示將傳輸
字符 TA1
T0 的最低有效四位稱為 K。這些位確定將包含在剩余 ATR 序列中的“歷史字節(jié)”的 0 到 15 個(gè)數(shù)字。歷史字節(jié)傳達(dá)有關(guān)卡的一般信息,例如卡制造商、卡中的芯片、芯片中的屏蔽 ROM 或卡的生存狀態(tài)。ISO 7816 和 EMV 規(guī)范都沒有準(zhǔn)確定義要傳達(dá)的信息(如果有的話)。
如上表2所示,Y1位b7和b6為高電平,b8和b5位為低電平('6x')。這表示將傳輸 TC1 和 TB1,而字符 TA1 和 TD1 不會(huì)傳輸(如表中所示)。對(duì)于協(xié)議 T=0,字符 TB1 和 TC1 完成基本 ATR 序列。在表 3 中,Y8 的第 1 位也很高,因此對(duì)于協(xié)議 T=1,字符 TD1 也將傳輸。
TA1 字符
雖然字符TA1不在T=0或T=1協(xié)議的基本EMV ATR響應(yīng)中傳輸,但在ISO 7816規(guī)范中定義了其他通信。使用時(shí),TA1被分成上下半身。上半字節(jié)確定時(shí)鐘速率轉(zhuǎn)換因子F,用于修改時(shí)鐘信號(hào)的頻率。較低的半字節(jié)確定 D,即可用于調(diào)整 ATR 之后的位持續(xù)時(shí)間的比特率調(diào)整因子。這些參數(shù)的使用如上面的公式2所示。默認(rèn)值 F = 372 和 D = 1 用于 ATR 期間的初始 ETU 值,除非在基本 ATR 之外進(jìn)行更改,否則將在后續(xù)交換期間繼續(xù)使用。
TB1 字符
TB1 字符傳達(dá)有關(guān)智能卡編程電壓要求的信息。位 b1 至 b5(稱為 PI1)表示編程電壓,位 b6 和 b7(稱為 II)表示智能卡所需的最大編程電流。對(duì)于基本 ATR,TB1 = '00' 表示 V聚丙烯智能卡中的 PIN 未連接。
TC1 字符
TC1 字符傳達(dá) N 的值,該值確定從終端發(fā)送到智能卡的連續(xù)字符之間要添加的額外保護(hù)時(shí)間。此值不適用于從卡發(fā)送到終端的字符,也不適用于以相反方向發(fā)送的兩個(gè)字符。N 是一個(gè)二進(jìn)制數(shù),表示要添加為額外保護(hù)時(shí)間的額外 ETU。當(dāng) TC1 = 'FF' 時(shí),應(yīng)使用字符之間的最小延遲。對(duì)于協(xié)議 T=0,這是 12 個(gè) ETU,對(duì)于 T=11,這是 1。N 的值可以是 0 到 255 之間的任何值;如果未在 ATR 中返回 TC1,終端將繼續(xù),就像收到值 00 一樣。由于此值會(huì)增加字符傳輸?shù)臅r(shí)間,因此應(yīng)將其最小化以加快事務(wù)。
TD1 字符
TD1 字符指示是否要傳輸任何其他接口字節(jié),如果是,將使用哪種協(xié)議。字符 TD1 是通用字符 TDx 的特定實(shí)例。TDx最重要的半字節(jié)表示TA(x + 1),TB(x + 1),TC(x + 1)或TD(x + 1)將被傳輸。對(duì)于每個(gè)邏輯 1,后續(xù)傳輸中相應(yīng)字符的存在確定如下:
位 8 (msb) = 1 表示將傳輸字符 TD(x + 1) 位 7 = 1 表示將傳輸字符 TC(x + 1) 位 6 = 1 表示將傳輸字符 TB(x + 1) 位 5 = 1 表示將傳輸
字符 TA(x + 1)
TD1 字符(TDx 廣義)的最低有效半字節(jié)包含值 0x0 或 0x1,分別指示協(xié)議 T=0 或 T=1。
如果使用協(xié)議 T=0,則字符 TD1 將不包括在 ATR 序列中;協(xié)議 T=0 將用于所有后續(xù)傳輸。如果使用協(xié)議 T=1,則將包含 TD1 并包含 0x81 的值。后一個(gè)值表示 TD2 將存在,協(xié)議 T=1 將用于所有后續(xù)傳輸。
TA2字符
雖然字符TA2不在T=0或T=1協(xié)議的基本EMV ATR響應(yīng)中傳輸,但它在ISO 7816規(guī)范中定義。TA2 的存在與否決定了智能卡是在 ATR 之后分別以特定模式還是可協(xié)商模式運(yùn)行。沒有TA2表示將使用可轉(zhuǎn)讓操作模式。
TB2 字符
雖然字符TB2不會(huì)在T=0或T=1協(xié)議的基本EMV ATR響應(yīng)中傳輸,但它在ISO 7816規(guī)范中定義。字符TB2表示PI2,PI1確定智能卡所需的編程電壓值。當(dāng)存在字符 TB1 時(shí),將取代字符 TB2 中的 PI<> 值。
TC2 字符
雖然字符TC2不在T=0或T=1協(xié)議的基本EMV ATR響應(yīng)中傳輸,但它在ISO 7816規(guī)范中定義。如果存在,TC2 特定于協(xié)議類型 T=0。TC2 傳輸工作等待時(shí)間整數(shù) (WI),該整數(shù)確定智能卡發(fā)送的任何字符的起始位的前緣與卡或終端發(fā)送的前一個(gè)字符的起始位的前沿之間的最大間隔。工作等待時(shí)間的值為:
工作等待時(shí)間 = 960 × D ×WI
其中 D 是比特率調(diào)整因子(請(qǐng)參閱上面 TA1 中的說明)。
當(dāng) ATR 序列中不包含 TC2 時(shí),假定默認(rèn)值為 WI = 0x0A。
TD2 字符
TD2 字符與 TD1 字符具有相同的功能。有關(guān)詳細(xì)信息,請(qǐng)參閱上面的 TD1 說明。在協(xié)議 T=3 的表 1 中,存在 TD2 并包含值 0x31。此值指示:TA3 和 TB3 將存在,TC3 和 TD3 將不存在,協(xié)議類型將為 T=1。
TA3 字符
TA3 字符傳達(dá)智能卡的信息字段大小整數(shù) (IFSI)。IFSI 確定智能卡的信息字段大小,這是卡可以接收的塊的信息字段 (INF) 的最大長度。字段大小可以是 0x01 到 0xFE 之間的任何值。0x0和0xFF的值保留供將來使用。在基本 ATR 中使用 T=1 協(xié)議,TA3 的值在 0x10 到 0xFE 的范圍內(nèi),因此表示 IFSC 在 16 到 254 字節(jié)的范圍內(nèi)。對(duì)于不包含 TA3 的 ATR,終端將假定默認(rèn)值為 0x20。
TB3 字符
TB3 字符表示用于計(jì)算字符等待時(shí)間 (CWT) 和塊等待時(shí)間 (BWT) 的字符等待時(shí)間整數(shù) (CWI) 和塊等待時(shí)間整數(shù) (BWI) 的值。TB3 的最低顯著部分(b1 至 b4)表示 CWI 的值;最重要的半字節(jié)(B5 到 B8)表示 BWI 的值。在 T=1 協(xié)議的基本 ATR 中,TB3 字符在 0 到 5 (CWI = 0 到 5) 范圍內(nèi)具有最低有效半字節(jié),在 0 到 4 范圍內(nèi)具有最不重要的半字節(jié)(BWI = 0 到 4)。
TC3 字符
雖然字符TC3不在T=0或T=1協(xié)議的基本EMV ATR響應(yīng)中傳輸,但它在ISO 7816規(guī)范中定義。當(dāng)存在 TC3 時(shí),它指示要使用的塊錯(cuò)誤檢測類型。當(dāng) TC3 不存在時(shí),默認(rèn)縱向冗余校驗(yàn) (LRC) 是使用的塊錯(cuò)誤校驗(yàn)。
TCK 字符
TCK 字符是校驗(yàn)字符,其值允許驗(yàn)證 ATR 中發(fā)送的數(shù)據(jù)的完整性。TCK 的值可以是任何值,只要從 T0 到 TCK 包含的所有字節(jié)的獨(dú)占 OR 為零即可。TCK 不用于 T=0,但在所有其他情況下將在 ATR 中返回。
ATR序列
在終端接收到ATR序列中的最后一個(gè)字符后,將必要的參數(shù)從卡傳輸?shù)浇K端后,可以對(duì)DS8007進(jìn)行任何必要的接口參數(shù)調(diào)整。然后可以開始進(jìn)一步的溝通。
應(yīng)用協(xié)議數(shù)據(jù)單元 (APDU)
如前所述,卡會(huì)話的下一階段是交易的執(zhí)行。交易過程中執(zhí)行的具體操作取決于卡和帳戶的類型(信用卡、借記卡等)以及用戶的請(qǐng)求。無論具體操作如何,事務(wù)都是通過向智能卡發(fā)出命令來完成的。智能卡執(zhí)行請(qǐng)求的操作,并可能傳達(dá)結(jié)果??ǖ牟僮骺梢韵褡x取內(nèi)存中的位置一樣簡單,也可以像執(zhí)行加密操作一樣復(fù)雜。無論操作如何,終端和卡之間的通信都是使用應(yīng)用協(xié)議數(shù)據(jù)單元或APDU進(jìn)行的。
要運(yùn)行應(yīng)用程序,智能卡和終端必須交換信息。這種信息共享是在命令-響應(yīng)數(shù)據(jù)交換中完成的。終端創(chuàng)建命令并將其發(fā)送到智能卡,智能卡隨后解釋命令并發(fā)送響應(yīng)。此命令-響應(yīng)消息對(duì)稱為應(yīng)用程序協(xié)議數(shù)據(jù)單元 (APDU)。終端 (C-APDU) 發(fā)送的特定命令消息將具有來自卡 (R-APDU) 的特定響應(yīng)消息。這些消息稱為 APDU 命令-響應(yīng)對(duì)。EMV 規(guī)范詳細(xì)介紹了這兩種消息類型的格式,它們的格式如下所述。
C-APDU 格式
終端啟動(dòng)所有命令 APDU。它們由必需的 4 字節(jié)標(biāo)頭組成,后跟可包含數(shù)據(jù)的可變長度的可選主體。C-APDU 中包含的數(shù)據(jù)字節(jié)數(shù)在命令字節(jié) Lc 中指定;終端期望從卡的響應(yīng)接收的字節(jié)數(shù)在命令字節(jié) Le 中指定。C-APDU格式如表4所示,字符如表5所示。
CLA | INS | P1 | P2 | Lc | Data | Le |
←必需標(biāo)頭→ | ←條件體→ |
Code | 描述 | 長度 |
CLA | 教學(xué)等級(jí) | 1 |
INS | 指令代碼 | 1 |
P1 | 指令參數(shù) 1 | 1 |
P2 | 指令參數(shù) 2 | 1 |
Lc | 命令日期字段中存在的字節(jié)數(shù) | 0 或 1 |
Data | 在命令中發(fā)送的數(shù)據(jù)字節(jié)字符串 (= Lc) | 變量 |
Le | 響應(yīng)數(shù)據(jù)字段中預(yù)期的最大數(shù)據(jù)字節(jié)數(shù) | 0 或 1 |
命令A(yù)PDU的第一個(gè)字節(jié)被定義為指令類,稱為CLA。此字節(jié)可以采用除 8xFF 之外的任何 0 位值。但是,目前僅使用最高有效半字節(jié) 0 和 8 的值。值為 0 的最重要半字節(jié)定義為行業(yè)間命令,值 8 是 EMV 規(guī)范專有的。
命令A(yù)PDU的第二個(gè)字節(jié)是指令代碼,稱為INS。僅當(dāng)最低有效位為 0 且最高有效半字節(jié)既不是 6 也不是 9 時(shí),此字節(jié)才有效。
必需標(biāo)頭的 P1 和 P2 字節(jié)包含特定命令的參數(shù),可以是任何值。如果未使用,則參數(shù)字節(jié)的值必須為 0x00。
R-APDU
從終端接收并解釋 APDU 命令后,智能卡將返回響應(yīng)。如規(guī)范中所定義,此響應(yīng)由可變長度的可選主體組成,后跟由兩個(gè)字節(jié)組成的所需拖車。這種格式如表6所示,APDU響應(yīng)的內(nèi)容如表7所示。
Data | SW1 | SW2 |
←Body→ | ←Trailer→ |
Code | 描述 | 長度 |
數(shù)據(jù) | APDU 響應(yīng)中接收的數(shù)據(jù)字節(jié)字符串 | 變量 (= Lr) |
SW1 | 命令處理狀態(tài) | 1 |
SW2 | 命令處理限定符 | 1 |
卡響應(yīng)的預(yù)期長度作為 APDU 命令的 Le 代碼部分傳輸。響應(yīng)的實(shí)際長度稱為 Lr。雖然卡不傳輸Lr的值,但終端可以根據(jù)應(yīng)用需要計(jì)算它。
為了正常完成命令,智能卡將返回值為 1x0 的 SW90 和值為 2x0 的 SW00。任何其他響應(yīng)都指示發(fā)生了錯(cuò)誤或警告2。
示例代碼
本應(yīng)用筆記隨附的軟件包含在可下載的文件an4029_sw.zip中。此文件包含生成可執(zhí)行十六進(jìn)制文件 (ds8007.hex) 所需的所有 C (main.c、ds51.c、LCD_Funct.c) 和匯編語言 (Startup.a8007) 源代碼。該代碼是使用 Keil PK51 專業(yè)開發(fā)人員工具包和 μVision 集成開發(fā)環(huán)境 (IDE) 編譯和鏈接的。μVision 項(xiàng)目文件 (ds8007.Uv2) 也包含在.zip文件中。這。HEX文件在DS8007評(píng)估(EV)板(可從Analog獲得)中的DS8007智能卡接口板上加載并運(yùn)行。示例軟件實(shí)現(xiàn)完整的智能卡會(huì)話,包括上電、ATR、APDU 和斷電操作。當(dāng)連接到啞終端時(shí),電路板和軟件將產(chǎn)生232,38波特的RS-400串行輸出。此輸出如下面的圖 4 所示。本軟件的詳細(xì)說明超出了本應(yīng)用筆記的范圍,但提供的源代碼可以作為使用DS5002安全微處理器和DS8007多協(xié)議雙智能卡接口芯片的完整智能卡接口的基礎(chǔ)。?
圖4.軟件輸出。
為了測試示例軟件,使用了高級(jí)卡系統(tǒng)(ACS)基于微控制器的智能卡。作為基于微控制器的設(shè)備,該卡執(zhí)行其嵌入式操作系統(tǒng)的功能,稱為ACS智能卡操作系統(tǒng)版本1或ACOS1。此卡具有以下功能。
8kB EEPROM 存儲(chǔ)器,用于存儲(chǔ)應(yīng)用數(shù)據(jù)
符合 ISO 7816-3,T=0 協(xié)議
DES 和 MAC 功能
基于隨機(jī)數(shù)的會(huì)話密鑰
密碼,可由持卡人更改
用于相互身份驗(yàn)證的密鑰對(duì)
ACOS1 文檔指示此卡將使用 19 字節(jié)的數(shù)據(jù)響應(yīng)重置。如圖 4 所示,為 T0 返回的值為 0xBE。高半字節(jié) (0xB) 表示 TA1、TB1 和 TD1 將與 TS 一起包含在 ATR 中。低半字節(jié)包含0xE,表示 ATR 響應(yīng)中將包含 14 個(gè)歷史字節(jié)(請(qǐng)參閱上面的字符 T0 說明)。因此,卡的 ATR 中總共包含 19 個(gè)字節(jié)。
對(duì)于此示例軟件,執(zhí)行一個(gè) ADPU,即“啟動(dòng)會(huì)話”命令。此命令具有以下格式。
CLA | INS | P1 | P2 | P3 |
0x80 | 0x84 | 0x00 | 0x00 | 0x08 |
對(duì)“啟動(dòng)會(huì)話”命令的響應(yīng)具有以下格式。
Data | SW1 | SW2 |
RNDc (8 bytes from card) | Status | Status |
圖 4 所示的軟件輸出表明,從卡返回的隨機(jī)數(shù)為 0xCB、0xC4、0xBD、0xD5、0xA4、0x7E、0x36和0x3F。它還顯示返回的狀態(tài)為 0x90, 0x00,這表示命令成功完成。
結(jié)論
DS8007為混合信號(hào)外設(shè),減輕了微控制器與智能卡接口的負(fù)擔(dān)。它提供與兩個(gè)獨(dú)立智能卡進(jìn)行物理接口所需的所有電信號(hào)。專用的內(nèi)部定序器控制自動(dòng)卡激活和停用,以及用于數(shù)據(jù)通信的ISO UART。電荷泵和穩(wěn)壓器允許DS8007工作在2.7V至6.0V電源電壓,同時(shí)產(chǎn)生兩個(gè)獨(dú)立的智能卡電源電壓,可以是1.8V、3.0V或5V。與微控制器的通信由標(biāo)準(zhǔn)的并行8位總線提供,該總線在非多路復(fù)用配置中傳輸數(shù)據(jù)或在多路復(fù)用配置中傳輸數(shù)據(jù)和地址。所提供的軟件使用DS5002安全微處理器和DS8007作為其智能卡接口實(shí)現(xiàn)完整的卡會(huì)話。智能卡在其 ATR 中返回的字符以 38400 波特率輸出在主板的串行端口上,并向卡發(fā)送“啟動(dòng)會(huì)話”命令 APDU。生成的隨機(jī)數(shù)也會(huì)輸出在串行端口上。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7555瀏覽量
151431 -
電源
+關(guān)注
關(guān)注
184文章
17719瀏覽量
250215 -
穩(wěn)壓器
+關(guān)注
關(guān)注
24文章
4240瀏覽量
93811
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論