最近在看一些SGX相关论文。
本文主要对所选论文的Abstract、Introduction、Problem、Solution进行梳理。
Abstract:

  Intel SGX是新兴CPU的安全能力,它允许用户级应用程序代码在硬件隔离的enclave中运行。
  但enclave们功能有局限性,如:没有对系统调用和标准操作系统抽象的本地访问,而在现实应用中操作系统的抽象往往很重要。
  本文提出了一个叫PANOPLY新系统,以消除原生SGX抽象与商用Linux应用程序需要的OS抽象的差距:
1.PANOPLY提供了一个名叫“micro-container”的新抽象,是一些在enclave中被隔离的代码和数据,Mircons可以提供应用逻辑的标准POSIX抽象,包括对文件系统、网络、多线程、多处理和线程同步原语的访问。
 2. PANOPLT为内部enclave间的交互强制了一个强完整性属性。即使操作系统出现错误,应用程序的执行也会遵循合法的控制和数据流。

 与之前的系统相比,PANOPLY提供了两个数量级的低TCB(总计约20 KLOC);

  1. Introduction:

 在本文中,我们设想通过特权分离和隔离的好处,建立了一条强大的防线以防御系统恶意软件。基于可信计算原语的防御将敏感的用户级应用从低防御能力的操作系统中隔离开来。对于这个原语体的硬件支持已经以Intel SGX的形式出现在商用CPU上,它可以在enclaves中运行这种硬件隔离的应用程序实例。Intel SGX提供了一个可以远程验证的硬件隔离内存区域。SGX硬件支持同时执行多个enclave。
 目前已有研究的适用性仅限于小的、选定的应用程序逻辑片段,而不是端到端应用程序。对于更大、更丰富的应用程序,最著名的方法是使用os库。
  在本文中,我们提出了一个名为PANOPLY的新系统,其设计着眼于最小化TCB,同时为封装的代码提供丰富的操作系统抽象。 PANOPLY将最小TCB置于性能之上作为目标。它使用了一种简单的委托而非仿真的设计理念,与以前的系统(例如库操作系统)形成对比。PANOPLY将操作系统抽象的实现委托给底层的操作系统本身,而不是在enclave中模拟它。PANOPLY的microns能够检测到来自操作系统的恶意响应,并在这样的情况下中止。按照这样的设计选择,与库操作系统不同,PANOPLY不会通过给每个micron提供自己的名称空间来虚拟化micron,这种选择消除了大量的从enclave TCB模拟底层操作系统的名称空间管理逻辑。
  PANOPLY的第二个特性是它支持一种即插即用的架构,在这种架构中,安全架构师可以根据需要创建任意多的Micron,并在多个操作系统进程中托管它们。这样的设计保持了与多进程和多线程应用程序设计的兼容性,有更好的可用性。

 PANOPLY Micron向应用逻辑公开 表达性的操作系统抽象。为了支持这些,我们在其设计上做了一些概念上的改进,这些是SGX的现成Intel sdk所不提供的:
  1.Micron 公开了按需创建线程的POSIX抽象,动态地请求应用程序需要的任意数量的线程。以前的系统将这种设计限制为:在一个enclave中预先确定静态可执行线程的数量
  2.PANOPLY提出了几种支持fork-exec语义的设计。PANOPLY允许多个操作系统进程承载Micron。
  3.PANOPLY支持pthreads同步接口,其中包括使用SGX特有的抽象、互斥、barrier等。
 4.最后,如前所述,PANOPLY自动在Micron接口上嵌入检查,确保飞地间控制和数据流符合原始代码。

Result:
  我们对4个使用表达特性的实际应用程序进行了案例研究,移植工作都是适度的,平均需要修改905行代码,案例中应用也有了一定优化。

Contributions

  • PANOPLY系统。 PANOPLY是第一个支持多线程、多处理和事件管理应用程序的系统。我们的微米间流完整性确保应用程序保持高水平的保证。
  • 在实际应用中的使用。 我们将4个应用程序改造成PANOPLY架构,平均需要修改905行代码。
  • 评估。 移植到PANOPLY后,我们报告每个应用程序的性能开销为24%,平均TCB增加了19.62
    KLOC。与以前的系统相比,PANOPLY将TCB降低了2个数量级,同时降低了5 - 10%的性能开销。
  1. PROBLEM:

A. Background: Intel SGX Enclaves
 介绍了Intel SGX中enclave的特性;

B. Attacks & Challenges
 为了在实际应用程序中实现端到端安全保障,我们的目标是解决三个主要挑战:
