何 垚
(湘潭新奧燃?xì)庥邢薰?,湖?湘潭 411100)
IC卡是一種半導(dǎo)體卡,其采用微電子技術(shù)進(jìn)行信息的存儲(chǔ)、處理。自1970年誕生第一張IC卡以來(lái),IC卡經(jīng)歷了一般存儲(chǔ)卡、加密存儲(chǔ)卡、CPU卡和超級(jí)智能卡4個(gè)時(shí)代。IC卡是多學(xué)科技術(shù)綜合發(fā)展的結(jié)果,它的應(yīng)用已成為一個(gè)國(guó)家科技發(fā)展水平的標(biāo)志之一[1]。
IC卡在城市燃?xì)饬髁坑?jì)量上的應(yīng)用越來(lái)越廣泛。在CPU卡流量計(jì)之前,大量使用的是邏輯加密卡。由于邏輯加密卡的技術(shù)所限,產(chǎn)品供應(yīng)商的密鑰不能向應(yīng)用方(燃?xì)夤?公開(kāi),因此應(yīng)用方無(wú)法掌握核心安全,系統(tǒng)安全取決于產(chǎn)品供應(yīng)商,并且不同型號(hào)的邏輯加密卡互不兼容,導(dǎo)致不同廠商的芯片數(shù)據(jù)存儲(chǔ)方案也不兼容,應(yīng)用方在使用多家卡表時(shí)會(huì)帶來(lái)多種密鑰和密鑰算法管理上的復(fù)雜化[2-3]。
CPU卡又稱(chēng)智能卡,卡片內(nèi)自帶CPU,程序容量和數(shù)據(jù)容量大,且?guī)Ъ?、解密算法協(xié)處理器,運(yùn)算速度快[4]。采用CPU卡,并且制定一種統(tǒng)一的技術(shù)規(guī)范,燃?xì)夤灸芡耆莆誄PU卡流量計(jì)的技術(shù)核心及密鑰算法,保證燃?xì)鉁?zhǔn)確計(jì)量、實(shí)現(xiàn)先購(gòu)氣再用氣、防止用戶偷氣。由此可見(jiàn),CPU卡工業(yè)流量計(jì)成功應(yīng)用的關(guān)鍵是設(shè)計(jì)完善的CPU卡密鑰系統(tǒng)[5]。
目前,新型的CPU卡流量計(jì)是集計(jì)量基表、電子表頭和控制閥于一體的流量計(jì)。此前,CPU卡流量計(jì)通常是集成商將流量計(jì)和IC卡控制閥通過(guò)電氣連接而成,流量計(jì)在計(jì)量一定的量(通常為1 m3)時(shí)輸出一個(gè)脈沖給IC卡控制閥,IC卡控制閥進(jìn)行扣減,當(dāng)扣減超過(guò)允許透支量時(shí),控制閥關(guān)閉。對(duì)于這種方式,電氣連接的可靠性是關(guān)鍵,經(jīng)常出現(xiàn)的情況是扣減不同步,流量計(jì)運(yùn)行的量與IC卡控制閥扣減的量不盡相同,造成計(jì)量糾紛。所以,從CPU卡流量計(jì)功能上講,一體化流量計(jì)是發(fā)展的趨勢(shì)。燃?xì)赓Q(mào)易中,用戶通過(guò)CPU卡購(gòu)氣后充值到流量計(jì)中,燃?xì)夤就ㄟ^(guò)CPU卡達(dá)到管理用戶用氣的目的,CPU卡起著聯(lián)系用戶和燃?xì)夤镜年P(guān)鍵作用。另外,當(dāng)上游氣價(jià)浮動(dòng)時(shí),燃?xì)夤灸芗皶r(shí)通過(guò)CPU卡或其他方式調(diào)整氣價(jià)。
綜上所述,CPU卡應(yīng)至少保存如下信息:用戶信息、燃?xì)夤緲?biāo)志、購(gòu)氣量和購(gòu)氣次數(shù),以及為安全需要而設(shè)計(jì)的密鑰組、不同功能卡的卡標(biāo)志。為避免異常操作造成卡內(nèi)數(shù)據(jù)丟失,還可以在卡文件中記錄主要操作過(guò)程,異常操作后再次插卡能恢復(fù)繼續(xù)進(jìn)行正常的操作。
本密鑰體系設(shè)計(jì)采用三級(jí)分散四級(jí)密鑰方式,從根密鑰逐級(jí)分散,到最終的應(yīng)用卡片密鑰,如圖1所示。
圖1 密鑰體系圖Fig.1 Dongle architecture
由圖1可見(jiàn),在密鑰體系中,各應(yīng)用卡處在體系的最底層,其密鑰是根據(jù)上一級(jí)母卡和分散因子進(jìn)行密鑰分散得到的。因此,必須加強(qiáng)對(duì)母卡的管理。為防止各級(jí)母卡在應(yīng)用中不可預(yù)料的物理性損壞,必須對(duì)各級(jí)母卡進(jìn)行備份并根據(jù)單位需要設(shè)置管理權(quán)限。
在進(jìn)行密碼運(yùn)算時(shí),可根據(jù)密鑰長(zhǎng)度選擇數(shù)據(jù)加密標(biāo)準(zhǔn)(data encryption standard,DES),或3DES算法。一般而言,密鑰長(zhǎng)度為8 B用DES,16 B用3DES算法。這兩種算法的邏輯框圖如圖2所示。
圖2 運(yùn)算邏輯框圖Fig.2 Block diagram of the operational logic
DES算法為一種對(duì)稱(chēng)密碼體制,它是IBM公司于1975年研究成功并公開(kāi)發(fā)表的,開(kāi)創(chuàng)了公開(kāi)全部算法的先例。DES算法的基本技巧是把每一位明文的影響盡可能迅速地作用到較多位輸出密文中去;同時(shí)把每一位密鑰的影響盡可能擴(kuò)散到較多位輸出密文中,以隱蔽明文的統(tǒng)計(jì)特性。
DES主要采用替換和移位的方法,用56位密鑰(密鑰為64位,其中8位是奇偶校驗(yàn)位,所以實(shí)際上密鑰為56位)對(duì)64位二進(jìn)制數(shù)據(jù)塊進(jìn)行加密。每次加密可對(duì)64位的輸入數(shù)據(jù)進(jìn)行16輪編碼,經(jīng)一系列替換和移位后,輸入的64位輸入數(shù)據(jù)被轉(zhuǎn)換成完全不同的64位的輸出數(shù)據(jù)。
3DES是在DES的基礎(chǔ)上采用三重DES,即用兩個(gè)56位的密鑰K1、K2進(jìn)行加密與解密。發(fā)送方用K1加密、K2解密,再使用K1加密;接收方使用K1解密、K2加密,再使用K1解密,其效果相當(dāng)于密鑰長(zhǎng)度加倍。[6]
所有CPU卡的密鑰類(lèi)型如下。在實(shí)際應(yīng)用中,可以根據(jù)系統(tǒng)要求適當(dāng)刪減。
DES加密密鑰,用于進(jìn)行DES加密運(yùn)算的密鑰,在內(nèi)部認(rèn)證操作時(shí)使用。
DES解密密鑰,用于進(jìn)行DES解密運(yùn)算的密鑰,在內(nèi)部認(rèn)證操作時(shí)使用。
DES&MAC密鑰,用于進(jìn)行報(bào)文鑒別代碼(message authentication code,MAC)運(yùn)算的密鑰,在內(nèi)部認(rèn)證操作時(shí)使用。
內(nèi)部密鑰,用于產(chǎn)生消費(fèi)、取現(xiàn)和圈存交易中使用的交易驗(yàn)證碼(transaction authentication code,TAC),涉及圈存、圈提、消費(fèi)/取現(xiàn)、修改透支限額操作命令。
維護(hù)密鑰,用于在以安全報(bào)文方式訪問(wèn)文件時(shí),產(chǎn)生安全報(bào)文的密鑰。它涉及讀/寫(xiě)文件/記錄、存款、扣款、卡片鎖定、應(yīng)用鎖定和應(yīng)用解鎖操作命令。
主控密鑰,用于在以安全報(bào)文裝載或更改密鑰時(shí),產(chǎn)生報(bào)文的密鑰。它涉及外部認(rèn)證、增加或修改密鑰操作命令。
口令解鎖密鑰,用于在以安全報(bào)文訪問(wèn)口令時(shí),產(chǎn)生安全報(bào)文的密鑰。它涉及口令解鎖、驗(yàn)證并修改口令操作命令。
口令重裝密鑰,用于產(chǎn)生重裝PIN命令的MAC。涉及重裝/修改口令密鑰,適用于標(biāo)志為00、長(zhǎng)度為2~6 B的口令密鑰。
外部認(rèn)證密鑰,用于外部認(rèn)證過(guò)程中認(rèn)證鑒別數(shù)據(jù),如被鎖死將無(wú)法被解鎖。涉及外部認(rèn)證命令操作。
修改透支限額密鑰,用于產(chǎn)生修改透支限額交易中使用的過(guò)程密鑰,在修改過(guò)程中計(jì)算MAC和TAC。
圈提密鑰,用于產(chǎn)生圈提交易中使用的過(guò)程密鑰,在圈提交易中計(jì)算MAC,涉及圈提操作。
消費(fèi)密鑰,用于產(chǎn)生消費(fèi)/取現(xiàn)交易中使用的過(guò)程密鑰,在操作過(guò)程中計(jì)算MAC和TAC。
圈存密鑰,用于產(chǎn)生圈存交易中使用的過(guò)程密鑰,在操作過(guò)程中計(jì)算MAC和TAC。
口令密鑰PIN,用于實(shí)現(xiàn)對(duì)卡片持有者的鑒別,長(zhǎng)度為2~8 B(中國(guó)人民銀行應(yīng)用為2~6 B)。每次核對(duì)失敗時(shí)錯(cuò)誤計(jì)數(shù)器自動(dòng)減1,當(dāng)錯(cuò)誤數(shù)達(dá)到0時(shí),口令密鑰被鎖死,須用相關(guān)命令解鎖。
解鎖口令密鑰,用于解鎖被鎖定的8 B口令密鑰。
用戶數(shù)據(jù)以文件形式存儲(chǔ)[7]。在CPU卡中,文件系統(tǒng)由主文件(master file,MF)、專(zhuān)用文件(definition file,DF)和基本文件(elementary file,EF)組成。CPU卡中的文件組織樹(shù)結(jié)構(gòu)如圖4所示。
圖3 CPU卡中的文件組織樹(shù)結(jié)構(gòu)Fig.3 The tree structure of file in CPU-card
4.1.1 專(zhuān)用文件 DF
專(zhuān)用文件好比DOS系統(tǒng)的目錄或文件夾,在根處的DF稱(chēng)MF,它是必備的。DF下可支持多級(jí)目錄,受存儲(chǔ)空間限制,不同片內(nèi)操作系統(tǒng)(chip operating system,COS)支持級(jí)數(shù)不同。如TimeCOS系統(tǒng)支持3級(jí),即MF-DF-DF形式。
4.1.2 基本文件 EF
基本文件包括工作基本文件和內(nèi)部基本文件。工作基本文件用于存儲(chǔ)不由卡所解釋的數(shù)據(jù)(即用戶數(shù)據(jù)),包括錢(qián)包文件等。內(nèi)部基本文件用于存儲(chǔ)由卡所解釋的數(shù)據(jù),是指為了管理和控制目的由卡分析和使用的數(shù)據(jù),如密鑰文件。
一個(gè)密鑰文件中包含多種密鑰,每種密鑰可以有多個(gè)。在TimeCOS/PBOC中,密鑰文件采用變長(zhǎng)記錄格式,數(shù)據(jù)項(xiàng)定義如表1所示。
表1 密鑰文件記錄格式Tab.1 Record format of KEY file
由表1可知,每條記錄長(zhǎng)度=1 B標(biāo)簽(表1中的T)+1 B的長(zhǎng)度(表1中的L)+5 B的密鑰頭+密鑰值的長(zhǎng)度。每個(gè)DF下只能有一個(gè)密鑰文件,且它必須最先被建立,并根據(jù)密鑰數(shù)量預(yù)留足夠的存儲(chǔ)空間。在任何情況下,密鑰數(shù)據(jù)均無(wú)法被讀出。
在一般的中國(guó)人民銀行應(yīng)用中,通常CPU卡文件結(jié)構(gòu)如圖4所示。
圖4 CPU卡的卡文件結(jié)構(gòu)Fig.4 File structure of CPU-card
按照對(duì)圖1各種母卡的管理方式,逐級(jí)分散卡片的發(fā)行。除密鑰體系中最下層,即應(yīng)用卡片(如用戶卡等)外,其余密鑰均采用母卡進(jìn)行嚴(yán)格管理。
在實(shí)際應(yīng)用中,為防止母卡的密鑰外泄,還須規(guī)定密鑰使用年限,在超過(guò)規(guī)定使用年限后,須更改密鑰,同時(shí)對(duì)系統(tǒng)內(nèi)所有發(fā)行的卡片進(jìn)行密鑰更新操作。
卡片發(fā)行,即對(duì)卡片進(jìn)行初始化,建立卡片的文件結(jié)構(gòu)。除對(duì)用戶卡寫(xiě)入基本數(shù)據(jù)外,大部分的數(shù)據(jù)需在實(shí)際應(yīng)用中寫(xiě)入,如流量計(jì)用戶信息、流量計(jì)基本信息等。要寫(xiě)入數(shù)據(jù),則需使用終端安全控制模塊(pur-chase secure access module,PSAM)卡進(jìn)行密鑰認(rèn)證。只有通過(guò)密鑰認(rèn)證,CPU卡獲得寫(xiě)入權(quán)限時(shí)才可以寫(xiě)入數(shù)據(jù)。所以在實(shí)際應(yīng)用中,一般采用PSAM卡用于認(rèn)證,如在重要的數(shù)據(jù)安全場(chǎng)合,則需采用專(zhuān)用加密機(jī)進(jìn)行數(shù)據(jù)認(rèn)證。
CPU卡在工業(yè)流量計(jì)的應(yīng)用僅是個(gè)開(kāi)始,它的應(yīng)用是多學(xué)科、多系統(tǒng)的綜合。密鑰體系作為應(yīng)用的核心,決定了CPU卡應(yīng)用的數(shù)據(jù)安全。用CPU卡實(shí)現(xiàn)城市燃?xì)忸A(yù)收費(fèi)系統(tǒng),有效解決了行業(yè)收費(fèi)問(wèn)題,有利于事業(yè)的發(fā)展和人力、物力的節(jié)約,具有廣闊的應(yīng)用前景。
[1]李翔.智能卡研發(fā)技術(shù)與工程實(shí)踐[M].北京:人民郵電出版社,2003:1 -20.
[2]王愛(ài)英.IC卡技術(shù)入門(mén)[M].北京:清華大學(xué)出版社,1998:52 -59.
[3]董威,楊義先,鈕心忻.基于JavaSIM卡的GlobalPlatform安全技術(shù)研究[J].北京郵電大學(xué)學(xué)報(bào):工學(xué)版,2006,29(3):91 -94.
[4]肖銀良.CPU卡應(yīng)用方案和密碼管理技術(shù)[J].A&S:安防工程商,2009(12):137 -139.
[5]李靖波.基于密鑰系統(tǒng)的CPU卡在預(yù)付費(fèi)電能表中的應(yīng)用[J].電力信息化,2008(12):101 -105.
[6]鄭磊,易波.于單片機(jī)的實(shí)時(shí)3DES加密算法的實(shí)現(xiàn)[J].微處理機(jī),2000(3):40 -42.
[7]張向軍,陳克非.基于PBOC智能卡的匿名可分電子貨幣協(xié)議[J].計(jì)算機(jī)應(yīng)用,2009(7):1785 -1789.
[8]中國(guó)金融標(biāo)準(zhǔn)化技術(shù)委員會(huì).JR/T 0025.1-2005中國(guó)金融集成電路(IC)卡規(guī)范第1部分:電子錢(qián)包/電子存折卡片規(guī)范[S].北京:中國(guó)金融出版社,2005.
[9]中國(guó)金融標(biāo)準(zhǔn)化技術(shù)委員會(huì).JR/T 0025.2-2005中國(guó)金融集成電路(IC)卡規(guī)范第2部分:電子錢(qián)包/電子存折應(yīng)用規(guī)范[S].北京:中國(guó)金融出版社,2005.
[10]中國(guó)金融標(biāo)準(zhǔn)化技術(shù)委員會(huì).JR/T 0025.3-2005中國(guó)金融集成電路(IC)卡規(guī)范第3部分:與借記/貸記應(yīng)用無(wú)關(guān)的IC卡與終端接口需求[S].北京:中國(guó)金融出版社,2005.