用于智能水表的IC卡模块的安全认证方法
技术领域
本发明涉及一种安全认证方法,尤其涉及用于智能水表的安全认证方法,属于水表信息安全领域。
背景技术
IC卡是集成电路卡(Integrated Circuit Card)的简称,是镶嵌集成电路芯片的塑料卡片,其外形和尺寸都遵循国际标准(ISO),一般采用不易挥发性的存储器(ROM、EEPROM、FLASH)、保护逻辑电路、部分带有微处理器CPU。这种卡片通常分为下述几种:1.非加密存储器卡:卡内的集成电路芯片主要是EEPROM,具有数据存储功能,不具有数据处理功能和硬件加密功能;2.逻辑加密存储器卡:在非加密存储器卡的基础上增加了加密逻辑电路,加密逻辑电路通过校验密码方式来保护卡内的数据对于外部访问是否开放,但只是低层次的安全保护,无法防范恶意性的攻击。
近年来兴起的带有CPU的IC卡称为智能卡或CPU卡,CPU卡内的集成电路中带有微处理器CPU、存储单元(包括随机存储器RAM、程序存储器ROM(FLASH)、用户数据存储器EEPROM)以及芯片操作系统COS,装有COS的CPU卡相当于微型计算机,不仅具有数据存储功能,同时具有命令处理和数据安全保护等功能,因此可适用于金融、保险、交警、政府行业等多个领域,具有用户空间大、读取速度快、支持一卡多用等特点,其可用性已经通过中国人民银行和国家商秘委的认证。
针对计量水表行业,在水表及系统中,IC卡是数据存储和传递的载体,因此IC卡的数据存储安全性是需要着重予以考虑的。现有的卡表按照使用卡的不同,主要分两种类型:1.普通IC卡智能水表:采用普通的IC卡(存储卡、逻辑加密卡)作为水表与管理系统数据的存储和传输载体的智能水表称之为普通IC卡智能水表;2.CPU卡智能水表:采用CPU卡作为水表与管理系统数据的存储和传输载体的智能水表称之为CPU卡智能水表。
二者的区别在于:1.使用方面:CPU卡是一种具有微处理芯片的IC卡,可执行加密运算和其它操作,存储容量较大,能应用于不同的系统;存储卡或者逻辑加密卡是一种单一的存储卡,内部有只读存储器,存储容量比CPU卡小,在用途方面没有扩展性;2.安全方面:逻辑加密卡具有防止对卡中信息随意改写功能的存储IC卡,当对加密卡进行操作时必须首先核对卡中密码,只有核对正确,卡中送出一串正确的应答信号时,才能对卡进行正确的操作,但由于只进行一次认证,且无其它的安全保护措施,容易导致密码的泄露和伪卡的产生,安全性能很低。CPU卡中由于具有微处理机和IC卡操作系统(COS),当CPU卡进行操作时,可进行加密和解密算法(算法和密码都不易破解),用户和IC卡系统之间需要进行多次的相互密码认证(且速度极快),提高了系统的安全性能,对于防止伪卡的产生有很好的效果;3.成本方面:CPU卡的成本高,存储卡或者逻辑加密卡成本低。
目前已有的CPU卡智能水表都采用了在表具端安装安全芯片(ESAM),来和CPU卡进行交互认证,保证信息安全,但是这样带来的结果是成本增加很多,不易推广应用。
发明内容
针对现有技术的缺陷,本发明公开了一种用于智能水表的IC卡模块的安全认证方法,通过充分利用CPU卡本身的运算能力和认证方法的改进,保证了满足信息安全的要求;同时避免了使用ESAM安全芯片,有效降低了生产成本。
为了更清楚的说明本发明的技术方案,本发明首先对技术方案中涉及到的名词进行初步的解释:在本发明中涉及到的各种卡片都是由发卡系统发行的,即用于制造卡片、赋予卡片各种信息的卡片管理系统,类似于公交卡、银行卡等发卡系统,不仅需要制造卡片还会在卡片生成时通过写卡器向卡片中写入需要的数据,在本发明中,通过发卡系统发行母卡、PSAM卡、密钥卡、用户卡,其中母卡由系统管理者输入密码生成相关密钥作为第一级密钥,其他的卡则由母卡中的密钥来生成下一级密钥,例如PSAM卡应用主控、密钥卡应用主控、用户卡应用主控上所用的用户卡外部认证密钥、用户卡内部认证密钥、应用信息保护写密钥、返写信息保护写密钥等,尽管这些密钥对本发明中卡片的管理具有重要作用,但是制备卡片、赋予密钥的技术是在多种专用卡片中所常见的,本发明并不具体限定采用特定的方案。
具体到本发明中,各种卡片的发行可以采用下述过程实现:
母卡发行:根据发卡系统管理者输入的密码,经过一系列运算产生母卡中的各种密钥;
其他卡片发行:在读卡器中插入母卡发行各种卡片,其中PSAM卡中保存着用户卡和密钥卡的各种密钥,在系统管理软件中,做购水和修改密钥操作时必须用PSAM卡;密钥卡(密钥修改卡和密钥恢复卡)、PSAM卡用母卡来发行,用户卡用普通卡来发行,其他管理卡可以用用户卡来发行。所有卡都有自己独立的卡号,卡号一次性写入不可以更改,方便管理和统计卡片的流向。
在本发明中,PSAM卡是指这样一种IC卡,由发卡系统的母卡发行,并且存储除母卡外的其他卡片的各种密钥,与已有的应用于智能水表中的IC卡相比,其要实现的功能是类似的,但是不使用专门的ESAM卡,而是采用本发明所限定的安全认证方法保证信息的安全。
在本发明中,用户卡是指这样一种IC卡,由水表销售时提供给终端用户,可以用来购水、存储购水量、购税次数等数据。
本发明实现发明目的是通过如下技术方案实现的:
用于智能水表的IC卡的安全认证方法,包括水表表具、用户卡、PSAM卡,用户卡、PSAM卡均由发卡系统制成,所述认证方法包括两种认证流程:用户卡和PSAM卡之间的认证流程和用户卡和水表表具之间的认证流程,其中所述用户卡和PSAM卡之间的认证流程包括如下步骤:(1)用户卡和PSAM卡之间的外部认证使用户卡获得相应的操作;(2)水表表具对用户卡购水信息文件的校验;(3)水表表具对用户卡返写信息文件操作,该操作过程在用户卡和水表表具之间的认证流程成功后进行。
为了保证信息的安全性,用户卡和PSAM卡之间的认证流程是采用3DES算法加密的,即二者之间的卡片信息交换通讯都是经过3DES算法加密的,这种加密是由IC卡上的微处理器完成的,而不需要使用单独的ESAM芯片,充分利用了现代微处理器具有的强大数据运算能力。
其中步骤(1)的用户卡和PSAM卡之间的外部认证通过下述过程完成:1)用户卡片读取随机数;2)PSAM卡根据用户卡片卡号产生过程密钥;3)PSAM卡利用过程密钥加密随机数获得密文;4)用户卡片利用以上密文完成外部认证过程,获得相应的操作权限。
其中步骤(2)水表表具对用户卡购水信息文件的校验通过下述过程完成:1)水表表具读取用户卡的购水信息文件,通过起始码,结束码判断数据的完整性;2)水表表具检查用户卡上的户号、表号的匹配性;3)从用户卡的购水信息文件读取信息,用户卡同时为该信息提供MAC码;4)PSAM卡在内部用指定的密钥对传入的MAC进行校验,如果MAC校验成功,ESAM再在内部检验购水次数,如果购水次数检验成功,ESAM将购水信息写入相应的文件中,任意一个检验不成功,提示错误信息。
其中,用户卡和水表表具之间的认证流程包括下述过程:1)表具向卡发送取随机数命令并取出随机数;2)表具根据存储的密钥种子和取出的随机数进行加密运算,得出密文密钥;3)将密文密钥给用户卡进行PIN码认证,用户卡得到密文后解密与用户卡存储的密钥相比对,相同则进行下一步操作。
其中,步骤(3)通过下述过程完成:1)水表表具从用户卡中获取随机数;2)由水表表具内部存储的密钥产PIN码,对用户卡发送返写认证指令;3)用户卡认证通过后,将信息写入指定文件供系统分析管理,否则提示错误。
为了便于实现卡片中数据的规范化,在本发明中卡片中数据的存储采用下述方式:采用不定长格式存放在存储芯片中,卡片进行数据交换时采用数据串的形式进行
起始:为数据串的开始标识。
命令:不同的命令标示与IC卡水表进行数据交换的流程不同,决定了数据串中数据的长度
长度:为数据串中数据区的长度
数据:字节数不定,为数据项的组合,组合方式与命令有关。
校验:为命令、长度、数据三部分的累加和去除高字节自然溢出后得到,为HEX码。
结束:代表数据串结束。
对数据串是否有效的判别依据为:起始、结束字节必须正确;长度与数据区字节数必须相等;校验必须正确。
卡片中存放的数据项则包括
表号:水表唯一性的编号,在发卡系统中表号与终端用户的户号存在对应关系。
区域号:设于表具中,插表必须先核对区域号。可以采用母卡发行的区域号相同的清零卡清除区域号,发行的特定的区域号为“BDFE”的清零卡作为总清零卡可以对所有区域号清零。
显示报警量:提醒用户及时购水的标志,当水表中剩余水量小于等于报警水量时,水表给予用户液晶显示提示。
关阀报警量:提醒用户及时购水的标志,当水表中剩余水量小于等于报警水量时,水表给予用户关阀报警提示,需要用户插卡开阀。
限购量:允许水表存储水量的最大值。
购买次数:记录自开户之日起用户在系统中完成购买交易的总次数。
购买水量:用户预先购买的水量。
密钥:应用区数据加密的结果。
累计购量:记录自开户之日起用户在系统中完成购买交易的总量。
剩余量:用户表内的写卡时的剩余量。
累计用量:用户表内的累计用水量。
过零量:剩余量到零后阀门未关闭,用户透支的量。
水表状态字:对水表运行状态的描述标志。
7位:闸的好坏,1-坏;0-好
5位:表是否设置过,1-未设置;0-已设置
4位:表是否开户,1-未开户;0-已开户
在特定情况下还可以存放子表设置字:出厂前由设置卡设入表中,规定该表的子表号,可设置8种表,相应的可以设置子表识别字:供开户卡、用户卡和退购卡指明该表号针对的子表号。
具体到具体的卡的类别,用户卡内存储的数据的格式为数据串:起始码命令码-长度-卡号-校验码-结束码;存储的密匙包括主控密钥、购买外部认证密钥、系统内部认证密钥、购水信息文件保护写密钥、购水信息文件保护读密钥、返写信息文件保护写密钥;其中所述主控密钥用于修改其他密钥和实现与PSAM卡的外部认证,所述购水外部认证密钥用于系统对用户卡进行认证,获得更改购水信息文件的权限;所述系统内部认证密钥用于系统及水表对用户卡进行认证,确定其身份;购水信息文件保护写密钥用于校验写购水信息文件的MAC;购水信息文件保护读密钥为读购水信息提供MAC;返写信息文件保护写密钥用于对用户卡进行认证,获得更改返写信息文件的权限。
进一步的,还包括密钥修改卡、密钥恢复卡(统称为密钥卡),用于对用户卡存储的密钥进行修改,通过下述过程进行:1)密钥修改卡与密钥恢复卡在使用时先经过返写信息PIN码认证,判断用户卡是否为系统内发行的卡片;2)水表表具读取密钥信息文件,通过起始码、结束码和密钥来判断数据的完整性;3)逐条将要修改的密钥写入用户卡中。
如上所述,PASM卡中存储用户卡和密钥修改卡、密钥恢复卡的所有密钥。
在下述表格中,申请人提供了用于本发明方案的其他卡片,及其作用:
用于本发明的常见CPU卡类型:
序号 |
卡片类型 |
标识 |
备注 |
1 |
开户卡 |
01 |
新表开户用卡,建立对应关系后,即成用户卡 |
2 |
用户卡 |
02 |
用户日常购买使用 |
3 |
退购卡 |
03 |
用于用户退购表内剩余量,同时清空表内数据。 |
4 |
查询卡 |
04 |
获取水表运行数据,同时检测阀门。 |
5 |
换表卡 |
05 |
|
6 |
恢复密钥卡 |
07 |
修改表计运行密钥为公开密钥。 |
7 |
修改密钥卡 |
08 |
修改表计测试密钥为运行密钥。 |
8 |
出厂设置卡 |
A6 |
用于表计参数设置。 |
与已有技术相比,本发明的认证方法,实现了下述效果:
1、采用国际通用的3DES算法,保证算法的安全性和可靠性。
2、密钥传递采用密文形式,不易被破解。
3、购水信息采用明文带MAC(表具线路的物理地址,即硬件位址)方式写入,表具的信息采用PIN码认证,保证信息数据安全。
4、用户卡的密钥由用户自己设定,保证一个地区一个密钥,同时用户卡的密钥采用户号分散,保证一表一密。
5、设置验证返写信息,保证每次购买的可靠性。
附图说明
图1为本发明认证方法中的表具和用户卡认证方法的流程示意图。
具体实施方式
为了更清楚的说明本发明的技术方案,在下述具体实施中申请人提供了所用的各种卡的卡片存储的各类文件的定义、标识和权限,和文件的数据串定义格式、存储的密钥文件及对应的应用信息、返写信息、购水信息等文件。其中,用户卡(开户卡也采用)的定义如下:
文件定义
文件 |
内容说明 |
标识 |
读权限 |
写权限 |
MF |
主文件 |
3F00 |
主控密钥 |
主控密钥 |
MKF |
主密钥文件 |
0000 |
—— |
主控密钥 |
EF1 |
基本信息文件 |
0001 |
自由 |
禁止 |
DF01 |
水表应用目录文件 |
3F02 |
主控密钥 |
应用主控密钥 |
DKF |
水表应用密钥文件 |
0000 |
—— |
应用主控密钥 |
EF1 |
应用信息文件1 |
0001 |
自由 |
购水外部认证密钥 |
EF2 |
返写信息文件1 |
0002 |
自由 |
PIN码认证 |
EF3 |
应用信息文件2 |
0003 |
自由 |
购水外部认证密钥 |
EF4 |
返写信息文件2 |
0004 |
自由 |
PIN码认证 |
EF5 |
应用信息文件3 |
0005 |
自由 |
购水外部认证密钥 |
EF6 |
返写信息文件3 |
0006 |
自由 |
PIN码认证 |
EF7 |
应用信息文件3 |
0007 |
自由 |
购水外部认证密钥 |
EF8 |
返写信息文件4 |
0008 |
自由 |
PIN码认证 |
FE9 |
购水信息文件5(保留) |
0009 |
自由 |
购水外部认证密钥 |
EF10 |
返写信息文件5(保留) |
000A |
自由 |
PIN码认证 |
EF11 |
应用信息文件6(保留) |
000B |
自由 |
购水外部认证密钥 |
EF12 |
返写信息文件6(保留) |
000C |
自由 |
PIN码认证 |
EF13 |
应用信息文件7(保留) |
000B |
自由 |
购水外部认证密钥 |
EF14 |
返写信息文件7(保留) |
000C |
自由 |
PIN码认证 |
信息文件的数据串格式
序号 |
数据项 |
长度 |
说明 |
1 |
起始码 |
1 |
68H |
2 |
命令码 |
1 |
01/02 |
3 |
长度 |
1 |
HEX |
4 |
卡号 |
8 |
BCD |
5 |
校验和 |
1 |
HEX |
6 |
结束码 |
1 |
16H |
*卡号后五位同应用信息文件的表号相同,前三位为预留。
密匙文件定义
其中,购水外部认证密钥用于系统对用户卡进行认证,获得更改购水信息文件的权限;系统内部认证密钥用于系统及水表对用户卡进行认证,确定其身份;应用信息文件保护写密钥,即购水信息文件保护写密钥用于校验写购水信息文件的MAC;应用信息文件保护读密钥,即购水信息文件保护读密钥为读购水信息提供MAC;返写信息文件保护写密钥用于对用户卡进行认证,获得更改返写信息文件的权限。
购水信息文件
卡地址 |
数据 |
说明 |
00H |
68H |
开始 |
01H |
01H(02H) |
命令 |
02H |
19H |
长度 |
03H |
|
表号(区域号) |
04H |
|
表号(区域号) |
05H |
|
表号 |
06H |
|
表号 |
07H |
|
表号 |
08H |
|
显示报警量 |
09H |
|
显示报警量 |
0AH |
|
关阀(拉闸)报警量 |
0BH |
|
关阀(拉闸)报警量 |
0CH |
|
限购量 |
0DH |
|
限购量 |
0EH |
|
限购量 |
0FH |
|
购买次数 |
10H |
|
购买次数 |
11H |
|
购买量 |
12H |
|
购买量 |
13H |
|
购买量 |
14H |
|
密钥 |
15H |
|
密钥 |
16H |
|
密钥 |
17H |
|
密钥 |
18H |
|
保留00 |
19H |
|
保留00 |
1AH |
|
保留00 |
1BH |
|
保留00 |
1CH |
|
校验和 |
1DH |
16H |
结束 |
返写信息文件
卡地址 |
数据 |
说明 |
00H |
68H |
开始 |
01H |
81H(82H) |
命令 |
02H |
19H |
长度 |
03H |
|
累计购量 |
04H |
|
累计购量 |
05H |
|
累计购量 |
06H |
|
剩余量 |
07H |
|
剩余量 |
08H |
|
剩余量 |
09H |
|
累计用量 |
0AH |
|
累计用量 |
0BH |
|
累计用量 |
0CH |
|
过零水量 |
0DH |
|
过零水量 |
0EH |
|
过零水量 |
0FH |
|
表状态字 |
10H |
|
保留 |
11H |
|
保留 |
12H |
|
保留 |
13H |
|
保留 |
14H |
|
保留 |
15H |
|
校验和 |
16H |
16H |
结束 |
密钥卡(密钥恢复卡、密钥修改卡)的文件定义、数据串、密钥、指令信息文件内容如下:
文件定义
文件 |
内容说明 |
标识 |
权限1 |
权限2 |
MF |
主文件 |
3F00 |
主控密钥 |
主控密钥 |
MKF |
主密钥文件 |
0000 |
—— |
主控密钥 |
EF1 |
基本信息文件 |
0001 |
自由 |
禁止 |
DF01 |
水表应用目录文件 |
3F02 |
主控密钥 |
应用主控密钥 |
DKF |
水表应用密钥文件 |
0000 |
—— |
应用主控密钥 |
EF1 |
指令信息文件 |
0001 |
自由 |
禁止 |
基本信息文件数据串
序号 |
数据项 |
长度 |
说明 |
1 |
起始码 |
1 |
68H |
2 |
命令码 |
1 |
07(08) |
3 |
长度 |
1 |
BCD |
4 |
卡号 |
8 |
BCD |
5 |
校验和 |
1 |
HEX |
6 |
结束码 |
1 |
16H |
*卡号后五位同应用信息文件的表号相同,前三位为预留。
密钥定义
标识 |
名称 |
分散 |
使用权 |
更改权 |
00 |
主控密钥 |
是 |
自由 |
应用主控密钥 |
02 |
系统内部认证密钥 |
是 |
自由 |
应用主控密钥 |
指令信息文件
序号 |
数据项 |
长度 |
说明 |
1 |
起始码 |
1 |
68H |
2 |
命令码 |
1 |
06/07 |
3 |
长度 |
1 |
|
|
区域码 |
2 |
HEX |
|
返写信息文件保护写密钥密文 |
24 |
HEX |
4 |
校验和 |
1 |
HEX |
5 |
结束码 |
1 |
16H |
为了更好的理解各种卡片,在下述中申请人还提供了退购卡、查询卡、出厂设置卡等的信息,从这些卡片的数据定义中能够更清楚的了解卡片的工作原理。退购卡
文件定义
文件 |
内容说明 |
标识 |
读权限 |
写权限 |
MF |
主文件 |
3F00 |
主控密钥 |
主控密钥 |
MKF |
主密钥文件 |
0000 |
—— |
主控密钥 |
EF1 |
基本信息文件 |
0001 |
自由 |
禁止 |
DF01 |
水表应用目录文件 |
3F02 |
主控密钥 |
应用主控密钥 |
DKF |
水表应用密钥文件 |
0000 |
—— |
应用主控密钥 |
EF1 |
应用信息文件1 |
0001 |
自由 |
购水外部认证密钥 |
EF2 |
返写信息文件1 |
0002 |
自由 |
PIN码认证 |
EF3 |
应用信息文件2 |
0003 |
自由 |
购水外部认证密钥 |
EF4 |
返写信息文件2 |
0004 |
自由 |
PIN码认证 |
EF5 |
应用信息文件3 |
0005 |
自由 |
购水外部认证密钥 |
EF6 |
返写信息文件3 |
0006 |
自由 |
PIN码认证 |
EF7 |
应用信息文件4 |
0007 |
自由 |
购水外部认证密钥 |
EF8 |
返写信息文件4 |
0008 |
自由 |
PIN码认证 |
FE9 |
应用信息文件5(保留) |
0009 |
自由 |
购水外部认证密钥 |
EF10 |
返写信息文件5(保留) |
000A |
自由 |
PIN码认证 |
EF11 |
应用信息文件6(保留) |
000B |
自由 |
购水外部认证密钥 |
EF12 |
返写信息文件6(保留) |
000C |
自由 |
PIN码认证 |
EF13 |
应用信息文件7(保留) |
000B |
自由 |
购水外部认证密钥 |
EF14 |
返写信息文件7(保留) |
000C |
自由 |
PIN码认证 |
基本信息文件
序号 |
数据项 |
长度 |
说明 |
1 |
起始码 |
1 |
68H |
2 |
命令码 |
1 |
03 |
3 |
长度 |
1 |
HEX |
4 |
卡号 |
8 |
BCD |
5 |
校验和 |
1 |
HEX |
6 |
结束码 |
1 |
16H |
*卡号后五位同应用信息文件的表号相同,前三位为预留。
密钥定义
标识 |
数据项 |
分散 |
使用权 |
更改权 |
00 |
主控密钥 |
是 |
自由 |
应用主控密钥 |
01 |
购买外部证证密钥 |
是 |
自由 |
应用主控密钥 |
02 |
系统内部认证密钥 |
是 |
自由 |
应用主控密钥 |
03 |
应用信息文件保护写密钥 |
是 |
自由 |
应用主控密钥 |
04 |
应用信息文件保读写密钥 |
是 |
自由 |
应用主控密钥 |
05 |
返写信息文件保护写密钥 |
是 |
自由 |
应用主控密钥 |
购水外部认证密钥用于系统对用户卡进行认证,获得更改购水信息文件的权限;
系统内部认证密钥用于系统及水表对用户卡进行认证,确定其身份;
购水信息文件保护写密钥用于校验写购水信息文件的MAC;
购水信息文件保护读密钥为读购水信息提供MAC;
返写信息文件保护写密钥用于对用户卡进行认证,获得更改返写信息文件的权限。
应用信息文件
卡地址 |
数据 |
说明 |
00H |
68H |
开始 |
01H |
03H |
命令 |
02H |
19H |
长度 |
03H |
|
表号(区域号) |
04H |
|
表号(区域号) |
05H |
|
表号 |
06H |
|
表号 |
07H |
|
表号 |
08H |
|
任意数 |
09H |
|
任意数 |
0AH |
|
任意数 |
0BH |
|
任意数 |
0CH |
|
任意数 |
0DH |
|
任意数 |
0EH |
|
任意数 |
0FH |
|
任意数 |
10H |
|
任意数 |
11H |
|
任意数 |
12H |
|
任意数 |
13H |
|
任意数 |
14H |
|
密钥 |
15H |
|
密钥 |
16H |
|
密钥 |
17H |
|
密钥 |
18H |
|
保留00 |
19H |
|
保留00 |
1AH |
|
保留00 |
1BH |
|
保留00 |
1CH |
|
校验和 |
1DH |
16H |
结束 |
返写信息文件
卡地址 |
数据 |
说明 |
00H |
68H |
开始 |
01H |
83H |
命令 |
02H |
19H |
长度 |
03H |
|
累计购量 |
04H |
|
累计购量 |
05H |
|
累计购量 |
06H |
|
剩余量 |
07H |
|
剩余量 |
08H |
|
剩余量 |
09H |
|
累计用量 |
0AH |
|
累计用量 |
0BH |
|
累计用量 |
0CH |
|
过零水量 |
0DH |
|
过零水量 |
0EH |
|
过零水量 |
0FH |
|
表状态字 |
10H |
|
保留 |
11H |
|
保留 |
12H |
|
保留 |
13H |
|
保留 |
14H |
|
保留 |
15H |
|
校验和 |
16H |
16H |
结束 |
查询卡
文件定义
文件 |
内容说明 |
标识 |
读权限 |
写权限 |
MF |
主文件 |
3F00 |
主控密钥 |
主控密钥 |
MKF |
主密钥文件 |
0000 |
—— |
主控密钥 |
EF1 |
基本信息文件 |
0001 |
自由 |
禁止 |
DF01 |
水表应用目录文件 |
3F02 |
主控密钥 |
应用主控密钥 |
DKF |
水表应用密钥文件 |
0000 |
—— |
应用主控密钥 |
EF1 |
应用信息文件1 |
0001 |
自由 |
购水外部认证密钥 |
EF2 |
返写信息文件1 |
0002 |
自由 |
PIN码认证 |
EF3 |
应用信息文件2 |
0003 |
自由 |
购水外部认证密钥 |
EF4 |
返写信息文件2 |
0004 |
自由 |
PIN码认证 |
EF5 |
应用信息文件3 |
0005 |
自由 |
购水外部认证密钥 |
EF6 |
返写信息文件3 |
0006 |
自由 |
PIN码认证 |
EF7 |
应用信息文件4 |
0007 |
自由 |
购水外部认证密钥 |
EF8 |
返写信息文件4 |
0008 |
自由 |
PIN码认证 |
FE9 |
应用信息文件5(保留) |
0009 |
自由 |
购水外部认证密钥 |
EF10 |
返写信息文件5(保留) |
000A |
自由 |
PIN码认证 |
EF11 |
应用信息文件6(保留) |
000B |
自由 |
购水外部认证密钥 |
EF12 |
返写信息文件6(保留) |
000C |
自由 |
PIN码认证 |
EF13 |
应用信息文件7(保留) |
000B |
自由 |
购水外部认证密钥 |
EF14 |
返写信息文件7(保留) |
000C |
自由 |
PIN码认证 |
基本信息文件
序号 |
数据项 |
长度 |
说明 |
1 |
起始码 |
1 |
68H |
2 |
命令码 |
1 |
04 |
3 |
长度 |
1 |
HEX |
4 |
卡号 |
8 |
BCD |
5 |
校验和 |
1 |
HEX |
6 |
结束码 |
1 |
16H |
*卡号后五位同应用信息文件的表号相同,前三位为预留。
密钥定义
标识 |
数据项 |
分散 |
使用权 |
更改权 |
00 |
主控密钥 |
是 |
自由 |
应用主控密钥 |
01 |
购买外部证证密钥 |
是 |
自由 |
应用主控密钥 |
02 |
系统内部认证密钥 |
是 |
自由 |
应用主控密钥 |
03 |
应用信息文件保护写密钥 |
是 |
自由 |
应用主控密钥 |
04 |
应用信息文件保读写密钥 |
是 |
自由 |
应用主控密钥 |
05 |
返写信息文件保护写密钥 |
是 |
自由 |
应用主控密钥 |
购水外部认证密钥用于系统对用户卡进行认证,获得更改购水信息文件的权限;
系统内部认证密钥用于系统及水表对用户卡进行认证,确定其身份;
购水信息文件保护写密钥用于校验写购水信息文件的MAC;
购水信息文件保护读密钥为读购水信息提供MAC;
返写信息文件保护写密钥用于对用户卡进行认证,获得更改返写信息文件的权限。
应用信息文件
卡地址 |
数据 |
说明 |
00H |
68H |
开始 |
01H |
04H |
命令 |
02H |
19H |
长度 |
03H |
|
表号(区域号) |
04H |
|
表号(区域号) |
05H |
|
任意数 |
06H |
|
任意数 |
07H |
|
任意数 |
08H |
|
任意数 |
09H |
|
任意数 |
0AH |
|
任意数 |
0BH |
|
任意数 |
0CH |
|
任意数 |
0DH |
|
任意数 |
0EH |
|
任意数 |
0FH |
|
任意数 |
10H |
|
任意数 |
11H |
|
任意数 |
12H |
|
任意数 |
13H |
|
任意数 |
14H |
|
密钥 |
15H |
|
密钥 |
16H |
|
密钥 |
17H |
|
密钥 |
18H |
|
保留00 |
19H |
|
保留00 |
1AH |
|
保留00 |
1BH |
|
保留00 |
1CH |
|
校验和 |
1DH |
16H |
结束 |
返写信息文件
卡地址 |
数据 |
说明 |
00H |
68H |
开始 |
01H |
84H |
命令 |
02H |
19H |
长度 |
03H |
|
表号(区域号) |
04H |
|
表号(区域号) |
05H |
|
表号 |
06H |
|
表号 |
07H |
|
表号 |
08H |
|
显示报警量 |
09H |
|
显示报警量 |
0AH |
|
关阀报警量 |
0BH |
|
关阀报警量 |
0CH |
|
限购量 |
0DH |
|
限购量 |
0EH |
|
限购量 |
0FH |
|
购买次数 |
10H |
|
购买次数 |
11H |
|
累计购量 |
12H |
|
累计购量 |
13H |
|
累计购量 |
14H |
|
剩余量 |
15H |
|
剩余量 |
16H |
|
剩余量 |
17H |
|
累计用量 |
18H |
|
累计用量 |
19H |
|
累计用量 |
1AH |
|
过零量 |
1BH |
|
过零量 |
1CH |
|
过零量 |
1DH |
|
表状态字 |
1EH |
|
校验和 |
1FH |
16H |
结束 |
本发明的安全认证方法,其完整的工作过程为,
1.首先发卡系统完成卡片的制备和数据初始化,PSAM卡通过正式发行将安装在客户的收费平台,也可以通过注册码的形式下发密钥给客户的收费平台。用户卡由表厂直接发行后供客户使用。水表在出厂时用固定为0的区域码进行生产测试,客户在安装使用前管理人员将表内的测试密钥替换为正式的运行密钥,或用表厂给的不同区域码来区分表具的运行密钥,运行密钥的传递通过修改密钥卡实现。
2.卡片间相互认证过程
2.1外部认证流程,用户卡与PSAM卡之间的认证
1)用户卡片读取随机数;
2)PSAM卡根据卡片卡号产生过程密钥(具体的密钥算法可采用本领域任意已有的加密方法,例如3DES);
3)PSAM卡利用过程密钥加密随机数获得密文(具体的算法可采用本领域任意已有的加密方法,例如3DES);
4)卡片利用以上密文完成外部认证过程,获得相应的操作;
2.2对用户卡购水信息文件的校验
1)水表读取购水信息文件,通过起始码,结束码判断数据的完整性;
2)水表检查户号、表号的匹配性;
3)从用户卡的购水信息文件读取相关信息,用户卡同时为该信息提供MAC码;
4)PSAM卡在内部用指定的密钥对传入的MAC进行校验,如果MAC校验成功,ESAM;再在内部检验购水次数,如果购水次数检验成功,ESAM将购水信息写入相应的文件中,任意一个检验不成功,提示错误信息。
2.3对修改密钥卡密钥信息文件的校验
1)密钥修改卡与密钥恢复卡在使用时先经过返写信息PIN码认证,判断卡片是否为系统内发行的卡片。
2)水表在读取密钥信息文件,通过起始码、结束码判断和密钥来判断数据的完整性。
3)逐条将密钥写入卡中。
2.4对用户卡返写信息文件的操作
1)水表从用户卡中获取随机数
2)由水表更具内部存储的密钥产PIN码,对用户卡发送返写认证指令。
3)用户卡认证通过后,可以将信息写入指定文件供系统分析管理,否则提示错误。
通过上述过程可以完成智能水表卡片的安全认证,保证购水信息、返写信息、密钥修改的安全性,在不使用ESAM的前提下保证了安全性和低成本。
参考图1,显示了水表表具和用户卡采用PIN码认证的一个具体流程。
以往的表具做返写认证时,PIN码的使用采用如下方式:表具在安装完成后,通过卡片来设置其有一个固定的PIN码,存储到表具的EEPROM中,表具在和卡做认证时,一般才有明文认证,如采用标准APDU命令,
0020000008 XXXXXXXXXXXXXXXX,其中0020000008为标准APDU命令;XXXXXXXXXXXXXXXX为表具内存储的8字节明文密码。
认证通过后,表具可以进行相关读写卡操作,此种方式的问题在于明文传递密钥,密钥容易被破解,安全级别低。
本发明的方法是表具向卡发送取随机数命令:0084000004,取出四个随机数,然后表具根据表内存储的密钥种子和随机数进行加密运算,得出一个八个字节的密文密钥YYYYYYYYYYYYYYYY,然后再送给卡片进行PIN码认证,指令流是:80 2000 00 08 YY YY YY YY YY YY YY YY。卡得到密文后解密然后和卡中存储的密钥相比对,相同才能进行下一步操作。