1

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

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

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

  • Tink 在技术上已经支持直接使用 GCloud,但这需要我的应用程序具有 GCloud Credentials,如上所述,这并不安全。

  • 我可以使用JSONKeyWriter使用 ByteArrayOutputStream 将密钥的 JSON 版本写入字符串,并使用我的后端发送此字符串以进行加密,但由于某种原因,我还不能解释这感觉不对我。

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

4

0 回答 0