當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]本文從T=0協(xié)議的功能出發(fā),將該協(xié)議分為四個(gè)層次:物理層、數(shù)據(jù)鏈路層、終端傳輸層和應(yīng)用層

IC卡的應(yīng)用越來越廣泛,從存儲(chǔ)卡到邏輯加密卡,目前CPU卡已經(jīng)逐漸在應(yīng)用中占據(jù)主導(dǎo)地位。CPU卡根據(jù)通訊協(xié)議可分為兩種:接觸式和非接觸式。接觸式CPU卡主要采用兩種通訊協(xié)議:T=0和T=1通訊協(xié)議。T=0是異步半雙工字符傳輸協(xié)議,T=1是異步半雙工塊傳輸協(xié)議。目前T=0通訊協(xié)議的應(yīng)用較為廣泛,國內(nèi)外大多數(shù)CPU卡都支持該協(xié)議,在金融交易中也采用這種通訊協(xié)議。為了便于說明問題,本文從T=0協(xié)議的功能出發(fā),將該協(xié)議分為四個(gè)層次:物理層、數(shù)據(jù)鏈路層、終端傳輸層和應(yīng)用層,見圖1。

由于該協(xié)議的特殊性,終端傳輸層與應(yīng)用層聯(lián)系非常緊密,實(shí)現(xiàn)起來比較繁瑣,在CPU卡中,這些任務(wù)通過卡片操作系統(tǒng)(COS)來實(shí)現(xiàn)。終端在與卡的信息交換中,始終處于主動(dòng)地位,終端向卡發(fā)送符合T=0協(xié)議的命令字節(jié),卡中的COS完成對數(shù)據(jù)的處理并將處理結(jié)果返回給終端。下面對T=0協(xié)議的四個(gè)層次進(jìn)行詳述。

1 T=0協(xié)議的物理層描述

終端與智能卡之間通過改變I/O傳輸線上的電平來交換信息。由于T=0協(xié)議是面向字符的傳輸協(xié)議,這里先定義字符幀的結(jié)構(gòu),并對組成字符幀位的信息表示作了具體描述。字符幀的結(jié)構(gòu)如圖2所示。

字符幀由1個(gè)起始位S、8個(gè)數(shù)據(jù)位和1個(gè)偶校驗(yàn)位P共10位組成。在數(shù)據(jù)傳輸中每一位的持續(xù)時(shí)間稱為基本時(shí)間單元etu(elementary time unit),etu的值由時(shí)鐘頻率決定,etu與時(shí)鐘頻率呈現(xiàn)性關(guān)系:

1etu=(F/D) ×(1/f)    (1)

其中F稱為時(shí)鐘頻率轉(zhuǎn)換因子,D稱為波特率調(diào)整因子。時(shí)鐘頻率的范圍為1MHz~5MHz,正常的工作頻率為3.57MHz,數(shù)據(jù)傳輸?shù)牟ㄌ芈什捎?600bps,根據(jù)國際標(biāo)準(zhǔn)的取值范圍,取F=372,D=1,代入式(1),可得:

1etu=372/f=372     (2)

即一個(gè)基本時(shí)間單元為372個(gè)時(shí)鐘周期。將工作頻率定為3.57MHz,可以保證數(shù)據(jù)傳輸?shù)牟ㄌ芈蕿?600bps。如果要提高數(shù)據(jù)的傳輸率,可以調(diào)整參數(shù)F來確定傳輸率。對每一位電平采用三次采樣來確定,在位持續(xù)時(shí)間的中間和左右15%的間隔各取樣一次,取樣點(diǎn)如圖3所示。當(dāng)有兩次以上電平為低,則判斷該位為0;否則該位為1,這樣確保了取樣值的可靠性。由于數(shù)據(jù)位的持續(xù)時(shí)間是用匯編語句來控制的,可以通過延時(shí)語句調(diào)整采樣的時(shí)間間隔。但實(shí)現(xiàn)采樣的最基本匯編語句的執(zhí)行時(shí)間不能再縮短,因此數(shù)據(jù)傳輸率有一上限。當(dāng)每一位取樣三次時(shí),數(shù)據(jù)傳輸率最高可達(dá)到57600bps。如果再提高速率,取樣時(shí)序?qū)o法保證。字符幀的起始位為低電平,起始位的檢測是通過周期性地對I/O傳輸線進(jìn)行采樣來得到。國際標(biāo)準(zhǔn)中規(guī)定采樣時(shí)間間隔不得大于0.2etu,實(shí)際上起始位的采樣時(shí)間間隔只有幾個(gè)時(shí)鐘周期,完全滿足要求。

