山西電力公司超高壓公司 王建偉
華北電力大學控制與計算機工程學院 尹婷婷 林永君
山東大為電氣有限公司 朱振軍
應用CPU卡實現充電樁計費的研究
山西電力公司超高壓公司 王建偉
華北電力大學控制與計算機工程學院 尹婷婷 林永君
山東大為電氣有限公司 朱振軍
針對用戶對電動汽車充電樁中刷卡計費的應用需求,本文首先對現有IC卡選型,提出了采用CPU卡構建刷卡計費系統的解決方案;然后針對CPU卡的發卡中的安全需要,對此解決方案匯中的密鑰管理及發卡流程進行了描述;最后通過編程實現充電樁上的用戶刷卡充電的消費過程。
充電樁;CPU卡;密鑰管理
在將電動汽車的應用推向市場的進程中,其充電配套的跟進成為了亟待解決的重要一環。如何為消費者提供安全、便利、可靠、人性化的充電服務,也是電動汽車充電樁設計、實現的指導思路。由于現今智能化的金融卡應用在日常生活中已遍布在各行各業,采用刷卡消費實現電動汽車用戶自助操作使用充電樁,將減少充電樁的人工消耗、節約運行成本。
在應用的IC卡選型中,首先考慮到消費過程的金融安全性,排除無加密功能的非加密存儲卡以及加密性能一般容易遭破解的邏輯加密卡。而CPU卡獨有的COS系統可保障數據傳輸的安全以及應用端、持卡人的身份認證;更高端的超級智能卡此處不考慮。現有的CPU卡分為接觸式、非接觸式和雙界面三種,其成本依次增加。
其次,考慮到電動汽車交流充電樁的充電過程,IC卡的選型需滿足其以下特點:
一次充電過程的持續時間較長,且一次只為一輛汽車提供服務;
自助智能式消費模式,正常運行中無人值守;
消費電量實時轉換成消費金額從卡中扣除;
對充電中的突發情況處理采取緊急斷電模式,以保障充電樁、電動汽車安全以及誤動用戶的人身安全;
因此在充電設計中,計費可分為充電開始與充電結束兩個獨立的過程。如采用非接觸式CPU卡,一張卡可同時在兩臺充電樁上消費,為保證消費安全需充電樁實時聯網,單樁運行容易出現扣費超額如采用接觸式CPU卡,配合內吞式讀卡器可實現一卡對應一車,防止在一卡對多車充電中可能出現的扣費失敗(結賬出現負值)其中間過程采取實時刷新卡上余額的方式以保證充電過程的計費無誤完整;同時避免了無卡充電中消費欠費的情況以及為存儲消費信息對大容量樁體存儲空間的要求。從而要求接觸式CPU卡。從成本上考慮,CPU卡價格較為低廉,更容易在電動汽車發展的初期推廣。
通過選擇需要的文件結構、數目——如應用文件DF的個數,基本數據文件EF的設置等,構建符合本應用的卡上文件系統。本文所用的CPU卡文件系統基本結構圖如圖1。
COS系統對卡設置了不同的安全狀態,又稱狀態機,代表了卡當前所處的安全級別(0——F共16種)。狀態機僅在相應的密鑰認證之后才可進行跳轉。
不同的文件在進行不同操作時均對應了要求達到的狀態機,又稱訪問權限,COS系統規定只有當卡片處于要求的狀態機或更高級別的狀態機時,才可進行相關操作。
在安全設計中,為文件設置不同的權限以區分不同應用的安全級別,如密鑰文件的修改可設置為高權限;對文件的查詢和修改均在滿足相應安全級別的情況下才能執行,而安全級別僅在相應的密鑰認證之后才進行跳轉;從而可防止一般性誤操作或惡意篡改,保證各級文件、操作應用的安全,實現對卡片的安全管理功能。
對于文件結構中的文件和其操作,設計了如表1表2安全機制:
由于每種密鑰只能為其特定功能服務,涉及到對應功能的安全,密鑰的生成和存儲也需具備一定的安全性。PBOC《中國金融集成電路(IC)卡規范》規定了保存在IC卡中的密鑰和用來產生、派生、傳輸這些密鑰的密鑰的使用規范。
首先密鑰在IC卡中禁止對其進行讀操作,只能由COS調用訪問,其更新須在主控密鑰和上級密鑰的控制下進行。
其次密鑰需保證在保密、安全的環境下按照一定的算法生成,按照規范要求秘密傳輸與保存。
最后,因為密鑰決定了對應的權限驗證,每一種密鑰都必須是唯一且保密的,以保證對應功能的安全性,因此在生成密鑰時要測驗其保密強度。
主要內容包括對CPU卡的密鑰管理、發卡機的硬件和軟件設計。
4.2.1 密鑰管理
包括密鑰生成、裝入、傳遞、存儲、恢復、銷毀等流程。其中涉及的密鑰包括管理過程中使用的密鑰和專屬于交易過程的密鑰。
密鑰管理的主要任務是保證密鑰產生過程的安全性和機密性。密鑰的生成由密鑰生成模塊完成。首先需要兩個完全保密的數字序列A和B,與系統產生的隨機數一起生成兩張不同的母卡A和母卡B,必須同時持有兩張母卡才可導出本系統的主密鑰。主密鑰包括外部認證密鑰、交易密鑰、應用維護密鑰等;主密鑰封存在發卡母卡和控制卡中,為接下來的密鑰傳遞及用戶卡發卡服務。

