TEE、FIDO、加密芯片,从金立M6“最安全”手机说起芯片安全
2024-02-20 09:06:31发布 浏览443次 信息编号:98579
友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。
TEE、FIDO、加密芯片,从金立M6“最安全”手机说起芯片安全
这就是你们所谓的金立语音王吗?
去年7月,外媒《福布斯》在介绍金立M6手机(什么?你只知道金立语音王?)时提到,“深圳这家公司宣传这款手机是‘全球最安全的手机’。”其 128 位加密芯片,因此非常安全。” 不少外媒也纷纷效仿,用上了“最安全”这个词。 事实上,当我们去追根溯源时,并没有发现金立官方做过这样的宣传。 不过,国内仍有不少媒体打出类似“这可能是目前最安全的手机”、“iOS确实不是最安全”之类的头条……无论如何,这款手机是以安全为卖点的。观点。 距离编辑部不远的地铁站入口已经贴满了金立M6的广告半年多了,“内置加密安全芯片”的标语每天都挥之不去。
实际情况可能并不像厂家或者很多媒体宣传的那么简单。 手机安全本身就是一个极其庞大的话题。 对于任何一款手机来说,安全贯穿于每一个环节,从终端的手机App安全,到系统安全(以及iOS)、网络通信安全,再到手机厂商自身。 互联网服务安全,还有底层芯片安全……
不过,根据金立的宣传,M6手机内置了特殊的加密芯片,因此我们尝试从底层芯片安全的角度来谈谈目前智能手机芯片的安全状况。 由于金立尚未公布这款“加密芯片”的技术细节,因此我们很难在短时间内了解这款芯片在整个手机系统中扮演什么角色。 因此,本文将尝试从芯片安全的主流设计方法入手。 下面我们就来说说金立M6的设计是否值得欣赏。
但是鹅,现在看起来像这样
它是什么样的芯片?
据金立介绍,这颗“安全芯片”是一颗位于M6手机主芯片旁边的独立芯片:“M6采用硬件加密。为此,M6内置了安全加密芯片。该加密和解密过程、加密密钥存储全部在这块芯片中完成。” 金立官方仅解释称,这款芯片采用了“与商业银行相同的加密算法,通过这款芯片,金立M6可以实现私密空间、专线通话、支付保障等多项功能”。
关于这款芯片唯一能查到的信息就是国内媒体《手机新闻》提到的内容。 该安全芯片由苏州国芯设计,芯达吉安提供整体解决方案。 据悉,金立此前已通过国家神秘动物管理局审批,获得《商品化隐动物产品生产定点单位证书》和《商品化隐动物产品销售许可证》。 该芯片“采用SM4(国家商用密码管理办公室规定的分组密码算法)加密算法,安全级别与AES一致”。 从加密算法来看,大致推断是国家机密。
另一方面,从媒体对金立M6手机的拆解来看,这款手机的主芯片(联发科P10)旁边确实有一颗标记为VEB A3的芯片。 这可能就是传说中的金立M6的安全加密芯片。
这个VEB A3应该就是金立M6的“安全加密芯片”
不过,如果你去百度VEB A3关键词,不难发现,早前就有一家手机厂商打着“VEB”品牌。 它在2014年推出了VEB V3手机,资料表明它采用了VEB A3加密芯片(VEB第三代加密芯片)——同样主打安全加密。 这款手机目前仍在京东发售,售价达到惊人的28000元。 宣传页面提到“军用级加密计算”……这让人们更加不清楚VEB在其中扮演的角色,以及这两款手机的区别。 VEB V3 不一样。 导致M6安全加密芯片的技术细节难以理解。
但这些都不重要。 只要能提供优秀的安全性能和体验,何必在意供应商是谁。 关键是这款芯片对于用户来说有什么价值? 从金立的宣传来看,M6加密芯片主要负责“私人空间2.0”、“专线通话”和“支付保护”三大功能。
金立M6的“私人空间”
所谓私密空间,是指用户可以将联系人、短信、通话记录、图片、文件和应用程序放入加密的空间中。 操作界面直接显示一个专用的“私人空间”,可以对私人空间进行控制。 设置密码并输入密码即可进入——金立曾提到M6加密芯片内置了独立的RAM、ROM和闪存。 我们猜测这里的私有空间是指将数据以加密的方式存储在专门的加密芯片中(由于涉及到独立于主系统的存储,所以还是需要成本投入的)。 因此,金立也表示,即使手机被盗,也无法通过取出芯片来获取数据。
对于专用通话,通话过程是加密的,防止窃听,但我们不知道通话过程是如何通过这个芯片进行加密和解密的。
支付保护是指系统对金融应用进行安全认证,扫描支付环境,并对支付验证码(即支付相关短信)进行单独加密和保护。 我们推测,金融应用和扫描支付环境的安全认证应该在系统层面的软件中实现,支付验证码的加密保护可能会借用加密芯片。 至于用户指纹或者密码之类的信息,你可能需要打上问号,因为ARM本来就负责这部分工作——这将在下面进一步讨论。
金立M6的安全功能不止以上三种,但其他安全功能如伪基站防护、虚拟定位等主要基于系统层面,不在本文讨论范围内。
总体而言,虽然我们不知道金立M6加密芯片的工作流程(以及它如何与主CPU配合),但这种设计是典型的在SoC之外添加硬件安全模块的设计。 想一想,普通的智能设备原本只包括通用闪存、RAM内存和SoC缓存(还包括底层ROM)。 要在这个过程中加入一个外部的“加密芯片”环节,对于金立或者尚来说都将是非常困难的。 对于一线解决方案提供商来说,他们需要在设计过程中投入大量的工作,还需要在空间宝贵的手机内部空间、功耗和性能等方面进行多重权衡。 因此,这种设计的成本理论上来说并不低,而且不仅仅是加一块芯片那么简单。
这也不难理解为什么金立M6的售价在2300左右——金立M6采用的主芯片联发科P10在国内手机市场定位于千元级别。 想必金立确实在这款手机上花了一些钱。 安全性的附加值让这款手机比其他配套产品贵了一倍多(不知道有没有早期使用VEB的经验...)。
这样的安全设计真的好吗?
事实上,金立M6安全加密芯片有一个比较常规的设计思路,就是将普通世界与安全世界隔离,在安全世界中存储更有价值的信息。 利用这种思想做安全设计的一个例子是ARM芯片内部——了解半导体行业的人都知道ARM是一家提供芯片设计IP的公司。 如今,全球 90% 以上的手机都使用 ARM。 设计了CPU和芯片。 高通、联发科、苹果、华为等厂商向ARM购买芯片设计授权,进行二次开发,推出自己的手机芯片产品。
早在很多年前,ARM就已经在芯片层面考虑了安全问题,因此此后几乎所有的芯片设计中都融入了针对安全问题的特殊解决方案。 在讲ARM之前,有必要先讲讲苹果和ARM。 既然有媒体对金立M6的安全性进行了比较,那么有必要提一下如何做到安全。
苹果在2013年推出了5s。这款手机的一个重大变化就是增加了指纹识别传感器。 许多人可能不知道的是,指纹识别传感器的采用不仅仅是指纹识别技术。 一旦身份认证涉及生命体征(如指纹),安全性要求就会更高。 正如很多人常说的那样,指纹识别等生命体征一旦被盗,就永远被盗了。 它不能像密码一样——如果泄露,它只会被更改。
因此,5s中使用的A7主芯片(也是ARM架构)有一个叫做协处理器的区域(苹果在自己的安全文档中称之为协处理器)。 该区域包含硬件随机数生成器并使用加密存储(缓存)。 用户的指纹数据被加密并存储在该位置。 此外,这里还提供了加密操作,用于数据保护密钥管理、唯一UID生成等。
事实上,数据加密的特性有很多,将在后面的章节中详细讨论。
总之,指纹、密钥、加密操作等与安全相关的部分都被隔离在这部分CPU中。 它就像一个黑匣子,与CPU其他区域的通信受到严格限制。 即使是系统级进程也无法获取指纹等数据。 用于解密指纹数据的密钥仅在数据库中使用,外界无法获取。
这里我们可以简单说一下指纹的加密存储。 指纹识别传感器本身通过串行接口总线连接到处理器,数据直接传输给它。 双方指纹数据的加密和通信方法如下:设备专门为Touch ID指纹识别传感器准备共享密钥,并使用共享密钥协商会话密钥来加密和存储指纹。 会话密钥交换将使用双方“包装”的AES密钥,用提供的随机密钥生成会话密钥,并使用AES-CCM传输加密。
这段话其实没有必要深究。 当您进行指纹识别时,指纹识别传感器首先对您的指纹进行光栅扫描,暂时存储在指纹扫描仪中,分析完成后将其丢弃。 我们平常看到的任何应用程序(甚至是系统级应用程序)都需要用户按下指纹,无论是支付还是购买确认操作,他们实际上没有机会获得指纹数据——不仅指纹被加密存储在计算机,但指纹只是用户的指纹。 属于客户端与服务器交互过程中本地加解密的一部分,不会参与身份认证的数据传输过程。 这种识别方法此前已被FIDO联盟标准化和统一。
FIDO UAF 标准的扩展
例如,当使用指纹支付时,简单地说,设备生成公钥和私钥——针对用户、设备和卖家(即购物网站)。 卖家只持有公钥,设备持有的私钥需要使用指纹识别来解锁。 重要的是,指纹数据本身不在设备之间和通过网络传递。 卖家可以获得一些元数据,包括用户身份验证方法(在本例中为指纹识别)、使用的密钥保护机制以及设备型号。 该数据可用于后端风险分析。
这个计划是由FIDO联盟提出的,苹果的芯片和手机芯片基本遵循这个计划。 其实想一想,传统的网购用户名和密码组合方式——卖家需要和用户共同持有这个“私钥”,但卖家将私钥(即用户密码)存储在一个加密方式。 ,如果卖家的服务器被黑客入侵,数据就会被获取。 但FIDO解决方案不存在这样的风险,因为卖方不持有私钥。
然而,目前一些互联网服务的生物识别身份认证过程确实采用了在服务器上存储生命体征(例如声纹和指纹)的方法——这种方法原则上是非常不受欢迎和不安全的。
虽然苹果没有公布技术细节,但从描述的方式来看,它在概念上与ARM的设计非常相似。 它可能是 TEE 的其他实现,也可能是高度定制的版本 - 也在处理器内部。 分离出一个独立的安全区域(ARM称之为World)。 这就是将安全世界与普通世界隔离的设计理念。
听起来和金立M6的设计类似,但别忘了:无论是ARM芯片内部还是苹果A7(到现在的A10)芯片内部,它们从设计之初就融入到了整个系统中。 在此过程中,安全被视为芯片设计的必要组成部分。
因此,两者的设计思路都融入到了处理器工艺中,金立M6安全芯片更像是上文提到的“局外人”——虽然严格来说,它也是一个内置的硬件安全模块。 更不用说该芯片中通过总线与主芯片通信的加密数据的性能会受到影响。 用更宏观的比喻来说,当今的企业安全重点是将安全集成到业务中,而不是业务外部。 孤立地考虑安全性,这就是区别所在。
这种在主芯片旁边使用定制硬件的安全设计思路在几年前应该是可以接受的解决方案,但在(TEE)流行之后,它的效果就变得不那么有效了。 就安全性而言,主要问题是涉及范围有限,投入与产出不成正比:没有人会将所有应用和数据放在“私有空间”,而现实不允许这样做,这注定了资产保护的不全面。
《Java》一书中总结用户在安全性和功能性之间的选择的一句话非常有趣,在业界也非常有名:
“在跳舞猪和安全之间做出选择,用户永远会选择跳舞猪!”
这句话形象地表达了安全事件发生前大多数人对安全的忽视。 所以最好的解决方案是将安全融入到整个“业务”流程中,让安全成为系统不可分割的一部分,而不是独立于系统之外。 不要希望用户主动选择安全并将数据放入“黑匣子”中,而是帮助他们这样做。
安全只是系统的一部分
主要是在CPU内部构建一个叫做“Trust(TEE)”的区域,也就是上面提到的“安全世界”。 这里的TEE很早之前就已经标准化了,可以看作是遵循TEE的具体解决方案(而且并不是唯一的TEE解决方案)。 其思路是在硬件架构上将安全基础设施延伸到整个系统设计中,比如安全启动、授权调试等操作都被考虑在内。
在这里,我们还可以做一些简单的扩展设计。 由于芯片的具体实现比较枯燥,这里只讨论其中的一小部分。
左侧的 Rich OS 的行为与手机上的 iOS 完全相同。
前面提到,设计理念是将整个SoC软硬件资源分离为两部分:安全子系统的“安全世界”和常规使用的“正常世界”。 “安全世界”有自己专有的操作系统(可信启动进程,信任根),敏感数据放置在其中。 安全处理器核心上还会运行一些微应用,比如加密、密钥等管理和完整性检查,这个“世界”还有专门的安全调试。 AMBA3 AXI总线结构用于确保“安全世界”不能被“正常世界”的成员访问。
从具体实现来看,比如目前占据移动芯片市场半壁江山的高通,其内部的CPU叫做QSEE,其使用的安全操作系统叫做QSEOS。 QSEOS直接以系统调用的形式提供少量服务,这些服务由自己的内核处理。 为了使可信功能可扩展,内核可以加载并执行名为“”的小程序——为“正常世界”操作系统(即)提供安全服务。 一般来说,两个世界之间的通信需要经过操作系统的内核。 通常的有:
、“”守护进程提供的密钥管理API的具体实现。 它的作用是生成和存储加密密钥并让用户使用这些密钥。 (去年就报道了高通芯片漏洞,可导致全盘加密被破解的核心就在这里)
,DRM的实现是在设备上对媒体进行“安全播放”。
当然,实现本身并不只是在CPU内部划分一个单独的逻辑区域那么简单。 有很多实际问题需要解决和设计。 例如,AMBA3 AXI系统总线需要为每个读写通道添加额外的控制。 信号,用该信号位来确认处理操作是否为Non-。 因此,内部Cache也需要重新设计。 额外的标记位可以视为第33位地址位(NS,如下图所示)。 那么还有更多的实际问题需要解决。
CPU的L1缓存示意图。 这里的NS是额外标记位,PA是物理地址,VA是虚拟地址,NSTID指的是非安全表标记(Non-Table); 这显示了对缓存设计的影响。
又比如,分区后,虚拟有两个处理器,但从实际的物理属性来看,仍然是一个处理器。 在处理具体工作时,按时间顺序切换。 这两个“世界”还需要考虑工作切换的问题(使用一种称为mode的模式进行切换,从“正常世界”进入模式的机制是受到严格控制的,这个过程是通过软件执行Call来实现的特殊指令,“ World”核心处理该 SMC 指令。)
此外,设计中还有一条AMBA3 APB外设总线,可用于保护外设组件,如中断控制器和用户I/O设备。 这还可以解决更广泛的安全问题,例如使用安全键盘实现用户密码的安全输入。
我说了这么多,其实就是想表达一点。 这种将安全融入全流程的设计方案,实现了更广泛的安全防护。 但如果在CPU之外加上一块“安全芯片”,价值就完全不一样了。
事实上,目前大多数智能手机都已经使用了该解决方案,包括高通、联发科、三星、苹果和华为的海思处理器。 那么金立M6面临着一个更有趣的问题。 内部联发科P10主芯片与外部“安全加密芯片”之间的工作关系是怎样的?
加密? 这不是应该的吗?
无论如何,金立M6的安全加密芯片的主要价值在于重要数据的加密,而金立强调加密是在硬件层面实现的。 目前尚不清楚它是否可以像ARM那样完全参与其他操作进程。 数据加密对于安全来说总是一件好事,但是等等,iOS和iOS很早之前就实现了全盘加密。 什么? 你说是软件级加密,不能和硬件加密相比? 关于这一点有争议的问题我们就不一一列举了。
回顾去年圣贝纳迪诺枪击事件中涉及的 5c——抛开可能的阴谋论,这款手机的 A6 芯片尚未安装,即使稍后可以使用各种复杂的技术解锁。 实现成本并没有很多人说的那么低,而且加密方式还没有被破解。 而iOS未来会只是简单的“软件加密”吗? 为此,我们简单了解一下iOS的数据保护机制是如何实现的。 这部分内容可能比较无聊。 如果不感兴趣可以直接跳过,或者直接看加粗部分。
每个 iOS 设备都有一个专用的硬件级 AES 256 加密引擎,位于闪存和主系统存储之间(DMA 路径之上)。 在Apple A9芯片(即6s)之后的设备上,闪存子系统位于单独的总线上,只能通过DMA加密引擎获得用户数据存储访问。
iOS设备的UID和GID(一个组ID)在出厂时就被混合或编译(GID)到设备中。 软件和固件只能看到执行加密或解密的AES引擎(使用UID和GID作为密码)。 key) 运行结果; 并且只有 中的 AES 引擎可以使用 UID 和 GID。
了解的同学应该知道,这里的UID对于每台苹果设备来说都是唯一的; GID是根据设备(如所有使用A8芯片的设备)进行分类的ID。 GID 主要用于非关键任务。 值得一提的是,UID的价值主要在于加密数据与单个设备之间的唯一关联性。 因此,如果单独移除闪存芯片,则无法读取文件,除非在CPU中。 系统的其他组件无法获取UID。
此外,除了UID和GID之外,还使用硬件级随机代码生成器生成各种加密密钥。 系统熵由启动期间的时间变量和设备启动时的中断时间形成。
除了相关的加密、密钥存储和生成之外,苹果设备闪存数据存储现在采用了所谓的“数据”机制。 简单来说,当每个文件生成时,Data机制都会生成一个新的256位密钥(所谓的per-file key),并将其交给前面提到的AES引擎。 AES引擎在文件写入烧写时,通过AES CBC模式对文件进行加密(IV本身也比较复杂)。
这里的每文件密钥将与“类密钥”一起打包(具体类型取决于文件访问的具体情况),打包后的每文件密钥将存储在文件的元数据中。 打开文件时,首先使用文件系统密钥对元数据进行解密,然后找到包装的每个文件密钥及其“类”标签。 然后就可以获得真正的每个文件密钥,然后传递给 AES 引擎进行验证。 文件终于被解密了。
整个机制中,上面所谓的“打包”文件密钥的过程是在处理器中进行的,因此处理器的“平凡世界”是未知的。
在启动过程中,还将与 AES 引擎协商临时密钥。 当文件密钥被解包时,文件密钥将与临时密钥一起重新打包,然后被发送回应用处理器。 另外,如上所述,所有文件本身的元数据都会被加密。 该密钥是iOS系统首次安装(或擦除)时生成的随机密钥。
最后值得一提的是,用户一般会为手机设置解锁密码或者使用指纹解锁。 用户密码或指纹数据本身也参与文件加密过程,主要与UID一起生成上面提到的“类密钥”(向上滚动,它是用于包装每个文件密钥的密钥)。
整个机制听起来、看起来都非常费力。 综上所述,它是互联的、渐进的,iOS中的每个文件都是加密的。 你可以想象联邦调查局在获取犯罪数据方面的主要问题来自哪里。
这些实际上只是苹果设备安全性的一方面。 iOS 安全性还包括针对启动过程的多层安全身份验证:启动过程的每个步骤都包含由 Apple 加密签名的组件,以确保完整性。 该链包括、、、和基带固件。 它是Boot Chain的一部分,所以现在刷第三方固件几乎很难。
这么说并不是为了展示数据保护方案做得有多好,但当金立M6声称拥有“硬件级”加密时,苹果的伎俩早已把金立甩在了后面。 通过对相关数据保护的阐述,不难发现将安全融入到整个系统流程中是多么必要,而不仅仅是全局安全和局部安全的区别。 反观金立M6的“私人空间”,这还是个东西吗?
但问题又来了。 系统从6.0版本开始还采用了强制全盘加密。 虽然我们没有研究过文件加密方案,但是金立M6私密空间加密流程和普通文件加密流程是如何设计的呢? 这与上一段提到的主芯片及其安全加密芯片如何协同工作的问题大致相同。
什么样的芯片设计才是安全的?
TEE 存在这么久并不值得称赞,因为它是当今移动安全的标准。 而且它并不是完美无缺的。 在去年的黑客大赛上,美国队宣布破解了华为P9 Lite的加密功能。 事实上,被破解的是海思麒麟芯片,允许任何指纹解锁手机。 无论如何,“安全世界”仍然需要与“普通世界”互动。 在具体实现中找到漏洞并破解是完全可行的。
去年的黑客大赛上,闯入的队员
该攻击的主要思路是首先找到系统内核驱动程序中的漏洞(CVE-2015-4421)。 这个驱动与上面提到的SMC请求有关; 然后利用华为自己的TEE(即“ World”)操作系统漏洞(CVE-2015-4422),最终实现内部操作系统中的任意代码执行,并从传感器获取指纹图像。 例如,在这些利用环节中,海思麒麟芯片TEE内部的可信应用被命名为TA,比如安全存储()、指纹扫描()等,其中有一个“”,就是初级TA在TEE用户态,负责将调用发送到其他TA提供的子服务。 这里没有边界检查,TEE内部几乎没有漏洞缓解机制,如ASLR/DEP等,提供了更大的攻击面。
至于高通,去年国外一位知名黑客在其博客上发表了多篇讨论高通QSEE的文章。 他的一篇文章分享了 QSEE 权限提升漏洞 (CVE-2015-6639),该漏洞抓住了 Linux 内核中的弱点。 这允许用户空间进程执行各种相关操作,例如加载到安全环境中。 ,以及与之通信的操作。 有趣的是,这个过程绕过了Linux内核,直接进入QSEE。
它可以被视为一个很大的攻击面,因此它的访问仅限于极少数进程,包括QSEE。 如果被攻破,可以直接攻击QSEE!
看来这个世界上根本就没有手机是安全的,更何况我们这里只讨论芯片级的安全问题。 但ARM的白皮书输出了一个我们认为相当到位的安全理念,那就是移动设备总是不可避免地会受到攻击。
一种类型的攻击称为Lab(实验室攻击)。 这种攻击利用电子探针在实验室对设备进行专业级的逆向工程,甚至深入到晶体管级别,还可以通过监控模拟信号(例如设备电量使用情况和电磁辐射)来进行加密密钥分析。 攻击。 一般来说,任何设备在这种攻击强度下都会被攻破,因此在安全设计产品时无需考虑抵抗Lab。 这种攻击本身的攻击成本也相当高。
对于手机芯片或者安全链路的很多部件来说,
任何设计的安全解决方案都不应该被描述为“不可能被绕过”,而应该被描述为:“针对资产B的攻击将至少花费Y天和Z美元。” 因为只要有足够的时间和金钱,所有的安全措施都可以被破坏。 如果需要太长的时间和太多的资金,这样的防御就会成功。
2.不仅攻击的复杂性很高,而且攻击计划不能轻易复制到其他类似设备。 也就是说,在成功攻击一台设备之后,如果您想攻击其他类似的设备,您仍然需要将其放入相同的人工水平。 保护也可以被认为是成功的。
(例如,第一次违反大多数安全措施的成本相对较高,但是一旦第一次违反了该措施,就可以以几乎为零的成本进行随后的攻击。这种攻击是简单且可复制的)
例如,对于参与圣贝纳迪诺枪击事件的5C,尽管市场上出现了各种攻击方法,但许多媒体随后表示,这是不安全的。 但是,这些攻击方法不容易复制,普通人也不能在家中这样做。 大多数攻击方法都喜欢并且并不简单,尽管确实可以看到其特定实现方法的设计过程中的某些监督。
最后,顺便说一句,除了安全加密芯片外, M6还支持伪基站信息屏幕,虚拟位置和呼叫反记录。 这些功能应在系统级别上实现,但是这种类型的安全功能并不少见。 许多国内手机已经具有相似的功能。 此外,具有华为等具有垂直整合功能的制造商已开始从芯片级别开发反遇到的基础站(这在去年ISC会议上的安全研究人员的共享中提到)。
更有趣的是,在出售给TCL之前,它已经启动了一个口号“最安全的手机”手机。 该手机的CPU是专门定制的。 实际上,有传言称,的许多关键硬件组件都是自定义的,包括闪存芯片,CPU等,甚至PCB主板也被JTAG屏蔽; 在系统级别,声称,每个月每个月都会独立于推出每个安全补丁。 即便如此,它只是最安全的“手机”。 可能知道,无论硬件的底层有多安全,它都不过是损失。
那么, M6可能是最安全的手机吗?
从。
提醒:请联系我时一定说明是从星空网上看到的!