我在我的 Java 项目中使用 Google Tink 库来加密两个文本,一个使用对称密钥加密 (SKE),另一个使用确定性对称密钥加密 (DSKE)。
这是一个后端应用程序,我没有用于存储主密钥的远程存储(谷歌可以,aws,...)。
生成我需要加密这两个文件的秘密材料的正确方法是什么?我想我需要使用 'tinkey' 来完成这项任务,但我并不真正理解密钥和密钥集之间的区别。我的 SKE 密钥和 DSKE 密钥可以在同一个密钥集中吗?如何生成它们?我可以拥有一个用于密钥轮换的主密钥吗?
谢谢
我在我的 Java 项目中使用 Google Tink 库来加密两个文本,一个使用对称密钥加密 (SKE),另一个使用确定性对称密钥加密 (DSKE)。
这是一个后端应用程序,我没有用于存储主密钥的远程存储(谷歌可以,aws,...)。
生成我需要加密这两个文件的秘密材料的正确方法是什么?我想我需要使用 'tinkey' 来完成这项任务,但我并不真正理解密钥和密钥集之间的区别。我的 SKE 密钥和 DSKE 密钥可以在同一个密钥集中吗?如何生成它们?我可以拥有一个用于密钥轮换的主密钥吗?
谢谢
您需要生成两个密钥集,一个 AEAD 和另一个 Deterministic AEAD。
tinkey create-keyset --key-template AES128_GCM --out aead-keyset.json
tinkey create-keyset --key-template AES256_SIV --out deterministic-aead-keyset.json
您希望将密钥集文件存储在后端服务器的安全位置。不要将它们提交到您的 git 服务器。
CleartextKeysetHandle在 Java 中,您可以使用其他语言的 API 或等效 API来加载密钥集。有关更多信息,请参阅该语言的 HOWTO。