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