(1)支持丰富的操作系统抽象
(2)多个enclaves之间的安全交互
(3)最小的额外TCB。
Example:
为了确保更高级别的安全属性,我们将通过一个示例演示现有抽象中的差距,以应对这些挑战:
 FreeTDS:为远程数据库实现流协议(TDS[9])的应用程序; 使用OpenSSL SSL/TLS库与远程数据库建立安全通道。FreeTDS通过连接到证书管理器服务,检查远程数据库是否是经过授权的服务并具有有效的SSL证书。当且仅当原始应用程序接受了有效的证书时,FreeTDS应用程序才接受该证书。假设原始应用程序没有bug,但是系统管理员希望保护它不受 宿主服务提供商的基础设施(但系统管理员希望系统安全抵抗被感染的服务器) 的感染。我们可以通过使用英特尔SGX飞地来实现这种防御。
  受信任的证书管理器和FreeTDS被放在相互独立的enclave中,受信任的证书管理器服务在许多应用程序之间共享,如图1所示,FreeTDS应用程序通过标准的OpenSSL接口调用受信任的证书管理器来验证提交的证书。具体来说,FreeTDS应用程序通过3个步骤完成:

Attacks on Inter-Enclave Interactions:
 FreeTDS应用程序enclave多次调用证书管理器enclave,传递数据。这样的通信必须通过操作系统OS控制下的对抗通道。操作系统知道标准的OpenSSL接口及其接口的语义。如果enclave使用Intel SDK的标准接口,操作系统就会通过导致FreeTDS接受无效的证书来破坏应用程序的保证。我们在图2中展示了对这个接口的具体攻击。
 这些攻击表明不是在enclace抽象运行为目标设计的应用程序会被他的微小弱点而影响;此外,sgx本地的低级别保证(远程认证和内存隔离)与确保应用程序端到端安全执行所需的保证之间存在差距。以前的一些工作已经强制了私有密钥和经过身份验证的数据交付的保密性,而我们的重点是保护端到端应用程序语义。


Supporting Rich OS Abstractions With Low TCB:
 该示例突出了在支持实际应用程序方面的一个更基本的挑战。FreeTDS使用标准的系统调用,如gethostname()和poll()(隐式地用于回调注册)。然而,SGX和Intel SDK并不为这些抽象提供原生支持。表一显示了英特尔SDK、库操作系统和实际应用程序需求之间的差距。研究的问题是如何以最少的努力来支持这种抽象,使安全架构师能够快速地试验使用特权分离他们的应用程序的方法。
 提供丰富表达能力的最先进的解决方案依赖于库操作系统(如Haven[21]和GrapheneSGX[52])。库操作系统为应用程序代码提供了一个虚拟化进程名称空间的抽象。名称空间虚拟化需要在飞地中模拟许多操作系统逻辑。这种方法提供了与现有代码的良好兼容性;然而,这也带来了TCB膨胀的危险。库操作系统报告了数百万行代码的TCB大小。

3.Solution

A. PANOPLY Overview
 PANOPLY使丰富的Linux应用程序能够运行在SGX enclave上。PANOPLY提供了微型容器micron的抽象,micron是enclave包围的一个应用程序逻辑。
 Linux进程可以导入或托管一个或多个微米。Micron没有自己的虚拟化名称空间,而是与它们的主机Linux进程共享;Micron确实有它们的私有地址空间,它被隔离在enclave中,可以与主机进程共享任意数量的公共地址空间。默认情况下,基于微米的逻辑的代码和数据分配在私有内存中。存在一个显式的PANOPLY API,通过它微米可以与外部代码通信。

Micron代码可以访问POSIX v1.3 API的丰富子集。公开的API包括文件系统、网络、多处理、多线程、同步原语、信号和事件管理的系统调用。图3显示了标准Linux应用程序的部分,该部分在我们的体系结构中是TCB(灰色部分)。PANOPLY嵌入了一个薄shim库,该库与PANOPLY API接口相互作用。shim库在编译时被添加到每个enclave中。
 为了达到较低的TCB, PANOPLY选择了一种委托而不是仿真策略。首先,PANOPLY将所有系统调用委托给不受信任的操作系统。PANOPLY拦截对glibc API的调用,这允许我们将glibc库留在enclave TCB之外(图3)。其次,PANOPLY不在TCB中模拟整个操作系统逻辑,将调度逻辑委托给底层操作系统。因此,应用程序调度不能保证与原始代码相同(因此API是WILD)。然而,这种取舍是合理的,因为操作系统可以发起DOS攻击,并负责enclave调度。作为一个优势,它允许我们在enclave内放置最少数量的检查,从而显著减少TCB。最后,PANOPLY“选择性”地在enclave中包含API调用,也就是说,只有给定的enclave代码使用的API才会被包含在enclave中。

B. Usage Model & Scope
 系统概述:PANOPLY将原始程序和程序员的分区方案作为输入。它首先将应用程序划分为enclaves,然后加强微米间的流完整性,从而产生PANOPLY应用程序。

4. PANOPLY DESIGN & SECURITY

 这部分描述了PANOPLY的重要设计和选择,讲其必要性和它实现的方法;还有它的安全性如何保证。
A. Runtime Micron Management

  • Micron初始化和身份建立
  • 内部Micron流完整性

B. Expressiveness with Low TCB

  • 系统调用
  • 多线程方法
  • 多重处理
  • 共享内存
  • 事件管理

