百度安全 Teaclave TrustZone SDK 于 2021 年 10 月成为 OP-TEE 官方指定的 Rust 开发环境[1]。2022 年 3 月,Teaclave TrustZone SDK 发布0.2.0 Release [2],已适配 OP-TEE 3.16.0 版本。
OP-TEE 是当今广泛使用的开源 ARM TrustZone 操作系统和执行环境,是由 ARM、Linaro、Google、NXP 等组织共同维护等可信固件社区(Trusted Firmware)项目,可信固件社区为 ARM 安全生态提供了基础执行环境的开源实现。
百度安全开源贡献的 Apache Teaclave (incubating) [3] 子项目 Teaclave TrustZone SDK,为 OP-TEE 提供了一套内存安全、使用方便的开发环境。SDK 基于 GlobalPlatform 的 TEE 标准,为开发者提供标准的开发接口。除此之外 Teaclave TrustZone SDK 支持标准库和第三方库,提高了 TA 的开发速度,并扩展了 TrustZone 的应用场景。与 Teaclave SGX SDK [4] 类似,TrustZone SDK 也为 Teaclave 隐私安全计算平台提供底层支持,赋能多平台可信执行环境的隐私安全计算生态。
新版更新详情
Teaclave TrustZone SDK 0.2.0版本中,我们与OP-TEE社区进行合作,将代码集成至OP-TEE官方仓库。在OP-TEE 3.15.0版本之后,支持将Rust TA编译至OP-TEE项目构建的文件系统。作为OP-TEE官方Rust SDK,Teaclave TrustZone SDK已日趋成熟,为OP-TEE可信应用开发持续提供安全、便捷、样例丰富的开发环境。
Teaclave TrustZone SDK 0.2.0 Release已适配 OP-TEE 3.14.0-3.16.0 版本,并完成以下重要更新:
项目集成至 OP-TEE 官方仓库中。开发者可以通过文档[5]编译 Rust TA 示例,并在 OP-TEE 环境中测试;
新增以下功能和示例程序:
tee-supplicant loadable plugins:该功能由 OP-TEE 3.13.0 引入[6],支持实现 tee-supplicant 插件,进而可以从 TA 调用 Normal World 功能。SDK 中提供了对应的示例程序[7]。
socket: 支持由 TA 作为 TCP/UDP 客户端发起网络连接。SDK 中提供了对应的示例程序[8][9]。
更新 Rust toolchain版本至nightly-2021-09-20;更新docker构建环境至teaclave-trustzone-sdk-build:0.3.0;
新增或更新以下文档:
新增文档:Debugging OP-TEE TA
新增文档:Overview of OP-TEE Rust Examples
更新 getting started documentation
修复了一些 bug。
Release链接:
https://github.com/apache/incubator-teaclave-trustzone-sdk/releases/tag/v0.2.0
快速上手
下面简单介绍一下如何快速上手尝试 Rust 开发的 TrustZone TA,更多详细文档可以在 Teaclave 官网(https://teaclave.apache.org/)查看。
下载 Teaclave TrustZone SDK 项目,初始化相关的子模块并安装 Rust 工具链以及交叉编译工具 Xargo:
$ git clone https://github.com/apache/incubator-teaclave-trustzone-sdk
$ cd incubator-teaclave-trustzone-sdk
$ ./setup.sh
设置环境变量,默认情况下,目标平台是 aarch64,如果希望为 arm 平台编译,需要在 source environment 之前设置 ARCH 变量。
$ source environment
最后,编译 Teaclave TrustZone SDK 官方提供的例子。
$ make examples
现在,示例已经全部编译好了,在支持 OP-TEE 的 QEMU 环境即可尝试运行已经编译好的 SDK 中的 TrustZone 应用示例。
Teaclave TrustZone SDK 项目地址:https://github.com/apache/incubator-teaclave-trustzone-sdk
若您想下载 Teaclave TrustZone SDK 项目,编译运行 Rust 的 TA examples,请查看:https://github.com/apache/incubator-teaclave-trustzone-sdk#getting-started
若您想了解 Teaclave TrustZone SDK 已经提供了哪些 TA 样例,请查看:https://teaclave.apache.org/trustzone-sdk-docs/overview-of-optee-rust-examples/
若您想要上手 debug TA,请查看:https://teaclave.apache.org/trustzone-sdk-docs/debugging-optee-ta.md/
百度隐私安全计算实验室
百度安全实验室在隐私安全计算领域取得了丰硕的成果,得到了全球软件和互联网行业、厂商以及国际安全社区的广泛认可。也和多个国内外知名产商、高校开展了安全研究合作,为百度隐私安全计算业务提供先进的安全能力,并推动共建开源开放的隐私安全计算生态。
百度安全实验室致力于探索隐私数据安全计算技术(如可信执行环境、联邦学习、多方安全计算、差分隐私等)的研究和应用,包括隐私计算安全平台的系统设计、安全能力评估、生态建设等。2019 年推出 Teaclave 隐私安全计算平台,并在 Apache 软件基金会中孵化开源。Teaclave 成为业界首个包含远程认证、多方隐私安全计算等多种安全能力的开源隐私计算平台,服务数十家公司和多个开源项目的核心组件。隐私安全研究成果也发表在学术会议(CCS, ICSE, ACSAC)和行业技术研讨会(ApacheCon, OC3, RustConf, Zer0Con, BlackHat)。2020 年,Teaclave 项目获得 WitAwards 年度最佳安全开源项目。同时,为提升隐私计算生态项目等安全性,实验室也发现并协助修复数十处机密计算框架的漏洞。
欢迎加盟
百度隐私安全计算实验室欢迎有相关技术背景,以及对隐私计算系统设计感兴趣的同学加入,实验室在北京和硅谷均有全职与实习的岗位。详情可发邮件给 mssun@baidu.com 咨询。
岗位描述:隐私安全研究员(社招/校招/实习)
工作职责:
负责基于 TEE 的系统设计;
负责 Rust 研发,实现系统原型;
开展 TEE 漏洞研究。
职责要求:
具备扎实的计算机及安全技术实践基础。具备二进制漏洞挖掘与利用经验更佳;
深入了解可信计算/TEE技术,包括但不仅限于 Intel SGX、ARM TrustZone,有相关项目经验;
熟练使用至少一种系统编程语言(C/C++/Rust)。熟练使用Rust语言更佳;
务实、自驱,具备良好的协调推动、沟通、团队合作能力。
附录
[1] 百度安全 TrustZone SDK 正式成为 OP-TEE 官方推荐 Rust 开发环境.
https://mp.weixin.qq.com/s/Yih4BkLbiHBnZrxKzMIw1g
[2] Apache Teaclave TrustZone SDK (incubating) v0.2.0.
https://github.com/apache/incubator-teaclave-trustzone-sdk/releases/tag/v0.2.0
[3] Apache Teaclave (incubating)社区.
https://teaclave.apache.org
[4] Teaclave SGX SDK.
https://github.com/apache/incubator-teaclave-sgx-sdk
[5] OP-TEE with Rust.
https://optee.readthedocs.io/en/latest/building/optee_with_rust.html
[6] Loadable plugins framework.
https://optee.readthedocs.io/en/latest/architecture/globalplatform_api.html?#loadable-plugins-framework
[7] 使用Loadable plugins framework的Rust示例.
https://github.com/apache/incubator-teaclave-trustzone-sdk/tree/master/examples/supp_plugin-rs
[8] 使用TCP socket的Rust示例.
https://github.com/apache/incubator-teaclave-trustzone-sdk/tree/master/examples/tcp_client-rs
[9] 使用UDP socket的Rust示例.
https://github.com/apache/incubator-teaclave-trustzone-sdk/tree/master/examples/udp_socket-rs