高速公路ETC卡签之我见2-卡片消费

本部分介绍用户卡当前最主要的一个使用场景----卡片消费的具体交易过程。高速公路使用的ETC卡支持消费、复合应用消费两种类型:

前者交易方式仅仅单独操作卡片的电子钱包文件,交易结果影响的主要也是电子钱包的余额,高速公路缴费已基本不再采取该类型的消费方式,正在拓展当中的商超交易场景可能采取该类型消费方式;

而后者交易方式除了操作电子钱包之外还会同时操作卡片中的复合消费专用文件,交易结束时,电子钱包的余额、复合消费专用文件的改写同步更新,要么都成功要么都失败,确保数据的一致性与完整性,高速公路缴费基本采用该方式。

1.  消费交易

1.1.交易流程

1.2.流程说明

1.2.1.发出初始化消费命令

终端发出初始化消费(INITIALIZEFOR PURCHASE)命令启动消费交易。

1.2.2.处理初始化消费命令

IC卡收到初始化消费(INITIALIZEFOR PURCHASE )命令后,将进行以下操作:

  • 检查是否支持命令中提供的密钥索引号。如果不支持,则回送状态字“9403”(不支持的密钥索引),但不回送其他数据;

  • 检查电子存折余额或电子钱包余额是否大于或等于交易金额。如果小于交易金额,则回送状态字“9401”(资金不足),但不回送其他数据。终端应采取的相应措施不在本部分的范围内。

在通过以上检查之后,IC卡将产生一个伪随机数并生成过程密钥用于验证MAC1。过程密钥(SESPK)(SESPK=3DES(DPK, CRN || PSN || EDCTSN最右2bytes))是利用DPK并按照《高速公路ETC卡签之我见9-常见算法》中“过程密钥产生”所描述的机制产生的。用于产生该过程密钥的输入数据如下:

SESPK:伪随机数(ICC||电子存折脱机交易序号或电子钱包脱机交易序号||终端交易序号的最右两个字节

 

1.2.3.产生 MAC1

使用伪随机数(ICC)和IC卡回送的电子存折脱机交易序号或电子钱包脱机交易序号,终端的安全存取模块(PSAM)将产生一个过程密钥(SESPK)和一个报文鉴别码(MAC1),供IC卡来验证PSAM的合法性。

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

    • 交易金额;

    • 交易类型标识;

    • 终端机编号;

    • 交易日期(终端);

    • 交易时间(终端)。

1.2.4.发出消费命令

终端发出消费(DEBIT FORPURCHASE)命令。

1.2.5.验证 MAC1

在收到消费(DEBIT FORPURCHASE)命令后,IC卡将验证MAC1的有效性。如果MAC1有效,交易处理将继续执行。否则将向终端回送错误状态字‘9302’(MAC无效)。终端对错误状态的处理不在本部分范围内。

1.2.6.交易处理

IC卡从电子存折余额或电子钱包余额中扣减消费的金额,并将电子存折或电子钱包脱机交易序号加1IC卡必须成功地完成以上所有步骤或者一个也不完成。只有余额和序号的更新均成功后,交易明细才可更新。

IC卡产生一个报文鉴别码(MAC2)供PSAM对其进行合法性检查,并通过DEBIT FOR PURCHASE命令的响应报文回送终端。MAC2的计算机制见《高速公路ETC卡签之我见9-常见算法》中的MAC计算”。用SESPK对以下数据进行加密产生MAC2MAC2,=MAC(SESPK, 00, TV)):

  • 交易金额。

 

IC卡按照《高速公路ETC卡签之我见9-常见算法》MAC计算”中描述的机制用密钥DTK左右8位字节异或运算后的结果产生TACTAC将被写入终端交易明细,以便于主机进行交易验证。TAC以明文形式通过消费(DEBIT FOR PURCHASE)命令的响应报文从IC卡传送到终端,下面是用来生成TAC的数据:

  • 交易金额;

  • 交易类型标识;

  • 终端机编号;

  • 终端交易序号;

  • 交易日期(终端);

  • 交易时间(终端)。

 

TACKey=DTK_L xor DTK_R

TAC=MAC(TACKey, 00, TV ||TT || EDCID ||EDCTSN || Date || Time)

 

对于电子存折消费交易和电子钱包消费交易,IC卡将用以下数据组成的一个记录更新交易明细。

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

  • 交易金额;

  • 交易类型标识;

  • 终端机编号;

  • 交易日期(终端);

  • 交易时间(终端)。

