应用CPU卡实现充电桩计费的研究
2012-01-29山西电力公司超高压公司王建伟
山西电力公司超高压公司 王建伟
华北电力大学控制与计算机工程学院 尹婷婷 林永君
山东大为电气有限公司 朱振军
应用CPU卡实现充电桩计费的研究
山西电力公司超高压公司 王建伟
华北电力大学控制与计算机工程学院 尹婷婷 林永君
山东大为电气有限公司 朱振军
针对用户对电动汽车充电桩中刷卡计费的应用需求,本文首先对现有IC卡选型,提出了采用CPU卡构建刷卡计费系统的解决方案;然后针对CPU卡的发卡中的安全需要,对此解决方案汇中的密钥管理及发卡流程进行了描述;最后通过编程实现充电桩上的用户刷卡充电的消费过程。
充电桩;CPU卡;密钥管理
1.引言
在将电动汽车的应用推向市场的进程中,其充电配套的跟进成为了亟待解决的重要一环。如何为消费者提供安全、便利、可靠、人性化的充电服务,也是电动汽车充电桩设计、实现的指导思路。由于现今智能化的金融卡应用在日常生活中已遍布在各行各业,采用刷卡消费实现电动汽车用户自助操作使用充电桩,将减少充电桩的人工消耗、节约运行成本。
2.充电桩计费的IC卡选型
在应用的IC卡选型中,首先考虑到消费过程的金融安全性,排除无加密功能的非加密存储卡以及加密性能一般容易遭破解的逻辑加密卡。而CPU卡独有的COS系统可保障数据传输的安全以及应用端、持卡人的身份认证;更高端的超级智能卡此处不考虑。现有的CPU卡分为接触式、非接触式和双界面三种,其成本依次增加。
其次,考虑到电动汽车交流充电桩的充电过程,IC卡的选型需满足其以下特点:
一次充电过程的持续时间较长,且一次只为一辆汽车提供服务;
自助智能式消费模式,正常运行中无人值守;
消费电量实时转换成消费金额从卡中扣除;
对充电中的突发情况处理采取紧急断电模式,以保障充电桩、电动汽车安全以及误动用户的人身安全;
因此在充电设计中,计费可分为充电开始与充电结束两个独立的过程。如采用非接触式CPU卡,一张卡可同时在两台充电桩上消费,为保证消费安全需充电桩实时联网,单桩运行容易出现扣费超额如采用接触式CPU卡,配合内吞式读卡器可实现一卡对应一车,防止在一卡对多车充电中可能出现的扣费失败(结账出现负值)其中间过程采取实时刷新卡上余额的方式以保证充电过程的计费无误完整;同时避免了无卡充电中消费欠费的情况以及为存储消费信息对大容量桩体存储空间的要求。从而要求接触式CPU卡。从成本上考虑,CPU卡价格较为低廉,更容易在电动汽车发展的初期推广。
3.CPU卡应用方案设计
3.1 卡上文件系统结构设计
通过选择需要的文件结构、数目——如应用文件DF的个数,基本数据文件EF的设置等,构建符合本应用的卡上文件系统。本文所用的CPU卡文件系统基本结构图如图1。
3.2 CPU卡状态机级别及文件权限的应用设计
COS系统对卡设置了不同的安全状态,又称状态机,代表了卡当前所处的安全级别(0——F共16种)。状态机仅在相应的密钥认证之后才可进行跳转。
不同的文件在进行不同操作时均对应了要求达到的状态机,又称访问权限,COS系统规定只有当卡片处于要求的状态机或更高级别的状态机时,才可进行相关操作。
在安全设计中,为文件设置不同的权限以区分不同应用的安全级别,如密钥文件的修改可设置为高权限;对文件的查询和修改均在满足相应安全级别的情况下才能执行,而安全级别仅在相应的密钥认证之后才进行跳转;从而可防止一般性误操作或恶意篡改,保证各级文件、操作应用的安全,实现对卡片的安全管理功能。
对于文件结构中的文件和其操作,设计了如表1表2安全机制:
4.密钥的安全机制及CPU卡发卡系统设计
4.1 密钥的安全机制
由于每种密钥只能为其特定功能服务,涉及到对应功能的安全,密钥的生成和存储也需具备一定的安全性。PBOC《中国金融集成电路(IC)卡规范》规定了保存在IC卡中的密钥和用来产生、派生、传输这些密钥的密钥的使用规范。
首先密钥在IC卡中禁止对其进行读操作,只能由COS调用访问,其更新须在主控密钥和上级密钥的控制下进行。
其次密钥需保证在保密、安全的环境下按照一定的算法生成,按照规范要求秘密传输与保存。
最后,因为密钥决定了对应的权限验证,每一种密钥都必须是唯一且保密的,以保证对应功能的安全性,因此在生成密钥时要测验其保密强度。
4.2 CPU卡发卡系统设计
主要内容包括对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 消费程序流程图
5.充电桩上刷卡消费的硬件平台和软件设计
充电桩构建为嵌入式LINUX系统,硬件平台选择了英贝德的EAC-0923工控板作为核心控制器。在硬件连接时,核心控制板以一个RS232串口连接读卡模块。
主控板在开发读卡模块之前要进行操作系统的移植:在其Norflash上,首先需要装载Bootloader、移植内核,然后移植自己制作的根文件系统,用以支持上层应用程序;应用程序使用API(用户编程接口)函数负责整个函数中和串口等各个部分的通信。
读卡模块的开发需依据用户刷卡消费的实际情况,设计出程序流程图(),读写卡的程序编写即要完成该流程的功能。
要通过主控板的串口对读卡模块进行数据的读写,必须先对其进行配置:包括对波特率的设定、串口设备在“/dev”下的初始化定义。功能程序的开发在虚拟机安装的Linux系统下进行,在调试成功后使用交叉编译器生成可在ARM平台上执行的代码。需要注意的是:动态链接库在虚拟机的Linux系统下调试使用的是基于Win32的版本,因此需要将读卡模块函数库通过交叉编译制作成适用于工控板运行的动态链接库,然后方可进行程序的交叉编译。
6.总结
本文针对电动汽车交流充电桩的充电消费特点,结合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—),男,硕士,山东大为电气有限公司高级工程师。