4

I'm developing a payment application for Android. I've read all four EMV books (version 4.3) which I used to implement the protocol for the communication with a terminal. I also bought the terminal simulator kit from Mastercard for testing my application.

With this simulator I'm able to read data from my real, physical debit card to get informations like the issuer public key certificate, etc. I put these informations into my application to "simulate" a card. But there is some data I don't receive through the terminal simulator like the Issuer Master Key for generating the Application Cryptogram.

So my question is if there is any possibility to get the missing data? Maybe it's online available? Or do I have to cooperate with an issuer bank? Sorry for this general question but I really appreciate every tip you have for me! Thank you!

4

3 回答 3

2

发行者主密钥生成并保存在发行者的主机 HSM 中。每张已发行的卡都装有来自发行者主密钥的派生密钥。因此,每张卡都有自己的派生密钥。由于密钥用于应用密码计算并且必须信任 AC,因此永远无法读取密钥(如果可以,则 EMV 的安全性被破坏)。因此,发行人不会与任何人共享发行人主密钥,而只会保存在 HSM 中!

于 2018-09-25T19:47:10.953 回答
2
But there is some data I don't receive through the terminal simulator like the Issuer Master Key for generating the Application Cryptogram.

您只能从卡中读取一些数据,例如在 AFL 下个性化的记录,像密码密钥这样的敏感信息永远无法从卡中读取。

Real Process is like:-

1 - 卡使用其 AC 密钥生成密码,并将密码发送到主机进行验证,

2 - 主机使用其密钥计算密码,如果两个密码匹配,它将成功。

正如您所说,您正在使用您的实时借记卡,实际上几乎不可能猜测其中存在什么 AC 密钥。

希望能帮助到你。

于 2018-09-17T11:59:25.947 回答
2

我可以说您正在尝试在 Android 上创建一个 NFC 钱包并尝试在 MasterCard 的模拟器上对其进行测试吗?

并非所有内容都可以从卡中取出,否则每个人都会开始克隆,市场上就会充斥着假卡:)

EMV 交易的安全性受到密码保护。每笔交易都使用密钥携带不同的密码。检查这个这个

但无论是安全元素钱包还是 HCE,发行者主密钥都不会直接加载到钱包中。在安全元件的情况下,受信任的服务器连接到钱包并共享从发行者主密钥派生的卡密钥,并且在交易期间,会话密钥是从生成密码的卡密钥生成的。当它是 HSE 时,您将主要只存储会话密钥,因为它不如 SE 安全。您可以存储几个会话密钥,每次使用一次或一个可以多次使用的会话密钥, - 全部取决于您的实现。

于 2018-09-14T03:37:04.413 回答