芯片安全漫谈:采用加密芯片的金立M6,真的是“最安全”的手机吗?

小龙 2017-4-7 安全界 0 3

40980982761.jpg

你们说的金立语音王是这样吗…

去年7月份,国外媒体福布斯在介绍金立M6手机(什么?你只知道金立语音王?)的时候提到,“深圳的这家公司宣传这款手机是‘全球最安全的手机’,由于其采用128位加密芯片所以相当安全”。很多国外媒体也都跟随用了这个“safest”最安全一词。其实我们去追本溯源的时候,并没有发现金立官方做过这样的宣传。不过国内还是有不少媒体下标题,类似于“这可能是当前最安全的手机”,“iOS还真不是最安全的”…无论如何,这款手机都是以安全为卖点的。离FreeBuf编辑部不远的地铁站口这大半年来都贴着金立M6的广告,每天都挥之不去“内置加密安全芯片”宣传词。

实际情况可能并不像厂商或者许多媒体宣传得那么简单。手机安全本身是个极为庞大的话题,对任何一款手机而言,安全都贯穿于每个环节,从末端的移动App安全,到系统安全(Android和iOS)、网络通讯安全,再到手机厂商自己提供的互联网服务安全,还有底层的芯片安全…

不过按照金立的宣传,M6这款手机中内置了一颗专门的加密芯片,那么我们就尝试从底层芯片安全的角度来聊聊智能手机芯片在安全方面现如今的状况。因为金立并没有公布这颗“加密芯片”的技术细节,我们很难在短时间内了解这颗芯片在整个手机系统里扮演着怎样的角色,所以这篇文章会尝试从芯片安全的主流设计方式,来谈金立M6的这种设计是否值得推崇。

timg.jpg

然鹅,它现在是这样的

究竟是怎样一颗芯片?

按照金立的说法,这颗“安全芯片”是位于M6手机主芯片旁边的一颗独立芯片:“M6采用的是硬件加密方式,为此M6专门内置了一颗安全加密芯片,加解密过程、密钥存储均在此芯片中完成”。金立官方只解释了这颗芯片采用“与商业银行同样的加密算法。通过这颗芯片,金立M6可以实现私密空间、专线通话以及支付保护等多种功能。”

针对这颗芯片能够挖到的料也就只有国内媒体手机报提到的,这颗安全芯片由苏州国芯设计,信大捷安提供整体解决方案。据说金立先前通过了国家密码管理局的审批,获得了“商用密码产品生产定点单位证书”以及“商用密码产品销售许可证”。这颗芯片“使用SM4(国家商用密码管理办公室指定的分组密码算法)加密算法,安全级别与AES一致”。在加密算法方面大致推断为国密无疑。

另一方面,从媒体对金立M6手机的拆解来看,这款手机的主芯片(联发科P10)旁边的确有一颗标注了VEB A3的芯片,这可能就是传说中金立M6的安全加密芯片了。

77350622_27.jpg

这颗VEB A3应该就是金立M6的“安全加密芯片”

不过如果你去百度VEB A3关键词就不难发现,早前就有一家“VEB”品牌的手机制造商,2014年推出过一款VEB V3手机,资料注明了采用VEB A3加密芯片(VEB第三代加密芯片)——同样主打安全加密。这款手机目前依然在京东有售,价格是惊人的28000元,宣传页面提到了“军工级加密运算”…这就更让人搞不清楚VEB在其中扮演的角色了,以及这两款手机的VEB V3是不是同一个。这样一来,M6安全加密芯片的技术细节也就很难了解到了。

但这些都不重要,只要能提供出色的安全表现和体验,何必在意供应商是谁。关键是这颗芯片对用户而言,究竟有什么价值?从金立的宣传来看,M6加密芯片主要负责“私密空间2.0”、“专线通话”和“支付保护”三项功能。

39809183.jpg

金立M6的“私密空间”

