如何生成Java修补密钥?

问题描述

我在Java项目中使用Google Tink库对两个文本进行加密,一个文本使用对称密钥加密(SKE),另一个使用确定性对称密钥加密(DSKE)。

这是一个后端应用程序,我没有用于存储主密钥的远程存储(谷歌可以,aws,...)。

生成我需要加密这两个文件的机密材料的正确方法是什么?我认为我需要为此任务使用“ tinkey”,但我并不真正了解键和键集之间的区别。 我的SKE密钥和DSKE密钥可以在同一密钥集中吗?如何生成它们?我可以拥有用于旋转钥匙的主钥匙吗?

谢谢

解决方法

您将要生成两个键集,一个AEAD和另一个确定性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。