如何在不支持已支持SmartCard API的设备的情况下访问Secure Element

时间:2015-05-18 12:15:46

标签: android security nfc sim-card open-mobile-api

SEEK-for-Android文档说明listed devices支持SmartCard API。

我想通过Android应用程序访问基于SIM的安全元素(SE)。我是否可以实现而无需支持任何这些受支持的设备并且无需重建其Android系统映像?就我而言,该设备是三星Galaxy S3。

3 个答案:

答案 0 :(得分:2)

是的,您可以在不支持系统的情况下使用SEEK-for-Android。但是,这项技术非常依赖于设备;某些供应商特定的库必须存在于系统中。索尼Xperia没有必要的改变,它对我来说很好。在添加了一些库(三星公司根据我们的需求做到了)之后,三星手机也没问题。

您唯一需要做的就是使用特殊的SDK构建应用程序。使用Giesecke&amp ;;的SDK Open Mobile API。 Devrient GmbH并在清单XML中声明org.simalliance.openmobileapi库:

<application android:label="@string/app_name">

    <uses-library android:name="org.simalliance.openmobileapi" android:required="true" />

    <activity android:name=".MainActivity">
      ...
    </activity>
</application>

查看本教程:https://github.com/seek-for-android/pool/wiki/UsingSmartCardAPI。我跟着它,我成功了。

答案 1 :(得分:1)

截至今天,一些智能手机(特别是来自三星和索尼的智能手机)附带Open Mobile API(由SEEK-for-Android实施),用于访问至少基于UICC / SIM的安全元素(有些可能提供访问权限)其他类型的安全元素也是如此)。例如,Galaxy S3的库存ROM确实包含可用于访问UICC的Open Mobile API。

可通过包org.simalliance.openmobileapi访问Open Mobile API。因此,为了使用Open Mobile API,您只需要针对此库编译项目(请参阅this explanation)。但请注意不要将该库包含在APK文件中,因为设备上的实现通常与SEEK-for-Android项目的实现略有不同。

请注意,替代/自定义ROM(例如CyanogenMod)通常不包括Open Mobile API,即使对于那些库存ROM的平台也是如此。对于S3,您可以找到有关如何将必要的自适应包含到CyanogenMod here中的教程。

到目前为止,您可以访问Open Mobile API。但是,为了实际访问UICC上的应用程序,您的Android应用程序需要通过Open Mobile API的访问控制机制。见this explanation。通常,库存ROM实现更喜欢ARA applet机制上的访问规则文件库方法。因此,您必须在UICC / SIM卡上正确配置这些访问规则。

答案 2 :(得分:0)

Android APK和UICC / SIM卡之间的工作连接有两个依赖关系。

  1. 手机的ROM或操作系统应支持org.simalliance.openmobileapi
  2. UICC / SIM应支持PKCS#15应用程序
  3. 这确保没有人可以从UICC / SIM访问文件/服务。正如在上述答案中所述,我们需要UICC / SIM所有者的许可才能允许我们的应用程序驻留在其中。

    PKCS#15规范由GlobalPlatform发布,免费提供(名义注册后)