所谓的私密空间,是指用户可以将联系人、短信、通话记录、图片、文件和应用放入到一个加密的空间内,操作界面直接表现为有一个专门的“私密空间”,可对私密空间进行密码设置,输入密码才能进入——金立曾经提到过M6的加密芯片内置有独立的RAM、ROM和闪存。我们猜测这里的私密空间就是指,将资料以加密的方式保存在专门的加密芯片内(既然涉及到独立于主系统之外的Memory存储,果然还是需要成本投入的)。所以金立也说,即便手机被盗,将芯片取出来也无法获取其中的数据。

专线通话则是对通话过程进行加密防止窃听,但我们并不清楚通话过程是如何通过这颗芯片实现加密解密的。

支付保护则是系统对金融应用做安全认证、扫描支付环境、对支付验证码(也就是与支付相关的短信)单独加密保护。我们猜测,对金融应用做安全认证、扫描支付环境理应还是在系统层面以软件方式实现的,对支付验证码的加密保护或许是借用了加密芯片。至于用户指纹或密码之类的信息,可能需要打个问号,因为ARM的TrustZone原本是负责这部分工作的——这一点在下面还会做进一步的探讨。

safe-01.png

金立M6的安全功能不止上述三个,不过其他安全特性如伪基站防护、虚拟位置等主体上都是从系统层面着手的了,并不在本文的讨论范畴内。

总的来说,虽然我们不清楚金立M6加密芯片的工作流程(及其与主CPU的协作方式),但这种设计属于典型的在SoC之外增加硬件安全模块的方案。想一想,普通智能设备在Memory层面原本只包含了一般闪存、RAM内存、SoC的高速缓存(另外也包含底层ROM),要在这个流程中增加一个外来的“加密芯片”环节,对金立或者上一级解决方案提供商而言,是需要对设计流程做不少工作投入的,还需要在寸土寸金的手机内部,对手机空间、功耗和性能做多方权衡。所以这种设计理论上成本不低,不光是加块芯片这么简单。

这也不难理解为什么金立M6售价约在2300左右——金立M6所用的主芯片联发科P10在国产手机市场是定位于千元机级别的。想必金立的确在这款手机上花了些本钱,安全附加价值令这款手机比其他同配产品贵了一倍多(不知是否有VEB的前期经验…)。

这种安全设计真的好吗?

实际上金立M6安全加密芯片属于比较常规的设计思路,就是将普通世界和安全世界进行隔离,在安全世界中存储更有价值的信息。运用这种思路做安全设计的典范就是ARM芯片内部的TrustZone了——对半导体行业有了解的同人都知道,ARM是一家提供芯片设计IP的公司,现如今这个星球上超过九成的手机都采用ARM设计的CPU和芯片。高通、联发科、苹果、华为这样的厂商从ARM公司购买芯片设计授权,再做二次开发,推出自家的芯片产品应用到手机上。

ARM-Chip.jpg

早在多年以前,ARM就考虑到了芯片层面的安全问题,所以将专门解决安全问题的TrustZone融入到了此后几乎所有的芯片设计中。在谈ARM的TrustZone之前,有必要先聊聊苹果和iPhone。既然有媒体将金立M6的安全性与iPhone对比,那么提iPhone是如何做安全的就很有必要了。

苹果2013年推出了iPhone 5s,这款手机的一大变化就是加入了TouchID指纹识别传感器。很多人可能不知道的是,指纹识别传感器的采用并不只是关乎指纹识别技术,身份认证一旦涉及到生命体征(比如指纹),其安全性要求就会高出一截。就像许多人常说的,指纹识别这样的生命体征一旦被盗,就是永久被盗,无法像密码那样——泄露了大不了改掉就是。

所以iPhone 5s采用的A7主芯片(同样是ARM架构)内部有个叫做Secure Enclave的区域(苹果在自家的安全拍皮书中将之称作coprocessor-协处理器)。这个区域包含有硬件随机数生成器,并采用加密存储(高速缓存),用户的指纹数据就加密存储在这个位置,另外此处还针对数据防护密钥管理提供加密操作、生成唯一UID等等。

Apple-A7-chip-Secure-Enclave-001.jpg

Secure Enclave其实还有很多数据加密方面的特性,下面的章节中会详细探讨。

