本发明的目的就在于提出一种通过对锁卡来源的判断识别而实现IC卡安全交易的方法。
本发明进一步的目的就在于提出上述的IC卡安全交易方法,通过操作在IC卡上建立的灰锁标记,使IC卡的某些操作权限受到限制。
本发明的再一目的是提出上述的IC卡安全交易方法,更将扣款操作和解灰锁操作合并为IC卡上的一步操作,彻底有效地解决上述问题,极大提高IC卡交易的安全性。
本发明一种实现IC卡安全交易的方法,是在IC卡上建立起至少一个的灰锁标记,该等灰锁标记是与IC卡某些操作的权限相关的。例如,当操作该灰锁标记使IC卡灰锁时,IC卡将禁止执行除与解灰锁相关的操作以外的其他任何可能引起IC卡上电子存折(钱包)余额变化的IC卡操作,如普通的扣款操作等。
本发明一种实现IC卡安全交易的方法,在灰锁IC卡时,即对灰锁标记操作的同时,将锁卡的来源记入IC卡;在解灰锁的同时或之前,IC卡需执行对该锁卡来源以及解灰锁合法性的判断。锁卡来源贯穿整个交易流程。
这里所述的解灰锁合法性的判断,可以是指对扣款金额合法性的判断,对其判断的依据可以是基于上述的锁卡来源。
根据本发明技术方案,所述的锁卡来源可以是在IC卡上建立的一条过程密钥,该过程密钥至少与一IC卡临时生成的伪随机数相关。
根据本发明技术方案,更进一步的可将扣款操作和解灰锁操作合并为IC卡上的一步操作,即IC卡执行对所述的锁卡来源及扣款金额合法性的判断成功之后,执行扣款解灰锁操作。
根据本发明技术方案,更进一步的可在主机上保存有一条可以实现强制解灰锁操作的密钥,使灰锁后的IC卡可在联机的终端上通过联机方式实现强制解灰锁操作;再进一步的可在执行强制解灰锁操作的同时实现扣款操作。例如,如果终端出现故障而引起无法扣款或数据不能上传或这次记录丢失,该卡可以在联机的终端上通过联机方式将灰标记清除。
上述的灰锁IC卡是指:IC卡根据其锁卡的来源生成一认证码,同时将产生该锁卡来源的所需参数传递给终端,由终端采用与IC卡相同的机制产生另一锁卡来源码,并使用该锁卡来源码生成另一认证码,将该认证码送入IC卡,IC卡判断与上述IC卡自身生成的认证码是否相同,若相同时执行灰锁操作并将这次产生的一灰锁特征码返回给终端,该灰锁特征码是根据包括锁卡来源及相应信息在内的数据生成。
上述的扣款解灰锁是指:终端根据其锁卡来源和扣款所需的参数生成一认证码,将该认证码与相应参数一并送入IC卡,IC卡内部采用其自身的锁卡来源和相同的参数通过相同的机制产生另一认证码,判断该认证码与终端产生的认证码一致就从IC卡的电子存折(钱包)上实现扣款,扣款成功的同时将灰锁标记清除。
终端更进一步可将扣款时所需的认证码、这次的逃卡金额及灰锁特征码共同作为这次灰记录的部分信息保存起来,并上传给中心机;如果某次交易过程未完整结束的未被扣款解灰的IC卡,下一次在任何一个保存有该灰记录的终端上使用时,终端可先验证该灰锁特征码以确定IC卡上的锁卡来源与计算该条灰记录中的扣款认证码的锁卡来源相同,通过后执行补扣款解灰锁操作。
根据本发明技术方案,所述的过程密钥可以是过程消费密钥(SESPK)=3DES(DPK,DATA),其中DPK是IC卡上电子存折(钱包)的消费密钥,是由电子存折(钱包)消费主密钥(MPK)根据该IC卡的应用序号分散得到,DATA是特定的参数,包括有所述的IC卡临时生成的伪随机数(ICC)、电子存折(钱包)的交易序号(CTC)、终端交易序号(TTC)的最后两个字节。可见每次交易的SESPK由于IC卡的应用序号及DATA不同而各不相同,所以可以用SESPK得到可靠的灰锁来源。
根据本发明技术方案构思,将灰锁标记并入IC卡上电子存折(钱包)的属性参数中,构成一特殊的加油电子存折(钱包)时,除具备通常的读余额、圈存、圈提、消费/取现、改透支限额等功能外,同时增加了加油消费、本地解灰锁和联机解灰锁功能;
描述该加油电子存折(钱包)的状态除通常的空闲状态、圈存状态、消费/取现状态、圈提状态、修改状态外,还存在预加油状态、灰锁状态、和解灰锁状态,并在加油电子存折(钱包)通常的命令集中增加了加油初始化、加油锁卡、加油消费、解锁初始化、解锁、读取状态命令,其中,加油初始化命令用于初始化加油消费交易,加油锁卡命令用于灰锁加油消费电子存折(钱包),加油消费命令用于本地加油消费交易同时解灰锁,解锁初始化命令用于初始化联机解灰锁消费交易,解锁命令用于联机解灰锁交易同时补扣加油消费,读取状态命令用于读取灰锁状态并启动本地解灰锁交易。
采用本发明技术方案彻底解决了以往的问题:
由于本发明将一灰锁标记与IC卡某些操作的权限相关,使操作该灰锁标记达到禁止IC卡执行除与解灰锁相关的操作以外的其他任何可能引起IC卡上电子存折(钱包)余额变化的操作,使交易可以安全实现。
再者,本发明引入的锁卡来源,在灰锁IC卡时将其记入IC卡,解灰锁时执行对该锁卡来源以及解灰锁合法性的判断,该锁卡来源贯穿整个交易流程,可更加安全实现交易过程。
本发明更进一步的将解灰和扣款操作合二为一,正常操作的解灰密钥的管理隐患不再存在,可以本着负方交易的原则而存放在PSAM上。而在联机解灰时其操作的密钥本着正方交易的原则存放在主机上,它的管理隐患也不复存在。
由于解灰和扣款操作合二为一,非法解灰的问题一方面转变成了终端扣款准确性的问题,即只要认可终端执行扣款的金额是合法的,解灰就是合法的。在另一方面,当出现逃卡后补扣时,由于只有IC卡和出现逃卡的终端的PSAM才知道可以执行这次补扣的过程密钥SESPK,而且终端的PSAM在交易结束后将不再保留SESPK,所以在补扣时只有IC卡才可获知(内部恢复)这条密钥,扣款操作时的扣款认证码是产生逃卡的终端的PSAM在SESPK被清除之前计算好保存下来的,任何篡改这个认证码或用以计算这个认证码的参数(如逃卡金额等)的举动都会造成补扣失败,而且IC卡的内部应用锁定机制又能防止外界的恶意试探,所以这转变成了IC卡的安全机制的问题,与应用彻底无关。
综上所述,整个解灰的问题转变成了终端和IC卡的可靠性的问题,而这两点都是能有效管理的,并且与现有的终端和IC卡的安全机制不存在冲突。
下面结合附图及具体实施例对本发明再作进一步详细的说明。
以IC卡加油支付系统为例。将在IC卡上需要与灰锁关联的电子存折与灰锁合并成为一个特殊的电子存折-加油电子存折,这个电子存折除具备一般电子存折的一切功能--读余额、圈存、圈提、消费/取现、改透支限额等,同时针对使用IC卡进行脱机加油消费存在灰锁的情形增加了加油消费、本地解灰锁和联机解灰锁的功能,解决了非法解锁包括直接去锁和篡改逃卡金额的问题,从而保证加油消费这种售前交易的顺畅安全进行。
加油电子存折的基本应用与一般电子存折的应用完全相同,在此请恕不予赘述。而加油消费、本地解灰锁和联机解灰锁作为基本应用的外延,使加油电子存折应用增加了新的范畴,下面通过对其命令和交易流程的分别描述加以详细的说明。
在应用执行过程中,卡片总是处于某种状态之一,在一种状态下,只有某些命令能执行。卡片具有的状态有:空闲状态、圈存状态、消费/取现状态、圈提状态、修改状态、预加油状态、灰锁状态、解灰锁状态,其中的预加油状态、灰锁状态和解灰锁状态是加油电子存折特有的状态。
当应用选择完成后,应用首先进入空闲状态。当卡片从终端收到一条命令后,它必须检查当前状态是否允许。命令成功完成以后,卡片根据表1所示进入另一个状态(或同一个)。如果命令没有成功执行,卡片进入空闲状态。
表1说明了命令成功执行后的状态变化。第一行描述了命令发出时卡片的当前状态,第一列描述了发出的命令,而整张表给出了命令执行成功后的状态。
阴影部分指出命令在卡片处于相应状态时是无效的,在这种情况下,卡片不执行命令,并回应终端,6901’状态----命令不接受(无效)状态。由于命令不能成功执行,所以若卡片原来处于灰锁,结果状态仍是灰锁,若卡片原来处于其他状态,结果状态是空闲。
表1命令执行成功后的状态变化
表2定义了命令类别和命令字节的编码,以及加油电子存折应用使用的参数P1和P2。在该命令集中,除通常电子存折所具有的命令外,新增加了加油初始化、加油锁卡、加油消费、解锁初始化、解锁、读取状态命令,其中,加油初始化命令用于初始化加油消费交易,加油锁卡命令用于灰锁加油消费电子存折,加油消费命令用于本地加油消费交易同时解灰锁,解锁初始化命令用于初始化联机解灰锁消费交易,解锁命令用于联机解灰锁交易同时补扣加油消费,读取状态命令用于读取灰锁状态。下面分别对该等新增加的命令以及响应作出详细描述。而其它常规的命令与现有技术应用相同,请恕不再赘述。
表2命令的类别字节和指令字节
命令 |
CLA |
INS |
P1 |
P2 |
修改个人密码 |
‘80’ |
‘5E’ |
‘01’ |
‘00’ |
圈存 |
‘80’ |
‘52’ |
‘00’ |
‘00’ |
消费/取现 |
‘80’ |
‘54’ |
‘01’ |
‘00’ |
圈提 |
‘80’ |
‘54’ |
‘03’ |
‘00’ |
读余额 |
‘80’ |
‘5C’ |
‘00’ |
‘0X’ |
取交易认证 |
‘80’ |
‘5A’ |
‘00’ |
‘XX’ |
取现初始化 |
‘80’ |
‘50’ |
‘02’ |
‘01’ |
圈存初始化 |
‘80’ |
‘50’ |
‘00’ |
‘0X’ |
消费初始化 |
‘80’ |
‘50’ |
‘01’ |
‘OX’ |
圈提初始化 |
‘80’ |
‘50’ |
‘05’ |
‘01’ |
修改透支限额初始化 |
‘80’ |
‘50’ |
‘04’ |
‘01’ |
重装个人密码 |
‘80’ |
‘5E’ |
‘00’ |
‘00’ |
修改透支限额 |
‘80’ |
‘58’ |
‘00’ |
‘00’ |
*加油初始化 |
‘E0’ |
‘50’ |
‘01' |
‘01’ |
*加油锁卡 |
‘E0’ |
‘50’ |
‘02’ |
‘01’ |
*加油消费 |
‘E0’ |
‘54’ |
‘01’ |
‘00’ |
命令
|
CLA
|
INS
|
P1
|
P2
|
*解锁初始化
|
‘E0’
|
‘50’
|
‘03’
|
‘01’
|
*解锁
|
‘E0’
|
‘54’
|
‘01’
|
‘01’
|
*读取状态
|
‘E0’
|
‘50’
|
‘04’
|
‘01’
|
1、加油初始化(INITIALIZE FOR PETROL)命令:INITIALIZE FOR PETROL命令用于初始化加油消费交易,其命令报文见表3,命令报文的数据域见表4。此命令执行成功的响应报文数据域见表5。如果命令执行不成功,则只在响应报文中回送SW1和SW2。此命令执行成功的响应报文的状态码是‘9000’。表6描述了IC卡可能回送的错误状态。其中ED为电子存折。
表3 INITIALIZE FOR PETROL命令报文
代码
|
值
|
CLA
|
‘E0’
|
INS
|
‘50’
|
P1
|
‘01’
|
P2
|
‘01’用于加油交易;其他值保留
|
Lc |
‘0B’
|
Data
|
见表4
|
Le |
‘10’
|
表4 INITIALIZE FOR PETROL命令报文数据域
说明
|
长度(字节)
|
密钥索引
|
1
|
终端机编号
|
6
|
终端交易序号
|
4
|
表5 INITIALIZE FOR PETROL响应报文数据域
说明
|
长度(字节)
|
ED余额
|
4
|
ED脱机交易序号
|
2
|
密钥版本
|
1
|
算法标识
|
1
|
伪随机数(ICC)
|
1
|
MAC1
|
4
|
表6 INITIALIZE FOR PETROL错误状态
SW1
|
SW2
|
说明
|
‘69’
|
‘01’
|
命令不接受(无效状态,即灰锁原子已建立)
|
‘65’
|
‘81’
|
内存错误
|
‘69’
|
‘85’
|
使用条件不满足
|
‘94’
|
‘03’
|
密钥索引不支持
|
‘94’
|
‘02’
|
交易计数器到达最大值
|
2、加油锁卡(LOCK FOR PETROL)命令:LOCK FOR PETROL命令用于灰锁加油消费电子存折。其命令报文见表7。命令报文的数据域见表8。此命令执行成功的响应报文数据域见表9。如果命令执行不成功,则只在响应报文中回送SW1和SW2。此命令执行成功的状态码是‘9000’。表10描述了IC卡可能回送的错误状态。
表7 LOCK FOR PETROL命令报文
代码
|
值
|
CLA
|
‘E0’
|
INS
|
‘50’
|
P1
|
‘02’
|
P2
|
‘01’
|
Le |
‘0B’
|
Data
|
见表8
|
Le |
‘08’
|
表8 LOCK FOR PETROL命令报文数据域
说明
|
长度(字节)
|
交易日期(终端)
|
4
|
交易时间(终端)
|
3
|
MAC2
|
4
|
表9 LOCK FOR PETROL响应报文数据域
表10 LOCK FOR PETROL错误状态
SW1
|
SW2
|
说明
|
‘69’
|
‘01’
|
命令不接受(无效状态)
|
‘65’
|
‘81’
|
内存错误
|
‘69’
|
‘85’
|
使用条件不满足
|
‘93’
|
‘02’
|
MAC无效
|
3、加油消费(DEBIT FOR PETROL)命令:DEBIT FOR PETROL命令用于本地加油消费交易,同时解灰锁。其命令报文见表11。命令报文的数据域见表12。此命令执行成功的响应报文数据域见表13。如果命令执行不成功,则只在响应报文中回送SW1和SW2。此命令执行成功的状态码是‘9000’。表14描述了IC卡可能回送的错误状态。
表11 DEBIT FOR PETROL命令报文
代码
|
值
|
CLA
|
‘E0’
|
INS
|
‘54’
|
P1
|
‘01’
|
P2
|
‘00’
|
Lc |
‘19’
|
Data
|
见表12
|
Le |
‘08’
|
表12 DEBIT FOR PETROL命令报文数据域
说明
|
长度(字节)
|
交易金额
|
4
|
ED脱机交易序号
|
2
|
终端机编号
|
6
|
终端交易序号
|
4
|
交易日期(终端)
|
4
|
交易时间(终端)
|
3
|
GMAC
|
4
|
表13 DEBIT FOR PETROL响应报文数据域
表14 DEBIT FOR PETROL错误状态
SW1
|
SW2
|
说明
|
‘69’
|
‘01’
|
命令不接受(无效状态)
|
‘65’
|
‘81’
|
内存错误
|
‘69’
|
‘85’
|
使用条件不满足
|
‘67’
|
‘00’
|
长度错误
|
‘93’
|
‘02’
|
MAC无效
|
4、解锁初始化(INITIALIZE FOR UNLOCK)命令:INITIALIZE FOR UNLOCK命令用于初始化联机解灰锁消费交易。其命令报文见表15。命令报文的数据域见表16。此命令执行成功的响应报文数据域见表17。如果命令执行不成功,则只在响应报文中回送SW1和SW2。此命令执行成功的状态码是‘9000’。表18描述了IC卡可能回送的错误状态。
表15 INITIALIZE FOR UNLOCK命令报文
代码
|
值
|
CLA
|
‘E0’
|
INS
|
‘50’
|
P1
|
‘03’
|
P2
|
‘01’用于加油交易;其他值保留
|
Lc |
‘07’
|
Data
|
见表16
|
Le |
‘10’
|
表16 INITIALIZE FOR UNLOCK命令报文数据域
表17 INITIALIZE FOR UNLOCK响应报文数据域
说明
|
长度(字节)
|
ED余额
|
4
|
ED脱机交易序号
|
2
|
密钥版本
|
1
|
算法标识
|
1
|
伪随机数(ICC)
|
4
|
MAC1
|
4
|
表18 INITIALIZE FOR UNLOCK错误状态
SW1
|
SW2
|
说明
|
‘69’
|
‘01’
|
命令不接受(无效状态,即灰锁未建立)
|
‘65’
|
‘81’
|
内存错误
|
‘69’
|
‘85’
|
使用条件不满足
|
‘94’
|
‘03’
|
密钥索引不支持
|
‘94’
|
‘02’
|
交易计数器到达最大值
|
5、解锁(DEBIT FOR UNLOCK)命令:DEBIT FOR UNLOCK命令用于联机解灰锁交易,同时补扣加油消费。其命令报文见表19。命令报文的数据域见表20。此命令执行成功的响应报文数据域见表21。如果命令执行不成功,则只在响应报文中回送SW1和SW2。此命令执行成功的状态码是‘9000’。表22描述了IC卡可能回送的错误状态。
表19 DEBIT FOR UNLOCK命令报文
代码
|
值
|
CLA
|
‘E0’
|
INS
|
‘54’
|
P1
|
‘01’
|
P2
|
‘01’
|
Lc |
‘0F’
|
Data
|
见表20
|
Le |
‘04’
|
表20 DEBIT FOR UNLOCK命令报文数据域
说明
|
长度(字节)
|
交易金额
|
4
|
交易日期(主机)
|
4
|
交易时间(主机)
|
3
|
MAC2
|
4
|
表21 DEBIT FOR UNLOCK响应报文数据域
表22 DEBIT FOR UNLOCK错误状态
SW1
|
SW2
|
说明
|
‘69’
|
‘01’
|
命令不接受(无效状态)
|
‘65’
|
‘81’
|
内存错误
|
‘69’
|
‘85’
|
使用条件不满足
|
‘67’
|
‘00’
|
长度错误
|
‘93’
|
‘02’
|
MAC无效
|
6、读取状态(GET GREY STATUS)命令:GET GREY STATUS命令用于获得存折的灰状态。其命令报文见表23。命令报文的数据域不存在。此命令执行成功的响应报文数据域见表24。如果命令执行不成功,则只在响应报文中回送SW1和SW2。此命令执行成功的状态码是‘9000’。表25描述了IC卡可能回送的错误状态。
表23 GET GREY STATUS命令报文
代码
|
值
|
CLA
|
‘E0’
|
INS
|
‘50’
|
P1
|
‘04’
|
P2
|
‘01’
|
Lc |
不存在
|
Data
|
不存在
|
Le |
‘11’
|
表24 GET GREY STATUS响应报文数据域
说明
|
长度(字节)
|
Grey Flag
|
1
|
ED 余额
|
4
|
ED 脱机交易序号
|
2
|
ED 联机交易序号
|
2
|
MAC3
|
4
|
TAC
|
4
|
MAC3和TAC是GREY LOCK时IC卡返回的值。
表25 GET GREY STATUS错误状态
SW1
|
SW2
|
说明
|
‘69’
|
‘01’
|
命令不接受(无效状态)
|
‘65’
|
‘81’
|
内存错误
|
‘69’
|
‘85’
|
使用条件不满足
|
‘67’
|
‘00’
|
长度错误
|
下面分别再对作为基本应用外延的加油消费、本地解灰锁和联机解灰锁的交易流程加以详细的说明。
1、加油交易:加油交易允许持卡人使用加油电子存折在卡-机联动的IC卡加油机上进行加油。此交易可以脱机进行。加油交易要求提交个人密码(PIN)。参见附图1所示。
步骤1.1:终端发出INITIALIZE FOR PETROL命令启动加油交易。
步骤1.2:IC卡收到INITIALIZE FOR PETROL命令后,处理INITIALIZE FOR PETROL命令,包括(1)检查IC卡是否处于灰锁状态,如果是,返回状态码‘6901’(不支持的密钥索引)且不返回其他数据;(2)检查命令中包含的密钥索引是否被IC卡支持,如果不支持,返回状态码‘9403’(不支持的密钥索引)且不返回其他数据;(3)通过以上检查之后,IC卡将产生一个伪随机数ICC、过程密钥SESPK及报文鉴别代码MAC1,过程密钥SESPK被用于加油电子存折的加油交易,过程密钥按照SESPK=3EDS(DPK,DATA)机制产生,其中DPK是加油电子存折的消费密钥,DATA数据包括:伪随机数ICC、加油电子存折脱机交易序号CTC、终端交易序号TTC的最右两个字节,3DES是指3倍长的DES运算。
SESPK作用于以下数据进行MAC1的计算(按所列顺序):
——加油电子存折余额
——交易类型标识(加油交易为‘10’)
——终端机编号(发出LOCK FOR PETROL命令的终端)
步骤1.3:验证MAC1
使用伪随机数ICC和IC卡返回的加油电子存折脱机交易序号,加油消费安全认证模块PSAM将产生一样的过程密钥SESPK并验证MAC1是否有效,如果MAC1有效,交易处理将执行步骤1.5,如果MAC1无效,交易处理继续执行步骤1.4。
步骤1.4:回送错误状态,终端应中止加油交易并采取相应的措施。
步骤1.5:产生MAC2
终端确认能够进行加油交易后,将产生一个报文认证码MAC2,供IC卡来验证PSAM的合法性。
SESPK作用于以下数据进行MAC2的计算(按所列顺序):
——交易类型标识(加油交易为‘10’)
——终端机编号(发出LOCK FOR PETROL命令的终端)
——交易日期(发出LOCK FOR PETROL命令的终端)
——交易时间(发出LOCK FOR PETROL命令的终端)
步骤1.6:终端发出LOCK FOR PETROL命令。
步骤1.7:验证MAC2
收到LOCK FOR PETROL命令后,IC卡要验证MAC2的有效性,如果MAC2是有效的,交易处理将继续执行步骤1.8,如果MAC2是无效的,错误状态‘9302’(MAC无效)被返回给终端。
步骤1.8:加油锁卡处理
IC卡将伪随机数ICC、终端机编号、终端交易序号、交易日期和交易时间写入内部文件,以备加油中途IC卡掉电后的数据恢复,并将加油电子存折置于灰锁状态,禁止除加油消费和解灰锁以外的其他可能引起加油电子存折中余额变化的IC卡操作(如圈存、圈提、消费/取现、更改透支限额等)。当终端发送上述相关命令时,错误状态‘6989’(卡已被灰锁)被返回给终端。
IC卡将加油电子存折脱机交易序号加1。
IC卡产生一个报文鉴别码MAC3供PSAM对IC卡合法性进行检查,并同时将MAC3写入内部文件。MAC3将包含在从卡传送到PSAM(通过终端)LOCK FOR PETROL的命令响应报文和GET GREY STATUS的命令响应报文中。作为计算MAC3的输入,SESPK作用于以下数据进行MAC3计算:
——加油电子存折余额
——加油电子存折脱机交易序号(加1前)
——交易类型标识(加油交易为‘10’)
——终端机编号(发出LOCK FOR PETROL命令的终端)
——交易日期(发出LOCK FOR PETROL命令的终端)
——交易时间(发出LOCK FOR PETROL命令的终端)
IC卡也应采用相同的机制直接用交易认证密钥DTK产生一个交易签名TAC。并同时将TAC写入内部文件。TAC将包含在从卡传送到PSAM(通过终端)LOCK FOR PETROL的命令响应报文和GET GREY STATUS的命令响应报文中。如果出现逃卡等意外情况使交易无法进行下去,TAC将被写入终端交易明细,以便后来传给主机进行锁卡交易验证。下面是用来生成TAC的要素:
——加油电子存折余额
——加油电子存折脱机交易序号(加1前)
——交易类型标识
——终端机编号
——交易日期(终端)
——交易时间(终端)
步骤1.9:验证MAC3
终端要验证MAC3的有效性,如果MAC3是有效的,交易处理将继续执行步骤1.10,如果MAC3是无效的,终端将采取相应措施。
步骤1.10:持卡人加油
在加油过程中,IC卡允许被下电。若下电以后,IC卡重新上电,经过交易预处理(验证密码,选择应用)后应可以继续执行步骤1.11而不受影响。
步骤1.11:产生GMAC
加油消费安全认证模块PSAM用过程密钥SESPK产生一个报文认证码GMAC,供IC卡来验证PSAM的合法性。
SESPK作用于以下数据进行GMAC的计算(按所列顺序):
——加油交易金额
步骤1.12:终端发出DEBIT FOR PETROL命令。
步骤1.13:验证GMAC
收到DEBIT FOR PETROL命令后,IC卡先验证终端提交的IC卡脱机交易序号CTC是否匹配,若失败直接出错返回,不影响出错计数器。
IC卡要验证GMAC的有效性,如果GMAC是有效的,交易处理将继续执行步骤1.14,如果GMAC是无效的,错误状态‘9302’(MAC无效)被返回给终端,同时IC卡内部出错计数器减一,若出错计数器减到0则永久锁死IC卡以防止恶意试探。
步骤1.14:交易处理
IC卡从卡上的加油电子存折余额中减去加油消费的交易金额,并将加油电子存折从灰锁状态下恢复为正常状态。IC卡必须全部成功地完成以上几个步骤或者一个也不完成,如果余额的更新或加油电子存折状态的恢复没有成功,交易明细也不应被更新。
IC卡产生一个报文验证码MAC4供PSAM对IC卡合法性进行检查。MAC4包含在从IC卡传送到PSAM(通过终端)的DEBIT FOR PETROL命令响应报文中。作为计算MAC4的输入,DPK作用于这些数据进行MAC4计算:
——加油交易金额
——交易类型标识
——终端机编号
——交易日期(主机)
——交易时间(主机)
IC卡也应采用相同的机制直接用交易认证密钥DTK产生一个交易签名TAC。TAC将被写入终端交易明细,以便后来传给主机进行交易验证。下面是用来生成TAC的要素:
——交易金额
——交易类型标识
——终端机编号(发出DEBIT FOR PETROL命令的终端)
——终端交易序号(发出DEBIT FOR PETROL命令的终端)
——交易日期(发出DEBIT FOR PETROL命令的终端)
——交易时间(发出DEBIT FOR PETROL命令的终端)
IC卡将用以下数据组成的一个记录更新交易明细。
——加油电子存折脱机交易序号
——交易金额
——交易类型标识
——终端机编号(发出DEBIT FOR PETROL命令的终端)
——交易日期(发出DEBIT FOR PETROL命令的终端)
——交易时间(发出DEBIT FOR PETROL命令的终端)
步骤1.15:验证MAC4
收到从IC卡(经过终端)传来的MAC4后,PSAM要验证MAC4的有效性。MAC4验证的结果被传送到终端以便采取必要的措施。
2、联机解灰锁交易
联机解灰锁交易允许持卡人将IC卡上被灰锁的加油电子存折补扣解锁(恢复到正常状态)。本交易必须在联机的银行终端上进行。持卡人必须提交PIN来完成解灰锁交易。
步骤2.1:终端发出INITIALIZE FOR UNLOCK命令启动加油交易。
步骤2.2:IC卡收到INITIALIZE FOR UNLOCK命令后,处理INITIALIZE FOR UNLOCK命令,包括(1)检查IC卡是否处于灰锁状态,如果不是,返回状态码‘6901’(无效的命令)且不返回其他数据。(2)检查命令中包含的密钥索引是否被IC卡支持,如果不支持,返回状态码‘9403’(不支持的密钥索引)且不返回其他数据。(3)通过以上检查之后,IC卡将产生一个伪随机数ICC、过程密钥SESULKK和一个报文认证码MAC1,供主机来验证解灰锁交易和IC卡的合法性。过程密钥SESULKK被用于加油电子存折的解灰锁交易。过程密钥SESULKK是用解灰密钥DULKK与产生消费过程密钥相同的机制产生。用来产生过程密钥SESULKK的输入数据如下:
SESULKK:伪随机数ICC‖加油电子存折联机交易序号‖‘8000’
SESULKK作用于以下数据进行MAC1的计算(按所列顺序):
——加油电子存折余额
——交易类型标识(解灰锁交易为‘11’)
——终端机编号
IC卡将把INITIALIZE FOR UNLOCK命令的响应报文送给终端处理,如果IC卡返回的状态不是‘9000’,终端将终止交易。
在收到INITIALIZE FOR UNLOCK命令的响应报文后,终端将包含表17中数据的解灰锁许可请求报文送往发卡方主机。
步骤2.3:验证MAC1
主机将生成SESULKK并且确认MAC1是否有效,如果MAC1有效,交易处理将继续执行步骤2.5,如果MAC1无效,交易处理将执行步骤2.4。
步骤2.4:回送错误状态
如果出现使解灰锁交易不能被接受的条件,则主机会通知终端。终端应采取相应的措施。
步骤2.5:主机处理
在确认能够进行圈存交易后,主机会产生一个报文验证码MAC2,供IC卡对主机合法性进行检查。SESULKK作用于以下数据进行MAC2计算(按所列顺序):
——补扣的交易金额
——交易类型标识
——终端编号
——交易日期(主机)
——交易时间(主机)
主机发送一个解锁交易接受报文给终端,其中包括MAC2、交易日期(主机)和交易时间(主机)。
步骤2.6:终端收到主机的解锁交易接受报文后,终端会发出DEBIT FOR UNLOCK命令给IC卡以更新卡上加油电子存折余额并将加油电子存折恢复到正常状态。
步骤2.7:验证MAC2
收到DEBIT FOR UNLOCK命令后,IC卡要验证MAC2的有效性,如果MAC2是有效的,交易处理将继续执行步骤步骤2.8,如果MAC2是无效的,错误状态‘9302’(MAC无效)被返回给终端。
步骤2.8:交易处理
IC卡从卡上的加油电子存折余额中减去补扣的交易金额,将加油电子存折联机交易序号加1,并将加油电子存折从灰锁状态下恢复为正常状态。IC卡必须全部成功地完成以上几个步骤或者一个也不完成,如果余额或序号的更新或加油电子存折状态的恢复没有成功,交易明细也不应被更新。IC卡产生一个报文验证码MAC3供主机对IC卡合法性进行检查。MAC3包含在从卡传送到主机(通过终端)的DEBIT FOR UNLOCK命令响应报文中。SESULKK作用于以下数据进行MAC3计算:
——加油电子存折余额
——加油电子存折联机交易序号(加1前)
——补扣金额
——交易类型标识
——终端机编号
——交易日期(主机)
——交易时间(主机)
IC卡也应采用相同的机制直接用交易认证密钥DTK产生一个交易签名TAC。TAC将被写入终端交易明细,以便后来传给主机进行交易验证。下面是用来生成TAC的要素:
——加油电子存折余额
——加油电子存折联机交易序号(加1前)
——补扣金额
——交易类型标识
——终端机编号
——交易日期(主机)
——交易时间(主机)
IC卡用以下数据组成的一个记录更新交易明细:
——加油电子存折联机交易序号
——补扣金额
——交易类型标识
——终端机编号
——交易日期(主机)
——交易时间(主机)
步骤2.9:验证MAC3
主机收到从IC卡(经过终端)传来的MAC3后,要验证MAC3的有效性,MAC3验证成功则继续步骤2.10,否则主机发给终端错误报文。
步骤2.10:返回确认
在成功完成步骤2.9后,主机做相应的处理。
3、本地解灰锁交易
本地解灰锁交易允许持卡人将IC卡上被灰锁的加油电子存折补扣解锁(恢复到正常状态)。本交易必须在拥有上次逃卡记录的终端上进行。持卡人必须提交PIN来完成解灰锁交易。
步骤3.1:终端发出GET GREY STATUS命令启动本地解灰锁交易。
步骤3.2:IC卡收到GET GREY STATUS命令后,处理GET GREY STATUS命令,IC卡将电子存折的灰标志状态(GREY FLAG)、电子存折的余额、电子存折的联机交易序号、电子存折的脱机交易序号、锁卡时的MAC3和TAC通过GET GREY STATUS命令的响应报文返回给终端。
步骤3.3:验证MAC3
终端判断IC卡的电子存折是灰锁的情况下,将得到MAC3后与逃卡记录中的MAC3比较。
步骤3.4:终端发出DEBIT FOR PETROL命令。
步骤3.5:验证GMAC
收到DEBIT FOR PETROL命令后,IC卡先验证终端提交的IC卡脱机交易序号CTC是否匹配,若失败直接出错返回,不影响出错计数器。
IC卡要验证GMAC的有效性,如果GMAC是有效的,交易处理将继续执行步骤3.6,如果GMAC是无效的,错误状态‘9302’(MAC无效)被返回给终端,同时IC卡内部出错计数器减一,若出错计数器减到0则永久锁死IC卡以防止恶意试探。
SESPK作用于以下数据进行GMAC的计算:
——加油交易金额
步骤3.6:交易处理
IC卡从卡上的加油电子存折余额中减去加油消费的交易金额,并将加油电子存折从灰锁状态下恢复为正常状态。IC卡必须全部成功地完成以上几个步骤或者一个也不完成,如果余额的更新或加油电子存折状态的恢复没有成功,交易明细也不应被更新。
IC卡产生一个报文验证码MAC4供PSAM对IC卡合法性进行检查。MAC4包含在从卡传送到PSAM(通过终端)的DEBIT FOR PETROL命令响应报文中,作为计算MAC4的输入,DPK作用于这些数据进行MAC4计算:
——加油交易金额
IC卡也应采用相同的机制直接用交易认证密钥DTK产生一个交易签名TAC。TAC将被写入终端交易明细,以便后来传给主机进行交易验证。下面是用来生成TAC的要素:
——交易金额
——交易类型标识
——终端机编号(发出DEBIT FOR PETROL命令的终端)
——终端交易序号(发出DEBIT FOR PETROL命令的终端)
——交易日期(发出DEBIT FOR PETROL命令的终端)
——交易时间(发出DEBIT FOR PETROL命令的终端)
IC卡将用以下数据组成的一个记录更新交易明细。
——加油电子存折脱机交易序号
——交易金额
——交易类型标识
——终端机编号(发出DEBIT FOR PETROL命令的终端)
——交易日期(发出DEBIT FOR PETROL命令的终端)
——交易时间(发出DEBIT FOR PETROL命令的终端)
步骤3.7:验证MAC4
收到从IC卡(经过终端)传来的MAC4后,PSAM要验证MAC4的有效性。MAC4验证的结果被传送到终端以便采取必要的措施。
在本加油电子存折应用中,数据元定义包括:
1、交易类型标识:
10——加油消费
11——解灰锁
12——本地解灰锁
其他交易类型标识与现有技术同。
2、密钥关系
用于加油电子存折的特殊密钥,均为双倍长DEA密钥(128比特长)。
密钥
|
发卡行
|
IC卡
|
POS(PSAM)
|
用于解灰锁交易的密钥
|
解灰锁主密钥(MULKK)
|
解灰锁子密钥(DULKK),由MULKK用应用序列号推导获得。
|
N/A
|
其他的密钥关系请参照现有技术定义。
IC卡内部指令状态变化包括:
1、加油电子存折的内部文件
每一个加油电子存折都有一个内部文件与其对应,该文件用于存放灰锁时的伪随机数ICC、终端机编号、终端交易序号、交易日期、交易时间和MAC2,该文件的内容应不受IC卡电源的影响,以供本地解锁时恢复锁卡时的密钥状态。
操作加油电子存折
2、IC卡在收到对加油电子存折操作的命令后需要增加的内部操作:
——检查该加油电子存折是否处于灰锁状态。如果不是,进入空闲状态。
——如果是灰锁状态,IC卡从内部文件中恢复上次锁卡时的伪随机数ICC、终端机编号、终端交易序号、交易日期、交易时间和MAC2,并通过恢复的数据和相同的机制恢复过程密钥SESPK。