赞
踩
最近在看一本书《隐私计算》
其中有一句话比较映像深刻,隐私计算的关键–>实现数据的可用不可见。
那么为了实现这样的目的现在所具有的技术主流的三种:多方安全计算(密码学技术)、联邦学习(融合延伸)、可信执行环境(可信硬件)以及其他的非主流技术。
我现在搞的所相关的就是这个可信执行环境技术,那么这里就来看看这个相关的,其他的推荐看一下书了解一下,但是就嵌入式领域来说,可信执行肯定是最主要的,当然在做实验的时候也涉及到了混淆电路,这个是多方安全计算领域的东西。但是这个界限也不要卡的很死板。
下面我们来跟着书来学习一下➢可信执行环境
简单来说,可信执行环境(TEE)就是打造一个用于执行计算的独立区域,是机密的、安全的。
TEE的核心思想是隔离,就是将TEE与操作系统分割开并行运行。在CPU为TEE提供的特定区域内,数据和代码的执行完全与外部环境隔离,保证了机密性和完整性,TEE内的应用程序可以正常访问CPU和内存的全部功能,但又不会受到操作系统中其他应用程序的影响。
TEE的核心思想是隔离,就是将TEE与操作系统分割开并行运行。在CPU为TEE提供的特定区域内,数据和代码的执行完全与外部环境隔离,保证了机密性和完整性,TEE内的应用程序可以正常访问CPU和内存的全部功能,但又不会受到操作系统中其他应用程序的影响。
最初,可信执行环境是在移动设备的安全应用需求下催生的。随着移动设备的快速普及,技术发展可以支撑用户实现越来越多的智能应用。
移动设备上的通用环境被称为REE(Rich Execution Environment),其上运行通用的操作系统Rich OS(Operating System,例如Android、iOS等)。REE是一个开放的、通用的、可扩展的环境,支持用户下载与安装各类应用程序,实现越来越多的智能、快捷应用。但也正是由于移动设备的开放环境,安全问题受到了越来越多的重视。
REE上OS的设计复杂,代码庞大,漏洞频发且OS的设计可以看到运行其上的程序内部的所有数据。而信息安全攻击手段也在不断变化,大量的恶意代码和投毒攻击都会威胁移动设备的数据安全,特别是当用户使用设备进行身份验证、快捷支付、私密信息保存等涉及隐私的操作时,安全隐患极大。
针对这一问题,开放移动终端平台组织OMTP(Open Mobile Terminal Platform)在2006年率先提出了一种双系统解决方案:在同一个移动终端上,除操作系统外再提供一个隔离的安全系统,运行在隔离的硬件之上,用来专门处理敏感信息,以保护信息安全。这就是TEE的前身。
2010年,国际标准化组织(Global Platform,简称GP)开始起草制定了一整套TEE系统体系标准,从接口、协议实现、典型应用等方面对TEE进行了规范定义,并联合一些公司共同开发基于GP TEE标准的可信系统。如今,大多数TEE的商业实践或开源产品都遵循或参考了这套技术规范。(这样的规范对应用层的开发者是友好的,同时也促进了TEE的发展。其实回归很对技术的消失都是因为没有统一的规范。)
前面的内容中,我们讨论的是TEE的概念和理念。
应用上,TEE通常依赖于具体的技术厂商提供的不同实现方案,每个方案通过硬件或软硬件协同实现隔离的机制各不相同,支持的功能特性也有所差异。目前最具代表的、应用最多的技术方案是ARM的TrustZone和Intel的SGX。(而基于这些架构之上的,各个厂家又是各领风骚。TEE的解决方案依赖于硬件,因此业界的TEE方案都是Soc厂商提出实现TEE的解决方案,并实现,然后结合硬件Soc一起打包给二级厂商。)
TrustZone是最早将TEE落地实现的技术方案。2005年,基于OMTP提出的TEE标准,ARM公司提出了一种基于硬件虚拟化的TEE实现方案,即TrustZone。TrustZone将系统的硬件和软件资源一分为二,划分为两个执行环境——安全环境(Secure World)和普通环境(Normal World),具体架构如图2-14所示。
安全环境拥有更高的执行权限,所有需要保密的操作在安全环境执行,如指纹识别、密码处理、数据加解密、安全认证等;而一般的系统操作均在普通环境中执行,且无法访问安全环境,以此实现隔离。开发者通过使用安全操作系统(secure OS)提供的API开发更多的可信应用来实现特定的安全功能。
可信应用的执行需要通过验证建立环环相扣的信任链条,当一个程序想要进入安全环境中时,验证操作系统需要检查其安全性,只有通过检验的程序才能进入安全环境。安全环境和普通环境之间通过一个叫作Monitor Mode的模式进行转换。
TrustZone是标准TEE实现的一种方案,GP的TEE架构和规范标准都是由TrustZone贡献的。
TrustZone的设计思想是利用CPU时间片切换来模拟一个安全环境,再配合外部的安全框架和安全OS来执行应用。只不过在实际落地时,除部署安全OS,TrustZone还需要单独开发部署TA。
SGX全称Software Guard Extension,是Intel在2013年推出的指令集扩展,旨在以硬件安全为强制性保障,不依赖于固件和软件的安全状态,提供用户空间的可信执行环境。
2015年8月,Intel第六代酷睿处理器Skylake发布,SGX作为其重要的安全属性第一次正式发布。SGX是与ARM TrustZone截然不同的另一种机制。简单来说,SGX是一套面向CPU的指令,支持应用创建一个安全区,安全区内的代码通过专门的指令启动。
SGX将这个安全区域称为enclave。 结合enclave对应的中文含义——飞地(指在本国境内的隶属另一国的一块领土),这个概念就有了很直观的理解。
SGX支持应用程序在其地址空间单独划分出一个区域,创建一个enclave,把需要的安全操作全部加载到enclave中,只有enclave内部的代码才能访问enclave所在的内存区域。一旦软件和数据位于enclave中,即便是操作系统也无法影响enclave里面的代码和数据。
enclave的安全边界只包含CPU和它自身。 一个CPU可以运行多个enclave, enclave之间相互独立,可以防止单个enclave被破坏后影响整个系统的安全性。也就是说,SGX的整个可信机制都集中在CPU上,因此SGX的部署方式相对灵活简单,只需要在enclave通过代码定义即可部署应用,如图2-15所示。
尽管如此,SGX也存在一些不足。
此外,AMD的安全加密虚拟化方案SEV也是比较著名的TEE实现方案之一,且原理与SGX相似,旨在加密运行在AMD CPU服务器上虚拟机的数据。
但是2018年有德国研究团队提出了一个攻破方案,可以绕过SEV,恢复加密虚拟机中的数据。
另外,国内的兆芯和海光分别提出了名为TCT和CSV的可信执行环境方案,兆芯的TCT基于可信平台控制模块(TPCM)实现,而海光的CSV则是对硬件虚拟机技术的扩展。具体的技术方案,此处不再赘述,读者可以通过表2-1对上述5种方案进行简要的对比。
可信执行环境通过建立隔离的安全执行空间,提供了对代码和数据的机密性和完整性保护。
作为隐私计算可信硬件流派的最主要技术方案,其特点主要体现在以下几个方面。
(1)隔离机制是TEE最主要的基础。实现TEE的过程是将设备上的软硬件资源划分成两个隔离的空间,TEE内的代码和资源有严格的访问控制策略,外部的进程无法访问TEE内的资源,使得安全空间内的隐私信息无法被随意窃取。与TEE内部的通信只能通过特定的接口方式进行,有效防御外部的安全攻击。隔离是TEE的核心,但TEE也并没有规定隔离的实现方法,不要求基于某种特定硬件实现,也可以是软件、硬件、IP等融合一体的安全隔离机制。
(2)验证机制保障整体安全。TEE内执行的进程需要通过验证建立信任。能够在TEE上运行的应用叫作可信应用(Trusted Application,简称TA),TA在执行前需要做完整性验证,保证应用没有被篡改。同时,TEE内可以同时运行多个TA,但TA之间仍然是相互隔离的,未获得授权则无法随意读取和操作其他TA的数据。在整个应用过程中,TEE构建了基于验证机制的信任链条,从系统启动开始逐步验证、逐级核查应用启动过程中的各个阶段的关键代码,防止未授权或被篡改的应用继续运行,完整保护系统安全。
(3)**加密存储增强数据机密性。**除了隔离,对于身份、密钥、证书等需要高安全保护的敏感信息,TEE将这些存储在安全区域内,只能被已授权的TA访问或修改,并且TEE为这些敏感信息的操作处理提供了加密和完整性保护机制。同时,非安全环境下的重要信息,还可以在加密后将密钥存储在TEE中,增强存储的安全性。
(4)从应用上看,TEE 具备较好的通用性。TEE的设计和架构部署相对简单,在TEE内可以实现任意种类的数据计算,且并不会对效率产生明显影响。
(5)TEE也会有硬件依赖的局限性。基于对硬件的信赖,一旦硬件出现漏洞,可能反而会造成更大影响。同时,TEE是硬件部署的形态,硬件的更新升级无法像软件一样快速便捷。
图2-16给出了一个基于可信执行环境的隐私计算平台的参考架构。
在此架构中,平台应具备任务管理服务、算法服务、任务调度与跟踪服务、TEE计算资源等必备功能,虚线框内为平台的非必要组成部分。
其中,TEE的计算资源池可由一个或多个TEE计算节点构成,每个TEE计算节点由TEE计算硬件及在硬件基础上提供的远程验证、TEE数据封存服务构成。分布式TEE计算节点之间由可靠的通信网络连接。(分布式,有点服务器领域的感觉了。)
当任务发起方触发一个TEE计算任务时,计算的执行方将对应的算法运行文件加载到TEE环境中,启动计算程序。
数据方通过远程验证后提供计算所需的密文、任务发起方远程验证计算节点内运行环境的安全性和运行代码的完整性后提供计算参数;再由计算执行方对计算参数和数据进行一致性和完整性验证,通过后执行计算任务。
(始终保持可用不可见)
参考资料:
《隐私计算》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。