2 T=0協(xié)議的數(shù)據(jù)鏈路層實(shí)現(xiàn)

數(shù)據(jù)鏈路層描述了字符交換的時(shí)序要求和差錯(cuò)控制以及終端對面向傳輸?shù)腻e(cuò)誤的處理,在邏輯上保證終端和卡片之間能夠正確可靠地通訊。

采用上述的字符幀,終端與卡之間進(jìn)行數(shù)據(jù)將交換,字符之間有嚴(yán)格的時(shí)序,時(shí)序是通過匯編程序語句的執(zhí)行時(shí)間來控制的。從終端到卡發(fā)送的連續(xù)字符的起始位下降沿之間的最小時(shí)間間隔由復(fù)位應(yīng)答信息通知終端,其值在12etu~266etu之間。從卡發(fā)送到終端的連續(xù)字符的起始位下降沿之間的最小時(shí)間間隔應(yīng)為12etu。

如果字符接收不正確或字符接收正確但校驗(yàn)位不正確,接收端需要在字符起始位下降沿后的(10.5±0.2個(gè)etu時(shí)刻將I/O線置為低電平約1~2個(gè)etu,見圖4,用于向發(fā)送端指明錯(cuò)誤;發(fā)送端在(11±0.2)個(gè)etu時(shí)刻檢測I/O線。如為高電平則表示字符已經(jīng)正確接收;如果發(fā)送端檢測到錯(cuò)誤,則在檢測到錯(cuò)誤那一刻起,2個(gè)etu后重發(fā)該字符,但重復(fù)發(fā)送同一字符的次數(shù)不得超過3次。如果最后一次發(fā)送失敗,當(dāng)終端是接收端時(shí),則終端應(yīng)該在無效字符的起始位下降沿后的960個(gè)etu時(shí)間范圍內(nèi)啟動(dòng)釋放序列;當(dāng)終端是發(fā)送端時(shí),在卡片檢測到字符的偶校驗(yàn)錯(cuò)誤后960個(gè)etu時(shí)間范圍內(nèi),終端啟動(dòng)釋放序列。

命令的執(zhí)行總是由終端應(yīng)用層(TAL)啟動(dòng),通過終端傳輸層(TTL)送給卡片。TTL與卡片進(jìn)行命令字節(jié)和數(shù)據(jù)字節(jié)交換時(shí),要保證能夠有序正確地進(jìn)行。因此,在數(shù)據(jù)交換過程中,在任何時(shí)刻TTL和卡片都應(yīng)該隱含地知道哪一方是發(fā)送者,哪一方是接收者。當(dāng)卡片接收到5個(gè)字節(jié)的命令字節(jié)后,需要向TTL返回一個(gè)過程字節(jié)或兩個(gè)字節(jié)的狀態(tài)字節(jié),具體含義如表1、表2所示。

表1 終端對過程字節(jié)的處理

 

過程字節(jié) TTL執(zhí)行的操作
與INS字節(jié)相同 TTL向卡片發(fā)送或從卡片接收所有數(shù)據(jù)
INS字節(jié)的補(bǔ)碼 TTL向卡片發(fā)送或從卡片接收下一個(gè)字節(jié)
'60' TTL延長等待時(shí)間
'61' TTL等待第二個(gè)過程字節(jié)'xx'并根據(jù)'xx'發(fā)
GET RESPONSE命令取回?cái)?shù)據(jù)
'6C' TTL等待第二個(gè)過程字節(jié)'xx'并根據(jù)'xx'重發(fā)上一條命令

 表2 卡返回的狀態(tài)字節(jié)編碼

