使用 java 卡而不是 android 中的 SIM 卡和 SEEK

using java card instead of SIM in android with SEEK

我已经用 SEEK 为 Galaxy S3 修补了 android,经过一番努力后,我现在能够将 APDU 发送到 SIM 卡并获得正确的响应。

我想将我自己的小程序放入 SIM 卡中,但由于我们无法获得这样做的权限,我开始怀疑是否有办法发行一张 java 卡来像SIM 卡。我只需要一张 java 卡,phone 无法将其与 SIM 卡区分开来,不需要网络覆盖,而且我知道几乎不可能创建与运营商正常工作并提供网络的 SIM 卡覆盖率。

所有这一切的原因是我需要发送 APDU 并使用我的小程序,但是如果我在 GS3 中插入​​ java 卡而不是 SIM 卡,它根本无法访问。

所以我的问题是: 是否可以发行 java 卡,使其看起来像 phone(而不是运营商)的 SIM 卡?

或者是否可以更改 android 以便在其中有 java 卡时提供所需的访问权限,即 RIL 照常工作?


编辑

好的,我想我会尝试发行具有以下属性的 Java 卡片:

首先,它将有一个自动 selected 小程序(默认小程序),从现在开始将称为 fake-UICC。
其次,在 fake-UICC 中,我们将模拟 UICC 的文件系统(根据 http://www.in2eps.com/fo-uicc/tk-fo-uicc-mf.html)。
第三,由于不同的 class 用于 SIM APDU(0xA0)所以所有从 RIL 发送的 APDU 将被 JCRE 定向到假 UICC,因为 class+ 指令不被正常识别Java卡。例如0xA0A4 对于 SIM 卡是 select 但 0x00A4 对于 Java 卡是 select 命令。
在最后一步中,我们将尝试向每个 APDU 发送与真实 SIM 卡完全相同的响应。

也许行不通,但我认为值得一试。

通过 SEEK 访问的 SIM 卡 (UICC) 不是您可以在手机中使用的唯一安全元素。

市场上还有其他 Java 卡解决方案:主要基于 microSD 插槽(例如由 GoTrust 或 Feitian Technologies 提供),您应该可以通过 SEEK 访问。

一些手机(不幸的是,Galaxy S3 不是这种情况)配备了一个特殊的安全元件插槽,您可以将普通智能卡(主要是 Oberthur)插入并通过 SEEK 访问(参见 http://www.nfcworld.com/technology/embedded-secure-element-ese/对于具有此功能的某些设备)。

有一篇关于 SE 选项的有趣文章:http://nelenkov.blogspot.cz/2012/08/accessing-embedded-secure-element-in.html

如果您知道其他供应商提供 microSD Java 卡产品,请在评论中写下来,我会将它们添加到我的 post 中。本回答不应该是上述公司的任何广告。

好吧,实际上我不确定这个解决方案是否有效,正如亲爱的@Vojta 在他的回答下的评论中提到的那样我想阻止人们进行以下尝试。这将是困难的、耗时的并且可能没有有用的结果。 他在这个领域比我知道的多得多。

总之,如你所愿,我发布了我的建议:

SIM/USIM卡的系统文件中的每个文件都链接到一个十六进制数作为其地址(AID)。这些 AID 在 GSM 和 ETSI 标准(例如 GSM 11.11)中定义。你可以写一些Java卡片小程序来模拟那个系统文件。

由于SIM/USIM卡的AID比Java卡的AID短,您可能需要选择支持部分AID选择的Java卡,并使用此功能将传入命令引用到其关联的小程序。

我认为您也可以在单个小程序中模拟所有系统文件,然后使该小程序成为默认选择的小程序。

如果您成功使用此解决方案,请通知我们。 :)