我正在为Android开发一个支付应用程序。我阅读了所有四本EMV书籍(4.3版),这些书用于实现与终端通信的协议。我还从Mastercard购买了终端模拟器工具包,以测试我的应用程序。
通过这个模拟器,我可以从真实的实体借记卡中读取数据来获取信息,比如发行人的公钥证书等等。我将这些信息放入我的应用程序中,以“模拟”一张卡。但是我没有通过终端模拟器接收到一些数据,比如用于生成应用程序密码的发布主密钥。
所以我的问题是,是否有可能得到丢失的数据?也许在线上有吗?还是我必须和一家发行人银行合作?对于这个一般性的问题,我很抱歉,但是我真的很感激你给我的每一个提示!谢谢!
发布于 2018-09-14 03:37:04
我是否可以说,您正试图在Android上创建一个NFC钱包,并试图在MasterCard的模拟器上测试它呢?
并不是所有的东西都可以从卡片上拿出来,否则每个人都会开始克隆,市场上会充斥着假卡:)
EMV事务的安全性由密码保护。每个事务都使用一个密钥携带不同的密码。检查this和this。
但是无论是安全元素钱包还是HCE,颁发主密钥都不会直接加载到钱包中。在安全元素的情况下,受信任的服务器连接到钱包并共享从颁发主密钥派生的Card密钥,并且在事务处理期间,会话密钥从将生成密码的卡密钥中生成。当它是HSE时,您通常只存储会话密钥,因为它不像SE那样安全。您可以存储几个会话密钥,每一个单独使用或一个会话密钥可以多次使用,所有这些都取决于您的实现。
发布于 2018-09-17 11:59:25
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-25 19:47:10
发行主密钥生成并保存在Issuer的主机HSM中。每个已发行的卡都装载了从颁发主密钥派生的密钥。因此,每一张卡都有自己的派生密钥。由于密钥用于应用程序密码计算,并且必须信任AC,所以不能读取密钥(如果可以,EMV的安全性就会被破坏)。由于这个原因,颁发者不会与任何人分享颁发者的主钥匙,而只保留在HSM中!
https://stackoverflow.com/questions/52312299
复制相似问题