总之指纹、密钥、加密操作一类的相关安全的部分就隔离在CPU的这块Secure Enclave中。它就像一个黑匣子,与CPU其它区域的通讯也是被严格限制的,即便是系统级别的进程也无法获取Secure Enclave中像指纹这样的数据。针对指纹数据做解密的密钥只在Secure Enclave中使用,外界是拿不到的。

这里我们可以简单谈一谈指纹的加密存储。TouchID指纹识别传感器本身通过一个串行界面总线与处理器连接,数据是直接转往Secure Enclave的。双方针对指纹数据的加密和通讯方式是这样的:设备专为Touch ID指纹识别传感器和Secure Enclave准备了一个共享密钥,利用该共享密钥协商出一个会话密钥对指纹进行加密存储。会话密钥的交换又会采用双方“包装”的AES密钥,用提供的随机密钥生成该会话密钥,并采用AES-CCM传输加密。

这段话其实没有必要去深究。在你进行指纹识别的时候,指纹识别传感器首先对你的指纹做光栅扫描,将之临时存储到Secure Enclave中,分析过后就会丢弃。我们平常所见的任何应用(即便是系统级应用)要求用户按压指纹,无论是支付还是购买确认操作,它们实际上并没有机会拿到指纹数据——不仅指纹加密存储在Secure Enclave中,而且指纹只是客户端和服务器交互过程中本地加密解密的一个环节,而不会参与身份认证的数据传输过程。这种身份识别方式先前已经由FIDO联盟做出过标准化的统一。

272ac0b49ec77a727c3086841cf59baf.jpg

有关FIDO UAF标准的扩展

比如利用指纹来支付的场景,简单说来是设备生成公钥和私钥——针对用户、设备及卖家(也就是购物网站)。卖家那边仅持有公钥,而设备持有的私钥需要用指纹识别的方式来解锁。指纹数据本身是不在设备间和网络上传递的,这一点很重要。卖家一方能够获取到一些元数据,包括用户身份认证的方式(此处就是指纹识别)、所用的密钥保护机制以及设备型号,这些数据可用于后端风险分析。

这种方案是FIDO联盟提出来的,苹果的芯片和Android手机芯片基本都在遵循这套方案。其实想一想,网上购物的传统用户名、密码组合方式——卖家一方是需要和用户共同持有这个“私钥”的,只不过卖家一方以加密的方式存储私钥(也就是用户密码),卖家服务器如果被黑,数据就会被获取。但在FIDO这套方案中并不存在这样的风险,因为卖家并不持有私钥。

不过目前某些互联网服务的生物识别身份认证过程,的确有采用将生命体征(如声纹、指纹)存储在服务器上的方式——这种方式原则上是非常不被推崇和不安全的。

1E844388-6CC7-401A-BC8A-4F232FC2C9B1.png

虽然苹果没有公布过Secure Enclave的技术细节,但从其描述方式来看,和ARM设计中的TrustZone在理念上很相似,或许是TEE的其他实现方式,或者也可能是高度定制版TrustZone——TrustZone也是在处理器内部区隔出一块独立的安全区域(ARM称之为Secure World)。也就是将安全世界和普通世界进行隔离的设计理念。

听起来似乎和金立M6的设计也差不多,但千万不要忘记:无论是ARM芯片内部的TrustZone,还是苹果A7(到现如今的A10)芯片内部的Secure Enclave,它们都是在设计伊始就融入到整个系统的流程中的,也就是将安全作为芯片设计的必要环节。

所以这两者的设计思路是整合到处理器流程内部的,而金立M6安全芯片如前文所述更像是个“外来者”——虽然严格来说这也属于内置硬件安全模块。且不说这颗芯片中的加密数据经过总线和主芯片通讯的性能会打折扣,打个更为宏观的比方,现如今的企业安全都讲究将安全融入到业务中去,而不是在业务之外孤立地考虑安全问题,这就是两者的区别所在。

timg.jpg

这种在主芯片旁边采用定制硬件的方案的安全设计思路如果早几年应该是个可被接受的方案,但在TrustZone(TEE)普及之后就显得没那么给力了。就安全而言,其主要问题在于涉及的范围有限,投入产出不大成正比:没有人会将所有应用和数据全部放到“私密空间”,现实也不允许这么干,这就注定其保护的资产是不全面的。

