8

让我们在一个共同的地方分享关于 NFC 开发、技术的想法……我热烈欢迎您提出任何意见 - 无论是关于 Android 或 Symbian SDK 还是关于一般的 NFC。

在我看来,普遍的问题是我们可以开发什么,即我们可以通过 NFC 技术为市场带来什么样的应用?作为开发者,我们如何才能从 NFC 中赚钱和受益?

我认为人们期望 NFC 将为开发人员打开众多服务和可能性的大门——但这是真的吗?NFC 与其他无线技术(BT、WiFi)之间的区别在于,它已经带有主要的用例——支付、交通票和钥匙(建筑物访问)。但是对于所有这些用例,您需要一个安全元素,即

  • 要么由手机制造商控制,例如谷歌——参见谷歌钱包,它专门使用 Nexus S 上的内置 NXP SecureMX(如果我们不想危及安全性,这是很难改变的),
  • 或通过SIM 卡上的UICC访问(在 Android 和 Symbian/和 MeeGO/ 手机上也是如此);这里必须与运营商达成交易。

但是在一个国家有 3 或 4 家运营商,对于一家中型公司来说,他们允许在 SIM 卡上运行他们的小程序的可能性有多大?那么更多的全球解决方案呢?所有上述服务/用例都需要所有参与者和完善的生态系统(银行、移动网络运营商、NFC 芯片生产商、手机制造商、TSM ……)的大量协调。

它们仍然是 p2p 应用程序、标签读取的选项——但许多功能已经内置在手机中,所以这看起来不像是金矿……</p>

我认为如果手机包含NFC-WI(S2C)此接口(由 ECMA 指定)和支持 NFC-WI 的微型 SD 卡(已由 SD 卡协会指定),那么机会可能会更大,这可能会允许购买安全的 SD 卡任意公司的元素......但它不在市场上,而且看起来不会很快出现任何东西。

您对 NFC 和手机开发的愿景和经验是什么?

4

2 回答 2

14

为了更实用一点,而不仅仅是理论上的,我在xda-developers上发布了一些补丁,以在当前唯一支持 NFC 的 Android 手机(Nexus S)上启用卡模拟模式。您和其他人可能对自己玩卡模拟模式感兴趣。考虑到这仅用于实验目的。

它们适用于 AOSP 源的姜饼 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 控制器)从外部访问,但不能在内部访问,因为 AFAIK SIM 插槽未通过其他方式连接到 NFC 控制器。这给我们留下了唯一的途径,即基带处理器。但是 BB 固件是专有的,由制造商控制。三星尚未在其 BB 固件中实施3GPP TS 27.007 技术规范以与其交互。
  • OTA 访问外部 SE 应该是可能的,这掌握在 MNO 的手中。其中一些可能提供 TSM 服务以允许第 3 方访问 UICC 内的 SE。

顺便说一句,您提到的技术(NFC-WI)已经在 Nexus S 中使用,用于将 NFC 控制器与嵌入式安全元件互连。

更新

总而言之,我回答 Sten 的问题:

由于 Mifare 4K 区域有默认密钥,任何拥有外部 NFC 读取器的人都可以更改密钥并在那里安全地存储值 - 是否正确?你试过了吗?这有什么困难吗?

简短的回答的,我确实从外部阅读器访问了 Mifare 4K。我也能够修改默认键。困难来自修改系统源和自己构建自定义固件。

使用外部 NFC 阅读器是访问 Mifare 空间的唯一方法吗?

理论上没有。另一种选择是将 APDU 发送到 SIM,其中包含要在 Mifare 卡上执行的 Mifare 命令。

例如,安装在 Android 手机上的应用程序可以使用某些 API(通过 NFC 控制器和 NFC-WI 路径)读取/写入 Mifare 4K 的一些数据吗?例如,seek-for-android 可以在那里提供帮助吗?

暂时没有。尽管您使用 seek-for-android 补丁修改了 AOSP 源代码(我自己做了),但您的应用程序只会因库存手机而崩溃。原因是他们没有实施3GPP TS 27.007 技术规范,该规范允许应用处理器直接向 SIM (UICC) 发送 APDU。

然而,隧道前方可能会有一些曙光,因为法国的citizy项目已经在 Android 手机上使用 NFC 技术的安全元件模式,采用 UICC 安全元件方法。事实上,三星 Galaxy SII型号正在使用中,新的Acer Liquid Express也将很快集成到 citizy 中。这些手机必须在其基带处理器固件中实现所需的 TS 27.007 规范。说到应用处理器,我不知道他们是从 G&D 路径中获取 SEEK-for-android 还是从 Insecure 获取 OpenNFC。作为法国人,我会在最后一场比赛中全押。

于 2011-09-29T10:21:59.497 回答
2

因此,为了继续讨论,我将对其进行总结: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 的一些数据吗?例如,seek-for-android 可以在那里提供帮助吗?

谢谢斯滕

于 2011-10-06T13:47:17.293 回答