本杰明刺穿了清洁板岩安全架构

||谈话

本杰明C.刺穿肖像本杰明C.皮尔斯是宾夕法尼亚大学和ACM的研究员的亨利·萨尔瓦特教授和信息科学教授。他的研究金宝博娱乐兴趣包括编程语言,类型系统,基于语言的安全性,计算机辅助的正式验证,差异隐私和同步技术。金宝博官方他是广泛使用的研究生教科书的作者类型和编程语言软件基础

他曾担任合作主编功能规划杂志,作为管理编辑器计算机科学的逻辑方法,作为编辑杆成员计算机科学的数学结构计算的正式方面, 和编程语言和系统上的ACM事务金宝博官方。他也是受欢迎的首席设计师一致文件同步器。

卢克·穆罕沃斯:我以前采访Greg Morrisett关于安全的项目,以及一般的计算机安全。你还为安全项目做出了贡献,给了一个“早期回顾性”谈到它(幻灯片),我想问你一些关于它的详细问题。

特别是,我想问关于……验证信息流架构“为安全开发。您能否请概述您能够证明系统的信息流量的类型?金宝博官方


本杰明C.皮尔斯: 当然。首先,提醒您的读者:安全是一种新的硬件/软件堆栈的清洁板岩设计,其目标是构建一个高度适应网络攻击的网络主机。设计的一个支柱是跟踪信息流的普遍机制。安全硬件提供细粒度标记和高效传播,以及每个指令调度的标签组合。操作系统虚拟化这些通用设施,金宝博官方提供“信息流抽象机”,用户程序运行的“信息流抽象机”。

正式验证从一开始就是安全设计过程的一部分。我们最初希望能够以符合操作系统的实际运行代码Sel4.,但我们发现Codebase太大,而且对此进行了太快,无法使用小型验证团队进行实用。相反,我们开发了一种结合全面验证的方法楷模系统的关键功能金宝博官方与“基于属性的随机测试”(点菜快速检查)系统功能的富裕子集。金宝博官方

我们的最有趣的正式证明到目前为止,表明信息流抽象机的关键安全性 - 程序的秘密输入无法影响其公共输出的事实 - 我们的实施(SIMPified版本)安全硬件正确保留。这很有趣,因为抽象机器的行为是通过在硬件“规则缓存”之间的相当复杂的相互作用来实现,通过咨询当前安全策略的符号表示来填充缓存的软件层。由于这种机制位于安全架构安全保证的非常核心,我们希望完全确定它是正确的(而且是!)。


路加福音你提到,因为你不能用你可用的资源正式地验证整个操作系统,所以你在正式地验证系统的关键特性模型,同时也在使用基于属性的随机测试系统的其他功能。金宝博官方与拥有成功验证整个操作系统的资源所能得到的结果相比,这种方法为系统安全性提供了多大的主观可信度(打赌赔率)?金宝博官方(一个粗略的猜测是可以接受的!)


本杰明:Let’s say that an unverified but well-engineered and road-tested system gets a 1 on the security scale and a fully verified OS gets an 8. And let’s assume that we’re talking about a finished and polished version of SAFE (recognizing that what we have now is an incomplete prototype), together with correctness proofs for models of core mechanisms and random testing of some larger components. My gut would put this system at maybe a 4 on this scale. The proofs we’ve done are limited in scope, but they’ve been extremely useful in deepening our understanding of the core design and guiding us to a clean implementation.

为什么我的规模顶部8而不是10?因为即使是一个完整的机器检查的正确性证明并不意味着您的操作系统真正无懈可击。任何证据都将基于假设 - 例如,硬件表现得正确,如果攻击者有吹风机和对CPU的物理访问,则可能不是这种情况!因此,要高于8,需要一些额外的保证,潜在的损害程度有限即使你的正式假设被打破了。

这一观察结果表明这是一种纵深防御策略。我们的目标在设计安全软件,使“omniprivileged”部分的代码(例如,部分可能导致机器做任何事情,如果攻击者可能会以某种方式让它表现不好)尽可能小,远远小于传统操作系统甚至明显小于微核。金宝博官方检查安全策略和填充硬件的代码缓存规则是高度特权,垃圾收集器在我们当前的设计,但我们相信,剩下的操作系统可以写成一组“车厢”更有限的特权,使用标签的硬件来实现组件之间的分离。(证明这一说法的工作正在进行中。)


