1

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

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

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

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

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

4

2 回答 2

2

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

于 2017-10-10T14:28:59.547 回答
0

可信代码可以借助提供称为应用程序安全的产品的trustonic来编写,借助它,人们可以访问TEE环境。

另一种方法是使用每个 android 中的 Trusty TEE OS,它与主处理器的进程分开并行运行,借助它可以做到这一点。它非常类似于单独运行的片上系统进程,并且可以通过 IPC 以更安全的方式访问

两种方式都非常复杂,

于 2020-11-11T08:20:19.700 回答