Rust SGX SDK v1.0.0 Release | 展望wasm多语言和智能合约支持

2018年5月21日 261点热度 0人点赞 0条评论

图片

Rust SGX SDK 是百度安全实验室开发的一个Intel SGX可信计算平台的Rust语言开发工具包。基于Rust SGX SDK,程序员可以快速开发出没有内存安全漏洞的Intel SGX可信程序,即使在操作系统被恶意控制时也能提供迄今为止最强大的安全防护能力,避免敏感数据被窃取。Rust SGX SDK对于数据隐私和云安全都有着非常重要的意义,能够很好的支持各种需要隐私保护的云上数据业务。从去年4月Rust SGX SDK第一个开源版本发布以来,我们获得了社区很多反馈和支持,也看到了学术界和工业界都在积极的应用Rust SGX SDK。今天,Rust SGX SDK经过一年多的研发,终于正式发布1.0,正式标志着它开始成熟,可以用于生产系统。

 

继微软、阿里云公布了各自的 Intel SGX 云计算平台后,IBM 也推出了其 IBM Cloud 下的 Intel SGX 云计算服务。可见 Intel SGX 逐渐被业界广泛接受并应用于可信计算和隐私保护,同时基于Intel SGX 的软件技术栈显得日益重要。由于 Intel SGX 被广泛应用于处理高机密数据和实现可信计算基,因此 Intel SGX 程序应足够强壮,需要尽可能的从根源机制上消除高危安全漏洞隐患。传统的 Intel SGX 开发只支持 C/C++ 语言,而 C/C++ 非常容易引入内存安全漏洞,需要耗费极大人力物力才能保证 C/C++ 代码是安全的。而我们的 Rust SGX 环境将内存安全的最佳实践语言 Rust 带到 Intel SGX 开发环境中,使得编写无内存安全漏洞的 Intel SGX 程序变得非常简单。使用 Rust SGX SDK 可以快速的开发 Intel SGX 程序,并大大减少了需要人工审计的代码量。更进一步,在使用Rust保障了内存安全的基础上,可以继续采用我们提出的Non-bypassable Security Paradigm (NbSP)等新安全技术完成大规模程序关键安全属性的形式化验证,提供迄今为止最安全的实用化应用安全防护方案。在 Intel 提供的 C/C++ SDK之外,Rust SGX SDK 已经成为了 Intel SGX 主页上唯一一个推荐的第三方编程 SDK。

图片

这次发布的是 Rust SGX SDK的 v1.0.0 版本,这标志着Rust SGX SDK已经成熟,可以应用于生产环境。作为验证示例,我们提供了经典问题私有集合求交(Private Set Intersection)的 Intel SGX 参考实现。Private Set Intersection 是一个可信计算领域的经典问题,即A、B双方各有一个集合,需要在不能让对方获知己方其他元素的条件下,求出两个集合的交集。这个问题有很多实际的大数据业务应用场景,比如撞库威胁情报共享等等。借助 Intel SGX Remote Attestation 和 Rust SGX SDK,我们可以构造出完全可信的第三方,在几乎没有性能损失的情况下计算私有集合求交并保证安全性。通过精心设计,我们在实例中提供的私有集合求交算法还可以抵御最近凶猛的 Side Channel 攻击。

 

此外,我们还包括了另外一个重要验证示例,这也成为下一个版本的实验特性,即该版本包括了一套完整的 Enclave 内的WebAssembly (wasm)解释器和样例代码。WebAssembly 作为当下最火热的新一代跨平台执行标准,已经得到了诸多编程语言和编译器的支持。在 Microsoft、Google、Apple 和 Mozilla 提供了 Javascript 的 WebAssembly 实验特性支持后,LLVM、Rust 和 Go 也都推出了实验性的WebAssembly 支持,Parity 甚至提供了 Smart Contract 到 WebAssembly 的编译器。借助我们移植的 SGX 内 WebAssembly 解释器,在 SGX 内安全的支持常见主流编程语言,甚至直接执行智能合约,已经近在咫尺。

 

从 v1.0.0 开始,我们逐渐切换到 Rust stable 分支,并逐步推进 Rust SGX SDK 的稳定性建设,以更好的推进其在产品中的应用。

 

Rust SGX SDK 项目得到了 Rust 社区核心会议 RustFest'18 的录用(录取率9/82=11%),我们将在5月26日在巴黎把这份工作展示给全世界!


图片

What's New


  • 移植了 Parity 开发的整套 WebAssembly 解释器到 Enclave 环境中,

    包括 wabt-rs-core/wasmi/parity-wasm。定义了在 WebAssembly 语义下安全的 Enclave 边界并提供了参考实现。样例 WebAssembly Enclave 可以安全快速的执行任意输入的 WebAssembly 文件并返回结果,并且支持了所有的 WebAssembly 异常。我们提供了在这个安全的定义下的解释器样例代码。这份样例代码可以完美通过 WebAssembly 标准规定的测试集

  • 提供了经典问题“私有集合求交”的参考实现。该参考实现可以高速解决两方的私有集合求交问题,并使用了 Remote Attestation 框架来保证 Enclave 的完整性、保密性和计算的正确性,同时我们精心设计的算法能够抵抗 side channel 攻击

  • 移植了纯 Rust 编写的 rust-protobuf ,提供了使用 protobuf 传递消息的例子代码;

  • master 分支支持 Rust nightly v1.27.0(nightly-2018-04-12-x86_64)

  • rust-stable分支支持 Rust stable v1.26.0(stable-2018-05-10-x86_64)

  • 支持 Intel SGX SDK 2.1.3

  • 提供了sgx_trts::{rsgx_lfence, rsgx_sfence, rsgx_mfence} 用于改写不安全的数据访问

  • 修正了tlsclient/tlsserver/localattestation 代码样例,加入了 Spectre 攻击抵抗

  • 新的API:sgx_trts::rsgx_is_enclave_crashed,用于判断 enclave 是否崩溃

*点击阅读原文进入项目主页

图片

41630Rust SGX SDK v1.0.0 Release | 展望wasm多语言和智能合约支持

这个人很懒,什么都没留下

文章评论