關于電子單程雙程車票(卡)的數(shù)據(jù)安全性問題探討
文章出處:http://www.sgrivertours.com 作者:語馨 收編 人氣: 發(fā)表時間:2011年09月23日
一.Mifare Light 卡
Mifare Light 卡的開發(fā)目的是為了在Mifare 技術平臺中,為了高度集中于對芯片的存儲器容量進行優(yōu)化,滿足“small memory application”(小存儲容量應用)而設計的一款Mifare家族系列產品。注意,由于Mifare Light 卡是Mifare家族系列產品中的一員,特別地,它是Mifare 1 S50卡片的一種轉換產品,即在卡片內部的容量等方面采取了小型化,從Mifare1 S50的16Kbits(2Kbytes)縮小到Mifare Light 卡的384bits(48字節(jié)),但是Mifare Light 卡仍然保持了大部分的Mifare1 S50卡芯片的特性,因此,對Mifare Light 卡的讀寫操作,可以完全使用/兼容已經應用在Mifare 1 S50卡的讀寫設備。
相比于Mifare 1 S50卡,由于Mifare Light 卡在存儲器容量上得到了極大的優(yōu)化、縮小處理(小容量卡),因此在(性能)價格(比)上具有非常大的優(yōu)勢,但存儲容量的縮小,一般也只是適合于作為一個應用的卡片載體(例如單程或雙程電子車票)。而Mifare 1 S50卡則可以適用在一些比較復雜的多個電子應用的項目中,例如作為可以反復充值的地鐵/公交儲值卡等。
如下是Mifare Light卡的一些主要特性和技術指標:
1.卡片容量為384位(48字節(jié))的低功耗EEPROM存儲器
2.具有唯一的32位(4字節(jié))卡片序列號
3.含有16位(2字節(jié))的數(shù)值計數(shù)器(芯片中已含有可以防止數(shù)據(jù)被分割破壞的功能),如果加上需要反寫的數(shù)值計數(shù)器,總共占用8字節(jié)—64bits
4.128位(16字節(jié)—4頁)的用戶可編程序數(shù)據(jù)區(qū)(如果用戶不啟用上述的數(shù)值計數(shù)/校驗功能,則數(shù)據(jù)區(qū)容量可達192位—24字節(jié))
5.用戶可自定義數(shù)據(jù)存儲器中數(shù)據(jù)的讀/寫控制權限,有兩套密碼(KEYA和KEYB)來配合完成
6.讀寫距離:在10cm以內(與天線有關)
7.卡片內無需電源
8.Mifare Light卡兼容Mifare 1 S50卡的讀/寫設備模塊,表現(xiàn)在:
(a)工作頻率:13.56MHZ
(b) 通信速率:106KB波特率
(c)防沖突:同一時間可處理多張卡
(d)具有數(shù)據(jù)整體性校驗功能(16bit的CRC,偶校驗,位編碼,位流計算,RF位通道監(jiān)控等)
(e)具有和Mifare 1 (S50)卡相同的認證功能(authentication)和RF通道加密功能(RF channel encryption)
注意,上述第8條第(e)款的功能的啟用或禁止,對于Mifare Light卡和讀寫器設備之間的空中交換的卡片數(shù)據(jù)或讀寫器命令數(shù)據(jù)的加密特性有直接的關聯(lián)!如果讀寫器模塊的RF通道加密功能被禁止,則空中交換的數(shù)據(jù)將是以“明文”方式存在,一旦數(shù)據(jù)被在此非法截取,將威脅到卡片原始數(shù)據(jù)的安全保密特性!??!
如果是一張單程地鐵車票,這一威脅表現(xiàn)在:一張單程地鐵車票中的數(shù)據(jù)可以被準確無誤地被截取。
如何避免這一安全保密性不受到威脅,在應用系統(tǒng)開發(fā)階段,應該在讀寫器模塊(例如RC530/531等)的相應的RF通道寄存器設置中,必須啟用加密特性,設置相應的寄存器數(shù)值?。?!也就是將卡片和讀寫機具的空中數(shù)據(jù)傳輸模式由“transparence mode”(“明文數(shù)據(jù)模式”)設置為“encryption mode”(“加密數(shù)據(jù)模式”),由此避免卡片原始數(shù)據(jù)的安全保密特性受到被截取的威脅。
如果處于“encryption mode”,即使卡片數(shù)據(jù)被截取,由于截取者很難從已截取的(加密的)數(shù)據(jù)中反向推倒出卡片中的原始數(shù)據(jù)(除非該截取者知道這一加密算法),從而保護了卡片中的原始數(shù)據(jù)的安全保密特性?。?!
如何設置讀寫模塊的專用芯片,例如RC500/RC531等,可以查閱相應的文檔資料。一般地,我們應該關注這些相關的寄存器的設置:
Control Register (Addr=0x09);Channel/Redundancy Register (Addr=0x22);Crypto1 Keys;LoadKey(Addr=0x19);Authent1(Addr=0x0C);Authent2(Addr=0x14);Working with the Transmit/Receive Command (Addr=0x1A, 0x1E,0x16);等等。如圖所示為相關的一些寄存器(RC530)內部控制寄存器等。
如果控制寄存器(Control Register)中的第3個位(bit)Crypto1On被設置為“1”(在Mifare Light 卡片和讀寫器進行相互認證操作Authent2完成后),則,讀寫器和Mifare Light卡片進行非接觸通信的空中數(shù)據(jù)將全部被加密,不再是明文傳輸。
舉個簡單的例子,如果單程車票(Mifare Light芯片)卡片中的錢包數(shù)據(jù)為5(元人民幣),則實際讀寫器接收到的空中數(shù)據(jù)將不是“0x05”,而是一個經過了加密算法運算后的數(shù)據(jù),例如可能為“0x1a2b3c”。由于一般人員不會知曉這一加密算法的構造,因此,即使他非常不容易地截取拿到了這個數(shù)據(jù)“0x1a2b3c”,他也沒有辦法回塑、反推到具體的錢包數(shù)據(jù)為“5”元還是其它數(shù)額等。錢包的數(shù)據(jù)仍然是安全保密的。
另外,作為一個非常專業(yè)的IC卡應用系統(tǒng)開發(fā)人員,本身還必須對錢包數(shù)據(jù)(一次性的單程/雙程車票或反復使用的地鐵/公交儲值卡內的錢包數(shù)據(jù))執(zhí)行“一卡一密”的錢包數(shù)據(jù)加密。加密的結構和算法如下簡單說明一下。
加密算法:可以采用公開標準的DES算法或3-DES算法;(具體的算法程序等比較復雜,如果有興趣,可以與筆者聯(lián)系獲得。)
加密結構:如圖所示為相應的一種典型的關系型加密結構。我們可以把DES算法看作是一個“黑盒子”,內部所有的數(shù)據(jù)和運算是保密的、不可逆的。
加密操作說明如下:
如果要求加密的錢包金額數(shù)據(jù)B=0x10(元),而該張單程車票的唯一卡號為A=0x0001, 控制密鑰為C=0xFFFF,則該張單程車票的加密后的錢包數(shù)據(jù)D(可能)=0x1a2b3c;(注意,一般從數(shù)據(jù)D是不可能推倒出數(shù)據(jù)輸入量B的準確值的,這是由DES加密算法的“不可逆推特性”所決定的,否則不能作為加密算法!)
如果要求加密的另外一張單程車票的唯一卡號為A=0x0002,而所有其它的輸入量A和C都一樣(也即同樣在兩個單程車票中存入相同的錢包金額數(shù)據(jù)B=0x10(元)),則加密算法此時的輸出量D(可能)=0x2a3c4d;等等,但是絕對不可能是和前一張的輸出量D(=0x1a2b3c)相同?。?!à 這一特性是由加密算法(DES或3-DES或RSA或其它算法)的“不同輸入量一定形成不同的輸出量”這一特性來決定的?。?!
盡管兩張單程車票的錢包金額相同,但實際存儲在單程車票內部對應的數(shù)據(jù)是完全不同的,也即達到了“一卡一密”的目的!如果有任何的數(shù)據(jù)截取行為發(fā)生,受到威脅的只是當前的這張卡片(單程車票),整個應用系統(tǒng)還是非常安全的、保密的!并且如果截取者要改寫錢包數(shù)據(jù)到這張卡片(單程車票),則如果他不知加密算法,不知該張卡片號(輸入量A)、具體錢包金額(輸入量B)和應該寫入卡片的錢包金額(輸出量D)之間的關系,那么寫入的數(shù)據(jù)(輸出量D)是無法正確還原到輸入量B的。(讀寫器在讀到該數(shù)據(jù)D后將做DES逆算法,將算出的D和卡片發(fā)送的該數(shù)據(jù)D相互比較,如果不一致,則認為卡片數(shù)據(jù)已遭篡改!)
Mifare Light卡存儲結構
Mifare Light卡共有384位,分為12頁,每頁為4個字節(jié)。存儲結構如下:
( 注:_b表示取反;AC-A_b為AC-A的取反數(shù)值 )
1) 第0、1頁存放著Mifare Light卡的序列號等信息,只可讀。
2) 第2、3頁及最后A、B兩頁數(shù)據(jù)塊,可存貯一般的數(shù)據(jù)。
3) 和4、5頁為數(shù)值塊,可作為重要數(shù)據(jù)(例如錢包)使用,兩字節(jié)的值以正和反兩種形式存貯。只有減值操作,沒有加值操作。如果不做錢包使用,則可以做為普通的數(shù)據(jù)塊使用。
4)第6、7、8、9頁存儲著密碼A(6字節(jié))、密碼B(6字節(jié))及存取控制AC。
5)一次寫操作可以操作一個頁(4個字節(jié)),一次讀操作可以操作兩頁(8個字節(jié))。
6)第7頁中的2字節(jié)(AC-A和AC-A_b)、第9頁中的2字節(jié)(AC-B、AC-B_b)為數(shù)據(jù)存儲控制字節(jié),存儲控制字節(jié)以正寫和反寫的形式各存一次。
存儲控制字節(jié)AC-A和AC-B的數(shù)據(jù)格式如下,字節(jié)(byte)中每個位(bit)如果為“1”,則“使能”相應的功能;反之,如果是“0”,則關閉相應功能。
例如:如果AC-A的數(shù)據(jù)=“0xFF”=“11111111”b,則表示:
頁Data1:可讀、可寫;
頁Value:可寫;
AC-A:可寫;
Data2:可讀、可寫;
二.上海華虹 SHC1102卡
上海華虹集成電路有限公司的 SHC1102 集成電路(IC)是非接觸式IC卡芯片系列中面向低成本應用的一個產品,它能夠用小型天線完成與讀寫終端之間的射頻通信,其技術和測試標準符合ISO/IEC 14443-Type A 的國際標準,具有非常強的經濟性和可靠性。SHC1102 芯片適用于軌道交通AFC收費系統(tǒng)中的可回收單程票、防偽無線電子標簽、電子門鎖、身份識別及代幣籌碼等領域。
主要技術參數(shù)
1.工作頻率:13.56 MHz
2.通信速率:106k bps
3.調制方式:ISO/IEC 14443 Type A
4.工作溫度:-20℃至80℃
5.存貯容量:512 bits
6.無電池: 無線方式傳遞數(shù)據(jù)和能量
7.讀寫距離:在距讀卡器天線0-40 mm區(qū)域內能正確進行數(shù)據(jù)交換和完成各項操作
8.采用半雙工通訊協(xié)議
9.在無線通訊過程中通過以下機制來保證數(shù)據(jù)完整
i.---每幀有16位CRC檢驗
ii.---每字節(jié)有奇偶校驗位
iii.---檢查位數(shù)
iv.---用編碼方式來區(qū)分l、0或無信息
10.數(shù)據(jù)安全性
i.---相互認證
ii.---每張卡的序列號唯一
iii.---傳輸密鑰保護
11.靈活的的存儲結構
i. ---512 位EEPROM (16 Blocks × 4 Bytes × 8 Bits )
ii. ---分為2個不同訪問條件的數(shù)據(jù)區(qū) ( DATA 1、DATA 2 )
iii. ---每個塊為最小訪問單位,由4個字節(jié)組成
iv. ---每個芯片可定義自己獨立的密鑰 (4 Bytes )
12.數(shù)據(jù)保持時間大于10年
13.擦寫次數(shù)大于10萬次
14.典型交易時間小于200ms
數(shù)據(jù)交易流程
當 SHC1102 芯片接收到讀寫器的指令后,經過指令譯碼,通過控制邏輯進行數(shù)據(jù)處理,并返回相應的處理結果。
當華虹 SHC1102 位于讀寫器的有效工作范圍之外時,芯片處于無電狀態(tài),不能進行任何操作;當其進入讀寫器的有效工作范圍,芯片上電復位,進入等待狀態(tài),在此狀態(tài)下可正確接收和響應讀寫器發(fā)送的詢卡/應答指令,并進行相互認證、讀、寫等操作。
數(shù)據(jù)操作指令
詢卡/應答
讀寫器通過發(fā)出指令來確認是否有華虹非接觸式IC卡產品(SHC1102)進入其操作范圍,并通過應答確認產品的類型。并由產品類型確定相互之間的通訊協(xié)議和通訊速率??☉诖_認被選中后返回卡的用戶碼(CID)。
認證
SHC1102進入讀寫器的有效工作范圍并正確響應之后,讀寫器與SHC1102標簽之間要進行相互認證。只有都通過了認證,讀寫器才能開始對卡進行權限操作。(非權限讀操作無需認證即可進行)。
認證過程如下:
(A) 讀寫器認證標簽:通過非權限讀指令獲得標簽的序列號(UID)和應用數(shù)據(jù)區(qū)1(DATA1)的數(shù)據(jù),判別其內容和數(shù)據(jù)結構,驗證標簽的合法性。驗證通過后,讀寫器將有關的數(shù)據(jù)按相應算法進行處理,產生密鑰發(fā)送給標簽。
(B) 標簽認證讀寫器:標簽在初始化時被寫入4個字節(jié)的密鑰,該密鑰由標簽的序列號(UID)和應用數(shù)據(jù)區(qū)1(DATA 1)中的有關內容按相應的算法運算產生。通過驗證(A)中讀寫器所發(fā)送的密鑰可確認讀寫器的合法性。
讀寫操作
在完成必要的認證后,讀寫器就可以開始對SHC1102進行讀寫操作了。
讀:讀一個塊,直接讀或經認證后讀
寫:寫一個塊,必須先通過認證
停止
將 SHC1102設置為停止等待狀態(tài)。
存儲區(qū)結構
SHC1102中的EEPROM存儲區(qū)容量為512 Bits,分成16個塊(Block),每個塊由4個字節(jié)組成,每個字節(jié)有8位。塊是存儲區(qū)的最小訪問單位。
SHC1102芯片中EEPROM存儲區(qū)的結構如圖所示:
制造商塊
塊0、塊1是特殊的數(shù)據(jù)塊,用于存放制造商代碼(MID)、客戶代碼(CID)、唯一序列號(UID),稱制造商塊。制造商塊中的數(shù)據(jù)由芯片制造商在生產過程中寫入,數(shù)據(jù)只讀,不可改寫。
· 制造商代碼(MID): 2 Bytes
· 客戶代碼(CID): 2 Bytes
· 唯一序列號(UID): 4 Bytes
密鑰塊
塊8專用于存放認證的密鑰,稱密鑰塊,此塊存放的數(shù)據(jù)須通過認證后才可讀或可改寫。
應用數(shù)據(jù)區(qū) 1 ( DATA 1 )
· 應用數(shù)據(jù)區(qū)1 :塊2 ~ 塊7 (DATA 1)
· 訪問控制條件:讀 ―― 無條件; 寫―― 認證 Key
應用數(shù)據(jù)區(qū) 2 ( DATA 2 )
· 應用數(shù)據(jù)區(qū)2 :塊9 ~ 塊15 (DATA 1)
· 訪問控制條件:讀 ―― 認證 Key; 寫―― 認證 Key
注意事項
當對密鑰塊中的數(shù)據(jù)進行寫操作時,需要良好的操作環(huán)境(將標簽置于可靠的讀寫區(qū)域中),以防止發(fā)生寫操作非正常中斷,造成該標簽被自鎖而無效。
傳輸密鑰在芯片測試或標簽出廠時寫入,其內容可以由客戶指定;傳輸密鑰由廠商通過秘密途徑提供給標簽的用戶或系統(tǒng)集成商。
三.復旦微電子(512位非接觸式集成電路卡專用芯片)FM11RF005芯片卡
復旦微電子512位非接觸式集成電路卡專用芯片F(xiàn)M11RF005是低容量非接觸式集成電路卡芯片。采用0.6微米CMOS EEPROM工藝,容量為512bit EEPROM,內含加密控制和通信邏輯電路,支持三重防偽認證標準,具有較高的保密性。可廣泛適用于低成本的城市軌道交通單程票、各類計費支付卡和數(shù)據(jù)采集系統(tǒng)。
四.結 論
從上述的一系列描述和分析,我們應該可以看到,上述3種類型的卡(芯)片,即
·Mifare Light 卡
·華虹SHC1102卡、
·復旦微電子FM11RF005卡
在安全保密特性上沒有很大的差異,特別是在作為單程/雙程車票的簡單應用中,上述3種類型的卡(芯)片應該都能完成相應的功能。
但有一點是非常關鍵的,即在用戶應用程序開發(fā)中,應該將各自的安全保密功能盡可能地打、啟用,即進行相應的(讀寫機具芯片)寄存器設置和用戶自己的加密算法的應用,盡量不使卡(單程/雙程車票)和讀寫機具之間通信時的數(shù)據(jù)為“明文”,而應該是加過密的“密文”!(注意,有些讀寫機具芯片(例如RC500等)中的相應加密位在缺省時的設置為“明文”,即不進行加密,只有在相關設置之后,加密功能才能實現(xiàn)!)
此外,上述所有的這些芯片都基于ISO14443 Type A標準,屬于10cm以內的近距離識別。事實上,在軌道交通中,我們應該朝著更為先進、方便的遠距離身份識別/電子支付這一目標前進。不必讓所有乘坐軌道交通的乘客每次進/出都必須出示交通卡(刷卡)或投入單程/雙程票,取而代之的是乘客只需從特定的通道中走過即可,變得更為人心化,從而變得更為方便。希望我國的軌道交通應用系統(tǒng)能在下一代產品應用中更上一層樓!