机密计算技术分析
本文来源:RPA中国
1 介绍
在计算过程中,数据以三种状态存在:传输中、静止和使用中。网络传输的数据是“传输中”的,存储中的数据是“静止”的,而正在处理的数据则是“使用中”的。我们无时不刻不在存储、使用和共享数据,从信用卡数据到医疗记录,从防火墙配置到我们的地理位置数据,当下保护所有状态的数据比以往任何时候都变的更加迫切。
通过部署加密技术来提供数据机密性(阻止未经授权的查看)和数据完整性(防止或检测未经授权的更改),成功地保护了传输中和静态数据,而机密计算正在弥补入侵者可能利用的最后一个“漏洞”——保护使用中的数据,并将大大加强系统的整体安全策略。
2 机密计算
2.1 定义
机密计算(ConfidentialComputing,也译作保密计算)是通过基于硬件的可信执行环境(TEE)对使用中的数据进行保护。TEE被定义为提供一定级别的数据完整性、数据机密性和代码完整性保证的环境。
该定义并不局限于“云”用途,而是可以应用于任何地方,包括公共云服务器、内部部署服务器、网关、物联网设备、边缘部署、用户设备等。机密计算也不限于特定处理器所能提供的可信执行能力,比如GPU或网卡也同样能够具备这种可信计算能力。机密计算甚至也不局限于数据加密技术,尽管这是机密计算最常用的技术。
2.2 为什么保密计算需要硬件?
安全性的强度取决于它下面的层,因为计算堆栈任何层中的安全性都可能被底层的漏洞所威胁。通过在最低的硬件层提供安全性,以最小的依赖性,可以从所需的可信方列表中删除操作系统和设备驱动程序供应商、平台和外围设备供应商以及服务提供商及其管理 员,从而减少在系统生命周期中的任何点暴露于潜在危害的风险。
为了减少机密计算环境对专有软件的依赖,机密计算联盟(ConfidentialComputing Consortium)已将仅有软件根的TEE排除在其范围之外,并专注于为机密计算环境提供基于硬件的安全保证。
3 可信执行环境
按照一般的行业惯例,机密计算联盟将可信执行环境定义为一个能够为以下三个属性提供一定程度保证的环境:
•数据机密性:未经授权的实体无法查看在TEE中使用的数据。
•数据完整性:在TEE中使用数据时,未经授权的实体无法添加、删除或更改数据。
•代码完整性:未经授权的实体无法添加、移除或更改在TEE中执行的代码。
在机密计算环境中,未经授权的实体可能包括主机上的其他应用程序、主机操作系统和虚拟机管理程序、系统管理员、服务提供商和基础架构所有者—或对硬件具有物理访问权限的任何其他人。
总之,这些属性不仅提供了数据保密的保证,而且还提供了所执行的计算实际上是正确的计算的保证,从而也允许人们信任计算的结果。
特定的可信执行环境,还可以提供:
•代码机密性:除了保护数据之外,一些TEE还可以保护代码在使用时不被未经授权的实体查看。例如,这 可以保护被认为是敏感知识产权的算法。
•已验证的启动:某些TEE可能会在启动请求的进程之前强制执行授权或身份验证检查,并且可能会拒绝启 动未经授权或身份验证的进程。
• 可编程性:有些TEE可以使用任意代码进行编程,而有些TEE可能只支持有限的一组操作。TEE甚至可 能包括制造时固定的代码或完全由制造时固定的代码组成。
•可证明性:通常,TEE可以提供其来源和当前状态的证据或度量,以便证据可以由另一方验证,并且 可以通过编程或手动方式进行验证决定是否信任在TEE中运行的代码。通常重要的是,这样的证据由可以由制造商担保的硬件签署,以便检 查证据的一方 强烈保证它不是由恶意软件或其他未经授权方生成的。
•可恢复性:一些TEE可以提供从不兼容或潜在受损状态恢复的机制。例如,如果确定固件或软件组件不再符合法规遵从性要求,并且启动身份验证机制失败,则可以更新该组件并重试(恢复)启动。可恢复性通常要求TEE的某些组件保持受信任,当其他组件更新时,这些组件可以充当“根”。
基于硬件的TEE使用硬件支持的技术来为该环境中的代码执行和数据保护提供增强的安全保证。在不使用基于硬件的TEE的方法中,通常缺少这种保证。
4 相关技术
TAC对行业中为保护使用中的数据相关的各种技术术语进行调查,绘制了以下技术维恩图:
仔细观察可以发现,与“机密计算”不同,图表中使用的术语大都具有多个相互关联并矛盾的定义。例如,“隐私保护计算”被不同程度地视为与多方计算同义,或同时涵盖多方计算和同态加密,甚至在《UNHandbook on Privacy-Preserving ComputationTechniques》中,“隐私保护计算”涵盖了所有为为使用中的数据提供保护的相关技术。
此图说明了此文为什么将机密计算定义为通过使用基于硬件的TEE来保护使用中的数据,以便将其与其他技术区分开来。
4.1 安全性比较
下表将典型的TEE实现与其他两种新兴技术进行了比较:
在实践中,实际效果可能因供应商、型号和算法而异,因此上述单元格的值是典型示例。但是,表格中前三个属性体现了安全性的关键差异。例如,TPM保护密钥可以对数据进行签名或加密,但其本身不能保证提供给它的数据是正确的。TPM不能用任意代码编程,而TEE是可编程的,并保护该代码及其数据。同态加密算法可以保护任意数据,但是其本身不能确保已经进行了正确的操作并且代码没有被篡改,而TEE同样既保护数据又保护代码。
不过,在实践中,这些技术通常是互补的,甚至可以在解决方案中一起使用,以获得更强的安全性。
4.2 可扩展性比较
下表显示了各种指标的可扩展性比较。与安全性比较一样,实际答案可能因供应商、型号或算法而异。
有一点需要注意,虽然组合技术可以提高安全性,但这种组合通常会降低性能和可扩展性。
5 威胁模型
5.1 目标
机密计算旨在充分降低平台的所有者/操作员/Pwner访问TEE内的数据和代码的能力,使得该路径在执行期间不存在经济上或逻辑上可行的攻击。当然,“经济上或逻辑上不存在”只是对所考虑的攻击者类型的假设,有些攻击者的考虑可能与其他攻击者不同。有一个通识,即没有“绝对安全”。
TEEs相比其他技术,除机密性和完整性外,还可以通过各种措施保护使用中的数据,包括可用性和成本。这种提升允许管理数据和算法的系统的设计者、实现者和操作者专注于系统的其他方面。
机密计算保护的是使用中的数据,可能存在与存储和传输(分别为静态数据和传输中的数据)相关攻击,虽然与使用TEE的系统相关,但与TEE提供的保护并不直接相关。这些攻击,其中一些可能属于机密计算范围,包括:
• TEE和TEE环境的认证,以确保有效和正确的部署;
• 将工作负载和数据传输到TEE环境;
• 在TEE实例外部存储与TEE环境相关联的数据;
• 在TEE环境之间迁移工作。
在某些情况下,那些将工作负载部署到TEE环境中的人,可能对系统的所有者具有不同的信任级别,并且这种信任可能会随着时间的推移而改变。这种变化可能与主机上的软件和硬件、与主机所有者或管理员的关系、以及被物理、软件或社会工程攻击的可能性等多种因素有关。发生这种变化是合理的,并且机密计算框架和相关的项目可以根据上述因素采用不同的信任模型。
生态系统中的参与者可以通过多种方式依靠TEE的安全保证来建立对TEE的信任。一种方法是通过第三方实验室的评估来获得关于产品安全声明的保证。其他方法包括以特定供应商的安全声明为基础的保证;硬件、固件和/或软件中的开源组件的社区或其他审计;以及行业或标准机构的评估或认证。
5.2 威胁向量
有很多种可以利用系统中的漏洞发起攻击的威胁向量。如前所述,机密计算不会试图解决所有这些问题。有的威胁向量在机密计算的范畴之内,而有的则在机密计算的范畴之外。
需要注意的是,一些范围内威胁通常可以通过保密计算技术进行缓解,但是缓解程度会因芯片实施的不同而有很大差异,并且可能存在一些“灰色区域”,某些供应商可能认为威胁在范围内,而其他供应商则认为其在范围外。
5.2.1 范围内
以下威胁媒介被视为在机密计算范围内:
•软件攻击:包括对安装在主机上的软件和固件的攻击,包括操作系统、虚拟机管理程序、BIOS、其他软件 和堆栈以及与任何一方相关的工作负载。
•协议攻击:这些攻击包括对与证明以及工作负载和数据传输相关的协议的攻击。任何可能危害TEE实例证明的攻击都可能导致工作负载或数据受到危害。同样,即使证明协议没有受到损害,工作负载和/或数据的供应或放置中的漏洞也可能导致损害。
•密码攻击:密码学是一门不断发展的学科,随着时间的推移,在密码和算法中会发现漏洞,这是由许多因素造成的,包括数学突破、计算能力的可用性和新的计算方法(如量子计算)。在可能的情况下,应支持加密敏捷性原则,允许用更新的版本或更适合特定环境的方法替换已弃用的加密原语。虽然这在TEE的软件和固件组件中是可能的,但在硬件中通常是不切实际的。在某些情况下,深度防御可能是适当的,例如, 在其实现本身不是量子抵抗的TEE实例中采用量子抵抗加密,但在假设这将提供适合于任何特定使用情况的保护之前,需要由合格人员进行仔细考虑。
•基本物理攻击:虽然对CPU的长期侵入性攻击被视为超出范围(见下文),但其他攻击被视为在范围内,包括冷DRAM提取、总线和高速缓存监控以及将攻击设备插入现有端口,例如PCIe、FireWire、 USB-C。
•基本上游供应链攻击:尽管在供应链中对TEE组件执行的攻击超出范围(见下文),但通过“粗略” 更改(如添加调试端口)对其进行危害的攻击被视为在范围内。
机密计算联盟(Confidential Computing Consortium)还认为,应该尽可能为设计、实施和操作工作负载的人员提供指导,以了解哪些类型的应用程序可能比其他应用程序更容易受到攻击,以及生命周期管理方面的问题, 以帮助减轻攻击。
5.2.2 超出范围
通常被认为不属于机密计算范畴的威胁向量包括:
•复杂的物理攻击:这些物理攻击通常需要长期和/或侵入性访问硬件,包括芯片刮擦技术和电子显微镜探针。
•上游硬件供应链攻击:这些攻击不包括对直接提供TEE功能的主机系统组件的攻击,但包括对例如CPU 的攻击。包括芯片制造时的攻击和密钥注入/生成时的攻击。
•可用性攻击(如DoS或DDoS)攻击:当前基于硬件的TEE未将其作为威胁模型的一部分加以解决。软件项目和服务提供商可能会提供缓解此类攻击的措施。
5.3 侧通道
5.3.1 背景
TEE为数据机密性提供一定级别的保证。然而,这种保证依赖于一些假设,其中一个关键假设是,所有者(或有权访问系统的任何其他实体)不能使用可利用的旁路来推断有 关数据或执行的信息。
在过去的几年里,学术研究人员已经确定并展示了某些TEE设计中的漏洞,这些漏洞如今被认为是侧信道攻击。这种攻击同样也反映在了其他技术(如TPM和HSM)以及其他隔离或数据保护机制中。
5.3.2 案例
在这里,我们给出了一个简化的基于椭圆曲线密码(ECC)的案例。ECC使用椭圆曲线点乘来产生单向函数。在ECC中,将曲线上的点P乘以N得到曲线上的新点Q。ECC依赖于这样的事实,即在给定P和Q的情况下,难以确定N。TEE可以使用“加倍和相加”方法来计算Q来实现该乘法。在简化的术语中,该方法一次一位地迭代通过N的二进制表示,并对每个0位执行加倍操作,对每个1位执行加倍和加法操作。
由于该方法是在TEE内部执行的,因此确保了数据的机密性,这意味着攻击者无法直接观察正在派生的数据。然而,攻击者可能能够使用侧信道来确定N的值。如果攻击者对机器有物理访问权限,他们可能会利用的一个旁道是在执行期间准确测量TEE CPU的电源使用情况。例如,如果与加倍相比,TEE CPU对于加法具有不同的功率使用,则攻击者可能能够从功率配置文件中导出N。并不是所有的旁路攻击都需要物理访问,有些攻击可以通过软件测量执行人为操作所需的时间来实 现。
加倍后再相加的组合表示该位为1。后面不跟加法的加倍表示0。使用此信息,攻击者可以执行n的完整恢复。
另请注意,每个值为1的位的处理时间都比值为0的位的处理时间长。可以执行不同的侧信道攻击,其中攻击者可以通过精确测量该方法执行所花费的时间来确定N中0与1的比率,从而显著降低使用后续蛮力攻击来恢复N的复杂性。
侧信道允许攻击者通过利用TEE本身的体系结构知识来推断有关TEE内部数据或操作的信息。上面的例子相对简单,但可以使用针对现有TEE的组合技术对TEE发起更为复杂的攻击。
5.3.3 缓解
一个自然的假设是TEE本身应该提供针对侧信道攻击的基本防御手段。但是,防止侧信道攻击是TEE制造商、第三方厂商和应用程序开发人员的共同责任。
回到上面的例子,由于在处理0与1时采用了不同的运算方法,因此攻击者可以利用功率和定时侧信道发动攻击。如果运算方法的作者在处理0时插入一个假的点加运算操作,这会导致在处理0和1时将使用相同的功耗,并且执行时间也是相同的。攻击者将没有可利用的侧信道来发动攻击。
当然,并非所有的侧信道攻击和缓解方法都像上面的示例那样简单。有些侧信道的产生源于应用程序开发人员的代码或第三方库中的算法,而有些侧信道的产生则源于运行TEE的CPU中的高速缓存实现。
无论是应用程序、编译器、SDK还是运行时环境,编写运行在TEE中的代码需要一定程度的专业知识,以及对侧信道缓解技术的理解。TEE制造商和第三方厂商提供专门针对安全TEE代码的生成工具和SDK。这些可以极大地降低代码作者引入可被利用的侧信道的风险,并提供针对TEE的已知漏洞的防护。
6 证明
证明是一方(称为“验证者”)评估潜在不受信任的对等体(即“证明者”)的可信度的过程。证明的目标是允许验证者通过获得有关证明人的软件和数据状态的真实、准确和及时的报告,获得对证明人可信性的信心。
6.1 基于硬件的认证
基于硬件的证明方案依赖于可信硬件组件和相关联的固件,在安全环境中执行证明例程。例如,证明协议可能按如下方式工作:
1. 在验证者和证明者之间建立安全通信信道;
2.安全连接建立后,验证器生成一个挑战并将其发送给证明器;
3.在接收到来自验证者的质询时,证明者通过向其可信硬件组件发送质询并请求其软件和数据状态的证据来 开始证明过程;
4.可信硬件组件在认证平台上取证并签署认证数据和挑战;
5.证明者将签名后的证据返回给验证者;
6.验证者验证签名并通过应用某种评估策略来评估证据,例如将经证实的平台状态与被认为是可信的一组参考值进行比较,并验证经签名的证据包括所提供的质询,以便验证者知道证据是新生成的。
上述证明过程建立了证明者的可信度,并确保其在生成证据时处于可信状态。
证明协议的设计和实现还必须提供有关特定安全属性的保证,包括:
•不可伪造性:如果受信任的硬件组件从未对消息进行签名,则攻击者无法在链接到受信任的硬件组件的签 名的消息上生成签名。
•撤销:如果受信任的硬件组件被泄露,则不再接受来自泄露密钥的签名。
一些证明方案还提供匿名性,让攻击者无法从签名中泄露可信硬件组件的身份。
6.2 匿名
在基于硬件的证明方案中,可信硬件组件可以由其加密密钥唯一的标识,这可能允许对手监视特定可信硬 件组件的活动。直接匿名证明(DAA)方案(例如,ISO/IEC 11889:2015[5]中规定的算法)试图通过利用诸如零知识证明和群签名之类的高级密码原语来解决该隐私挑战。在实践中,可以使用各种密码技术来实现DAA方案,包括RSA、椭圆曲线密码(ECC)、基于配对的加密(PBC)或基于晶格的加密(LBC)。
6.3 TCB恢复
可信计算基(TCB)恢复针对TEE的TCB中存在可以修复的缺陷进行修复,并最终重新建立对TEE的信任的过程。例如,如果签名的证据与安全系统的最新预期值不匹配,则证明过程将导致验证者得出证明者不完全可信的结论,从而导致需要进行这种修复。
TEE的TCB(通常包括不可变和可变部分)提供了创建在证明过程中使用的证据的功能。如果在TCB中发现缺陷,则此进程本身可能被欺骗或破坏。TEE可以利用特殊技术以允许TCB的可变部分由不可变部分保护并更新。验证者可以通过识别更新后新创建的任何证据,证实确实已经进行过TCB更新,而且不会被以前有缺陷的实现所欺骗。
7 结论
机密计算通过使用基于硬件的可信执行环境,保护敏感数据和代码免受数据执行期间发生的日益普遍的威胁。这些威胁以前很难防范。例如,在经典威胁模型中,系统的所有者或操作员通常被认为是可信的,而机密计算不仅将他们视为潜在的威胁,还要保护数据免受他们的潜在危害。
结合基于硬件的证明技术,机密计算可以提供数据完整性、数据机密性和代码完整性的高级别保证。同时使用TPM或同态加密等其他技术,机密计算和基于硬件的证明技术,还可以额外为数据和代码完整性提供一定级别的保护,以此来提高系统整体的安全水位。
随着对使用中的数据加以保护的需求不断增加,开始出现越来越多新的使用场景,比如金融、监管行业中的多方计算场景,或边缘计算中的机器学习场景。这些新场景正在操作的数据需要保护,并且不受处理环境所有者本身的影响。
注:本文是对机密计算联盟发布的白皮书A Technical Analysis of Confidential Computing v1.2的原文翻译。
上一篇:隐私计算DataTrust:从产品需求到工程架构实践(连载2)
栏 目:机密计算
下一篇:Google,RedHat,Fortanix,NXP等巨头同框漫谈:论机密计算的变革性力量!
本文标题:机密计算技术分析
本文地址:
您可能感兴趣的文章
阅读排行
推荐教程
- 11-01阿里云无影升级2.0 云电脑解决方案时代到来
- 11-01阿里云数据库全面Serverless化!与AI共同驱动走向一站式智能数据平台
- 11-012023云栖大会关键词:开放、大模型、MaaS、产业智能升级
- 10-31Serverless化云产品超40款阿里云发布全球首款容器计算服务
- 10-31阿里云给中国所有大学生每人送一台云服务器
- 10-31解密杭州亚运背后科技:核心系统100%上云,20多项全球首创智能应用
- 10-312023云栖大会开幕 阿里巴巴蔡崇信:打造AI时代最开放的云
- 10-31巴黎奥运会将基于阿里云实现云上转播
- 10-31马斯克440亿美元收购Twitter一年后:全力“下云”,成本速降60%,功能代码从70万行减少至7万!
- 10-30中国广电已建700MHz基站59万站 5G用户突破1800万