肖 麗
(四川省電力公司眉山公司,四川 眉山 620010)
CPU卡又稱智能卡,指具有微處理器(CPU)和操作系統(tǒng)(COS)的IC卡,目前常用的加密算法有3DES及SM1。由于具有更高的數(shù)據(jù)安全性,CPU卡智能電能表已經(jīng)開始大量使用。CPU卡分為接觸式IC卡、非接觸式IC卡、兩種接口方式合一的雙界面IC卡。接觸式IC卡主要遵循的國際標(biāo)準(zhǔn)為ISO 7816系列標(biāo)準(zhǔn),非接觸卡主要遵循的國際標(biāo)準(zhǔn)為ISO 14443系列標(biāo)準(zhǔn)。智能電表為了保證數(shù)據(jù)安全交換及可靠認(rèn)證,表內(nèi)置ESAM芯片(也屬于CPU卡),用于存貯剩余電費、費率參數(shù)等關(guān)鍵數(shù)據(jù),此類數(shù)據(jù)只有通過與卡或主站加密機(jī)的雙向認(rèn)證才能修改,從而保證了數(shù)據(jù)的安全性。由于CPU卡和ESAM的認(rèn)證過程中引入了分散因子及隨機(jī)數(shù),使用CPU卡的智能電表可實現(xiàn)一卡一密、一次一密,極大提高了智能電表的數(shù)據(jù)交換及電費、電價數(shù)據(jù)安全性,目前已經(jīng)在國家電網(wǎng)大量使用。
CPU卡的物理結(jié)構(gòu)如圖1所示,芯片有8個信號接口。
圖1 CPU卡的物理結(jié)構(gòu)
ESAM芯片的物理結(jié)構(gòu)如圖2所示,芯片有8個信號接口。
圖2 ESAM芯片的物理結(jié)構(gòu)
CPU卡是通過異步通信的方式進(jìn)行數(shù)據(jù)交換,I/O口線上所用的數(shù)位寬度被確定為基本時間單位ETU,計算公式為 ETU=372/f,其中f為時鐘頻率,一般在1~5 MHz范圍之間選擇,一般當(dāng)時鐘頻率為3.579 MHz時,數(shù)據(jù)傳輸?shù)乃俾蕿?600 b/s。
CPU卡的數(shù)據(jù)傳送是以字節(jié)為單位的,字節(jié)傳送的時序如圖3所示。
圖3 CPU卡字節(jié)傳送的時序
字符傳送前,I/O端應(yīng)被置為1,如圖3所示,一個字符包括10個連續(xù)的ETU。第一個時刻t1被置于狀態(tài)0,這個時刻稱為起始時刻;t2~t9傳送1個字節(jié);最后一個時刻t10傳送奇偶校驗位,當(dāng)奇偶校驗出錯時,接收方在10.5±0.2 etu時間發(fā)送一個狀態(tài)為0,最少為1 etu,最大為2 etu的出錯信號,然后將等待對有爭議的字節(jié)重發(fā)。
CPU卡的指令格式如圖4。
圖4 CPU卡指令格式
1)CLA為命令類別,不含安全報文(命令中沒有MAC校驗)時,為00、0×80,含安全報文命令時為04、0×84;
2)INS為指令,用于規(guī)定數(shù)據(jù)交換作用,如0×82外部認(rèn)證、0×84取隨機(jī)數(shù)、0×88內(nèi)部認(rèn)證、0×30扣款、0×32存款、0×b0讀二進(jìn)制文件、0×d6寫二進(jìn)制文件等;
3)P1、P2為命令參數(shù);
4)Lc為發(fā)出的命令數(shù)據(jù)長度,Le為響應(yīng)數(shù)據(jù)的長度;
5)DATA為傳輸?shù)臄?shù)據(jù)。
6)MAC為含安全報文時的4字節(jié)校驗數(shù)據(jù)。
接觸式CPU卡智能電表由于數(shù)據(jù)傳輸速度快、可靠性高而被廣泛應(yīng)用。但接觸式卡口由于內(nèi)部直接與數(shù)字電路相連接,容易受到攻擊而導(dǎo)致智能電表數(shù)字部分損壞失效。為此,智能電表的防攻擊卡口設(shè)計對智能電表的可靠性提升很關(guān)鍵。通過實驗及大量應(yīng)用,CPU卡電能表防攻擊卡口電路可參考圖5。
ON_0FF_CARD信號用于控制卡口電源,平時置低電平,CPU卡插卡前不供電,MCU檢測插卡信號KEY_CARD電平由高到低后,ON_0FF_CARD置高電平,給CPU卡供電。同時給CPU卡提供時鐘信號,時鐘信號可使用MCU的時鐘輸出功能,如NEC、TI等單片機(jī)都有主晶振2、4分頻后輸出口。300 Ω 電阻 R8、R9、R10、R11 串在卡口與 MCU 通信的數(shù)據(jù)線上,用于卡口防靜電,當(dāng)對卡口靜電攻擊時,對MCU及表內(nèi)數(shù)字電路起到保護(hù)作用。RT1是封裝了熱敏電阻及TVS管的專用卡口防攻擊模塊,可有效防止表外的高壓、靜電、短路等攻擊。
CPU卡智能電表的數(shù)據(jù)安全性主要是通過CPU卡與ESAM芯片的雙向認(rèn)證來實現(xiàn)的,表內(nèi)MCU起數(shù)據(jù)搬運及流程控制作用。以用戶卡為例,當(dāng)MCU判到插卡后,先做內(nèi)部認(rèn)證,通過后認(rèn)為用戶卡與ESAM芯片是同一個系統(tǒng),可進(jìn)行讀操作;然后CPU卡對ESAM進(jìn)行外部認(rèn)證,認(rèn)證通過后CPU卡開放寫權(quán)限,可以把ESAM芯片里的數(shù)據(jù)寫入CPU卡內(nèi);最后ESAM芯片對CPU卡進(jìn)行外部認(rèn)證,認(rèn)證通過后ESAM芯片開放寫權(quán)限,可以把CPU卡的數(shù)據(jù)寫入ESAM芯片卡內(nèi)。具體的認(rèn)證流程如下。
4.1.1 內(nèi)部認(rèn)證流程
圖5 防攻擊卡口電路
圖6 用戶卡購電流程
適用于各種卡片與ESAM之間的認(rèn)證。
1)ESAM或電能表產(chǎn)生隨機(jī)數(shù);
2)卡片對隨機(jī)數(shù)加密獲得密文;
3)ESAM根據(jù)卡片卡號產(chǎn)生過程密鑰;
4)ESAM利用過程密鑰加密隨機(jī)數(shù)獲得密文;
5)電能表對比卡片和ESAM對隨機(jī)數(shù)加密的結(jié)果,一致則合法,否則非法。
4.1.2 外部認(rèn)證流程
情況1:用戶卡認(rèn)證ESAM
1)用戶卡取隨機(jī)數(shù);
2)ESAM根據(jù)用戶卡卡號產(chǎn)生過程密鑰;
3)ESAM利用過程密鑰加密隨機(jī)數(shù)獲得密文;
4)用戶卡利用以上密文完成外部認(rèn)證過程,獲得相應(yīng)的寫權(quán)限。
情況2:ESAM認(rèn)證用戶卡
1)ESAM取隨機(jī)數(shù);
2)用戶卡加密隨機(jī)數(shù)獲得密文;
3)ESAM利用以上密文完成外部認(rèn)證過程,獲得相應(yīng)的寫權(quán)限。
用戶卡購電流程復(fù)雜,也是CPU卡操作流程中最關(guān)鍵的部分,需要多次認(rèn)證及判斷,最后才能把購電卡里的電費充值到表內(nèi)ESAM錢包文件里。圖6是結(jié)合國內(nèi)主流售電系統(tǒng)流程的用戶卡表內(nèi)購電流程圖。
CPU卡是繼存貯器卡、邏輯加密卡后的第三代IC卡,CPU卡及ESAM芯片在智能電表上的應(yīng)用為智能電表本地安全數(shù)據(jù)交換、遠(yuǎn)程加密數(shù)據(jù)通信提供了重要技術(shù)支撐,為未來智能電表的雙向信息互動提供了很好的技術(shù)平臺。CPU卡智能電表會因其快捷的充值操作、安全的數(shù)據(jù)傳遞而受到供電局及用戶的青睞。
[1]ISO/IEC 7816,卡片基本規(guī)范及數(shù)據(jù)交換命令[S].
[2]Q/GDW_365-2009,智能電能表信息交換安全認(rèn)證技術(shù)規(guī)范[S].
[3]北京握奇有限公司,TimeCOS/PBOC通用技術(shù)參考手冊.
[4]北京融通高科有限公司,ARTCOS ESAM通用手冊.