MasterCard PIN更改发行者脚本失败,Thales HSM用于生成MAC。电动势

Gnt*_*vls 6 cryptography emv hsm visa mastercard

我使用Thales Payshield 9000 HSM。到目前为止,所有命令均已工作,并且一切都已实现我想要的。

现在的问题是尝试更改ATM的引脚时。检查万事达卡文件时,会生成针脚更改脚本,并且格式看起来可以。

我们的密码更改脚本如下所示:86158424000210PPPPPPPPPPPPPPPPMMMMMMMMMMMMMMMM其中16个P字母是DE125中发送的PIN块,而16 M个字母代表MAC。(我屏蔽了它们,但是下面将使用示例中的数据)

有了这个脚本,从我这边来看一切正常。现在我怀疑问题是MAC生成。

要生成MAC,我们使用以下HSM命令:

  • HA(生成TAK(其随机密钥,每次(每个PIN改变操作)我把这种命令,关键是不同)) -输入为:key = PVK key (U+32Hex symbols under LMK)delimiter = ';'keySchemeTmk = 'U'keySchemeLmk = 'U'; 然后收到TAK密钥
  • M6(生成MAC) -输入:modeFlag = 0inputFormatFlag = 2macSize = 1macAlgorithm = 3paddingMethod = 0keyType = '003'key = 'Tak key from HA command'messagelength = '0030'message = '8424000210345755BFDC4F2903A392B3E1229A502C892680'(消息在上面的截图级联等:命令头+ ApplicationtransactionCounter + ARQC + PIN块)(消息数据这里是来自实施例中的屏幕截图)

因此,当执行这两个命令时,我会收到我需要的16HEX符号MAC。所以脚本编写这样的:8424000210 B3E1229A502C8926 422A8FF11056ACD4header => 8424000210pinBlock => B3E1229A502C8926MAC => 422A8FF11056ACD4

当我去ATM并进行密码更改时,我的密码永不更改,并且我收到撤消消息。

任何人都可以解释这些标志是什么,我不确定应该使用哪个标志(命令M6):

所以问题是:

  • HSM命令M6是否为生成用于PIN更改/解锁脚本的MAC的正确命令?它需要TAK密钥,而MasterCard文档明确指出应使用SMI密钥来完成。
  • 尝试检索MAC哈希时,我的M6配置命令不正确吗?

更新

我设法使KU命令起作用,并给我带来了响应,但PIN更改本身未成功完成。在下面,我将向您显示我对KU命令产生的请求:

{ "mode_flag": "3", "scheme_id": "1", "mk_smi": "U25A22A6553A7F68ABACBD1E04BBD8889", "pan": "7891234567891200", "integrity_session_data": "55BFDC4F2903A392", "plaintext_message_data_length": "0018", "plaintext_message": "8424000210345755BFDC4F2903A392B3E1229A502C892680", "delimiter": ";", "confidentiality_session_data": "55BFDC4F2903A392", "offset": "000F", "cipher_text_message_data_length": "0008", "cipher_text_message_data": "B3E1229A502C8926", "delimiter2": ";", "source_pin_encryption_key_type": "0", "source_pin_encryption_key": "UBAAAA3488AA6AA564AAC8AA3AAC1AAA2", "source_pin_block_format_code": "01", "destination_pin_block_format_code": "35", "pan2": "891234567891" }

密钥和敏感数据被屏蔽,因此在此处使用PAN:5678912345678912和序列号000。对于第一个pan参数,使用的最后PAN个数字为14 +序列号的最后两个数字。对于pan2参数,仅使用最后12个PAN数字,不包括校验数字。

我是否使用正确的Offset标志将明文数据中的PIN块替换为新的加密的PIN块?

小智 2

我正在解决同样的问题。我可能是错的,但与其他人交谈时,我被告知 KU 是用于 CVN10 的。现在,我还被告知只能使用 KU 命令,因为它可以完成所需的一切。这意味着它将使用存储在芯片上的密码密钥转换从 ATM 传入的新密码块。我唯一看到的是,您使用的目标密码块是 35,现在是 Europay > MC Pay,但我认为您必须使用 34,这是离线清除密码的默认值。