【问题标题】:How to generate a Java tink key?如何生成 Java tink 密钥?
【发布时间】:2020-12-09 14:18:31
【问题描述】:
我在我的 Java 项目中使用 Google Tink 库来加密两个文本,一个使用对称密钥加密 (SKE),另一个使用确定性对称密钥加密 (DSKE)。
这是一个后端应用程序,我没有用于存储主密钥的远程存储(谷歌可以,aws,...)。
生成我需要加密这两个文件的秘密材料的正确方法是什么?我想我需要使用 'tinkey' 来完成这项任务,但我并不真正理解密钥和密钥集之间的区别。
我的 SKE 密钥和 DSKE 密钥可以在同一个密钥集中吗?如何生成它们?我可以拥有一个用于密钥轮换的主密钥吗?
谢谢
【问题讨论】:
标签:
java
cryptography
tink
【解决方案1】:
您需要生成两个密钥集,一个 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 服务器。
在 Java 中,您可以使用 CleartextKeysetHandle 或其他语言的等效 API 加载键集。有关详细信息,请参阅该语言的 HOWTO。