第一個(gè)狀態(tài)字節(jié)值 TTL執(zhí)行的操作
'6'或'9x'(除表1中的值外) TTL等待第二個(gè)過程字節(jié)SW2

 

當(dāng)返回的過程字節(jié)或狀態(tài)字節(jié)均不是表中規(guī)定的值時(shí),終端在接收到的無效字符的起始位降沿開始的9600個(gè)etu時(shí)間范圍內(nèi)啟動(dòng)釋放序列。

3 T=0協(xié)議的終端傳輸層和應(yīng)用層的實(shí)現(xiàn)

數(shù)據(jù)鏈路層保證了TTL與卡片正常的數(shù)據(jù)交換。在此基礎(chǔ)上,TTL定義了命令和響應(yīng)APDU(Application Protocol Data Unit)通過TTL和卡片之間的數(shù)據(jù)傳輸機(jī)制,因此該層協(xié)議定義了APDU到TPDU(Transport Protocol Data Unit)的映射機(jī)制以及TPDU和卡片之間如何來完成數(shù)據(jù)的交換。根據(jù)命令和響應(yīng)APDU包含的數(shù)據(jù)情況,共有四種不同的APDU,TTL應(yīng)能夠?qū)λ姆N情況進(jìn)行處理,完成終端和卡之間的數(shù)據(jù)交換。由于T=0協(xié)議的特殊性,終端傳輸層和應(yīng)用層并沒有完全隔離開。為了便于說明問題,先簡要描述一下應(yīng)用層,然后將終端傳輸層和應(yīng)用層結(jié)合起來進(jìn)行說明。

應(yīng)用層協(xié)議定義了C-APDU和R-APDU的具體結(jié)構(gòu)。應(yīng)用層之間的數(shù)據(jù)交換都是由一個(gè)命令-響應(yīng)對完成的,TAL通過TTL將C-APDU送給集成電路卡(ICC),ICC處理完后將處理結(jié)果組成R-APDU通過TTL送給TAL。APDU由命令報(bào)文和響應(yīng)報(bào)文共同組成,根據(jù)C-APDU和R-APDU是否包含數(shù)據(jù)域,APDU有四種情況,見表3。

表3 APDU包含數(shù)據(jù)的情況

  命令A(yù)PDU數(shù)據(jù)域 響應(yīng)APDU數(shù)據(jù)域
1
2
3
4

 

C-APDU由一個(gè)強(qiáng)制性的四字節(jié)命令頭CLA、INS、P1、P2和一個(gè)可變長度的條件體組成。CLA為命令類型字節(jié);INS為命令代碼字節(jié);P1和P2為命令參數(shù);條件體包括命令數(shù)據(jù)域長度字節(jié)Lc,命令數(shù)據(jù)域和響應(yīng)返回的最大長度字節(jié)Le。根據(jù)不同的命令,條件體的組成也不相同,C-APDU有四種情況,見表4。

表4 C-APDU的結(jié)構(gòu)

情  況 C-APDU結(jié)構(gòu)
1 CLA INS P1 P2
2 CLA INS P1 P2 Le
3 CLA INS P1 P2 Lc Data
4 CLA INS P1 P2 Lc Data Le

R-APDU由一個(gè)最大長度為Le的數(shù)據(jù)域和一個(gè)強(qiáng)制性的兩字節(jié)狀態(tài)代碼組成,狀態(tài)代碼給出了IC卡對當(dāng)前命令的處理結(jié)果。