表1 文件結構的操作權限設置

表2 密鑰文件的權限驗證設置
密鑰的傳遞由發卡母卡和控制卡完成,通過發卡母卡向用戶卡中注入消費需要的子密鑰,向發卡終端模塊LSAM和POS機消費模塊PSAM注入消費與更改個人密碼所需要的主密鑰,以配合用戶卡子密鑰的應用,發卡系統的密鑰卡發卡示意圖見圖2。
4.2.2 發卡機的硬件環境搭建
對CPU卡進行用戶卡發卡時,需要硬件環境搭建如下:一臺PC機(可與讀卡器進行串口通訊),內置PSAM模塊,CPU卡讀卡器以及數張要發用戶卡的CPU卡。
在PC機上需要開發相應的CPU卡讀寫卡程序以及用戶卡發卡程序,實現以下功能:
PC機通過讀卡器向CPU卡發送指令;
CPU卡接收指令并在內部進行處理,并返回處理結果;
通過PSAM模塊向CPU卡中灌入外部認證密鑰、應用維護密鑰和消費子密鑰;
在PC機上錄入用戶個人信息以及初始密碼;
在PC機的數據庫中將卡號和個人信息唯一對應;
完成卡片初始化并對其進行功能測試。
4.2.3 發卡機的軟件設計
發卡機的軟件主體功能設計如下:
在讀卡器提供的接口函數的基礎上進行CPU卡讀寫程序的開發,根據已經確定的卡上文件系統結構初始化CPU卡;
已經初始化的用戶CPU卡在母卡的控制下輸入各級密鑰;
測試用戶卡的操作安全性是否滿足數據傳輸和信息更改的安全要求;
采用面向對象的C#語言開發用戶信息管理系統,完成用戶信息錄入、存檔并寫入CPU卡相關卡號、金額與個人密碼;
除此之外,發卡機應具備附加的用戶卡維護功能,如用戶的個人信息、個人密碼的更改,用戶卡充值、注銷、掛失、補卡等。

圖1 卡片文件系統圖

圖2 發卡系統的密鑰卡發卡示意圖

圖3 消費程序流程圖
充電樁構建為嵌入式LINUX系統,硬件平臺選擇了英貝德的EAC-0923工控板作為核心控制器。在硬件連接時,核心控制板以一個RS232串口連接讀卡模塊。
主控板在開發讀卡模塊之前要進行操作系統的移植:在其Norflash上,首先需要裝載Bootloader、移植內核,然后移植自己制作的根文件系統,用以支持上層應用程序;應用程序使用API(用戶編程接口)函數負責整個函數中和串口等各個部分的通信。
讀卡模塊的開發需依據用戶刷卡消費的實際情況,設計出程序流程圖(),讀寫卡的程序編寫即要完成該流程的功能。
要通過主控板的串口對讀卡模塊進行數據的讀寫,必須先對其進行配置:包括對波特率的設定、串口設備在“/dev”下的初始化定義。功能程序的開發在虛擬機安裝的Linux系統下進行,在調試成功后使用交叉編譯器生成可在ARM平臺上執行的代碼。需要注意的是:動態鏈接庫在虛擬機的Linux系統下調試使用的是基于Win32的版本,因此需要將讀卡模塊函數庫通過交叉編譯制作成適用于工控板運行的動態鏈接庫,然后方可進行程序的交叉編譯。
本文針對電動汽車交流充電樁的充電消費特點,結合CPU卡的功能概況了將CPU卡引入充電樁應用的設計思路,并規劃了發卡系統和充電樁刷卡應用系統,使之滿足電動汽車充電消費的安全需求,并具備友好人機交互界面、易操作的優點。
[1]陳勇.金融IC卡的密鑰管理[J].中國信用卡,2000(10):64-66.
[2]顧赟.CPU智能卡記次消費系統設計與實現[D].蘇州大學,2008.
[3]王愛英,等.智能卡技術:IC卡與RFID標簽[M].北京:清華大學出版社,2009.
[4]宋震.密碼學[M].北京:中國水利水電出版社,2002.
王建偉(1985—),男,河南洛陽人,大學本科,助理工程師,主要從事輸電線路運行檢修。
尹婷婷(1986—),女,華北電力大學控制與計算機工程學院研究生,研究方向:嵌入式在工業控制中的應用。
林永君(1965—),男,博士,華北電力大學控制與計算機工程學院教授,碩士生導師,研究方向:嵌入式技術在工業控制中的應用。
朱振軍(1972—),男,碩士,山東大為電氣有限公司高級工程師。