5. EVALUATION

 将流行的现实世界应用程序移植到Micron,并针对一套特定于应用程序的基准测试,我们展示了PANOPLY的有效性。这部分对PANOPLY进行以下评估:

  • 表达能力。PANOPLY是否成功地支持微米内部的表达性编程结构?
  • 较强的安全性。PANOPLY是否为应用程序提供更强的安全保障?
  • TCB。PANOPLY在库操作系统上降低了多少TCB ?
  • 性能。与库操作系统相比,PANOPLY的表现如何?

交代了实验环境;将真实的系统作为用例,对PANOPLY进行评估。

6.RELATED WORK

这部分讨论了PANOPLY在TCB、设计目标、范围和端到端保证方面与现有系统的区别。

7. CONCLUSION

 PANOPLY弥合了sgx本地抽象的表达性和特性丰富的Linux应用程序的需求之间的鸿沟。PANOPLY提供了一个新的设计点,在不牺牲兼容性的前提下,将TCB置于性能之上。它的TCB比以前的系统低2个数量级。

PANOPLY:Low-TCB Linux Applications with SGX Enclaves笔记相关推荐

  1. Linux高并发服务器开发---笔记1(环境搭建、系统编程、多进程)

    0613 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.1.1 项目介绍 4.1.2 开发环境搭建 ①安装Linux系统.XSHELL.XFTP.Visual Stu ...

  2. 【嵌入式环境下linux内核及驱动学习笔记-(16)linux总线、设备、驱动模型之input框架】

    目录 1.Linux内核输入子系统概念导入 1.1 输入设备工作机制 1.2 运行框架 1.3 分层思想 2.驱动开发步骤 2.1 在init()或probe()函数中 2.2 在exit()或rem ...

  3. linux基础概念和个人笔记总结(6)

    防伪码:曾经梦想仗剑走天涯,回过头,却发现还是放不下家的牵挂 后续理论的验证图文详解,我会更新,希望大家可以参考 第十一章 FTP文件传输服务 1.FTP连接 控制连接:tcp21端口,用于发送ftp ...

  4. 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

    转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...

  5. Linux下的命令总结笔记(二)

    说在前面的话: 本文是以笔记的形式呈现,那么其内容也将会有一个更新的过程.其命令也为亲测内容,大家可以放心使用(蓝色字体部分除外,蓝色部分为未测试或测试后未验证).如果有一些什么问题,可以给我留言. ...

  6. Linux设备驱动程式之读书笔记(二) [转]

    http://www.sudu.cn/info/html/edu/code/20070102/286543.html setlevel.c 非常实用 google 查找 #define _syscal ...

  7. linux之awk命令学习笔记

    Linux之awk命令学习笔记 前言 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, ...

  8. Linux性能优化实战学习笔记:第四十六讲=====实战分析

    Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...

  9. Linux C编程一站式学习笔记2

    Linux C编程一站式学习笔记 chap2 常量.变量和表达式 本书以C99为标准 一.继续hello world 加入更多注释的hello world 可以用ctrl+(shift)+v复制到vi ...

最新文章

  1. 打造最美HTML5 3D机房(MONO哥强势归来,第四季惊艳发布)
  2. 牛客 数素数 (20)
  3. markdown表格在github/gitee中合并单元格
  4. Linux之常用操作总结
  5. linux免采集卡直播ps4,ps4免采集卡直播方法
  6. 翻页电子书/电子画册制作工具
  7. 杨永强“兑”现承诺 乐视云发力VaaS
  8. 2022-2028年中国电力载波通信行业市场行情动态及竞争战略分析报告
  9. rtmp协议官方规范
  10. jdbc驱动加载失败
  11. 医院信息科面试题和笔试题汇总(计算机相关专业)
  12. 长租公寓如何管理水电及租金?
  13. ERROR: 报错分析 phase.raise_objection(this)不能是phase.raise_objection(phase)
  14. 语音信号处理--基音检测实验
  15. 获取android 用到的所有开发包文件
  16. DTI预处理和脑网络构建
  17. Qt扫盲-QSS概述
  18. 路由(Router)
  19. 修改const指针所指向的值
  20. 如何通过文档管理控制合同管理

热门文章

  1. 【历史上的今天】7 月 20 日:人类登上月球;数据仓库之父诞生;Mac OS X Lion 发布
  2. QTimer定时器问题分析
  3. 脚本调用微信订阅号发送信息
  4. js数据类型转换(5)
  5. Unity3D 无限滚动列表
  6. 【公益创投】“爱无限·心关爱”2021心理情景剧剧本征集活动结果出炉啦!
  7. 阿里云STS临时令牌操作OSS云存储
  8. css设置竖排字体时letter-spacing无法有效设置字体间距
  9. 微积分的本质(六):多元微积分入门——隐函数求导
  10. 技术沙龙 | 云时代下的架构演进—企业云及云原生技术落地实践