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