對于C-APDU,終端先將其映射成T=0傳輸層的格式,然后通過TTL傳送給卡片,卡片返回的數(shù)據(jù)和狀態(tài)先返回給TTL,再映射成R-APDU返回給TAL。這里根據(jù)四種不同的情況,分析了C-APDU到C-TPDU以及R-APDU到R-TPDU的映射方法,并對情況2和情況4時(shí),如何使用GET RESPONSE命令進(jìn)行了說明。C-APDU到C-TPDU的映射根據(jù)命令的情況決定,卡片返回的數(shù)據(jù)和狀態(tài)到R-APDU的映射要根據(jù)返回?cái)?shù)據(jù)的長度來判斷。對于卡片返回的過程字節(jié)“61xx”和“6Cxx”,將用于TTL和卡片之間進(jìn)行數(shù)據(jù)交換,當(dāng)卡片返回“61xx”時(shí),表示命令沒有結(jié)束,TTL不將過程字節(jié)返回給TAL,而是從TTL直接向卡片發(fā)出GET RESPONSE命令,取回上一條命令應(yīng)該返回的數(shù)據(jù)。并返回給TAL。當(dāng)卡片返回“6Cxx”時(shí),TTL將根據(jù)“xx”的值調(diào)整并重發(fā)上一條命令。下面分別對四種命令情況進(jìn)行分析。

(1)當(dāng)C-APDU和R-APDU均不含有數(shù)據(jù)時(shí),將C-APDU的CLA、INS、P1、P2映射為C-TPDU的CLA、INS、P1、P2、C-TPDU的P3置為“00”,卡片接收到C-TPDU后,根據(jù)命令頭決定該命令所含數(shù)據(jù)的情況。TTL接收到卡片返回的狀態(tài)后,該命令完成,TTL將狀態(tài)字節(jié)強(qiáng)制性地加到R-APDU的尾部。

(2)當(dāng)C-APDU不含有數(shù)據(jù)而R-APDU含有數(shù)據(jù)時(shí),將C-APDU的CLA、INS、P1、P2、Le映射為C-TPDU的CLA、INS、P1、P2、P3,其中P3可以置為“00”,也可以置為需要返回的數(shù)據(jù)字節(jié)數(shù),卡片接收到C-TPDU后,如果命令處理失敗,卡片直接將狀態(tài)代碼通過TTL返回給TAL;當(dāng)命令能夠正常處理時(shí),如果P3指定的字節(jié)數(shù)能夠正確返回,待卡片內(nèi)部應(yīng)用數(shù)據(jù)處理完成后,這時(shí)卡片首先返回給TTL該命令的過程字節(jié),通知TTL準(zhǔn)備接收卡片數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù),然后卡片直接將P3字節(jié)的數(shù)據(jù)和狀態(tài)字節(jié)通過TTL返回給TAL,否則,卡片只將過程字節(jié)“6Cxx”或“61xx”返回給TTL這一層。當(dāng)過程字節(jié)為“6Cxx”時(shí),TTL根據(jù)xx重發(fā)命令取回?cái)?shù)據(jù),當(dāng)過程字節(jié)為“61xx”時(shí),TTL發(fā)GET RESPONSE命令取回?cái)?shù)據(jù)。

(3)當(dāng)C-APDU含有數(shù)據(jù)而R-APDU不含數(shù)據(jù)時(shí),將C-APDU的CLA、INS、P1、PS、Lc映射為C-TPDU的CLA、INS、P1、P2、P3,待卡片對C-TPDU檢查通過后,卡片直接將過程字節(jié)返回給TTL,TTL根據(jù)返回的過程字節(jié)繼續(xù)向卡片發(fā)送P3字節(jié)的后續(xù)數(shù)據(jù)。待數(shù)據(jù)接收完后,卡片對應(yīng)用數(shù)據(jù)進(jìn)行處理,然后將處理結(jié)果以狀態(tài)字節(jié)的方式通過TTL返回給TAL。