《Securing Java》一书中总结用户在安全和功能之间做出选择时的一句话很有趣,在行业内也非常有名:

“要在跳舞的猪和安全之间做出选择,用户肯定总是会选跳舞的猪!”

这句话很形象地表达了,在安全事件出现之前,绝大部分人对安全的忽视。所以最佳方案是在整个“业务”流程中融入安全,令安全成为系统的组成部分,而不是独立于系统之外。不要寄希望于用户会主动选择安全,将数据主动放进“黑匣子”,而是帮他们去做这件事。

安全只是系统的组成部分

TrustZone主要就是在CPU内部构建一个叫做“Trust Execution Enviroment(TEE)”的区域,也就是前文所述的“安全世界”。这里的TEE早在很久之前就由GlobalPlatform提出了标准化,TrustZone算是遵循TEE的具体解决方案(TrustZone也并非唯一一种TEE解决方案)。其理念就是在硬件架构之中,将安全基础设施扩展到整个系统设计,比如安全启动、授权Debug之类的操作都考虑在其中。

在此,我们还可以对TrustZone的设计做一些简单展开。由于芯片具体实现比较枯燥,这里只谈其中的一小部分。

ARM-TrustZone-Schema.png

左边的Rich OS表现在手机上就是Android和iOS了

如前文所述,TrustZone的设计理念就是将整个SoC硬件和软件资源都分隔成两部分:安全子系统的“安全世界”,和常规使用的“普通世界”。“安全世界”有自己专有的操作系统(受信任的启动流程,Root of Trust),敏感数据就放在其中,也会有一些微应用运行在安全处理器核心之上,诸如加密、密钥管理和完整性检查,这个“世界”也有专门的安全Debug。AMBA3 AXI总线结构用于确保“安全世界”不会被“普通世界”的成员访问。

在具体实现上,比如如今占据移动芯片半壁江山的高通,其CPU内部的TrustZone名为QSEE,所用的安全操作系统叫QSEOS。QSEOS直接以系统调用的形式提供少量服务,由TrustZone自身内核处理。为了让受信任功能具有扩展性,TrustZone内核是可以加载执行名为“Trustlets”的小程序的——为“普通世界”操作系统(也就是Android)提供安全服务。一般来说这两个世界之间的通讯是需要经过操作系统的内核的。通常的Trustlets有:

Keymaster,Android的”keystore”守护进程提供的密钥管理API的具体实现,它的作用是生成存储加密密钥并让用户使用这些密钥。(FreeBuf去年曾经报道过高通芯片漏洞,可导致Android全磁盘加密被破解的核心就在这里)

Widevine,Widevine DRM的实现方式,就是在设备上进行媒体的“安全播放”。

当然了,TrustZone本身在实现方面绝不仅是在CPU内部划个单独的逻辑区域出来这么简单,有很多实际的问题需要解决和设计,比如AMBA3 AXI系统总线需要针对每个读写通道增加一个额外的控制信号,用这个信号比特位来确认处理操作究竟是Secure还是Non-secure。这样一来内部Cache也需要重新设计,这多出来的标记比特位可以看作是第33个地址位(NS,如下图所示)。如此就有更多实际问题要解决了。

CAD9BBBD-508D-45A4-900A-A1D8C1EFB188.png

带TrustZone的CPU的L1缓存示意图,这里的NS就是多出来的标记位,PA是物理地址、VA是虚拟地址、NSTID是指非安全表标记符(Non-secure Table Idenfitier);这表明了TrustZone对于缓存设计的影响

再比如TrustZone划分后,就有了两个虚拟处理器,但从实际物理属性来看仍是一个处理器。在处理具体工作的时候按照时序的方式来切换,这两个“世界”还要考虑工作切换的问题(用名为monitor mode的模式来进行切换,从“普通世界”进入到monitor mode的机制是被严格控制的,这个过程是通过软件执行Secure Monitor Call专门指令达成的,由“安全世界”内核处理这种SMC指令。)

