TrustZone 为手机、嵌入式设备、云计算等 ARM 生态提供安全的可信执行环境,用于包括安全支付、密钥管理、模型保护等场景。但是由于内存安全问题,TrustZone 中运行的安全应用 (trusted application 或叫 TA) 的安全性大打折扣。例如高通 QSEE 内存安全问题 [1] 造成的安全世界(secure world) 的漏洞,后果甚至可以拿到全磁盘加密的密钥 [2]。

2019 年初百度开源了 Rust OP-TEE TrustZone SDK,为当今广泛使用的开源 TrustZone 实现 OP-TEE 提供了一套内存安全、使用方便的 SDK。SDK 基于 GlobalPlatform 的 TEE 标准,为开发者提供标准的开发接口。除此之外 Rust OP-TEE TrustZone SDK 支持标准库和第三方库,提高了 TA 的开发速度,并扩展了 TrustZone 的应用场景。

为了加速隐私安全生态发展,完善 TrustZone 的技术基础设施,百度在 2021 年初正式把项目捐赠给 Apache 基金会,作为 Teaclave 的子项目之一,同时更名为 Teaclave TrustZone SDK,新的项目代码库地址为:https://github.com/apache/incubator-teaclave-trustzone-sdk。Teaclave TrustZone SDK 与 Teaclave SGX SDK 一样,可以为 Teaclave FaaS 隐私安全计算平台提供底层支持,赋能多平台可信执行环境的隐私安全计算生态。

Teaclave TrustZone SDK 设计和实现

Teaclave TrustZone SDK 在 GlobalPlatform 标准的 API 上重新设计了安全的 Rust 接口,使用 Rust 编写 TA(图中的 trusted apps)和 app(图中 client apps)能够大大减少内存安全问题,确保可信执行环境的安全。

通过使用 Rust 的过程宏(procedure macro)自动生成边界代码,减少了开发中不必要的负担,并且能够避免开发中因为粗心造成的安全问题。如下图所示,只需要在相应的函数上加 #[ta_create], #[ta_open_session], #[ta_close_session], #[ta_destory], #[ta_invoke_command]。

通过利用 Rust 的丰富的类型系统,能在编译时报告内存安全问题,例如下图中对于 client 的实现,相比复杂并且类型简单的 C 接口,Rust API 语义更清晰,并提供强类型检查。

项目中提供了 13 个样例程序,包括加解密,安全存储,HOTP 等等。同时,我们还展示了使用 Rust 的第三方库 serde 作为边界的序列化来传递复杂参数,避免出现安全边界设计不当引发的内存安全问题。

快速上手文档

Teaclave TrustZone SDK 的 API 都提供了对应的文档,在项目 Wiki 中,我们提供了一个快速上手的例子,在 QEMU 模拟器中运行使用 TrustZone SDK 的 trusted app。链接如下:https://github.com/apache/incubator-teaclave-trustzone-sdk/wiki/Getting-started-with-OPTEE-for-QEMU-ARMv8。更多关于 Teaclave TrustZone SDK 的设计和性能等都在论文 RusTEE: Developing Memory-Safe ARM TrustZone Applications 中找到,此论文也收录于 ACSAC 2020。

Teaclave TrustZone SDK 时间线

  • 2019 年初开源。
  • 2019 年在 Linaro Connect 和 RustCon Asia 对外发布,得到了 ARM
    的支持,现在其隐私计算相关项目中使用。
  • 2020 年相关文章发表在国际顶级安全会议 ACSAC,得到学术界肯定。
  • 随着隐私安全计算的发展,多个开源项目开始使用,例如由 ARM Research 主导的 Veracruz 开源项目使用 SDK
    构建其隐私计算试验项目,Veracurz 也将加入隐私计算联盟(Confidential Computing Consortium)。
  • 2021 年 2 月升级 TrustZone SDK 支持 OP-TEE 3.11 和 3.12。
  • 2021 年 2 月启动项目捐赠流程,通过社区投票并提交 Software Grant Agreement。
  • 2021 年 3 月项目 repository 正式移交到 Apache 组织下,隶属于 Apache Teaclave
    (incubating) 项目。

Teaclave 开源社区

TrustZone SDK 加入 Apache 后,将与 Teaclave 开源社区共同发展,非常欢迎大家的贡献,一起推动隐私安全计算生态 。已有至少四家公司或组织在产品中使用 Teaclave,并且有超过九个开源项目使用了 Teaclave 平台和 Teaclave SGX SDK。这些都给项目的发展提供源源不断的动力。更多信息可以在我们的官网 community 下查看:https://teaclave.apache.org/community/

