高速公路ETC卡签之我见3-卡片圈存

本部分介绍用户卡圈存交易(通俗说法为卡片充值)的详细交易过程。通过圈存交易,持卡人可将资金划入到卡片的电子钱包中。这种交易要求提交个人识别码(PIN)。

1.  圈存交易

1.1.交易流程

高速公路ETC卡签之我见3-卡片圈存_第1张图片

1.2.流程说明

1.2.1.  发出初始化圈存命令

发出初始化圈存(INITIALIZEFOR LOAD命)令启动圈存交易。

1.2.2.  处理初始化圈存命令

收到初始化圈存(INITIALIZEFOR LOAD)命令后,IC卡将进行以下操作:

  • 检查是否支持命令中包含的密钥索引号。如果不支持,则回送状态字“9403”(不支持的密钥索引),但不回送任何其他数据,同时终止命令的处理过程;

  • 产生一个伪随机数(ICC),过程密钥 SESLK和一个报文签别码(MAC1),用以供主机验证圈存交易及 IC卡的合法性。

                                                      

SESLK是用于电子钱包圈存交易的过程密钥。该过程密钥是用DLK密钥按照《高速公路ETC卡签之我见9-常见算法》中“过程密钥产生”描述的机制产生的(SESLK=3DES(DLK, CRN || LSN || ‘8000’ ) )。用来产生过程密钥SESLK的输入数据如下:

  • SESLK:伪随机数( ICC|| 电子存折联机交易序号或电子钱包联机交易序号||8000

 

MAC1的计算机制见《高速公路ETC卡签之我见9-常见算法》中的MAC计算”。用SESLK对以下数据加密产生MAC1(按所列顺序)(MAC1=MAC(SESLK,00, Bal || TV || TT || EDCID )):

  • 电子钱包余额(交易前);

  • 交易金额;

  • 交易类型标识;

  • 终端机编号。

 

IC卡将把初始化圈存(INITIALIZE FOR LOAD)响应报文回送给终端处理。如果IC卡回送的状态字不是“9000”,则交易终止。

1.2.3.  验证 MAC1

收到初始化圈存(INITIALIZEFOR LOAD)命令响应报文后,终端把响应数据传给发卡方主机。主机将生成SESLK并确认MAC1是否有效。如果MAC1有效,交易处理将继续执行。否则,交易处理将终止。

1.2.4.  生成MAC2

在确认能够进行圈存交易后,主机从持卡人在银行的相应账户中扣减圈存金额。主机产生一个报文签别码(MAC2),用于IC卡对主机进行合法性检查。

《高速公路ETC卡签之我见9-常见算法》中MAC计算”描述了主机用来生成MAC2的机制。用SESLK对以下数据加密产生MAC2(按所列顺序)(MAC2,=MAC(SESLK,00, TV || TT || EDCID || Date ||Time)):

  • 交易金额;

  • 交易类型标识;

  • 终端机编号;

  • 交易日期(主机);

  • 交易时间(主机)。

成功地进行了圈存交易后,主机将电子存折联机交易序号或电子钱包联机交易序号加1,并向终端发送一个圈存交易接受报文,其中包括MAC2、交易日期(主机)和交易时间(主机)。

1.2.5.  发出圈存命令

终端收到主机发来的圈存交易接受报文后,发出圈存(CREDIT FOR LOAD)命令更新卡上电子存折或电子钱包余额。

1.2.6.  验证 MAC2

收到圈存(CREDIT FOR LOAD)命令后,IC卡必须确认MAC2的有效性。如果MAC2有效,交易处理将继续执行。否则将向终端回送状态字“9302”(MAC无效)。

1.2.7.  圈存交易处理

IC卡将电子存折联机交易序号或电子钱包联机交易序号加1,并且把交易金额加在电子存折或电子钱包的余额上。IC卡必须成功地完成以上所有操作或者一个也不完成。

在电子存折圈存交易或电子钱包圈存交易中,IC卡用以下数据组成的一个记录更新交易明细:

  • 电子存折联机交易序号或电子钱包联机交易序号;

  • 交易金额;

  • 交易类型标识; 

  • 终端机编号;

  • 交易日期(主机);

  • 交易时间(主机)。

     

TAC的计算机制见《高速公路ETC卡签之我见9-常见算法》中的MAC计算”。TAC的计算不采用过程密钥方式,它用DTK左右8位字节异或运算的结果对以下数据进行加密运算来产生(按所列顺序):

  • 电子存折余额(交易后)或电子钱包余额(交易后);

  • 电子存折联机交易序号(加 1 前)或电子钱包联机交易序号(加 1前);

  • 交易金额;

  • 交易类型标识;

  • 终端机编号 

  • 交易日期(主机);

  • 交易时间(主机)。

 

//TACKey=DTK_L xor DTK_R

//TAC=MAC(TACKey, 00, Bal(交易后) || LSN(1) || TV ||TT || EDCID || Date || Time)

1.2.8.  返回确认

在成功完成上述步骤后,IC卡通过CREDIT FORLOAD命令的响应报文将TAC回送给终端。主机可以不马上验证TAC

你可能感兴趣的:(DSRC技术)