让我们共同分享关于NFC发展的想法,技术…我热烈欢迎你的任何评论-无论是关于Android或Symbian SDK还是关于NFC的一般意见。
从我的角度来看,一般的问题是我们可以开发什么,也就是说,我们可以用NFC技术把什么样的应用带到市场上?作为开发者,我们该如何从NFC中赚钱和获益?
我认为人们期望NFC将为开发者打开许多服务和可能性的大门,但这是真的吗?NFC与其他无线技术(BT、WiFi)的区别在于,它已经有了主要的用例——支付、交通车票和钥匙(建筑门禁)。但是对于所有这些用例,您需要一个安全元素,也就是
- 由手机制造商控制,例如谷歌-参见谷歌钱包,它在Nexus S上专门使用内置的 NXP SecureMX(如果我们不想损害安全性,这是很难改变的东西),
- 或可通过UICC在SIM卡上访问(Android和Symbian/和MeeGO/手机);这里的交易必须与运营商达成。
但是在一个国家有3到4家运营商,中型公司允许在SIM卡上运行他们的小程序的可能性有多大?那么更多的全球性解决方案呢?以上提到的所有服务/用例都需要所有参与者的大量协调和一个完善的生态系统(银行、移动运营商、NFC芯片生产商、手机制造商、TSM…)。
它们仍然是p2p应用程序,标签读取的选项-但许多功能将已经内置在手机中,所以这看起来不像金矿…
我认为如果手机包含NFC-WI(S2C)
,机会会更大-拥有这个接口(由ECMA指定)和支持NFC-WI的微型SD卡(已经由SD卡协会指定)可能允许为任意公司购买具有安全元素的SD卡…但它没有在市场上,看起来不会很快出现任何东西。
您对NFC和手机开发的愿景和经验是什么?
为了更实际一点,而不仅仅是理论,我在xda开发人员上发布了一些补丁使卡仿真模式在当前唯一支持NFC的android手机(Nexus S)上。你和其他人可能有兴趣自己玩卡仿真模式。请考虑这只是为了实验目的。
适用于AOSP源的姜饼versión 2.3.4_r1。他们允许:
- 在Nexus s上启用NFC卡仿真模式。该模式一直处于启用状态。
- 禁用读卡器模式,让卡模拟是唯一一个工作。
- 选择外部安全元件(在UICC中)而不是嵌入式安全元件(在SmartMX芯片中)。
- 虽然不相关,删除蓝牙发现选项的时间限制。
到目前为止,我发现Android上的NFC卡仿真:
- 默认情况下,存储卡仿真在库存图像上是禁用的,需要固件修改。Nfc系统应用程序的修改和libnfc-nxp系统库是值得关注的地方。
- 在Nexus S内嵌入SmartMX芯片,呈现为双智能卡。一个是可编程的(允许在上面安装卡片),一个是4K的Mifare。
- 4K Mifare卡有默认密钥,所以它可以从外部读卡器读写。
- 可编程卡应该是GP兼容的,但是除了Google之外没有人可以摆弄它,因为访问密钥不是公开的。
- Nexus S支持SWP,并允许与位于UICC内的安全元素操作。
- 应用程序不能直接访问安全元素的任何内容。一方面,嵌入式SE是不可访问的,因为我们不知道密钥。另一方面,外部元件可以通过SWP(连接到NFC控制器)从外部访问,但不能在内部访问,因为SIM卡插槽没有通过其他方式连接到NFC控制器。这就只剩下一条路了,基带处理器。然而,BB固件是专有的,由制造商控制。三星尚未在其BB固件中实现3GPP TS 27.007技术规范。
- OTA访问外部SE应该是可能的,这取决于移动运营商。有些可能会提供TSM服务,以允许第三方访问UICC内的SE。
顺便说一下,你提到的技术(NFC- wi)已经在Nexus S中用于将NFC控制器与嵌入的安全元件互连。
Upate
总结一下,我回答了Sten的问题:
由于Mifare 4K区域有默认密钥,任何人都可以使用外部密钥NFC读取器可以更改密钥并安全地存储值这正确吗?你试过吗?这有什么困难吗?
简短回答是,我确实从外部阅读器访问了Mifare 4K。我也可以修改默认密钥。困难来自于修改系统源和自己构建自定义固件。
是使用外部NFC读取器访问的唯一方法吗非接触式读卡器空间?
理论上没有。另一种选择是向SIM发送apdu,其中包含要在Mifare卡上执行的Mifare命令。
例如,Android手机上安装的应用程序可以读/写一些使用一些API(通过NFC控制器和NFC- wi)将数据传输到Mifare 4K路径)?例如,可以在那里寻求android帮助吗?
暂时没有。尽管您使用android补丁修改了AOSP源代码(我自己做的),但您的应用程序只会在普通手机上崩溃。原因是他们没有实现3GPP TS 27.007技术规范,该规范允许应用处理器直接向SIM (UICC)发送apdu。
然而,隧道前面可能有一些光明,因为法国的市政项目已经在Android手机上使用NFC技术的安全元素模式,采用UICC安全元素方法。事实上,目前正在使用的是一款经过改进的三星Galaxy SII型号,而新的宏碁Liquid Express也将很快集成到citizen中。这些手机必须在其基带处理器固件中实现所需的TS 27.007规范。当涉及到应用程序处理器时,我不知道他们是采用了来自G&D路径的SEEK-for-android还是来自Insecure的OpenNFC。作为法国人,我敢赌最后一个。
所以为了继续讨论,我将总结一下:NXP SmartMX微控制器由两个独立的安全元素组成。第一个是可编程的,运行一些操作系统(例如MULTOS或Sm@rtCafe或其他)和一个JavaCard VM,但是它是锁定的,并且产品访问密钥只在Google或TSM的手中。这里没有办法安装用于测试目的的JavaCard应用程序,因为不可能为测试目的解锁安全元素。
也没有办法利用SIM卡,因为即使这在技术上是可能的,对于商业应用程序处理MNO是必要的。让我们先来看看Mifare 4K,它似乎是最有前途的:
由于Mifare 4K区域具有默认密钥,任何具有外部NFC读取器的人都可以更改密钥并安全地存储值-这是正确的吗?你试过吗?这有什么困难吗?
使用外部NFC读取器是访问Mifare空间的唯一方法吗?例如,安装在Android手机上的应用程序可以使用一些API(通过NFC控制器和NFC- wi路径)读/写一些数据到Mifare 4K吗?例如,可以在那里寻求android帮助吗?
谢谢STeN