1.2.7.验证 MAC2

在收到IC卡(经过终端)传来的MAC2后,PSAM要验证MAC2的有效性。MAC2验证的结果被传送到终端以便采取必要的措施。

1.3.特别说明

  • 上述交易过程以脱机交易(通过PSAM计算交易过程所需数据,如MA1等)为例;从交易过程看,用户卡其实是不关注也不知道交易过程所需的数据(如MAC1)是由什么设备计算出来的,它只校验数据(如MAC1)本身的有效性。所以,MAC1等数据的计算也可以其他设备计算,如加密机等,从而实现在线交易。

  • 卡片交易过程产生的MAC2码,在交易过程就需进行合法性校验,合法性校验通过的方可认为交易已经完成并且合法;否则,认为该笔交易存在异常,业务上一般不得通过。通过此种方式降低伪卡交易带来的风险。

  • 卡片交易过程产生的TAC码,主要是发卡机构用于校验交易流水的合法性,通常在清分结算时验证,卡片交易过程一般不验证合法性。

 

2.  复合应用消费交易

2.1.交易流程

 

2.2.流程说明

从交易流程可看出,除了橙色背景的两个步骤外,其他的步骤与要求复合交易的基本是一致的;将各个步骤中交易类型改为复合应用消费交易即可,数据的组装规则也完全一致,此处不再具体介绍,该章节仅对新增的两个步骤进行详细描述。

2.2.1.发出 UPDATECAPP DATA CACHE命令

终端发出UPDATE CAPP DATACACHE命令。

2.2.2.处理 UPDATECAPP DATA CACHE命令

IC卡在收到UPDATE CAP P DATACACHE命令后,将进行以下操作:

  • 如果命令中存在 SFI 域,检查卡片当前应用下是否存在与命令中 SFI值相同的文件。如果不存在,回送状态字“6A82”(未找到文件),但不回送其它数据。终端应终止此次复合应用消费交易;

  • 根据命令中的复合应用类型标识符,查询复合应用专用文件中是否存在相同标识符的记录。如果不存在,则回送状态字“6A83”(未找到记录),但不回送其它数据。终端应终止此次复合应用消费交易;

  • 检查复合应用专用文件中相应记录中的应用锁定标志字节。如果应用锁定标志为设置,则回送状态字“9407”(复合应用禁止),但不回送其它数据。终端应终止此次复合应用消费交易;

  • 检查命令中的数据域长度是否大于复合应用专用文件中相应记录的长度。如果大于,则回送状态字“6A84”(文件中存储空间不够),但不回送其它数据。终端应终止此次复合应用消费交易。

在通过以上检查后,IC卡应暂存命令中的SFI、记录号、复合应用类型标识符和数据域。复合应用专用文件中相应记录中的数据不得通过此命令更新。

3.  TAC验证

TAC码,即交易认证码(Transaction Authentication Code / Transaction Authorization  Cryptogram),是ETC用户卡在车道交易过程,卡片将交易时间、交易金额等数据项进行加密计算而产生的交易验证码。其设计目的是通过生成和验证基于密钥的TAC,能够保证交易记录产生的合法性,防止人为生成交易记录之类的欺诈行为。

TAC码是卡片在消费/复合消费过程中产生的,由用户卡中的“TAC密钥”对以下数据计算生成:

——交易金额;

——交易类型标识;

——终端机编号;

——终端交易序号;

——交易日期;

——交易时间。

 

清分结算时,从流水中获取相关数据组装后与用户卡号一起传到加密机计算得到实际的TAC码(使用“TAC密钥”计算得到)。将该TAC流水中的TAC进行比较,若两者相等,认为流水中的交易信息是真实有效的;若两者不相等,则认为流水中的交易信息可能不是卡片实际交易的,存在伪造的嫌疑。

      校验TAC码的数据具体组装格式如下:

交易金额4(字节) +

交易类型标识(06/09)1(字节) +

终端机编号6(字节) +

终端交易序号4(字节) +

终端交易日期4(字节)+终端交易时间3(字节)

另外,由于不同省份的“TAC密钥”各不相同,所以各省一般只能校验本省发行的卡片,无法校验外省发行的卡片的TAC码(与在哪里交易无关,省内外消费都是同样的判定)。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页