Android Dev:在可信执行环境 (TEE) 中运行自定义代码,扩展 Keystore

Posted

技术标签:

【中文标题】Android Dev:在可信执行环境 (TEE) 中运行自定义代码,扩展 Keystore【英文标题】:Android Dev: Run custom code in the Trusted Execution Environment (TEE), extending the Keystore 【发布时间】:2018-03-21 21:30:01 【问题描述】:

我对 android 开发比较陌生,之前从未使用过 Android Keystore。但我熟悉(理论)概念。

我的问题是我必须生成并存储一个密钥,然后使用该密钥对某些数据运行加密原语。理想情况下,以最佳方式保护密钥不被提取,即密钥生成和所有加密操作仅在安全飞地内运行,因此只有有效负载离开受信任区域。

据我了解,这会自动发生,如果使用“正确”的 Keystore API,则硬件设备支持它并且密钥的使用会被适当地标记。但是,supported algoritms 是有限的。

问题:我可以编写在信任区内执行的自定义代码吗?如果是的话,你能指点我一个好的资源或教程吗?

背景: 我需要在椭圆曲线(Barreto-Naehrig 曲线)上使用 Abe 的 Optimal Structure-Preserving Signatures 和基于 SXDH 的 Groth-Sahai-Proofs 做一些花哨的现代东西。显然,开箱即用的 Keystore API 不支持这一点。目前,该代码被实现为 C++ 代码并编译为原生 Android 代码。该实现在语义上是正确的,但在实现级别上没有特别注意安全密钥存储,因为这都是学术原型开发。目前,密钥只是从一个普通文件读取/写入/写入,所有操作都在同一个用户区(主)进程中执行。

【问题讨论】:

【参考方案1】:

在大多数情况下,只有 OEM 可以使用 TEE,并且没有 SDK 可以访问 TEE。 Trustonic 的 Kinibi 是个例外,他们确实为他们的 TEE 提供了 SDK。为了访问它,您需要有 SDK 来开发受信任的应用程序和某种形式的开发板 (HIKEY) 来测试它。要部署到手机中,您需要与 Trustonic 达成某种形式的协议,允许用户使用 OTA 服务器下载和安装应用程序来管理密钥交换。

【讨论】:

【参考方案2】:

可信代码可以在trustonic的帮助下编写,它提供了一种叫做应用程序安全的产品,在这个帮助下,人们可以访问TEE环境。

另一种方法是使用 Trusty TEE OS,它在每个 android 中并独立于主处理器的进程并行运行,借助它可以完成。 它非常类似于独立运行的 System on Chip 进程,并且可以通过 IPC 以更安全的方式访问

这两种方式都非常复杂,

【讨论】:

以上是关于Android Dev:在可信执行环境 (TEE) 中运行自定义代码,扩展 Keystore的主要内容,如果未能解决你的问题,请参考以下文章

可信安全TEE分析1 概念

快速了解什么是可信执行环境TEE技术

可信执行环境(TEE)介绍 与应用

可信执行环境 TEE分类

可信执行环境 TEE分类

TEE(Trusted Execution Environment)简介