12

我正在开发一个 NFC 应用程序。我的应用程序将处理机密信息,我想将这些数据存储在 SIM 卡上。有可能吗,如果可能的话,我该怎么做?我手机的安卓版本是安卓2.3.5。

4

3 回答 3

15

tl; dr - 如果不付出巨大的努力,目前是不可能的。

您想在卡仿真模式下使用 SIM 卡作为安全元件 - 这是GSM 协会青睐的方法。要访问安全元件(在 SIM 或集成芯片上),您需要使用可信服务管理器 (TSM)。在您的情况下,TSM 将使用二进制 SMS 消息将数据发送到您的 SIM 卡。问题在于手机上的 NFC 还处于早期阶段。标签读/写很简单,但访问安全元件却不是。使用 SIM 作为卡仿真安全元件的 NFC 智能手机的试验非常有限,而且这些试验目前都仅限于特定国家的特定移动网络运营商 (MNO)。

如果您确实想这样做,您需要阅读规范,编写 TSM,然后与 MNO 签订必要的合同,以允许使用他们的 SIM。

祝你好运!

于 2012-02-20T15:51:42.123 回答
3

正如凯文所说,不付出很多努力是不可能的。

一种方法是使用 TSM。但这对于您要实现的目标效率低下,并且需要“在线”。您将一些信息发送到 TSM 服务器,然后它将一些数据发送到您的 SIM 卡。

== Phone == |                    | == TSM ==
Application | ---- Network ----> | Server
SIM card    | <----------------- |

而 TSM 还不够。您还需要 SIM 卡凭据。如果没有这些凭据,您将无法从 TSM 更新 SIM 卡数据。这些凭据由您的移动运营商控制。最后,TSM 根本不是强制性的。

使用上面的模式,我们看到了一种更明显的方法,即建立一个链接:Application --> Simcard。这一次,即使您没有网络,它也能正常工作。但Android的构想方式是,应用程序和SIM卡之间没有直接联系。有一些解决方案,如果您有兴趣,可以在那篇文章中很好地解释

这里有一些要求:

  • 您可能需要修补 RIL 层
  • 你需要打补丁Android的源代码
  • 您需要有您的 SIM 卡 (UICC) 的凭据(您可以购买开发者 SIM 卡,但它无法连接网络,因为它不包含您的运营商凭据)
  • 您需要知道如何为 SIM 卡(通常是 Javacard)开发软件
  • ...

以安全的方式存储秘密数据的最简单方法是使用特殊的 SD 卡作为安全元件。无需修补任何东西,无需 root 访问权限,无需 SIM 卡凭据。您可能仍然需要开发自己的 SD 卡“软件”来在那里托管您的数据。

与保护级别相比,安全性是关于威胁级别的。安全元素可能需要做太多的工作来保护您的数据。根据您尝试保护的数据,您可以使用足够安全的内置 Android 机制。

于 2013-03-15T04:44:05.030 回答
1

我有类似的要求。我的方法是,不使用 GSM 运营商的 SIM。但我正在努力寻找一种让 GSM 运营商使用我的 SIM 卡的方法。然后我将拥有自己的访问机制来将我的安全项目存储在卡中。

亚辛·伊尔马兹

于 2012-06-20T07:44:01.677 回答