可以将SIM卡作为安全元素使用,NFC的Card Emulation模式下能做到,GSMA比较喜欢用这种方式。
要访问手机中的安全元素,我们需要使用可信服务管理器(TSM)。但TSM要求我们必须在线"online"。我们需要给TSM服务器发送信息,然后TSM服务器再发送这些数据到SIM卡上。
== Phone == | | == TSM ==
Application | ---- Network ----> | Server
SIM card | <----------------- |
而且仅仅有用TSM还不够,我们还需要SIM卡的证书,没这些证书,我们就没办法从TSM端更新SIM卡上的数据。这些证书为运营商控制。
另外TSM并不是一个标准,并不是所有的卡和运营商支持。
如果要往SIM卡存应用的数据,TSM通过向SIM卡发送数据短信的方式传输存储数据,问题在于,早期的NFC手机主要功能是读写NFC TAG,而访问安全元素则非常麻烦。非常少的NFC手机在Card Emulation模式下使用SIM卡作为安全元素,只有特定国家的特定运营商支持。
我觉得,
Google开源代码托管项目上的seek项目,SmartCard API在android平台上实现了 simallience的open mobile api,可以实现以下需求,只是,可能会涉及到给现有ROM打补丁和刷机。
另一个话题:如何从android应用直接访问SIM卡。
显然这又是要我们往android源代码打补丁和刷机了,
- 往 RIL layer打补丁;
- 往 Android Framework打补丁;
- 需要获得SIM卡的证书,可以使用开发卡,但这样就无法连到运营商网络了;
- 自己开发SIM卡应用,通常是JAVA的卡;
- ...
或者考虑使用特殊的SD卡吧,这样似乎更简单点,别折腾了。
问题:
I am developing a NFC application. My application will process secret information and I want to store that data on the SIM card. Is it possible, and if it is possible, how can I do this? My phone's android version is Android 2.3.5.