移动终端智能卡与安全计算环境研究
下文去年十月份在其他平台上发表的文章,现在做了一些修订发到infoq上面来。当然也希望写作平台越来越好,更好得吸引我和我这样的技术人,作为top1的集中输出地来看待。
讲到移动终端,英国ARM公司(2016年被日本软银收购)是一个绕不过去的重要内容,它是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构。ARM从90年代开始就决定自己不制造芯片,只是将芯片的设计方案授权给其他公司。
根据ARM自述,其在安全方面的技术研发历史可以追溯到2000年,那时候Arm为智能卡片支付还有SIM卡研发SecurCore。在此基础上,ARM于2005年发布了基于硬件保护的TrustZone技术,至今已为超过6亿台安卓设备提供安全保障,2017年12月份推出PSA整体架构。
我们就以ARM的这张发展历程图为分类依据,讲一下移动终端安全的相关情况:
一、智能卡
Smartcard的应用场景非常之多,如SIMPass、贴膜卡、RFID-SIM、NFC-SIM、NFC-USIM、以及当前非常火的eSIM。我们一个个来讲。
1、SIMPass
握奇数据推出的基于双界面多功能SIM卡的移动支付及非接触移动应用解决方案。简单而言,SIMpass就是“SIM卡+非接触CPU卡”的结合体。目前的SIMpass方案有两种形式。一种是“卡片+天线”,SIMpass如同一般的SIM卡一样安装在手机的卡槽里,另配有天线组,二者结合,就把手机变成了一张非接触的智能卡;另一种是改造手机方案,天线组被直接设计置入手机的后盖或者电池之中,因而在使用过程中能够与一般的SIM卡无异。工作频率为13.56MHz。
该方案缺点一目了然,一无办法适应手机的设计,二无能力推动手机集体改造天线组。曾经在深圳电信推出过,昙花一现之后现已沦为故纸堆。
2、贴片卡
SIM贴片卡(又叫贴膜卡)是以SIM卡贴片的形态与SIM卡结合使用,其不改变SIM卡原有功能,而为通讯行业以外的运营机构提供低成本接入无线移动终端(手机)媒介,进行诸如移动支付、理财、手机OA、多业务安全登录、敏感信息安全传输等应用。
贴片卡最初是为了解决一卡双号的问题的,后来发现贴片里面还可以作为安全单元存储用户敏感信息,作为认证使用。主推这个方案的,主要是一些应用提供商和微电子厂商,应用提供商发现贴片上可以内置应用,能够不依赖运营商定制企业应用,从而拓展公共事业缴费、手机银行口令卡、第三方支付凭证等应用场景。这一模式之所以没有推广开来,主要是因为手机终端厂商、移动运营商在上述场景中发力终端NFC支付,应用提供商发力二维码支付。
此外,贴膜卡还容易遭受物理撕膜、贴膜连接处通信破坏、测信道攻击等问题,贴膜卡面临的攻击面较大。
3、RFID-SIM
带有RFID图示的SIM卡即是RFID-SIM,是通过内置了射频技术芯片来实现中远距离无线通信的SIM卡。
手机SIM上的RFID技术可以不受限于手机终端的定制要求(这一点和NFC技术不同,不需要定制手机),通俗上理解只需要拥有RFID-SIM卡即可搭配任何手机来使用RFID的技术;而NFC技术则要求搭配定制手机(拥有NFC芯片和NFC天线)。
照这么说的话,RFID-SIM应该用的很广泛才对啊,为啥现在没怎么见过呢。原因主要有两点,本质上是NFC技术的出现导致的:
NFC只是限于13.56MHz的频段,而RFID的频段有低频(125KHz到135KHz)、高频(13.56MHz)和超高频(860MHz到960MHz)。因为同样工作于13.56MHz,NFC与现有非接触智能卡技术兼容,所以很多的厂商和相关团体都支持NFC,而RFID标准较多,统一较为复杂。
NFC有效距离小于10cm,所以具有很高的安全性,RFID距离从几米到几十米都有。在一些设计现金支付、***的应用中,RFID的通信距离情况下,其他设备也可以收到个人RFID信息,存在不安全因素。因此,众多手机厂商选择了NFC作为点对点传输、移动支付的方式,RFID则用到了生产、物流、跟踪、资产管理等应用场景中,RFID-SIM失去了推广背景。
2016年12月份发生的汽车ETC卡遭遇移动POS机盗刷事件,POS机一定要接触ETC卡才有可能刷走钱(当然卡片也得开通小额免密支付),就是因为QuickPass从技术上来说是NFC支付。
4、NFC-SIM
带有NFC字样的SIM卡就是NFC-SIM,NFC-SIM卡是内置了NFC芯片来实现近距离无线通信的SIM卡。
搭载NFC芯片、天线的手机才可以使用基于NFC技术的SIM卡,鉴于目前苹果尚未完全开放NFC API接口,意味该方案不适用于苹果用户。
2013年前后各运营商推出了这类业务,下图是电信的NFC-UIM卡,主打的功能就是手机公交卡、银联POS机刷卡这两类,而且还得手机支持。
这种smartcard的原理,是Sim卡作为安全存储单元存储了账户的用户名密码等信息,通过SWP(Single Wire Protocol,单线协议,一种用于在终端非接触通信模块与手机卡间传输信息的接口协议)读取出来,借助手机的NFC做交互时的验证。NFC手机的卡模拟功能是由SWP-SIM卡和手机上的NFC控制芯片+NFC天线共同组成的独立系统,与手机上的其它软硬件系统没有关系,所以不受开关机、锁屏、熄屏等影响。
NFC-SIM的本质是SWP-SIM,除此之外, SWP方案还有NFC-SD卡和NFC-全终端,SWP相关规范属于国际规范,且产业链比较成熟。SWP的一头是NFC前端,一头是安全单元。安全单元可以是SIM卡、SD卡,也可以是终端里独立的安全芯片(eSE)。
5、SE
安全单元SE(Secure Element)本质上是一台微型计算机,通过安全芯片和芯片操作系统(COS)实现数据安全存储、加解密运算等功能。SIM、SD卡、终端都可以作为SE的载体。
此外,芯片厂商也通过eSE(嵌入式安全模块)打进市场,通过独立硬件芯片提供保护。如英飞凌公司为三星Gear手表提供的SLE97芯片、意法半导体为apple watch提供的ST33G1M232芯片等。意法半导体是世界最大的半导体公司之一,为了适配ARM架构,还专门收购了一家专注于Arm微控制器集成开发环境的嵌入式系统公司。最近比较出名的半导体公司,则是maoyizhan中处于风口浪尖的华为旗下的深圳市海思半导体有限公司。
6、eSIM
eSIM指嵌入式SIM卡(Embedded SIM),支持通过空中远程配置SIM卡数据,最初应用在物联网领域,近年逐渐发展到消费电子领域。
除了基于物理卡的eSIM方案,还有更进一步的无物理实体的eSIM方案,该方案通过软件实现SIM卡功能,SIM卡数据通过远程方式写入设备的安全区域TEE/eSE,称为基于TEE/eSE的eSIM方案。相比实体eSIM方案,基于TEE/eSE的eSIM方案由于具有无需新增物理硬件、不需要修改硬件设计、可减少硬件成本、同时功能上又与实体eSIM完全相同等优点,也是物联网设备通讯的理想选择方案。
所以,本质上eSIM是一块集成了SIM功能的eSE,或基于TEE、eSE等环境独立实现SIM功能的模块。
二、TrustZone
1、什么是TEE
为了解决纯硬件安全防护在移动终端上部署不便的弊端,Global Platform(跨行业的国际标准组织,致力于开发、制定并发布安全芯片的技术标准,以促进多应用产业环境的管理及其安全、可互操作的业务部署,工作重心主要集中在安全单元(SE)、可信执行环境(TEE)和系统消息(Mobile Messaging)等领域)提出了可信执行环境 (Trusted Execution Environment,简称TEE)的概念和方案,即纯软件的环境和安全元件之间的折中方案。TEE旨在构建一个资源丰富的执行环境,从设备自身来提高安全性,能够进行各种各样的应用扩展,为用户使用和服务提供商的开发提供了更大的空间与自由度。
自TEE概念问世之后,英国ARM芯片公司快速设计出Trustzone架构,手机处理器厂商高通、联发科、三星、苹果、华为迅速跟进,开发出各家的落地方案。
TEE在Google Android7.0后成为一种强制性要求,指纹信息必须存放在TEE环境下,Android 9.0则新增了高可信度用户确认(Android Protected Confirmation),该功能通过可信执行环境(TEE)确保提示文本被真实用户确认。只有在用户成功确认之后,TEE才会签发该文本,让应用进行后续验证步骤。
TEE有自己专有的可信操作系统,敏感数据如私钥、指纹信息会在这里存放,敏感操作如加解密、密钥管理、完整性校验等会在这里执行,与公共环境并行存在。
2、ARM TrustZone
ARM TrustZone技术是对TEE理念的实现,它基于硬件隔离,对CPU、内存和一些相关外设实施了隔离管理机制,对cache内存储的数据也有区别对待。这里需要多说一句,TEE架构下并非所有数据都是隔离的,比如安全世界与非安全世界的数据项在CPU cache中共存,即CPU cache并没有实现完全的物理隔离,而是采用共享的模式,所以对于Meltdown和Spectre这类漏洞,TEE在原理上是没有办法抵御的。当然,这种情况非常少见。
下图是TrustZone架构图,TEE为可信应用(TA)提供了安全执行环境,同时也保护TA的资源和数据的保密性,完整性和访问权限。
为了保证TEE本身的可信根,TEE在安全启动过程中是要通过验证并且与Rich OS隔离的。
在TEE中,每个TA是相互独立的,而且在未授权的情况下不能互相访问。TEE内部API是TEE提供给TA的编程接口;TEE外部API则是让运行在Rich OS中的客户端应用(CA)访问TA服务和数据的底层通信接口。
TEE内部API主要包含了密钥管理,密码算法,安全存储,安全时钟资源和服务,还有扩展的可信UI等API。可信UI是指在关键信息的显示和用户关键数据(如口令)输入时,屏幕显示和键盘等硬件资源完全由TEE控制和访问,而Rich OS中的软件不能访问。这里的重点提一下可信UI,正是基于此,2017年10月份,中国建设银行与华为联手推出我国首个手机盾移动支付,手机盾在华为P9/10、Mate9/10等当时的高端手机上实现,把建行配发的U盾,放到TEE中实现,并通过可信UI模拟U盾交互。手机搭载的麒麟960、970的主芯片更对外宣称是“世界上第一颗达到金融级安全的手机芯片”。
TEE运行在终端设备中,提供介于普通操作系统安全保护和专用SE之间的安全性的框架。银行配发的U盾就是一种专用的安全元件,但其便利性和成本配合的不够好,小额移动支付、各类生活场景中的支付并不需要过高的安全保护强度,但直接放到RichOS又无法从根本上提供防护,对于这类应用,TEE作为一种折中方案出现,提供了便利性与安全性一体的整体方案。
在实际开发过程中,如果想开发一个用到TEE的应用的话,就要对GP动态库、TEE服务、TEE内核驱动、TEE安全系统、TA安全应用这五部分进行开发。
三、移动终端的终极安全解决方案
1、TEE+SE
TEE提供了介于典型操作系统和安全元件(SE)之间的一种适度安全性。它提供了一个比Rich OS更高安全等级的运行环境,但无法提供硬件隔离级别的安全的密钥存储和密钥运行环境。由于TEE中的密码单元仍旧通过API供REE调用,简单采用TEE编制的密码模块仍旧会工作在被动被调用的从属模式下,在从属模式下的SE的安全弱点它也都有。人们也正在设计更好的工作方法,确保具备更好的安全性。
在认识到TEE存在的这些问题后,金融界发力、厂商配合,华为等公司推出了板载SE的手机。尤其随着生物识别技术的爆发式发展, FIDO等协议的推广,板载SE的支撑也逐步成了目前移动终端的标配。
TEE+SE的方案整体来说比较复杂,原理上也会觉得有冗余,业界一般希望通过TEE来构建可信的显示,打通领会真实用户意图的通道,SE来构建可信的安全的密钥存储和密钥运算环境,试图终结移动安全方面针对密钥安全问题的讨论。然而,用户又如何知道和区分TEE和REE呢,用户又如何有效地控制SE呢。当病毒或黑客的能力足够强大的时候,我们如何保障SE不被非法地调用,手机用户不会被病毒和黑客欺骗就成为目前的重要问题。
2、CloudSE
基于安全元件SE、基于可信执行环境TEE和基于TEE+SE的身份认证方案中,密钥及关键数据都是在移动终端中进行保护,不但面临着移动终端上各种恶意软件的威胁,同时也存在着丢失后难以恢复等问题。在SE为基础的系统中,SE的安全是信任的锚点,但是SE真的安全吗?自焊接到手机板卡后,SE的安全性已经固定,无法通过固件升级抵御未来可能发生的攻击。
CloudSE将密钥及关键数据在云端进行保护,不再依赖于移动终端自身的防护能力,可以提供集中式的安全防护,同时方便用户进行恢复。同时,其不再依赖于安全元件SE的安全存储和可信执行环境TEE,由云端的服务器模拟完成SE功能,从软件层面摆脱了硬件的限制,为安全支付领域的应用扩展提供了便利条件。
CloudSE方案不依赖特殊的安全硬件,应用厂商可以独立完成业务流程,脱离了传统的SE芯片载体的限制,各类应用的密钥被存储在云端服务器,在云端调用相应密钥进行身份认证,大大降低了移动终端受到侵害后导致关键数据泄露的风险。
云端成为整个方案的核心部位,虽然可以对关键数据进行更高强度的保护,但是一旦被敌手攻破,就会导致大量用户的关键数据被窃取,造成巨大的经济损失。况且,作为云端,未来数据集中、计算集中后,最大的问题就是如何得到用户信任的问题。
3、密钥拆分技术
上述四种身份认证方案将密钥等关键信息存储在单一节点(移动终端或者云端),这使得该存储节点成为整个系统的瓶颈:一旦该节点被攻破,移动智能终端将会面临严重的安全威胁。为了解决密钥在单一节点存储带来的安全隐患,业界出现了密钥拆分技术、协同签名技术:将密钥将拆分成两个部分,分别存储在服务端和移动终端,使用时进行协作计算,密钥不会在任何一方完整出现,即参与运算的任何一方都不会拿到完整的密钥。同时,存储在移动终端的部分密钥也采用白盒密码的相关技术分散在终端内,并于设备绑定,永远不合成出现。
2017年4月28日,信工所利用密钥拆分技术研制的SHM1703智能移动终端安全密码模块通过了国家密码管理局的安全性审查,并取得了商用密码产品型号证书。这是国内首个达到安全等级第二级认证的软件密码模块,第二级是软件密码模块可达到的最高安全等级。
此种方案的核心思想是对密钥进行了拆分和分别的存储,云端和终端有了一定的安全制衡关系,只有双方协作才能完成密码运算功能,参与运算的任何一方不能完整掌握密钥。在不需要可信显示的应用场景,这个方案的安全级别可以归约到安全元件的安全级别。在最坏的攻击场景下,攻击者可以有条件地使用密钥,但不能完全掌握密钥。
四、PSA
下面我们再来看看ARM最新发布的PSA架构。
1、PSA整体描述
平台安全架构(PSA)是一整套威胁模型、安全分析、硬件和固件体系结构规范,以及一个开源固件Trusted Firmware-M参考实现。
ARM公司认为,最好的安全是硬件隔离,ARM参考手机端芯片Cortex-A系列架构的TrustZone的成功经验,引入到cortex-M进行MCU的安全设计,由于GP TEE的复杂度不适于大部分物联网设备,因此需要一个轻量级简化版方案。
同时,物联网设备面临着更大的碎片化,芯片商、OEM、安全厂商、设备管理商、操作系统提供商、应用提供商在面对种类、数量巨大的设备,安全问题更加严峻。因此ARM公司希望从源头开始整合资源,于是提出了PSA。
2、PSA的内容
根据官方解释,PSA包括分析、构建和实施三个部分,即充分分析潜在风险和威胁因素,创建软件和硬件的架构规范,以及帮助相关人员在实际环境中实施这些规范。Arm提出了4步模型。首先,设备的身份必须是唯一的;第二,可信赖的已知启动程序;第三,如果发生任何潜在问题,都必须能实现软件升级;第四,基于证书的认证,也就是说确保与实现通信的设备确实是可信赖的,而不是伪造虚假的设备。
看完上面这段话,估计大家都晕了。从我自己的经验理解如下:
根据微软SDL体系中STRIDE威胁分析模型,凡研发均面临Spoofing(假冒),Tampering(篡改),Repudiation(否认),Information Disclosure(信息泄漏),Denial of Service(拒绝服务),Elevation of Privilege(提升权限)这6大类风险。同时,根据个人总结,“物”、“联”、“网”主要面临仿冒、入侵、嗅探、篡改等风险,因此PSA主要做的,就是提供针对性的解决方案,消解STRIDE模型下物联网生态的薄弱环节。
3、PSA发展
结合2019年2月份Arm与Brightsight、中国信息通信研究院、Riscure和UL等独立安全测试实验室以及咨询机构Prove&Run联合推出的PSA认证项目,笔者认为,ARM这次并未针对物联网提供一个具体的芯片设计方案,而是提出了一套基于分析、架构、实施和认证的设计体系,从更加宏观的层面提高IoT整体安全性。
五、总结
从上文最后的介绍里面能够看出,不同利益集团的出发点不同,技术发展路径会出现很大差异。
以前是NFC控制器芯片集成SE,现在主芯片集成SE,以前是SIM卡集成SE,现在eSIM则是SE集成SIM,安全芯片永远处于想独立与被集成之间的征战状态,所谓合久必分,分久必合。
从业界情况来看,本人非常看好TEE的发展与应用。
在TEE的技术发展路径中,积极拥抱者莫过于芯片设计商、芯片制造商和终端制造商,这是他们显而易见的技术选择。此外,由于TEE方案涉及的硬件、软件链条较长,一些方案整合商也在行动。
除了商业化的TrustZone方案之外,一些开源的TEE解决方案也在不断出现,如OP-TEE、英伟达的TLK、Open-TEE等。
懂TEE的工程师,现在可在阿里、腾讯热招啊,很多工程师原来一直从事的都是smartcard研发或终端研发工作。我们也接触过一些测评机构,能够提供TEE检测的工程师属于稀缺资源。TEE检测,是获得GP授权并依照GP的认证要求开展的检测活动,一般分为TEE功能检测和TEE安全检测。之所以需要获得GP授权,是因为自智能卡时代,GP就是全球基于安全芯片的安全基础设施统一的标准的制定者,目前TEE行业内的标准规范基本上都是GP制定的。目前,获得认证的国内测试实验室有泰尔实验室、北京智慧云测、Applus、银行卡检测中心等。
对于移动终端中发展最快、市场最广阔的物联网领域,ARM已经通过PSA框架提出整体解决方案,期待这一领域出现更多符合安全标准、满足安全需求的产品和服务。
版权声明: 本文为 InfoQ 作者【石君】的原创文章。
原文链接:【http://xie.infoq.cn/article/cf2a890bc69d413216efa441e】。文章转载请联系作者。
评论