Android Dev : Run custom code in the Trusted Execution Environment (TEE), 扩展 keystore

标签 android security cryptography trusted-computing

我是 Android 开发的新手,之前从未使用过 Android Keystore。但我熟悉(理论)概念。

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

据我所知,如果使用了“正确的”Keystore API,硬件设备会支持它,并且 key 的使用会被适当标记,这会自动发生。然而,supported algoritms数量有限。

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

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

最佳答案

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

关于Android Dev : Run custom code in the Trusted Execution Environment (TEE), 扩展 keystore ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46667332/

相关文章:

android - 如何在 Android 中停止动画

javascript - 如何将 Web API 设为私有(private)

security - 用户在网络应用程序中注册后通过电子邮件发送用户名和密码

java web应用程序在第二次登录后销毁第一次登录 session

c - 是否存在没有依赖关系的 C 哈希函数?

c - 使用 C 中的 Miracle Library 进行 ECC 加密

java - 为什么在Android Studio的Profiler(内存)中,FinalizerReference类的保留堆大小如此之大?

android - java.security.NoSuchAlgorithmException : no such algorithm: ECDSA for provider BC

android - 通知管理器不显示任何类型的通知

java - 如何处理多个密码