作者:Matthew H. (Intel)
发布时间:2014-06-02
原文地址:原文地址
翻 译:过境龙
翻译时间:2019-03-15
在我的上一篇博客中,我大致介绍了Intel SGX的设计目标,那是9个月之前的事了,我真诚道歉延迟了这么久才发布这篇博客,我的同事和我一直在为最新的安全技术而努力工作,我还需要时刻记住流出时间来写这篇文章。
再次提醒一下,上次我指出了Intel SGX的8个设计目标:
- 允许应用开发者保护敏感数据,防止在未经授权的情况下,运行在高特权级的恶意软件对其进行访问或修改。
- 允许应用对其敏感代码和数据进行完整性和机密性保护,同时不影响合法系统软件对平台资源的调度管理。
- 使计算设备的消费者能够保持对其平台的控制,并可以自由地安装和卸载他们选择的应用程序和服务。
- 允许平台对应用的可信代码进行度量,并基于处理器产生一个签名证明,该证明除了证明代码可信,还能够证明代码在一个可信的环境中被正确初始化。
- 允许使用熟悉的工具和流程开发受信任的应用程序
- 允许可信应用的性能随底层处理器的能力而扩展
- 使软件供应商能够使用自己选择的分发渠道,以其节奏交付受信任的应用程序和更新。
- 使应用程序能够定义代码和数据的安全区域,即使攻击者对平台有物理控制,并且可以对内存进行直接攻击,这些区域依然能保持机密性。
在上一篇博客中我展开讨论了前两个目标,这次我将展开讨论目标3-5:
目标3:使计算设备的消费者能够保持对其平台的控制,并可以自由地安装和卸载他们选择的应用程序和服务。
创建一个可信的应用既不应该对配置进行特别限定,也不应该限制用户对平台的控制能力,提高当今平台安全性的一种常见技术是严格限制可能加载到平台上的软件。游戏机、机顶盒和智能手机通常具有专用的操作系统,提供有限的升级能力,并对应用程序的可用性和行为进行限制,以减少可能导致安全问题的变化。企业可能需要特定的操作系统和软件配置,并限制其他用户行为(例如,向系统添加USB设备),虽然在业务或者可管理性方面有充足的理由实施这些限定,但不应要求他们保持数据的机密性和完整性。当考虑到个人计算设备时,这一需求变得更加明确,此时对可信环境的需求同样巨大,个性化的需求更加明显。
目标4:允许平台对应用的可信代码进行度量,并基于处理器产生一个签名证明,该证明除了证明代码可信,还能够证明代码在一个可信的环境中被正确初始化。
允许消费者继续控制平台上的软件会带来可信应用的交付问题。如何确保平台具有支持可信计算所必需的原语、应用程序已正确安装以及已安装的应用程序未被篡改?或者换句话说,应用程序如何“证明”它是可信的?
确认应用被正确加载、并被正确初始化的公认方法是将应用的签名(在已知执行点对内存进行摘要计算得到)与一个“预期值”进行比较,这个预期值是从一个已知的可信系统派生得到的(称为应用度量)。为了证明实施度量操作的实体身份,度量使用私钥进行签名,该私钥只有实施度量操作的可信实体才知道。
应注意的是,开发人员不能依赖系统软件提供的度量;如前所述,软件总是可以被虚拟化,或者通过特权流氓软件进行欺骗。这意味着硬件必须负责提供该度量,也就是说,要由相同的硬件来建立可信环境、加载/初始化可信应用、并最终对敏感的数据进行计算。
目标5:允许使用熟悉的工具和流程开发受信任的应用程序
前四个目标通过提高环境的封闭性来获取安全优势,包括减少必须信任的实体的数量,同时保留平台的开放性和用户的选择能力。但单凭这些目标并不能确保软件螺旋式增长能够继续下去。例如,如果开发人员被要求彻底改变他们的开发过程,或者被迫为一种专有的安全微控制器开发,生产效率将大大降低。
因为我不想这些博客文章像小说一样冗长,所以先写到这里。不过这篇文章是我当前的首要考虑,我很快就会扩展到剩下的目标上。