支付应用程序 - EMV
Posted
技术标签:
【中文标题】支付应用程序 - EMV【英文标题】:Payment Application - EMV 【发布时间】:2019-02-18 02:32:13 【问题描述】:我正在为 android 开发一个支付应用程序。我已经阅读了所有四本 EMV 书籍(4.3 版),这些书籍用于实现与终端通信的协议。我还从 Mastercard 购买了终端模拟器套件来测试我的应用程序。
使用这个模拟器,我可以从我的真实实体借记卡中读取数据,以获取发行者公钥证书等信息。我将这些信息放入我的应用程序中以“模拟”一张卡。但是有些数据我没有通过终端模拟器收到,例如用于生成应用程序密码的颁发者主密钥。
所以我的问题是是否有可能获得丢失的数据?也许它可以在线获得?还是我必须与发卡行合作? 很抱歉这个一般性问题,但我真的很感谢你给我的每一个提示!谢谢!
【问题讨论】:
【参考方案1】:我可以说您正在尝试在 Android 上创建一个 NFC 钱包并尝试在 MasterCard 的模拟器上对其进行测试吗?
并非所有内容都可以从卡中取出,否则每个人都会开始克隆,市场上就会充斥着假卡:)
EMV 交易的安全性受到密码保护。每笔交易都使用密钥携带不同的密码。检查this 和this。
但无论是安全元素钱包还是 HCE,发行者主密钥都不会直接加载到钱包中。在安全元件的情况下,受信任的服务器连接到钱包并共享从发行者主密钥派生的卡密钥,并且在交易期间,会话密钥是从生成密码的卡密钥生成的。当它是 HSE 时,您将主要只存储会话密钥,因为它不如 SE 安全。您可以存储几个会话密钥,每次使用一次或一个会话密钥可以多次使用,- 全部取决于您的实现。
【讨论】:
是的,你可以这么说。 我回答你的问题了吗?还是有遗漏的部分? 但是例如据说 SDA 不如 DDA 安全,因此可以使用 SDA 复制卡。 那么您是否建议与发卡行合作,因为您认为卡不能被复制? SDA 只能保证数据发出后不被篡改。【参考方案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 密钥。
希望对你有帮助。
【讨论】:
【参考方案3】:发行者主密钥生成并保存在发行者的主机 HSM 中。每张已发行的卡都装有来自发行者主密钥的派生密钥。因此,每张卡都有自己的派生密钥。由于密钥用于应用程序密码计算并且必须信任 AC,因此永远无法读取密钥(如果可以,则 EMV 的安全性被破坏)。因此,Issuer 不会与任何人共享 Issuer Master Keys,而只会保存在 HSM 中!
【讨论】:
以上是关于支付应用程序 - EMV的主要内容,如果未能解决你的问题,请参考以下文章