我正在为 Android 开发一个支付应用程序。我已经阅读了所有四本 EMV 书籍(4.3 版),这些书籍用于实现与终端通信的协议(protocol)。我还从 Mastercard 购买了终端模拟器套件来测试我的应用程序。
使用这个模拟器,我可以从我的真实物理借记卡中读取数据,以获取发行者公钥证书等信息。我将这些信息放入我的应用程序中以“模拟”一张卡。但是有些数据我没有通过终端模拟器收到,例如用于生成应用程序密码的颁发者主 key 。
所以我的问题是是否有可能获得丢失的数据?也许它可以在线获得?还是我必须与发卡行合作?
很抱歉这个一般性问题,但我真的很感谢你给我的每一个提示!谢谢!
最佳答案
我可以说您正在尝试在 Android 上创建一个 NFC 钱包并尝试在 MasterCard 的模拟器上对其进行测试吗?
并非所有内容都可以从卡中取出,否则每个人都会开始克隆,市场上就会充斥着假卡:)
EMV 交易的安全性受到密码保护。每笔交易都使用 key 携带不同的密码。查看this和 this .
但无论是安全元素钱包还是 HCE,发行者主 key 都不会直接加载到钱包中。在安全元件的情况下,受信任的服务器连接到钱包并共享从发行者主 key 派生的卡 key ,并且在交易期间, session key 是从生成密码的卡 key 生成的。当它是 HSE 时,您将主要只存储 session key ,因为它不如 SE 安全。您可以存储几个 session key ,每次使用一次或一个可以多次使用的 session key , - 全部取决于您的实现。
关于支付应用程序 - EMV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52312299/