我对Android开发相对较新,之前从未使用过Android Keystore。但我熟悉(理论)概念。
我的问题是我必须生成并存储密钥,然后使用此密钥在某些数据上运行加密原语。理想情况下,关键是以最佳方式防止提取,e.i。密钥生成和所有加密操作仅在安全区域内运行,以便只有有效负载离开受信任区域。
据我所知,这是自动发生的,如果"正确"使用密钥库API,硬件设备支持它,并且密钥的使用被适当地标记。但是,supported algoritms是有限的。
问题:我可以编写自己在Trust区域内执行的自定义代码吗?如果是的话,你能指点我一个好的资源或教程吗?
背景:我需要在椭圆曲线(Barreto-Naehrig曲线)上做一些花哨的现代材料,其中Abe和SXDH的Groth-Sahai-Proofs具有最佳结构保留特征。显然,Keystore API不支持开箱即用。目前代码实现为C ++ - 代码并编译为本机Android代码。实现在语义上是正确的,但在实现级别上没有特别注意安全密钥存储,因为它是所有学术原型开发。目前,密钥只是从普通文件读取/写入,所有操作都在同一个用户 - 土地(主)进程中执行。
答案 0 :(得分:2)
在大多数情况下,TEE仅供OEM使用,并且没有SDK可以访问TEE。例外的是来自Trustonic的Kinibi,他们为他们的TEE提供了一个SDK。为了访问它,您需要使用SDK来开发可信应用程序和某种形式的开发板(HIKEY)来测试它。要部署到手机中,您需要与Trustonic达成某种形式的协议,允许用户使用OTA服务器下载和安装应用程序来管理密钥交换。
答案 1 :(得分:0)
受信任的代码可以在trustonic的帮助下编写,trustonic提供了称为应用程序安全性的产品,借助于此,人们可以访问TEE环境。
另一种方式是使用Trusty TEE OS,该操作系统在每个android系统中均与主处理器的进程分开并行运行,可以借助此实现。 它非常类似于单独运行的片上系统进程,并且IPC可以更安全地对其进行访问
这两种方法都非常复杂,