如何从 Javacard 制作 EMV 卡?

How to make an EMV card from a Javacard?

我打算写一个 Java 卡小程序来将我的卡转换成符合 EMV 标准的卡。

1- 问题是我该怎么做?

据我所知,有四种EMV规范称为EMV Books,其中包含EMV卡的原理(芯片特性,文件结构以及APDU命令列表)。我是否需要任何其他规范来实现我的小程序,或者这些就是我所需要的?如果我需要一些其他规格,它们是免费提供的还是专有的?

2- EMV 卡是否有特定的 Applet AID?

EFT-Lab 提供了一个很好的小程序 AID 列表。正如您在下面看到的,有很多属于 Visa International(作为供应商)的 AID,它们都是“EMV”类型。为什么 Visa International 的 EMV 小程序有很多不同的 AID?这些小程序有什么区别?

3- 是否有任何开源 EMV 小程序?是否有任何 Java 卡默认具有 EMV applet/package?

4- 接触式和非接触式 EMV 卡之间有什么具体区别吗? (我的意思是在文件结构或 APDU 命令中)

1- The question is how can I do that?

是的。实施规范。如果有任何其他要求(并且肯定会有),那么应该在规范中引用它们。

2- Do EMV cards have an specific Applet AID?

因为它们提供特定的功能?您甚至可以在同一张卡上使用多个应用程序。请注意,可以 select 使用部分 AID 申请(请参阅借记卡和信用卡如何部分匹配)。 VISA 专用卡可能仅在内部使用,例如在维修提款机时。

3- Is there any open source EMV applet? Is there any Java Card that has an EMV applet/package by default?

不太可能。它会相当不可用,因为它需要 EMVCo security evaluation 才能被接受。因此,您需要某种支付结构来支付认证和审核费用。没有开源计划可能会预先支付现金。

通常这类实现需要技术来避免需要保密的漏洞;智能卡毕竟不能提供完美的安全性。这与开源实施垂直。因此,如果有任何东西,它必须是出于学术兴趣而创建的(例如,用于测试协议的安全性、概念证明等)。

4- Is there any specific difference between contact and contactless EMV cards? (I mean in the file-structure or in the APDU commands)

一般更多的是小程序的哪些部分可用,哪些不可用。大多数小程序都可以在双模式下使用这一事实可能不言自明。

This paper好像对可能的区别有很好的介绍

Is there any open source EMV applet? Is there any Java Card that has an EMV applet/package by default?

正在做一个类似的项目并找到 this github 存储库。据业主介绍:

This is a fully working EMV applet for javacard 2.2.1.