Teaclave 的开源是 The Apache Way (https://www.apache.org/theapacheway/)的开源,无论是代码、文档、设计还是路线图规划,我们都会在社区的各个渠道中讨论。如果 你想关注 Teaclave,亦或想加入我们的讨论,可以在 Github issues,邮件列 表回复我们、发起新的话题。也可以关注我们的 Twitter 账号 @ApacheTeaclave了解最新动态。除此之外, 我们在官网 (https://teaclave.apache.org/)中提供了 Teaclave 相关的演讲、论文和文章,包括 TrustZone SDK 之前的演讲 slides 以及视频。

参考链接:

[1] Qualcomm’s Secure Execution Environment (QSEE) privilege escalation vulnerability and exploit (CVE-2015-6639) : http://bits-please.blogspot.com/2016/05/qsee-privilege-escalation-vulnerability.html

[2] Extracting Qualcomm’s KeyMaster Keys - Breaking Android Full Disk Encryption: http://bits-please.blogspot.com/2016/06/extracting-qualcomms-keymaster-keys.html

Disclaimer: Apache Teaclave (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

期待你的加入

百度开发者中心已开启征稿模式,欢迎开发者登录developer.baidu.com进行投稿,优质文章将获得丰厚奖励和推广资源。

百度安全 Rust TrustZone SDK正式成为 Apache Teaclave 子项目相关推荐

  1. 正式成为 Apache Teaclave 子项目,百度安全 Rust TrustZone SDK 赋能多平台隐私安全计算开源生态

    TrustZone 为手机.嵌入式设备.云计算等 ARM 生态提供安全的可信执行环境,用于包括安全支付.密钥管理.模型保护等场景.但是由于内存安全问题,TrustZone 中运行的安全应用 (trus ...

  2. 百度安全 TrustZone SDK 正式成为 OP-TEE 官方推荐 Rust 开发环境

    百度安全与 OP-TEE 社区共同合作,推进 Teacalve TrustZone SDK 正式成为 OP-TEE 官方推荐的 Rust 开发环境.OP-TEE 是当今广泛使用的开源 ARM Trus ...

  3. 官宣!Apache Doris 从 Apache 孵化器毕业,正式成为 Apache 顶级项目!

    全球最大的开源软件基金会 Apache 软件基金会(以下简称 Apache)于美国时间 2022 年 6 月 16 日 宣布,Apache Doris 成功从 Apache 孵化器毕业,正式成为 Ap ...

  4. 官宣!Apache Doris 从 Apache 孵化器毕业,正式成为 Apache 顶级项目

    官宣!Apache Doris 从 Apache 孵化器毕业,正式成为 Apache 顶级项目! 全球最大的开源软件基金会 Apache 软件基金会(以下简称 Apache)于美国时间 2022 年 ...

  5. 拥抱开源未来 百度Doris进入顶级开源社区Apache

    近日,全球著名开源社区Apache基金会宣布"百度开源的Doris项目全票通过进入Apache孵化器".这是百度继ECharts后第二个进入Apache基金会的项目,充分彰显了百度 ...

  6. 利用百度地图Android定位SDK获取经纬度

    环境的搭建(参考上一次的文章) 百度地图Android定位SDK的使用 2.在Android studio里设计程序来获取经纬度 界面布局activity_main.xml文件的源代码: <?x ...

  7. 百度地图AR识别SDK免费推出

    在今年的9月份,百度地图开放平台曾做过一期关于<LBS+AI新浪潮,不止于此>的主题沙龙,现场开发者反响爆棚,也一起探索了在AI技术的加持下,地图产品及依赖于位置服务相关的开发者产品将有哪 ...

  8. Android 集成百度地图AR识别SDK(二)

    废话 今天我们开始集成百度地图AR识别SDK(后面简称AR SDK)的第二章,这一章我们主要讲Android Studio如何配置AR SDK 我们如果单单只看文档的话,很难看懂如何集成,我们需要结合 ...

  9. 百度文字识别离线SDK详细说明

    关于百度文字识别离线SDK,总有些小伙伴搞不清楚,今天小编就百度文字识别离线SDK为大家做详细说明,我们一起来看下吧! 文字识别离线SDK 在手机.摄像头.执法记录仪等设备终端无网或弱网环境下对文字识 ...

最新文章

  1. 蓝桥杯第九届决赛-交换次数-java
  2. SylixOS与硬件设备连接问题——硬件设备串口、网口连接问题
  3. 大数据的三个特征(重要挑战)
  4. linux mail 密码错误,linux下mail使用故障解决
  5. python怎么实现检验_python 怎么实现数据串进行 BCC 校验 (Block Check Character/ 信息组校验码)?...
  6. Spark1——介绍
  7. java ssh shell命令_java 通过ssh 执行命令
  8. ubuntu18.04安装python3_在 Ubuntu 18.04 上安装 Python 3.7
  9. mp3排序软件哪个好用_电脑录音软件哪个好用?
  10. 台式电脑键盘按键错乱_电脑键盘按键怕误触怎么办?用这款软件帮你屏蔽指定键盘按键!支持替换按键!...
  11. java中利用正则表达式获取a标签
  12. 一套完整的直播系统开发、直播平台搭建的原理
  13. 形式语言与自动机 图灵机
  14. 如何对研发团队绩效进行考核--附各环节人员考核参考表
  15. 计算机网络复习03——数据链路层
  16. MySQL 主从同步延迟的原因及解决办法
  17. 博通wifi驱动详解(三)
  18. 学习笔记(07):JavaWeb基础核心技术-11. 佟刚_JavaWEB_GenericServlet
  19. python灰色波浪线_去除pycharm的波浪线
  20. 用Python解中考数学规律题

热门文章

  1. EXTJS学习之道(一)
  2. 在NumericStepper控件中使用嵌入字体显示数字.
  3. CycleGAN非配对图像生成,定制你的卡通照
  4. 【网址收藏】Docker中ADD和COPY的区别
  5. ubuntu查看版本及检查是否有系统更新的命令
  6. golang基本数据类型和string的相互转换
  7. kafka单机安装(版本kafka_2.11-2.2.0.tgz)
  8. ubuntu date -R查看时区
  9. Hadoop hdfs文件操作常用命令
  10. openresty获取nginx请求url中的所有参数