山西電力公司超高壓公司 王建偉
華北電力大學(xué)控制與計(jì)算機(jī)工程學(xué)院 尹婷婷 林永君
山東大為電氣有限公司 朱振軍
應(yīng)用CPU卡實(shí)現(xiàn)充電樁計(jì)費(fèi)的研究
山西電力公司超高壓公司 王建偉
華北電力大學(xué)控制與計(jì)算機(jī)工程學(xué)院 尹婷婷 林永君
山東大為電氣有限公司 朱振軍
針對用戶對電動汽車充電樁中刷卡計(jì)費(fèi)的應(yīng)用需求,本文首先對現(xiàn)有IC卡選型,提出了采用CPU卡構(gòu)建刷卡計(jì)費(fèi)系統(tǒng)的解決方案;然后針對CPU卡的發(fā)卡中的安全需要,對此解決方案匯中的密鑰管理及發(fā)卡流程進(jìn)行了描述;最后通過編程實(shí)現(xiàn)充電樁上的用戶刷卡充電的消費(fèi)過程。
充電樁;CPU卡;密鑰管理
在將電動汽車的應(yīng)用推向市場的進(jìn)程中,其充電配套的跟進(jìn)成為了亟待解決的重要一環(huán)。如何為消費(fèi)者提供安全、便利、可靠、人性化的充電服務(wù),也是電動汽車充電樁設(shè)計(jì)、實(shí)現(xiàn)的指導(dǎo)思路。由于現(xiàn)今智能化的金融卡應(yīng)用在日常生活中已遍布在各行各業(yè),采用刷卡消費(fèi)實(shí)現(xiàn)電動汽車用戶自助操作使用充電樁,將減少充電樁的人工消耗、節(jié)約運(yùn)行成本。
在應(yīng)用的IC卡選型中,首先考慮到消費(fèi)過程的金融安全性,排除無加密功能的非加密存儲卡以及加密性能一般容易遭破解的邏輯加密卡。而CPU卡獨(dú)有的COS系統(tǒng)可保障數(shù)據(jù)傳輸?shù)陌踩约皯?yīng)用端、持卡人的身份認(rèn)證;更高端的超級智能卡此處不考慮?,F(xiàn)有的CPU卡分為接觸式、非接觸式和雙界面三種,其成本依次增加。
其次,考慮到電動汽車交流充電樁的充電過程,IC卡的選型需滿足其以下特點(diǎn):
一次充電過程的持續(xù)時間較長,且一次只為一輛汽車提供服務(wù);
自助智能式消費(fèi)模式,正常運(yùn)行中無人值守;
消費(fèi)電量實(shí)時轉(zhuǎn)換成消費(fèi)金額從卡中扣除;
對充電中的突發(fā)情況處理采取緊急斷電模式,以保障充電樁、電動汽車安全以及誤動用戶的人身安全;
因此在充電設(shè)計(jì)中,計(jì)費(fèi)可分為充電開始與充電結(jié)束兩個獨(dú)立的過程。如采用非接觸式CPU卡,一張卡可同時在兩臺充電樁上消費(fèi),為保證消費(fèi)安全需充電樁實(shí)時聯(lián)網(wǎng),單樁運(yùn)行容易出現(xiàn)扣費(fèi)超額如采用接觸式CPU卡,配合內(nèi)吞式讀卡器可實(shí)現(xiàn)一卡對應(yīng)一車,防止在一卡對多車充電中可能出現(xiàn)的扣費(fèi)失?。ńY(jié)賬出現(xiàn)負(fù)值)其中間過程采取實(shí)時刷新卡上余額的方式以保證充電過程的計(jì)費(fèi)無誤完整;同時避免了無卡充電中消費(fèi)欠費(fèi)的情況以及為存儲消費(fèi)信息對大容量樁體存儲空間的要求。從而要求接觸式CPU卡。從成本上考慮,CPU卡價格較為低廉,更容易在電動汽車發(fā)展的初期推廣。
通過選擇需要的文件結(jié)構(gòu)、數(shù)目——如應(yīng)用文件DF的個數(shù),基本數(shù)據(jù)文件EF的設(shè)置等,構(gòu)建符合本應(yīng)用的卡上文件系統(tǒng)。本文所用的CPU卡文件系統(tǒng)基本結(jié)構(gòu)圖如圖1。
COS系統(tǒng)對卡設(shè)置了不同的安全狀態(tài),又稱狀態(tài)機(jī),代表了卡當(dāng)前所處的安全級別(0——F共16種)。狀態(tài)機(jī)僅在相應(yīng)的密鑰認(rèn)證之后才可進(jìn)行跳轉(zhuǎn)。
不同的文件在進(jìn)行不同操作時均對應(yīng)了要求達(dá)到的狀態(tài)機(jī),又稱訪問權(quán)限,COS系統(tǒng)規(guī)定只有當(dāng)卡片處于要求的狀態(tài)機(jī)或更高級別的狀態(tài)機(jī)時,才可進(jìn)行相關(guān)操作。
在安全設(shè)計(jì)中,為文件設(shè)置不同的權(quán)限以區(qū)分不同應(yīng)用的安全級別,如密鑰文件的修改可設(shè)置為高權(quán)限;對文件的查詢和修改均在滿足相應(yīng)安全級別的情況下才能執(zhí)行,而安全級別僅在相應(yīng)的密鑰認(rèn)證之后才進(jìn)行跳轉(zhuǎn);從而可防止一般性誤操作或惡意篡改,保證各級文件、操作應(yīng)用的安全,實(shí)現(xiàn)對卡片的安全管理功能。
對于文件結(jié)構(gòu)中的文件和其操作,設(shè)計(jì)了如表1表2安全機(jī)制:
由于每種密鑰只能為其特定功能服務(wù),涉及到對應(yīng)功能的安全,密鑰的生成和存儲也需具備一定的安全性。PBOC《中國金融集成電路(IC)卡規(guī)范》規(guī)定了保存在IC卡中的密鑰和用來產(chǎn)生、派生、傳輸這些密鑰的密鑰的使用規(guī)范。
首先密鑰在IC卡中禁止對其進(jìn)行讀操作,只能由COS調(diào)用訪問,其更新須在主控密鑰和上級密鑰的控制下進(jìn)行。
其次密鑰需保證在保密、安全的環(huán)境下按照一定的算法生成,按照規(guī)范要求秘密傳輸與保存。
最后,因?yàn)槊荑€決定了對應(yīng)的權(quán)限驗(yàn)證,每一種密鑰都必須是唯一且保密的,以保證對應(yīng)功能的安全性,因此在生成密鑰時要測驗(yàn)其保密強(qiáng)度。
主要內(nèi)容包括對CPU卡的密鑰管理、發(fā)卡機(jī)的硬件和軟件設(shè)計(jì)。
4.2.1 密鑰管理
包括密鑰生成、裝入、傳遞、存儲、恢復(fù)、銷毀等流程。其中涉及的密鑰包括管理過程中使用的密鑰和專屬于交易過程的密鑰。
密鑰管理的主要任務(wù)是保證密鑰產(chǎn)生過程的安全性和機(jī)密性。密鑰的生成由密鑰生成模塊完成。首先需要兩個完全保密的數(shù)字序列A和B,與系統(tǒng)產(chǎn)生的隨機(jī)數(shù)一起生成兩張不同的母卡A和母卡B,必須同時持有兩張母卡才可導(dǎo)出本系統(tǒng)的主密鑰。主密鑰包括外部認(rèn)證密鑰、交易密鑰、應(yīng)用維護(hù)密鑰等;主密鑰封存在發(fā)卡母卡和控制卡中,為接下來的密鑰傳遞及用戶卡發(fā)卡服務(wù)。
表1 文件結(jié)構(gòu)的操作權(quán)限設(shè)置
表2 密鑰文件的權(quán)限驗(yàn)證設(shè)置
密鑰的傳遞由發(fā)卡母卡和控制卡完成,通過發(fā)卡母卡向用戶卡中注入消費(fèi)需要的子密鑰,向發(fā)卡終端模塊LSAM和POS機(jī)消費(fèi)模塊PSAM注入消費(fèi)與更改個人密碼所需要的主密鑰,以配合用戶卡子密鑰的應(yīng)用,發(fā)卡系統(tǒng)的密鑰卡發(fā)卡示意圖見圖2。
4.2.2 發(fā)卡機(jī)的硬件環(huán)境搭建
對CPU卡進(jìn)行用戶卡發(fā)卡時,需要硬件環(huán)境搭建如下:一臺PC機(jī)(可與讀卡器進(jìn)行串口通訊),內(nèi)置PSAM模塊,CPU卡讀卡器以及數(shù)張要發(fā)用戶卡的CPU卡。
在PC機(jī)上需要開發(fā)相應(yīng)的CPU卡讀寫卡程序以及用戶卡發(fā)卡程序,實(shí)現(xiàn)以下功能:
PC機(jī)通過讀卡器向CPU卡發(fā)送指令;
CPU卡接收指令并在內(nèi)部進(jìn)行處理,并返回處理結(jié)果;
通過PSAM模塊向CPU卡中灌入外部認(rèn)證密鑰、應(yīng)用維護(hù)密鑰和消費(fèi)子密鑰;
在PC機(jī)上錄入用戶個人信息以及初始密碼;
在PC機(jī)的數(shù)據(jù)庫中將卡號和個人信息唯一對應(yīng);
完成卡片初始化并對其進(jìn)行功能測試。
4.2.3 發(fā)卡機(jī)的軟件設(shè)計(jì)
發(fā)卡機(jī)的軟件主體功能設(shè)計(jì)如下:
在讀卡器提供的接口函數(shù)的基礎(chǔ)上進(jìn)行CPU卡讀寫程序的開發(fā),根據(jù)已經(jīng)確定的卡上文件系統(tǒng)結(jié)構(gòu)初始化CPU卡;
已經(jīng)初始化的用戶CPU卡在母卡的控制下輸入各級密鑰;
測試用戶卡的操作安全性是否滿足數(shù)據(jù)傳輸和信息更改的安全要求;
采用面向?qū)ο蟮腃#語言開發(fā)用戶信息管理系統(tǒng),完成用戶信息錄入、存檔并寫入CPU卡相關(guān)卡號、金額與個人密碼;
除此之外,發(fā)卡機(jī)應(yīng)具備附加的用戶卡維護(hù)功能,如用戶的個人信息、個人密碼的更改,用戶卡充值、注銷、掛失、補(bǔ)卡等。
圖1 卡片文件系統(tǒng)圖
圖2 發(fā)卡系統(tǒng)的密鑰卡發(fā)卡示意圖
圖3 消費(fèi)程序流程圖
充電樁構(gòu)建為嵌入式LINUX系統(tǒng),硬件平臺選擇了英貝德的EAC-0923工控板作為核心控制器。在硬件連接時,核心控制板以一個RS232串口連接讀卡模塊。
主控板在開發(fā)讀卡模塊之前要進(jìn)行操作系統(tǒng)的移植:在其Norflash上,首先需要裝載Bootloader、移植內(nèi)核,然后移植自己制作的根文件系統(tǒng),用以支持上層應(yīng)用程序;應(yīng)用程序使用API(用戶編程接口)函數(shù)負(fù)責(zé)整個函數(shù)中和串口等各個部分的通信。
讀卡模塊的開發(fā)需依據(jù)用戶刷卡消費(fèi)的實(shí)際情況,設(shè)計(jì)出程序流程圖(),讀寫卡的程序編寫即要完成該流程的功能。
要通過主控板的串口對讀卡模塊進(jìn)行數(shù)據(jù)的讀寫,必須先對其進(jìn)行配置:包括對波特率的設(shè)定、串口設(shè)備在“/dev”下的初始化定義。功能程序的開發(fā)在虛擬機(jī)安裝的Linux系統(tǒng)下進(jìn)行,在調(diào)試成功后使用交叉編譯器生成可在ARM平臺上執(zhí)行的代碼。需要注意的是:動態(tài)鏈接庫在虛擬機(jī)的Linux系統(tǒng)下調(diào)試使用的是基于Win32的版本,因此需要將讀卡模塊函數(shù)庫通過交叉編譯制作成適用于工控板運(yùn)行的動態(tài)鏈接庫,然后方可進(jìn)行程序的交叉編譯。
本文針對電動汽車交流充電樁的充電消費(fèi)特點(diǎn),結(jié)合CPU卡的功能概況了將CPU卡引入充電樁應(yīng)用的設(shè)計(jì)思路,并規(guī)劃了發(fā)卡系統(tǒng)和充電樁刷卡應(yīng)用系統(tǒng),使之滿足電動汽車充電消費(fèi)的安全需求,并具備友好人機(jī)交互界面、易操作的優(yōu)點(diǎn)。
[1]陳勇.金融IC卡的密鑰管理[J].中國信用卡,2000(10):64-66.
[2]顧赟.CPU智能卡記次消費(fèi)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].蘇州大學(xué),2008.
[3]王愛英,等.智能卡技術(shù):IC卡與RFID標(biāo)簽[M].北京:清華大學(xué)出版社,2009.
[4]宋震.密碼學(xué)[M].北京:中國水利水電出版社,2002.
王建偉(1985—),男,河南洛陽人,大學(xué)本科,助理工程師,主要從事輸電線路運(yùn)行檢修。
尹婷婷(1986—),女,華北電力大學(xué)控制與計(jì)算機(jī)工程學(xué)院研究生,研究方向:嵌入式在工業(yè)控制中的應(yīng)用。
林永君(1965—),男,博士,華北電力大學(xué)控制與計(jì)算機(jī)工程學(xué)院教授,碩士生導(dǎo)師,研究方向:嵌入式技術(shù)在工業(yè)控制中的應(yīng)用。
朱振軍(1972—),男,碩士,山東大為電氣有限公司高級工程師。