我将Android手机更新为4.0.4,我注意到系统文件夹中出现了一个新文件 nfcee access.xml 。据我所知,该文件的想法是保留一个签名列表,并允许访问SE和相关的意图仅限于使用其中一个签名签名的包。到目前为止,此列表当然是Google电子钱包的签名。
有谁知道将来如何进入此列表?您是否需要直接向Google申请许可?
答案 0 :(得分:17)
如果您手机是root用户,则可以修改该文件。该文件包含允许访问安全元素(SE)的签名和包名称列表。签名是十六进制编码的X.509证书。要创建一个,只需在文件中包含标记<debug />
,它就会打印到logcat,拒绝SE访问的应用程序的十六进制编码签名,以便轻松剪切并粘贴到此文件中。
要创建可以访问SE的应用程序,您需要将此权限添加到清单:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
要实际访问SE,您需要导入com.android.nfc_extras
:
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列表上找到你的应用程序,你可以做以下事情:
如果您使用手机,则可以执行此操作。不需要破解nfcee_access列表来执行此操作,您可以直接拦截到nfc-chip的所有流量。
即使使用有根电话,你也做不到的事情:
警告:只有当您拥有访问嵌入式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 斯登