智能卡數據傳輸T=0傳輸協議
發布時間:2008/11/22 0:00:00 訪問次數:1443
這個傳輸協議在智能卡發展之初首先用于法國,它也是第1個智能卡協議的國際標準。它開創于智能卡技術 的早期,因而它的設計使用了最少量的存儲器并具有簡單性。這項協議被在世界范圍內用于gsm卡,并在所 有的智能卡協議中享有最廣泛的流行。t=0協議在iso/iec 7816-3中被標準化,另外的相容規范被包含在 csm 11.11和emv規范中。
t=0協議是面向字節的,這就是說協議所處理的最小單位是單個字節。傳送的數據單元中含有一個頭標、類 字節、命令字節和三個參數字節構成。它可能跟隨著一個可選的數據部分,和被iso/iec 7816-4標準化的 apdu相反,長度信息僅由參數p3提供。它或是指明命令數據或是應答的長度,它也由iso/iec 7816-3標準中 規定,參見圖1
圖1 t=0的一條命令的結構
由于t=0協議是面向字節的,如果檢測到一個傳輸錯誤,則對錯誤字節的重傳必須立即請求。而字組協議 則相反,如果發現了差錯則整個字組(一系列字節)都必須重傳。
t=0差錯檢測采用附在每一被傳送的字節后的奇偶校驗位。
如果接收方檢測出一個傳輸差錯,它必須從出錯字節的保護時間的第1位區間的中間開始,把i/0線在一個 etu持續期內置為低電平。這樣向通信的另一方表示最近的一個字節必須重新傳送。這種字節重復的機制是 十分簡單的,而其好處在于它的選擇性,只有不正確的字節才被重復。遺憾地是,這個方法也存在一個嚴重 的缺'點,大多數ic卡接口把etu區間當做是最小的可檢測單元,所以它們不能識別從停止位中間設定的i/0 線上的低電平。因此,標準的ic卡接口不適于t=0協議。然而,如果每1位用軟件分別接收,就不會有這個問 題。圖2和圖3分別表明了用t=0傳輸協議,在無差錯和有差錯時,i/0接口的信號時序圖。
圖2 用t=0傳輸協議(一字節無差錯地經i/0接口傳送)
圖3 t=0傳輸協議(一個數據傳輸差錯,在保護時間用i/0接口的低電平來指示)
t=0協議也允許eeprom或eprom的外部可編程電壓接通或斷開。這可用在接收的命令字節附加個“1”并把它 作為確認字節回送給終端。這就是為什么只允許偶數值的命令字節,否則這個機制就無法工作。然而,接通 一外部可編程電壓現在技術上已經廢棄,所有現代的智能卡微控制器都在芯片上自己產生編程電壓,因此我 們無需更深人討論這一主題。
保護時間的主要作用是在傳輸時把各個字節分開,使得發送者和接收者雙方有充裕的時間去執行傳輸協議 的功能。
為了解釋t=0命令-應答序列,讓我們假定終端發送給卡一條帶有數據部分的命令,而卡則應答以數據和 回送代碼。終端首先發送給卡以5字節的命令頭標、類字節、命令字節和pl、p2以及p3組成。如果它們被正 確地接收了,則卡送回一個為過程字節pb(procedure byte)形式的確認ack(acknowledge),確認的編碼 和收到的命令字節是相同的。收到過程字節后,終端送出由"字節表明準確數量的數據字節。至此,卡已收 到了完整的命令,它可以處理它并產生一應答。
如果應答中含有2字節回送代碼之外的數據,卡用一特殊的回送代碼通知終端,由sw2來表明數據量。接收 到此應答后,終端向卡發出get response命令,它僅包括了具有要傳送的數據量的頭標。于是卡向終端傳送 由第1條命令所產生的具有所請求的長度和相應的回送代碼的數據,這樣就完成了一條命令序列。
如果一條命令發送給卡,而卡僅產生沒有數據部分的回送代碼。則圖4中的getresponse部分就不會發生。 因為要完成這些作用(饋送和前一條命令有關的數據)才需要應用層的額外的命令。當然,這里不再有協議 各層之間的嚴格界限。一條應用層命令(getresponse)必須用在這里以支持數據鏈路層,它對正談到的應 用層有著某些影響。乍看起來,這些似乎有點復雜,所以再用圖5來表明。
圖4 在命令和應答中都有數據的典型的t=0通信過程(例如mutual authenticate命令)
t=0協議允許卡在接收頭標后接收數據部分的單個字節。為此,卡只需要把反相的命令字節作為過程字節傳 送給終端,于是終端就傳送一個單獨的數據字節,第2個數據字節是接著由卡發出的第2個過程字節。這種字 節方式的傳送可一直繼續到卡接收了數據部分的所有字節,或者直到卡送出非反相的命令字節,終端則將所 有剩余的字節傳送給卡,使之接收到完整的命令。單字節的傳輸過程如圖6所示。
至于對傳輸協議的考慮,用戶的根本興趣所在僅是數據傳輸率和差錯檢測與校正機制。傳送一個包括了8位 的字節,需要傳送12位,其中還有1開始位,1奇偶校驗位和
這個傳輸協議在智能卡發展之初首先用于法國,它也是第1個智能卡協議的國際標準。它開創于智能卡技術 的早期,因而它的設計使用了最少量的存儲器并具有簡單性。這項協議被在世界范圍內用于gsm卡,并在所 有的智能卡協議中享有最廣泛的流行。t=0協議在iso/iec 7816-3中被標準化,另外的相容規范被包含在 csm 11.11和emv規范中。
t=0協議是面向字節的,這就是說協議所處理的最小單位是單個字節。傳送的數據單元中含有一個頭標、類 字節、命令字節和三個參數字節構成。它可能跟隨著一個可選的數據部分,和被iso/iec 7816-4標準化的 apdu相反,長度信息僅由參數p3提供。它或是指明命令數據或是應答的長度,它也由iso/iec 7816-3標準中 規定,參見圖1
圖1 t=0的一條命令的結構
由于t=0協議是面向字節的,如果檢測到一個傳輸錯誤,則對錯誤字節的重傳必須立即請求。而字組協議 則相反,如果發現了差錯則整個字組(一系列字節)都必須重傳。
t=0差錯檢測采用附在每一被傳送的字節后的奇偶校驗位。
如果接收方檢測出一個傳輸差錯,它必須從出錯字節的保護時間的第1位區間的中間開始,把i/0線在一個 etu持續期內置為低電平。這樣向通信的另一方表示最近的一個字節必須重新傳送。這種字節重復的機制是 十分簡單的,而其好處在于它的選擇性,只有不正確的字節才被重復。遺憾地是,這個方法也存在一個嚴重 的缺'點,大多數ic卡接口把etu區間當做是最小的可檢測單元,所以它們不能識別從停止位中間設定的i/0 線上的低電平。因此,標準的ic卡接口不適于t=0協議。然而,如果每1位用軟件分別接收,就不會有這個問 題。圖2和圖3分別表明了用t=0傳輸協議,在無差錯和有差錯時,i/0接口的信號時序圖。
圖2 用t=0傳輸協議(一字節無差錯地經i/0接口傳送)
圖3 t=0傳輸協議(一個數據傳輸差錯,在保護時間用i/0接口的低電平來指示)
t=0協議也允許eeprom或eprom的外部可編程電壓接通或斷開。這可用在接收的命令字節附加個“1”并把它 作為確認字節回送給終端。這就是為什么只允許偶數值的命令字節,否則這個機制就無法工作。然而,接通 一外部可編程電壓現在技術上已經廢棄,所有現代的智能卡微控制器都在芯片上自己產生編程電壓,因此我 們無需更深人討論這一主題。
保護時間的主要作用是在傳輸時把各個字節分開,使得發送者和接收者雙方有充裕的時間去執行傳輸協議 的功能。
為了解釋t=0命令-應答序列,讓我們假定終端發送給卡一條帶有數據部分的命令,而卡則應答以數據和 回送代碼。終端首先發送給卡以5字節的命令頭標、類字節、命令字節和pl、p2以及p3組成。如果它們被正 確地接收了,則卡送回一個為過程字節pb(procedure byte)形式的確認ack(acknowledge),確認的編碼 和收到的命令字節是相同的。收到過程字節后,終端送出由"字節表明準確數量的數據字節。至此,卡已收 到了完整的命令,它可以處理它并產生一應答。
如果應答中含有2字節回送代碼之外的數據,卡用一特殊的回送代碼通知終端,由sw2來表明數據量。接收 到此應答后,終端向卡發出get response命令,它僅包括了具有要傳送的數據量的頭標。于是卡向終端傳送 由第1條命令所產生的具有所請求的長度和相應的回送代碼的數據,這樣就完成了一條命令序列。
如果一條命令發送給卡,而卡僅產生沒有數據部分的回送代碼。則圖4中的getresponse部分就不會發生。 因為要完成這些作用(饋送和前一條命令有關的數據)才需要應用層的額外的命令。當然,這里不再有協議 各層之間的嚴格界限。一條應用層命令(getresponse)必須用在這里以支持數據鏈路層,它對正談到的應 用層有著某些影響。乍看起來,這些似乎有點復雜,所以再用圖5來表明。
圖4 在命令和應答中都有數據的典型的t=0通信過程(例如mutual authenticate命令)
t=0協議允許卡在接收頭標后接收數據部分的單個字節。為此,卡只需要把反相的命令字節作為過程字節傳 送給終端,于是終端就傳送一個單獨的數據字節,第2個數據字節是接著由卡發出的第2個過程字節。這種字 節方式的傳送可一直繼續到卡接收了數據部分的所有字節,或者直到卡送出非反相的命令字節,終端則將所 有剩余的字節傳送給卡,使之接收到完整的命令。單字節的傳輸過程如圖6所示。
至于對傳輸協議的考慮,用戶的根本興趣所在僅是數據傳輸率和差錯檢測與校正機制。傳送一個包括了8位 的字節,需要傳送12位,其中還有1開始位,1奇偶校驗位和
上一篇:接觸卡與其他卡之間的差異
上一篇:智能卡數據傳輸協議I2C總線