另外,TrustZone在设计中还有个AMBA3 APB外围总线,让TrustZone能够用于保护外围组件,比如中断控制器、用户I/O设备。这样也就可以解决更广泛的安全问题了,比如采用安全键盘,实现用户密码的安全输入。

说了这么多其实是为了表达一点,这种将安全融入到整个流程内的设计方案,实现了更广范围的安全保护。但如果是在CPU外部加一颗“安全芯片”,这其中的价值又是完全不同的了。

而且实际上,当前绝大部分智能手机都已经用上了TrustZone方案,包括高通、联发科、三星、苹果,还有华为的海思处理器。那么金立M6就面临一个更有意思的问题,联发科P10主芯片内部的TrustZone,和外部那颗“安全加密芯片”,它们之间究竟是怎样一种工作关系呢?

加密?那不是应该的吗?

无论如何,金立M6的这颗安全加密芯片的主要价值就是重要数据的加密,且金立强调是从硬件层面实现加密,至于它能不能像ARM的TrustZone那样全程参与其它操作流程就不得而知了。数据加密对安全而言总是一件好事,但请等一等,iOS和Android早就实现全盘加密了。什么?你说那是软件层面的加密,和硬件加密不能比?有关这一点的争议问题我们按下不表。

回顾一下去年圣贝纳迪诺枪击案涉案的那台iPhone 5c——抛开可能存在的阴谋论不谈,这款手机的A6芯片都还没有加装Secure Enclave,即便后期利用种种复杂的手法可以实现解锁,实现成本却并不像很多人所说的那么低,也并没有破解其中的加密方式。且后期iOS是否是单纯的“软件加密”?为此,我们来简单了解一下iOS的数据防护机制是怎么做的。这部分内容可能会比较枯燥,没兴趣的可以直接跳过,或只看其中的粗体部分。

C4pqhwnWAAAu72n.jpg

每台iOS设备都有个专门的硬件级AES 256加密引擎,这个加密引擎位于闪存和主系统存储之间(DMA的路径之上)。在采用苹果A9芯片(也就是iPhone 6s)之后的设备上,闪存子系统位于单独的总线之上,只能通过DMA加密引擎来获取用户数据存储访问权。

iOS设备的UID和GID(一种群组ID)在设备出厂的时候就混合或者编译(GID)进了Secure Enclave之中,软件和固件只能看到AES引擎执行加密或解密(用UID和GID作为密钥)操作的结果;且也只有Secure Enclave中的AES引擎可以使用UID和GID。

对iPhone有了解的同学应该知道,这里的UID对于每一台苹果设备而言都是唯一的;GID则是根据设备做归类的一种ID(比如所有采用A8芯片的设备一类),GID主要用于非关键任务。值得一提的是,UID存在的价值主要在于,加密数据与某一台单独的设备存在唯一关联性,所以如果将iPhone的闪存芯片单独取下来,文件是没法读出来的,除了CPU中的Secure Enclave,系统的其他组成部分又无法获取UID。

此外,除了UID和GID,还有各种加密密钥都采用Secure Enclave中的硬件级随机码生成器生成。系统熵由启动期间的时间变量,和设备启动时的中断时间形成。

除了Secure Enclave相关的加密、密钥存储和生成,苹果设备闪存数据存储现如今都已经用上了所谓的“Data Protection”机制。简单说来每一个文件生成的时候,Data Protectio机制都会生成新的256位密钥(也就是所谓的per-file key),并将之交予前面提到的AES引擎,AES引擎在该文件写入闪存的时候,通过AES CBC模式对文件做加密(其中的IV本身也比较复杂)。

这里的per-file key密钥本身会再采用“类密钥(class key)”进行包装(具体是哪一类取决于文件访问的具体情况),经过包装之后的per-file key就会存储到文件的元数据中。打开文件的时候,元数据先采用文件系统密钥来解密,找到其中包装过的per-file key及其“类”标记,然后就可以得到真正的per-file key了,再传递给AES引擎对文件做最终解密。

7A076F4C-A861-443F-A844-3A2F710BEBC2.png

整套机制里,上面所谓“包装”文件key的过程都是在Secure Enclave中进行的,所以处理器的“普通世界”并不知悉。

