来源:中国一卡通网 作者:不详 发布时间:2014-12-23 17:26:28 字体:[大 中 小]
摘 要:基于软件的卡模拟是实现NFC手机与现存非接触智能卡系统之间交互的一个新方法,最早是由RIM(Research In Motion)在黑莓手机上实现。该方法使复杂的,而且在严格控制下的卡模拟功能变得更加简单和开放。通过这种方法,开发者可以绕过安全单元(通常由“业界巨头们”控制),为实现创新性的NFC应用提供了机会。但与此同时,该方法也可能使NFC应用的安全性降低,并为恶意攻击提供了可能。基于当前的应用情况以及最新的研究成果,本文评估了软件卡模拟方法的利弊。
应用程序也可以全方位的模拟符合ISO/IEC 14443-4标准的智能卡,包括类型A和类型B。应用程序可以指定模拟卡的静态属性(例如唯一ID(UID) 以及ISO/IEC 14443 Type A卡的历史数据),并在ISO/IEC14443-4规定的块交换协议基础上进行信息协议数据单元交换(尽管API允许应用程序随便定义UID,但考虑到安全因素,在现存设备上没有提供该功能)。开发人员可以通过在黑莓系统上进行注册将应用程序模拟为智能卡。当从外部RFID/NFC读写器得到命令时,系统通过一个回调函数通知该应用程序,并将得到的命令作为参数传递给该回调函数。应用程序可以通过参数进行相应的处理,该回调函数的返回值可以返回到读写器。
图2 演示了软件卡模拟的命令流程,箭头1到4显示了RFID/NFC读写器到应用程序注册的回调函数的命令流程,而箭头5到8表明从应用程序反馈给RFID/NFC读写器的流程。
目前为止,黑莓手机是唯一能够支持软件卡模拟的手机。但是,最近发布的基于第三方固件CyanogenMod补丁包能够让带有NXP PN544的NFC手机具有软件卡模拟的功能。
除了NFC手机之外,其它设备,例如NFC读写器,可以实现无安全单元的软件卡模拟。例如ACS ACR 122U NFC读写器,另外还有专用的卡模拟设备(例如Proxmark,OpenPICC, IAIK HF RFID DemoTag等)
3.1 软件卡模拟的优点
卡模拟被视为NFC技术中最具前景的领域。主要原因是相比其它工作模式,卡模拟最有盈利的前景。而且,现存的支付,票务,门禁等智能卡系统一般由固定的读写器设备和带有智能卡/非接触标签的用户组成。因此将用户端功能(智能卡/非接触标签)加入手机中是一个现实和迫切的要求。
尽管NFC社区一直要求提供卡模拟功能,但是,卡模拟,特别涉及安全单元的卡模拟一直是个复杂的领域。到目前为止,嵌入式系统中的安全单元通常在手持设备制造商控制中或TSM的运营下。如果将UICC(SIM)作为安全单元,则是移动网络运营商(Mobile Network Operator MNO)控制着安全单元。NFC手机中的安全单元控制权之争早已打响。因此实现对安全单元访问的第一个障碍就是不同的安全单元由不同的部门控制。另一个障碍是一个安全单元的运营商不太可能允许其竞争对手在他们的模块中运行类似的服务。例如谷歌钱包不太可能与Isis钱包中一个手机中共存,尤其是共享一个安全单元。第三个障碍是应用程序访问安全单元的开销。除了安全单元上存储空间的开销外,共存在一个安全单元上的安全相关的应用程序应该需要某种模式的安全认证。
所有这些障碍限制了一般开发人员的应用程序使用安全单元的可能性(也许在手机和支付领域的巨头可以除外)。作为上述问题的解决方案,RIM在其黑莓手机上提供了软件卡模拟方法。在这种模式下,任何开发者都可以开发基于卡模拟技术的应用程序,为开发与现存具有固定读写器的基础设施交互的应用程序的提供了可能。也就是说,开发者可以开发基于手机的门禁,支付,公共交通和票务应用程序,用于使用RFID票卡和智能卡的系统中。
软件卡模拟的另外一个好处是可以实现与不具备全功能点对点模式的NFC设备通讯。例如,Android系统仅支持Android Beam来实现点对点通讯。然而Android Beam是基于谷歌的NDEF推协议 (NDEF Push Protocol NPP)和简单NDEF交换协议 (Simple NDEF ExchangeProtocol SNEP),在两个NFC手机接触时仅能实现单方向单条的消息通讯。因此,软件卡模拟可以作为NFC手机之间点对点通讯的替代方式。另外许多基于PC平台的非接触智能卡读写器也不支持点对点模式。例如 Reiner SCTcyberJack RFID basic (在新的德国身份证系统中使用)和HID OMNIKEY 5321。但是,这些设备可以与卡模拟方式下的NFC手机进行通讯,因此,不需要增加额外的NFC硬件,软件卡模拟方式能够实现了手机与这些PC系统的通讯。
更进一步的好处是相比点对点模式,在PC平台上对软件卡模拟的软件和驱动支持更好。非接触智能卡读写器在PC/SC上已经标准化,而且缺省的集成到大多数操作系统中。即使Java SE这样的平台也具有非接触式智能卡的标准API。点对点模式则只有有限的支持,而且仅仅被有些第三方库,例如libnfc4和libnfc-llcp5支持。另外,NFC点对点模式协议栈为
应用层协议(NDEF消息)
基于
NPP,SNEP (或者直接使用另外的应用层协议)
基于
LLCP (NFC LogicalLink Control Protocol NFC逻辑链路控制协议)
基于
NFC-DEP (NFC DataExchange Protocol NFC数据交换协议,例如符合ISO/IEC 18092的底层点对点通讯协议)
比较而言,下面的读写器模式的协议栈更简单:
应用层协议 (符合ISO/IEC 7816-4)
基于
ISO-DEP (符合ISO/IEC 14443-4定义的通讯协议)
总体来讲,软件卡模拟方式是一般开发者,而不是那些“业界巨头们”,能够从简单的NFC标签应用上进行功能扩展的很好契机。
3.2 缺点和安全问题
所有上述的好处是有代价的。在当前软件卡模拟存在的技术限制之外,有重大的安全问题。手机应用处理器中运行的应用程序不具有安全单元中的数据安全存储和可信度执行环境。除非应用处理器自己能够提供某种形式的可信计算技术。但是目前的绝大多数手机没有这个功能。
没有安全存储功能,因此卡模拟应用程序不得不自行保存敏感的数据(例如门禁系统的口令,支付系统的私钥,票卡帐号等)。而且没有安全的执行环境,导致其它应用程序(包括恶意的应用程序)的干扰。例如最近发现谷歌钱包存在重大安全隐患,尽管谷歌钱包使用安全单元,但是应用程序将重要的安全数据作为应用程序私有数据缓存到手机内存中,攻击者可以通过这些缓存得到信用卡号,帐户余额,卡持有人信息甚至钱包的PIN码。
根据这些敏感信息的价值,也许在某些情况下值得冒险。例如,公共交通中的单程票,或一张主题公园的门票。但是对于支付系统或门禁系统,情况就不一样了。例如信用卡或大楼的门禁卡的信息,就不能简单的存放在容易被窃取的手机内存中了。
但是,使用软件卡模拟也可以实现某种程度上的安全应用。一个关键是将“虚拟卡(virtual card)”存放在一个安全的远程的地点,而手机仅仅充当一个访问代理。
图3显示了这种基于虚拟卡的在线卡模拟系统。手机将从POS机得到的命令转发到存放在远程服务器中的虚拟卡,虚拟卡的回复通过手机反馈给POS终端。
虚拟卡的访问必须是安全的,可以防止通讯中的截获已经未经授权的信用卡使用。例如,通过加密和认证的通道,以及用户输入口令进行保护。但是,鉴于在手机应用程序中存放数据易于被窃取的现实,创建不能被其它应用窃取的安全信道是很困难的。另外,由于需要与远程服务建立安全连接,需要稳定的互联网连接,而并不是所有应用环境有这个条件。
软件卡模拟中的安全问题不仅仅是数据存储的问题。另一个问题是使用软件卡模拟应用的手机作为攻击工具。Francis et al的研究表明具有NFC功能的手机能够实现远距离的点对点模式接力攻击。类似的也可以攻击非接触智能卡系统。(cf. Hancke, Kr 和 Wool, Hanckeet al)。过去,攻击者必须准备专用的设备(例如,用于在RFID/NFC读写器和接力处理器之间转发智能卡信号的卡模拟器)。目前这些专用设备不具备一般NFC设备的外观形态(例如智能卡或手机的外观)。然而,支持软件卡模拟的手机具有理想的外形,而且具备建立接力通道所需的多种网络接口(蓝牙,WIFI,GSM,UMTS等)。
Francis et al证明非接触智能卡能够轻易的被两部NFC手机进行接力攻击:一个NFC手机作为智能卡和接力通道之间的代理,工作在读写器模式。另一部NFC手机作为RFID/NFC读写器(例如POS机)和接力通道之间的代理,工作在卡模拟模式。Roland et al甚至演示了受害者手机中的纯软件应用就足以充当进行安全单元和接力通道之间的代理。
软件卡模拟还存在技术和安全相关的限制。在NXP的NFC控制器中,基于软件的卡模拟只能使用一段范围内的UID(被保留为随机号码的UID号码段)。在黑莓平台上的API中,有使用指定UID的功能,但这个功能因为安全问题而被替换。因此在现存的设备中,也只能使用随机的UID。该限制妨碍了软件卡模拟在基于UID的系统中的应用,但也防止了在纯UID应用系统(例如某些门禁系统)中的卡克隆攻击。
而且,黑莓的软件卡模拟功能,包括Android的第三方CyanogenMod固件最近加入的功能,仅仅支持符合ISO/IEC 14443-4标准的智能卡。底层协议为专有协议的系统,例如NXP的MIFARE Classic,就不能被模拟。因此,软件卡模拟不能在所有的现存RFID 系统中使用。
4,结论
本文评估了基于软件的卡模拟存在的优缺点。软件卡模拟突破了现有的基于安全单元解决方案的束缚,为开发人员提供了新的机会。该技术可以方便的将具有NFC功能的手机和现存的非接触智能卡系统集成在一起。而且与点对点模式相比,读写器模式设备和卡模拟设备之间的通讯更具优势,因为读写器模式的应用比点对点模式更为普遍。这些优点的代价是安全上的问题。在这种情况下,模拟卡中的内容更加难以保护,而且,软件卡模拟将NFC手机变成对智能卡或其它卡模拟设备实施接力工具的一个理想的工具平台。最后,设备和芯片制造商对某些应用上的软件卡模拟进行了限制。虽然大多数软件卡模拟应用都可以使用点对点方式实现,但是使用点对点模式通常需要对现有基础设施进行大量升级改造。
本人认为,在多个NFC设备之间通信上不需要通过软件卡模拟实现,因为应用程序可以使用点对点模式,这种模式是为NFC设备之间通信而特别设计的。然而,使用软件卡模拟的优势是能够支持现有的硬件系统。所以不能仅仅因为开发人员会创建无安全的应用,或者这种技术会被恶意使用,就将禁止软件卡模拟功能的开发。应用的安全不能靠限制可能被恶意使用的技术,而是应该依靠提升系统对攻击的抵抗力实现。毕竟,从CyanogenMod的补丁包上就能看出限制该功能的使用是不现实的。
推荐文章
LKT5103 32位高速软件加密锁
LKT4200HS 32位高性能防盗版加密芯片
健身房可视卡
原装飞利浦IC卡
低频125KHz.透明RFID标签
供应可视智能卡
江苏探感超高频耐高温RFID抗金属标签
供应热敏卡、可视卡、视窗卡
USIM卡NFC手机测试白卡小卡
论坛热帖