Intel SGX傻瓜系列--设计目标详解(翻译)

Intel SGX傻瓜系列–设计目标详解(翻译)

作者:过境龙
时间:2019-03-16
本文对Intel SGX傻瓜系列的三篇文章内容进行了综合整理,读者可在以下地址阅读到原文:原文地址1原文地址2原文地址3

表面上Intel SGX 只是一系列新的CPU指令,应用能够使用这些指令设置私有的代码和数据区域,但对指令背后的设计思想更进一步研究就会发现,这些指令的作用类似于通过检查DNA链来描述一个动物。在这篇简短的帖子中,我会尝试从稍微高一点的层面对Intel SGX的设计目标进行总结,并针对头两个目标提供更多细节。在后续帖子中,我会对余下的目标进一步说明,并回顾一下使用Intel SGX来保护不同软件应用的经历。

Intel SGX的8个设计目标

Intel SGX的8个设计目标如下:

  1. 允许应用开发者保护敏感数据,防止在未经授权的情况下,运行在高特权级的恶意软件对其进行访问或修改。
  2. 允许应用对其敏感代码和数据进行完整性和机密性保护,同时不影响合法系统软件对平台资源的调度管理。
  3. 使计算设备的消费者能够保持对其平台的控制,并可以自由地安装和卸载他们选择的应用程序和服务。
  4. 允许平台对应用的可信代码进行度量,并基于处理器产生一个签名证明,该证明除了证明代码可信,还能够证明代码在一个可信的环境中被正确初始化。
  5. 允许使用熟悉的工具和流程开发受信任的应用程序
  6. 允许可信应用的性能随底层处理器的能力而扩展
  7. 使软件供应商能够使用自己选择的分发渠道,以其节奏交付受信任的应用程序和更新。
  8. 使应用程序能够定义代码和数据的安全区域,即使攻击者对平台有物理控制,并且可以对内存进行直接攻击,这些区域依然能保持机密性。
目标1:允许应用开发者保护敏感数据,防止在未经授权的情况下,运行在高特权级的恶意软件对其进行访问或修改
  1. 对敏感数据的保护包括机密性(防止数据泄露)和完整性(防止数据篡改)两个方面;
  2. 敏感代码和敏感数据都需要保护(例如,攻击者攻击者可以通过修改或跳过授权检查轻松获得对数据的未授权访问);
  3. 数据不仅在加密存储时必须保护,在未加密、且被用于计算的运行时刻也必须保护;
  4. 尽管来自恶意软件的攻击能够破坏合法的系统软件以获得增强的权限级别,但保持运行时保护至关重要。
目标2:允许应用对其敏感代码和数据进行完整性和机密性保护,同时不影响合法系统软件对平台资源的调度管理

虽然必须保护敏感数据免受高权限级别运行的恶意软件的攻击,但必须允许合法的系统软件完成其工作,要求受保护的应用程序接管或显著破坏基本操作系统功能(作业调度、设备管理等)是不可接受的,操作系统经过几代的发展已经能够很好地执行这些角色,而且,如果要求提供一个重复的、并行的环境也是不切实际的。

目标3:使计算设备的消费者能够保持对其平台的控制,并可以自由地安装和卸载他们选择的应用程序和服务

创建一个可信的应用既不应该对配置进行特别限定,也不应该限制用户对平台的控制能力,提高当今平台安全性的一种常见技术是严格限制可能加载到平台上的软件。游戏机、机顶盒和智能手机通常具有专用的操作系统,提供有限的升级能力,并对应用程序的可用性和行为进行限制,以减少可能导致安全问题的变化。企业可能需要特定的操作系统和软件配置,并限制其他用户行为(例如,向系统添加USB设备),虽然在业务或者可管理性方面有充足的理由实施这些限定,但不应要求他们保持数据的机密性和完整性。当考虑到个人计算设备时,这一需求变得更加明确,此时对可信环境的需求同样巨大,个性化的需求更加明显。

目标4:允许平台对应用的可信代码进行度量,并基于处理器产生一个签名证明,该证明除了证明代码可信,还能够证明代码在一个可信的环境中被正确初始

允许消费者继续控制平台上的软件会带来可信应用的交付问题。如何确保平台具有支持可信计算所必需的原语、应用程序已正确安装以及已安装的应用程序未被篡改?或者换句话说,应用程序如何“证明”它是可信的?

确认应用被正确加载、并被正确初始化的公认方法是将应用的签名(在已知执行点对内存进行摘要计算得到)与一个“预期值”进行比较,这个预期值是从一个已知的可信系统派生得到的(称为应用度量)。为了证明实施度量操作的实体身份,度量使用私钥进行签名,该私钥只有实施度量操作的可信实体才知道。

应注意的是,开发人员不能依赖系统软件提供的度量;如前所述,软件总是可以被虚拟化,或者通过特权流氓软件进行欺骗。这意味着硬件必须负责提供该度量,也就是说,要由相同的硬件来建立可信环境、加载/初始化可信应用、并最终对敏感的数据进行计算。

目标5:允许使用熟悉的工具和流程开发受信任的应用程序

前四个目标通过提高环境的封闭性来获取安全优势,包括减少必须信任的实体的数量,同时保留平台的开放性和用户的选择能力。但单凭这些目标并不能确保软件螺旋式增长能够继续下去。例如,如果开发人员被要求彻底改变他们的开发过程,或者被迫为一种专有的安全微控制器开发,生产效率将大大降低。

目标6:允许可信应用的性能随底层处理器的能力而扩展

这一目标建立在对当前开发过程最小化干扰的思想基础上。充分利用不断增长的处理器性能是软件开发者的重要能力,这一能力推动软件能力螺旋上升。为了获得最大可用性,可信应用不应该在性能上明显下降。

目标7:使软件供应商能够使用自己选择的分发渠道,以其节奏交付受信任的应用程序和更新

如果推荐的解决方案要求第三方软件供应商必须与硬件平台厂商密切合作,才能够在平台生产时预置其应用程序,或者必须将应用升级与平台的固件或者平台软件升级绑定,也会严重影像应用程序提供商的创新能力。

##目标8:使应用程序能够定义代码和数据的安全区域,即使攻击者对平台有物理控制,并且可以对内存进行直接攻击,这些区域依然能保持机密性
考虑到对手可以选择多种方式攻击其物理拥有的平台,有效的解决方案必须提供多种类型的硬件攻击保护。普林斯顿大学的研究人员演示了这样一种攻击,攻击演示网址为:攻击演示,除此之外,使用内存纵向分析和其它相关技术,可能还会有其它很多种攻击。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值