首页 > 解决方案 > 使用 Tink 和 Google Cloud KMS 在 Android 上实现信封加密

问题描述

我正在实施的应用程序将包含高度敏感的用户数据,因此我们希望在本地和在线(在 Gcloud Firestore 上)保存之前对数据进行加密。我想使用Envelope Encryption来做到这一点。

目前我在 Gcloud Run 上部署了一个 Python 后端,它具有连接到 GCloud KMS 的凭据。它提供了一个 REST API,我想用它来使用 GCloud KMS 密钥作为密钥加密密钥 (KEK) 来加密数据加密密钥 (DEK)。目前它只能加密简单的字符串,我们从单独的后端而不是从应用程序本身执行此操作,因为据我所知,没有安全的方法将 GCloud 凭据存储在应用程序内。GCloud KMS 客户端库不支持 Android另一个SO答案涉及到这一点。

在 Android 端,我使用Tink创建一个数据加密密钥,我可以用它加密我的数据。最后一步,我无法完全弄清楚的是如何将 AEAD 密钥发送到我的后端。这是我已经考虑过的:

所以我有点卡住了。第二个选项仍然是正确的吗?也许还有另一个我还没有考虑过的第三种选择。我不认为我是第一个实现这一点的人,但我似乎找不到任何关于以这种方式工作的信息。

标签: androidencryptiongcloudgoogle-cloud-kmstink

解决方案


推荐阅读