在启动过程中,Secure Enclave还会和AES引擎协商一个临时密钥,在Secure Enclave对文件密钥进行解包装的时候,文件密钥会再与该临时密钥做重新打包,随后才发回给应用处理器。再另外,上文提到所有文件的元数据本身就会做加密,这个密钥是在iOS系统初次安装(或被擦除)的时候生成的一个随机密钥。

最后值得一提的是,用户一般会给手机设置一个解锁密码,或者采用指纹解锁。用户密码或者指纹数据,本身也参与文件加密过程,主要是配合UID共同生成上文提到的“类密钥”的(往上翻一下,就是那个用来包装per-file key的密钥)。

整套机制说起来和看起来都非常费劲,总结一下就是环环相扣,层层递进,iOS的每个文件都加密。可以想见FBI针对罪犯iPhone数据获取的问题主要来自哪里。

这些实际还只是苹果设备安全的一个环节,iOS的安全还包括启动流程的几层安全认证:启动过程的每一步都包含苹果加密签署的组件,以确保完整性。这个链条包括Bootloaders、Kernal、Kernel Extensions,以及基带固件。Secure Enclave与属于Secure Boot Chain的一个环节,所以现在的iPhone几乎已经很难再刷进第三方固件。

image1.png

说这么多并不是为了表明iPhone的Secure Enclave和数据保护方案做得有多好,而是在金立M6宣称“硬件级”加密的时候,苹果玩儿的这一套早就不知将金立甩到哪里去了。通过对iPhone Secure Enclave相关数据保护的阐述,也不难发现,将安全融入到系统全套流程中有多么必要,不光是全局和局部安全的差异。反观金立M6的“私密空间”,这还是个事儿吗?

不过问题又来了,Android系统从6.0版本开始也采用强制全盘加密,虽然我们并没有去研究Android文件加密的方案,但金立M6私密空间的加密和普通文件的加密流程,又是如何做流程设计的呢?这和上一段中提及主芯片的TrustZone及其安全加密芯片如何配合工作,大致上也算是同一个问题了。

什么样的芯片设计是安全的?

TEE出现这么久并不值得歌颂,因为这是如今移动安全的标配。而TrustZone也并非无懈可击,去年的GeekPwn2016黑客大赛上,美国Shellphish团队宣布攻破华为P9 Lite的加密功能,实际上破解的就是海思Kirin芯片中的TrustZone,实现任意指纹解锁手机。“安全世界”无论如何还是需要和“普通世界”做交互的,找准具体实现的漏洞,还攻破TrustZone也是完全可行的。

580d76c99354d.jpg

去年GeekPwn黑客大赛上,攻破TrustZone的Shellphish团队成员

Shellphish攻击的主要思路是首先找到系统内核驱动的一个漏洞(CVE-2015-4421),这个驱动和上文谈到的SMC请求是有关的;随后再利用华为自家TEE(也就是“安全世界”)中的操作系统RTOSck的漏洞(CVE-2015-4422)最终实现在TrustZone内部操作系统中实现任意代码执行,并且从传感器获取指纹图像。举个例子,这些利用环节中海思麒麟芯片TEE内部的受信任应用名为TA,具体如安全存储(TA_SecStorage)、指纹扫描(TA_FingerPrints)等,而其中有个“TEEGlobalTask”是TEE用户模式的首要TA,负责将外部的调用发往其他TA提供的子服务。这里的TEEGlobalTask没有进行边界检查,TEE内部也几乎没有什么漏洞缓解机制,如ASLR/DEP等,这些都提供了更大的攻击面。

至于高通的TrustZone,去年国外有名黑客在自己的博客上连续发布了数篇探讨高通QSEE的文章。他的其中一篇文章分享了QSEE提权漏洞(CVE-2015-6639),抓住了Linux内核中qseecom的软肋,这个qseecom可让用户空间进程执行各种与TrustZone相关的操作,比如将Trustlets载入到安全环境,并与之通讯的操作。有趣的是,这个过程越过了Linux内核直捣QSEE。

minas_tirith.png

