首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ICS4.0.4上的安全元素访问控制

ICS4.0.4上的安全元素访问控制
EN

Stack Overflow用户
提问于 2012-05-08 07:52:00
回答 4查看 20.2K关注 0票数 11

我将我的安卓手机升级到4.0.4,我注意到系统文件夹中出现了一个新文件nfcee access.xml。据我所知,文件的想法是保留一个签名列表,并允许访问SE和相关的包,只打算使用其中一个签名进行签名。到目前为止,这个列表中当然是谷歌钱包的签名。

有没有人知道将来进入这个名单的过程是怎样的?你需要直接向谷歌申请许可吗?

EN

回答 4

Stack Overflow用户

发布于 2012-05-08 20:51:06

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

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

代码语言:javascript
复制
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />

要真正访问SE,需要通过导入com.android.nfc_extras来访问隐藏的API。

代码语言:javascript
复制
import com.android.nfc_extras.NfcAdapterExtras;
import com.android.nfc_extras.NfcAdapterExtras.CardEmulationRoute;
import com.android.nfc_extras.NfcExecutionEnvironment;

要做到这一点,最简单的方法是在安卓源代码树中编译应用程序,方法是将应用程序放在packages/apps中,然后从那里构建它。您需要向Android.mk makefile添加以下行以获得对SE的访问:

代码语言:javascript
复制
LOCAL_JAVA_LIBRARIES := com.android.nfc_extras

com.android.nfc_extras中的函数允许启用和禁用SE,向它发送命令并接收来自它的响应(类似于IsoDep.transceive())。

票数 18
EN

Stack Overflow用户

发布于 2012-05-08 08:22:02

这确实很有趣。如果在这个文件中输入您的证书和包名是唯一需要的,那么您不需要与Google交谈,只需要让构建ROM的人(如果是自定义ROM的话,或者某个特定的载体)就可以包含它。但更大的问题是,您需要与谁交谈才能获得CardManager密钥。如果它是运营商,您还可以让它们预装您的applet,因此您可能不需要运行时的密钥(除非您希望使用到applet的安全通道)。

更新:这是Android中SE支持的总结,以及关于如何使用嵌入式SE的更多信息。简而言之,它确实有效,但您当然只能查询内容。它运行JavaCard,与GP2.1.1兼容,使用3 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:

代码语言:javascript
复制
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
票数 6
EN

Stack Overflow用户

发布于 2012-05-08 21:48:09

带备忘:如果您可以将您的应用程序放到nfcee_access列表中,您可以执行以下操作:

  • 启用UICC (sim卡)并启用嵌入式安全元素(如果存在的话)
  • 打开到嵌入式安全元素的通信通道,并交换数据
  • 接收来自的事务数据,如果需要发送数据(您将仅接收)。

如果你在手机上上网,你就能做到这一切。不需要破解nfcee_access列表就可以这样做,您只需拦截到nfc芯片的所有流量就可以了。

你不能做的事,即使有根手机:

UICC / eSE

  • Log/Monitor/influence上的
  • 安装小程序嵌入式安全元素/UICC与外部阅读器之间的数据传输,例如黑客支付系统。

注意:如果并且只有当具有访问嵌入式SE的知识和安全访问密钥时,才能执行几乎所有的操作。但是,如果您有这些信息,就不会询问堆栈溢出。:-)

这些知识是保密的,没有人会告诉你这个秘密,除非你是一家像谷歌、万事达卡、签证、美国运通之类的大公司。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10494726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档