【问题标题】:using java card instead of SIM in android with SEEK在带有 SEEK 的 android 中使用 java 卡而不是 SIM
【发布时间】:2015-08-08 15:17:09
【问题描述】:

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

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

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

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

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


编辑

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

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

也许它不会起作用,但我认为值得一试。

【问题讨论】:

  • 请问您是如何向 Galaxy S3 中的 SIM 卡发送 APDU 的?我有同样的手机,我也想做。 (最好帮我here)提前谢谢。
  • 我好像还不能使用那个聊天菜单,需要更多的代表。
  • 你的假 UICC 有什么进展吗?
  • 亲爱的@vojta,实际上已经取得了一些进展,现在可以向我们的假 UICC 发送 APDU。特别感谢你和亚伯拉罕。我现在将尝试用双 SIM 卡手机做同样的事情,如果您对此有任何建议,我将不胜感激。

标签: javacard sim-card


【解决方案1】:

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

市场上还有其他 Java Card 解决方案:主要基于 microSD 插槽(例如由 GoTrust 或飞天科技提供),您应该可以通过 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 卡产品的供应商,请将它们写在 cmets 中,我会将它们添加到我的帖子中。这个答案不应该是对上述公司的任何广告。

【讨论】:

  • 感谢 vojta 的回答。你说有些手机里面有智能卡插槽。是否有列出这些手机的链接,或者您能说出一个您知道可以使用的手机吗? (自己测试过或者看过别人测试结果)
  • 亲爱的Vojta,提问者不能用java卡小程序模拟UICC系统文件吗? (在小程序中实现 ETSI 和 GSM 文件)并使用简单的 Java 卡代替 SIM 卡?
  • @Abraham 有趣...但是它无法工作。 Javacard AID 比 UICC 上文件的 AID 长……当然,你不能用它来调用,这可能是个问题 :-)
  • 我并不是要使用一个 Java Card 小程序来模拟每个 UICC 文件。例如,我的意思是编写一个小程序并使其默认选中,并在该小程序内实现带有开关案例的 UICC 文件。如果也不可能,我们不能使用支持部分AID选择的卡来模拟UICC吗?我的意思是如果 JC Applets 与 UICC 文件相等,则前两个字节,所以当手机发送选择命令时,它假定为部分 AID 选择命令......,有可能吗?我们肯定不能用那张模拟牌跟注。
  • @Abraham SIM 卡上有几个小程序:一个用于 GSM 通信,一个用于 3G 通信 (USIM) 等。如果找不到 GSM 应用程序,我不知道手机操作系统会发生什么-它可能会完全忽略 UICC(因此您也无法通过 SEEK 访问它,因为 SEEK 会将您的 APDU 转换为操作系统命令 - SIM 插槽不是常见的智能卡读卡器)。老实说,我不能说是否有可能克服所有这些障碍,但我想阻止您(和 MFA)进行这些尝试。这将是困难的、耗时的,并且可能没有有用的结果。
【解决方案2】:

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

无论如何,如你所愿,我发布了我的建议:

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

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

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

如果您对此解决方案有任何成功,请通知我们。 :)

【讨论】:

  • 在我的案例中是成功的(对于 GS3)。已发行的 java 卡有一个自动选择应用程序,它处理所有发送给它的 APDU,并像真正的 SIM 卡一样做出响应。
猜你喜欢
  • 1970-01-01
  • 2015-04-08
  • 2011-07-12
  • 2017-09-12
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
相关资源
最近更新 更多