肖 丽
(四川省电力公司眉山公司,四川 眉山 620010)
CPU卡又称智能卡,指具有微处理器(CPU)和操作系统(COS)的IC卡,目前常用的加密算法有3DES及SM1。由于具有更高的数据安全性,CPU卡智能电能表已经开始大量使用。CPU卡分为接触式IC卡、非接触式IC卡、两种接口方式合一的双界面IC卡。接触式IC卡主要遵循的国际标准为ISO 7816系列标准,非接触卡主要遵循的国际标准为ISO 14443系列标准。智能电表为了保证数据安全交换及可靠认证,表内置ESAM芯片(也属于CPU卡),用于存贮剩余电费、费率参数等关键数据,此类数据只有通过与卡或主站加密机的双向认证才能修改,从而保证了数据的安全性。由于CPU卡和ESAM的认证过程中引入了分散因子及随机数,使用CPU卡的智能电表可实现一卡一密、一次一密,极大提高了智能电表的数据交换及电费、电价数据安全性,目前已经在国家电网大量使用。
CPU卡的物理结构如图1所示,芯片有8个信号接口。
图1 CPU卡的物理结构
ESAM芯片的物理结构如图2所示,芯片有8个信号接口。
图2 ESAM芯片的物理结构
CPU卡是通过异步通信的方式进行数据交换,I/O口线上所用的数位宽度被确定为基本时间单位ETU,计算公式为 ETU=372/f,其中f为时钟频率,一般在1~5 MHz范围之间选择,一般当时钟频率为3.579 MHz时,数据传输的速率为9600 b/s。
CPU卡的数据传送是以字节为单位的,字节传送的时序如图3所示。
图3 CPU卡字节传送的时序
字符传送前,I/O端应被置为1,如图3所示,一个字符包括10个连续的ETU。第一个时刻t1被置于状态0,这个时刻称为起始时刻;t2~t9传送1个字节;最后一个时刻t10传送奇偶校验位,当奇偶校验出错时,接收方在10.5±0.2 etu时间发送一个状态为0,最少为1 etu,最大为2 etu的出错信号,然后将等待对有争议的字节重发。
CPU卡的指令格式如图4。
图4 CPU卡指令格式
1)CLA为命令类别,不含安全报文(命令中没有MAC校验)时,为00、0×80,含安全报文命令时为04、0×84;
2)INS为指令,用于规定数据交换作用,如0×82外部认证、0×84取随机数、0×88内部认证、0×30扣款、0×32存款、0×b0读二进制文件、0×d6写二进制文件等;
3)P1、P2为命令参数;
4)Lc为发出的命令数据长度,Le为响应数据的长度;
5)DATA为传输的数据。
6)MAC为含安全报文时的4字节校验数据。
接触式CPU卡智能电表由于数据传输速度快、可靠性高而被广泛应用。但接触式卡口由于内部直接与数字电路相连接,容易受到攻击而导致智能电表数字部分损坏失效。为此,智能电表的防攻击卡口设计对智能电表的可靠性提升很关键。通过实验及大量应用,CPU卡电能表防攻击卡口电路可参考图5。
ON_0FF_CARD信号用于控制卡口电源,平时置低电平,CPU卡插卡前不供电,MCU检测插卡信号KEY_CARD电平由高到低后,ON_0FF_CARD置高电平,给CPU卡供电。同时给CPU卡提供时钟信号,时钟信号可使用MCU的时钟输出功能,如NEC、TI等单片机都有主晶振2、4分频后输出口。300 Ω 电阻 R8、R9、R10、R11 串在卡口与 MCU 通信的数据线上,用于卡口防静电,当对卡口静电攻击时,对MCU及表内数字电路起到保护作用。RT1是封装了热敏电阻及TVS管的专用卡口防攻击模块,可有效防止表外的高压、静电、短路等攻击。
CPU卡智能电表的数据安全性主要是通过CPU卡与ESAM芯片的双向认证来实现的,表内MCU起数据搬运及流程控制作用。以用户卡为例,当MCU判到插卡后,先做内部认证,通过后认为用户卡与ESAM芯片是同一个系统,可进行读操作;然后CPU卡对ESAM进行外部认证,认证通过后CPU卡开放写权限,可以把ESAM芯片里的数据写入CPU卡内;最后ESAM芯片对CPU卡进行外部认证,认证通过后ESAM芯片开放写权限,可以把CPU卡的数据写入ESAM芯片卡内。具体的认证流程如下。
4.1.1 内部认证流程
图5 防攻击卡口电路
图6 用户卡购电流程
适用于各种卡片与ESAM之间的认证。
1)ESAM或电能表产生随机数;
2)卡片对随机数加密获得密文;
3)ESAM根据卡片卡号产生过程密钥;
4)ESAM利用过程密钥加密随机数获得密文;
5)电能表对比卡片和ESAM对随机数加密的结果,一致则合法,否则非法。
4.1.2 外部认证流程
情况1:用户卡认证ESAM
1)用户卡取随机数;
2)ESAM根据用户卡卡号产生过程密钥;
3)ESAM利用过程密钥加密随机数获得密文;
4)用户卡利用以上密文完成外部认证过程,获得相应的写权限。
情况2:ESAM认证用户卡
1)ESAM取随机数;
2)用户卡加密随机数获得密文;
3)ESAM利用以上密文完成外部认证过程,获得相应的写权限。
用户卡购电流程复杂,也是CPU卡操作流程中最关键的部分,需要多次认证及判断,最后才能把购电卡里的电费充值到表内ESAM钱包文件里。图6是结合国内主流售电系统流程的用户卡表内购电流程图。
CPU卡是继存贮器卡、逻辑加密卡后的第三代IC卡,CPU卡及ESAM芯片在智能电表上的应用为智能电表本地安全数据交换、远程加密数据通信提供了重要技术支撑,为未来智能电表的双向信息互动提供了很好的技术平台。CPU卡智能电表会因其快捷的充值操作、安全的数据传递而受到供电局及用户的青睐。
[1]ISO/IEC 7816,卡片基本规范及数据交换命令[S].
[2]Q/GDW_365-2009,智能电能表信息交换安全认证技术规范[S].
[3]北京握奇有限公司,TimeCOS/PBOC通用技术参考手册.
[4]北京融通高科有限公司,ARTCOS ESAM通用手册.