路加福音:我曾与一些对正式验证是否能在很大程度上提高安全性持怀疑态度的人交谈过,因为如此多的安全问题来自于对漏洞的理解不够好,无法在一开始就在系统的正式需求中捕获它们,金宝博官方而不是来自一个不符合设计规范的系统,而这种不符合可以通过金宝博官方正式验证得到。然而,您似乎认为经过验证的系统要比未经验证的系统安全得多。金宝博官方你对此有何看法?


本杰明:是的,其他事情是平等的,我会在验证的系统上放置相当多的钱比未经验证的系统更安全 - 不是因为验证过程消除了规范中未考虑的漏洞的可能性,而是因为过程金宝博官方的写作正式规范要求有人坐下来仔细思考系统正在努力实现的(安全和其他)属性。金宝博官方清楚地了解至少一些问题比什么都好多了!

实际上执行了系统匹配的证明规范增加了显着的进一步值,因为规范本身是复杂的工件,金宝博官方需要调试尽可能多地进行调试。但基于物业的随机测试 - 即,检查系统是否满足大量分布式随机输入的规范 - 可以是一个非常有效的中间步骤,为相对小的降低金宝博官方提供大部分爆炸。


路加福音:一般来说,您是否认为需要在安全或保障中设计“从地上的”安全或安全(相关)“高度保证”的高度复金宝博官方杂系统,以便获得如此高度保证,或是否有许多情况下,可以通过优化通用性能的开发,然后“修补”安全和安全性,成功开发出高度复杂但高的保证系统?金宝博官方

而且,您是否有任何猜测此问题的最常见的回复可能是您自己的子场和其他相邻的子场?


本杰明:当然,它取决于你的意思是“高保证”!相当多的人定义这个词,以便它只要适用于使用第1天的安全性和/或安全性的方法开发的软件,但即使我们采取更广泛的HA - “为恶意渗透和灾难性失败提供了非常好的抵制”,或者是这样的 - 我的感觉就是这样极难改造。

在几年前,我在构建齐声时非常清楚地看到了这种效果,同时构建了一个跨平台文件同步工具,即几年前用Trevor Jim和Jéromevouillon制成的跨平台文件同步工具。我在齐声之前做了几个同步器,但我总是发现了行为似乎错了的边缘案例,所以我们开始编写一个非常精确的(虽然显着)的核心行为规范开始了齐声设计。除了帮助我们理解边缘案件,这项运动有一个巨大的对我们编写代码的方式影响。例如,规范说,在同步器的运行结束时,正在同步的文件系统的每个部分都应该是金宝博官方同步(与其他副本同步更新)或不变从同步器开始运行时(例如,如果用户选择不解决的冲突)。但是,由于同步器可以以各种方式终止(正常完成,因此由用户杀死,网络连接丢弃,一台机器重新启动,......)此要求意味着文件系统必须是这两个状态中的一个金宝博官方在每一刻在执行期间。This is actually quite hard to achieve: there are many parts of the code that have to do extra work to buffer things in temporary locations until they can be moved atomically into place, use two-phase commits to make sure internal data structures don’t get corrupted, etc., etc., and the reasons why the extra work is needed are often quite subtle. Having the spec beforehand forced us to do this work as we went. Going back later and rediscovering all the places where we should have paid extra attention would have been well nigh impossible.

至于我研究领域的其他人可能对你的问题说,我决定民意金宝博娱乐一些朋友而不是假设。正如所料,我回来的大多数评论都沿着“在事实基本不可能之后制作复杂的系统真的安全”。金宝博官方但是,一些人确实提出了可能算作的系统,例如Selinux和金宝博官方Apache。(Actually, SELinux is an interesting case. On one hand, its goal was only to add mandatory access control to Linux; it explicitly didn’t even attempt to increase the assurance of Linux itself. So for attacks that target kernel vulnerabilities, SELinux is no better than vanilla Linux. On the other hand, I’m told that, in certain situations — in particular, for securing web applications and other network-facing code against the sorts of attacks that come over HTTP requests — SELinux can provide very strong protection.)


路加福音:谢谢,本杰明!