qseecom可以算得上是一个较大的攻击面,所以其访问仅限于极少的进程,其中包括了mediaserver,攻陷了mediaserver就能直捣QSEE的Trustlet了!

这个世界看来根本就没有什么手机是安全的,更何况我们这里还只谈到了芯片层面的安全问题。但ARM的TrustZone白皮书输出了在我们看来相当到位的安全理念,即移动设备总是要不可避免地遭受攻击。

其中有一类攻击名为Lab Attack(实验室攻击)。这种攻击在实验室里通过电子探针进行针对设备的专业级逆向工程,甚至可以细致到晶体管级别,还能通过监控模拟信号,如设备电量使用、电磁发射来执行加密密钥分析之类的攻击。一般来说,任何设备在这种攻击强度下都会被攻破,所以产品在进行安全设计的时候没有必要考虑抵御Lab Attack,这类攻击的攻击成本本身也相当之高。

对手机芯片或者安全环节上的很多组成部分而言,

1.任何一种设计出来的安全方案都不应该用“不可能被绕过”来形容,而应该这样描述:“A攻击针对B资产的攻击,至少需要耗费Y天,Z美元的成本。”因为所有的安全措施,只要有足够的时间和金钱都能被攻破。如果花费的时间和金钱成本太长太多,这样的防御就是成功的。

2.不仅攻击复杂度高,而且攻击方案无法简单复制到其他同类设备之上,也就是说攻击一台设备成功后,如果还想攻击其他同类设备,则还需要付出同样程度的劳动,这样的防护也可以认为是成功的。

(比如绝大部分安全措施首次被攻破所需花费的成本比较高,但一旦首次被攻破,后续就可以几乎零成本地进行攻击了。这种攻击就是简单可复制的)

比如针对圣贝纳迪诺枪击案涉案的那台iPhone 5c,虽然市面上涌现了各种攻破手法,随之而来就有不少媒体说iPhone并不安全。但是这些攻击手法并不具有简单可复制性,也不是普通人在家里就能搞定的。如同TrustZone和Secure Enclave的大部分攻破方式都并不简单,虽然的确也可以从中看出其具体实现方式设计过程中的一些疏忽。

14695998175641.jpg

最后顺带一说,除了安全加密芯片之外,金立M6也支持伪基站信息屏幕、虚拟位置、通话防录音。这些功能应该是在系统层面实现的,不过这类安全功能算不上稀奇,许多国产手机都已经带有同类功能。而且像华为这样具有垂直整合能力的厂商,已经开始从芯片层面着手防伪基站了(去年的ISC大会上,海思安全研究人员的分享就提到过这一点)。

更有趣的是,黑莓还没有卖身TCL之前曾经推出过一款手机DTEK50,宣传语是“最安全的Android手机”。这款手机的CPU有特别定制,实际上先前就有传说黑莓的许多关键硬件组成都是定制的,包括闪存芯片、CPU等,连PCB主板都进行了JTAG屏蔽;在系统层面,黑莓当时宣称每个月都会越过谷歌独立推安全补丁。即便如此也不过是最安全的“Android手机”,大约是黑莓深知,硬件底层做得再安全,在Android面前也不过是惘然。

那么金立M6还有可能是最安全的手机吗?

主要参考来源:

[1] iOS安全(https://www.apple.com/business/docs/iOS_Security_Guide.pdf

[2] ARM安全技术(http://infocenter.arm.com/help/topic/com.arm.doc.prd29-genc-009492c/PRD29-GENC-009492C_trustzone_security_whitepaper.pdf

[3] 用基于ARM TrustZone的TEE与FIDO来保护认证的未来(https://www.arm.com/files/pdf/TrustZone-and-FIDO-white-paper.pdf

[4] 探索高通SEE(http://bits-please.blogspot.co.il/2016/04/exploring-qualcomms-secure-execution.html

* 本文作者:欧阳洋葱,FreeBuf官方出品,未经许可禁止转载

转载请注明来自华盟网,本文标题:《芯片安全漫谈:采用加密芯片的金立M6,真的是“最安全”的手机吗?》

喜欢 (3) 发布评论