ICS 4.0.4上的安全元件访问控制

时间:2012-05-08 07:52:01

标签: android nfc

我将Android手机更新为4.0.4,我注意到系统文件夹中出现了一个新文件 nfcee access.xml 。据我所知,该文件的想法是保留一个签名列表,并允许访问SE和相关的意图仅限于使用其中一个签名签名的包。到目前为止,此列表当然是Google电子钱包的签名。

有谁知道将来如何进入此列表?您是否需要直接向Google申请许可?

4 个答案:

答案 0 :(得分:17)

如果您手机是root用户,则可以修改该文件。该文件包含允许访问安全元素(SE)的签名和包名称列表。签名是十六进制编码的X.509证书。要创建一个,只需在文件中包含标记<debug />,它就会打印到logcat,拒绝SE访问的应用程序的十六进制编码签名,以便轻松剪切并粘贴到此文件中。

要创建可以访问SE的应用程序,您需要将此权限添加到清单:

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />

要实际访问SE,您需要导入com.android.nfc_extras

来访问隐藏的API
import com.android.nfc_extras.NfcAdapterExtras;
import com.android.nfc_extras.NfcAdapterExtras.CardEmulationRoute;
import com.android.nfc_extras.NfcExecutionEnvironment;

实现这一目标的最简单方法是在Android源代码树中编译您的应用,方法是将其置于packages/apps并从那里构建。您需要将以下行添加到Android.mk生成文件以访问SE API:

LOCAL_JAVA_LIBRARIES := com.android.nfc_extras

com.android.nfc_extras中的功能允许启用和禁用SE,向其发送命令并从中接收响应(与IsoDep.transceive()相当)。

答案 1 :(得分:6)

这确实很有趣。如果只需要在此文件中输入您的证书和包裹名称,您就不需要与Google交谈,只需将构建ROM的人(自己是自定义ROM或特定运营商)包含在内。更大的问题是, 你需要和谁谈谈才能获得CardManager密钥。如果它是运营商,您也可以让他们预安装您的小程序,因此您可能不需要在运行时使用密钥(除非您想使用安全通道到您的小程序)。

更新:以下是Android中SE支持的摘要以及有关如何使用嵌入式SE支持的更多信息。简而言之,它确实有效,但您当然只能查询内容。它运行JavaCard并且兼容GP 2.1.1,使用3DES密钥作为安全通道。

http://nelenkov.blogspot.com/2012/08/accessing-embedded-secure-element-in.html

http://nelenkov.blogspot.com/2012/08/android-secure-element-execution.html

顺便说一下,这是我GN 4.0.4上目前允许的证书。未指定包,因此使用它签名的任何应用都可以访问SE:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            a8:cd:17:c9:3d:a5:d9:90
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=US, ST=California, L=Mountain View, O=Google Inc., OU=Android, CN=Google NFC
        Validity
            Not Before: Mar 24 01:06:53 2011 GMT
            Not After : Aug  9 01:06:53 2038 GMT
        Subject: C=US, ST=California, L=Mountain View, O=Google Inc., OU=Android, CN=Google NFC

答案 2 :(得分:2)

有问题:如果你可以在nfcee_access列表上找到你的应用程序,你可以做以下事情:

  • 启用UICC(SIM卡)并启用嵌入式安全元素(如果存在)
  • 打开嵌入式安全元素的通信通道并交换数据
  • 从UICC(SIM卡)接收交易数据如果 UICC想要向您发送数据(您将只是接收方)。

如果您使用手机,则可以执行此操作。不需要破解nfcee_access列表来执行此操作,您可以直接拦截到nfc-chip的所有流量。

即使使用有根电话,你也做不到的事情:

  • 在UICC / eSE上安装小程序
  • 记录/监视/影响嵌入式安全元件/ UICC与外部读取器之间的数据传输,例如,黑客支付系统。

警告:只有当您拥有访问嵌入式SE的知识和安全访问密钥时,才能完成。但是,如果您有这些信息,则不会询问堆栈溢出。 : - )

这个知识是一个保守的秘密,没有人会告诉你这个秘密,除非你是一个像谷歌,万事达卡,签证,美国快递等大公司。

答案 3 :(得分:0)

答案很简单,你不能对安全元素做任何事情。只有SE所有者或发行人可以允许访问SE - 即它本身是Google,或者可能是First Data(http://www.firstdata.com/en_us/products/merchants/mobile-commerce/trusted-service-manager -solution.html),但我认为这家公司只负责Google电子钱包本身,而不是SE管理 - 这可能由SK C&amp; C完成 - 我不知道......

也是这样 - 使用嵌入式安全元素的前提是您提供优质服务,并且您是Google合作伙伴或其他手机制造商合作伙伴(除非您来自Facebook或类似公司,节省您的时间,不要尝试)。这并不容易,99.99%的服务不能存在。

关于安全元素现在你可以等到SWP和SIM卡变得更受欢迎和可接受的解决方案,因为你可能更容易在国家层面与MNO签订合同或希望在NFC-WI和SD卡解决方案中使用贴纸或外部配件,如iCarte for iPhone。

BR 斯登