(4)當(dāng)C-APDU和R-APDU均含有數(shù)據(jù)時(shí),將C-APDU的CLA、P1、P2、Lc映射為C-TPDU的CLA、INS,P1、P2、P3,待卡片對C-TPDU檢查通過后,卡片直接將過程字節(jié)返回給TTL,TTL根據(jù)返回的過程字節(jié)繼續(xù)向卡片發(fā)送P3字節(jié)的后續(xù)數(shù)據(jù)。待數(shù)據(jù)接收完后,卡片對應(yīng)用數(shù)據(jù)進(jìn)行處理,如果命令處理失敗,卡片直接將狀態(tài)代碼返回給TTL。當(dāng)命令正常處理時(shí),卡片返回給TTL過程字節(jié)“6Cxx”或“61xx”,當(dāng)為“6Cxx”時(shí),TTL根據(jù)xx重發(fā)命令取回?cái)?shù)據(jù)。當(dāng)過程字節(jié)為“61xx”時(shí),TTL發(fā)GET RESPONSE命令取回?cái)?shù)據(jù)。

(1)由于T=0協(xié)議字符級(jí)檢錯(cuò)重發(fā),與面向塊的傳輸協(xié)議T=1相比,在出現(xiàn)傳輸錯(cuò)誤時(shí),T=0協(xié)議可以不必整個(gè)數(shù)據(jù)報(bào)文全部重發(fā),節(jié)省了時(shí)間。

(2)在編程過程中,對位幀進(jìn)行采樣時(shí),采用了三次采樣判決的方式,避免了由于采樣時(shí)的偶然誤差而造成誤碼。

(3)T=0協(xié)議是應(yīng)用于智能卡中的第一個(gè)接觸式通訊協(xié)議,但該協(xié)議并沒有考慮傳輸中斷和檢測到傳輸錯(cuò)誤碼后卡和讀寫器的再同步問題。唯一的檢錯(cuò)機(jī)制就是奇偶位校驗(yàn)。對錯(cuò)誤的處理就是對出錯(cuò)的字節(jié)重新發(fā)送一次,這樣極有可能導(dǎo)致無限次的循環(huán)狀態(tài)。

(4)T=0協(xié)議并沒有與應(yīng)用層完全分割開,應(yīng)用層的命令解釋器必須告訴傳輸層當(dāng)前命令是接收還是發(fā)送數(shù)據(jù)。由于這個(gè)原因,這兩個(gè)模塊在命令處理過程中需要交互操作,在程序中能夠提取出一個(gè)通用的傳輸層,供應(yīng)用層調(diào)用來負(fù)責(zé)完成數(shù)據(jù)的傳輸。這種情況給編程和調(diào)試帶來了不便。同時(shí)造成模塊的可重用性較差。

    (5)對于命令報(bào)文中包含數(shù)據(jù)域,同時(shí)又需要卡片返回?cái)?shù)據(jù)的命令,T=0協(xié)議不能用一條命令來實(shí)現(xiàn),必須分為兩步實(shí)現(xiàn):第一條命令為卡片提供數(shù)據(jù),然后用另外一條相關(guān)的命令來取回?cái)?shù)據(jù)。這樣給卡片的編程帶來很大麻煩,同時(shí)卡片內(nèi)存中必須保留上一次操作需要返回的數(shù)據(jù)。這時(shí)如果不及時(shí)發(fā)送取數(shù)據(jù)命令而發(fā)送其它命令,可能會(huì)將敏感數(shù)據(jù)泄漏,并產(chǎn)生其它問題。這些都是T=0協(xié)議考慮不周的地方。

(6)終端傳輸層需要根據(jù)卡片返回的子程字節(jié)和狀態(tài)字節(jié)執(zhí)行相應(yīng)的操作,使終端對數(shù)據(jù)的處理復(fù)雜化。

(7)由于目前大多數(shù)接觸式終端只支持T=0通訊協(xié)議,因此該協(xié)議仍將得到廣泛的應(yīng)用。隨著智能卡芯片功能的增強(qiáng),對于數(shù)據(jù)傳輸量較大的應(yīng)用,該協(xié)議將不再適用,面向塊的異步半雙工接觸式傳輸協(xié)議T=1將體現(xiàn)出優(yōu)勢.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