Rust SGX SDK 是百度安全实验室开发的一个Intel SGX 可信计算平台的Rust语言开发工具包。基于Rust SGX SDK, 程序员可以快速开发出没有内存安全漏洞的 Intel SGX 可信程序。即使在操作系统被恶意控制时也能提供迄今为止最强大的安全防护能力,避免敏感数据被窃取。Rust SGX SDK 对于数据隐私和云安全都有着非常重要的意义。第一个版本的开源发布已经快半年了,百度安全实验室很高兴在今天发布第三个版本。
这次发布的是 Rust SGX SDK 的 v0.9.0 版本,该版本是第一个正式版 v1.0.0 之前的测试版。该版本最大的亮点在于:提供了sgx_tstd库,提供了Rust自身std的绝大多数功能。利用sgx_tstd,开发者可以非常方便的将已有的Rust库移植到SGX enclave环境中,大大提高开发效率。第二个亮点是,提供了sgx_urts库,使得SGX程序的untrusted部分也可以使用Rust开发,使得SGX程序全部使用Rust实现成为可能。第三个亮点是,提供了sgx_serialize库,使得结构化数据可以安全的进行序列化和反序列化,解决了enclave难于与外界交换结构化数据的问题。
此外,该版本还支持了直接在enclave内使用println!系列宏进行标准输入输出控制,以及支持了enclave内部的崩溃时调用栈打印(backtrace)功能和单元测试功能(sgx_tunittest)。
当前Rust SGX SDK已经支持到Rust最新的nightly build(2017-09-28版本上测试通过)和最新的Linux SGX SDK v1.9。我们相信,这个版本可以极大的提高Rust SGX程序的开发效率,帮助开发人员写出安全、高效的SGX程序。
What's New
• sgx_tstd(上个版本的sgx_tstdc)。该库提供了std下绝大多数功能,完全支持了any, ascii, borrow, boxed, cell, char, clone, cmp, collections, convert, default, error, f32, f64, ffi, fmt, hash, i8, i16, i32, i64, io, isize, iter, marker, mem, num, ops, option, panic, prelude, ptr, rc, result, slice, str, string, u8, u16, u32, u64, usize, vec, heap, i128, intrinsics, raw, u128,部分支持了 fs, os, path, sync和thread.
• sgx_urts。该库用于建立SGX untrust部分的Rust程序,提供create_enclave等接口。
• sgx_serialize。提供数据结构的序列化和反序列化。
• sgx_rand。Rust风格的随机数生成器接口。
• 崩溃时打印调用栈(BACKTRACE功能)。
• sgx_tunittest。提供单元测试功能。
• sgx_alloc。实现了新版Rust语言中的alloc_system。
• 新的例子程序:hello-rust,完全Rust的hello world示例程序。backtrace,演示崩溃时调用栈相关API的用法。file,演示文件操作API的用法。unit-test,单元测试实例。zlib-lazy-static-sample,演示如何使用移植到SGX环境下的Rust库。
• 第三方库移植实例。包括了6个从Crates.io上获取的开源crate,包括inflate, libflate(和它的依赖adler32-rs, byteorder),lazy-static.rs和yansi。
更多新特性、新功能、文档和Rust库移植步骤等,请参见Rust SGX SDK v0.9.0的release notes 。
了解更多请点击下方“阅读原文”