gpt4 book ai didi

java - key 安全 - 如何确保 key 安全?

转载 作者:行者123 更新时间:2023-11-30 02:31:58 27 4
gpt4 key购买 nike

假设有一个 key 加密 key 位于内存中并且未写入文件或数据库...

byte[] kek = new byte[32];
secureRandom.nextBytes(kek);
byte[] kekHash = SHA512.hash(kek);

并假设 key 加密 key 是临时的,并且数据加密 key 可能是也可能不是临时的。

如何保护kek

如何确保 kek 永远不会写入虚拟内存?

如何确保 kek 不被其他应用程序(例如 CheatEngine)读取?

如何确保 kek 是由应用程序生成的,并且 kekkekHash 不会被其他应用程序操纵来生成它使用对手的 key ?

我听说过“软件 HSM”。他们使用了哪些令人惊叹的技术来确保他们存储的 key 安全?

最佳答案

如果您想真正保护您的加密 key ,则必须使用硬件安全模块 (HSM)。这些是可以安全存储您的 key 的物理设备。您可以阅读有关它们的更多信息 here .

在您当前的场景中,您将使用软件(本例中为 java)生成加密 key ,并且您还将在软件上执行密码操作(加密/解密)。但是,当您使用 HSM 时,您实际上会在硬件上生成和存储 key ,并且您将在硬件本身而不是软件上执行加密操作。为了使软件能够与硬件通信,您必须进行许多配置。因此,进入 HSM 并查看 key 并不容易。这只是 HSM 使用方式的高级说明。 PKCS#11 API 一般用于与硬件交互。您可以阅读更多相关信息here .

这些设备通常有 3 种主要形式:HSM(与服务器一样大)、USB token 、智能卡。这些设备的价格从几百到几千美元不等。

因此,对于那些想要尝试 HSM 工作原理的人,或者如果负担得起或只是想为他们的项目进行一些研发的人,您可以使用 SoftHSM。这意味着,您将与 SoftHSM 软件交互,就像平常与硬件交互一样(使用 PKCS#11),但您的 key 实际上存储在软件上。由于 SoftHSM 不是物理设备,因此它是您可以安装在计算机上的软件。密码操作也在软件上完成。将来,当您准备好与物理 HSM 集成时,您只需使用 SoftHSM 代码即可。您可以引用SoftHSM文档here .

因此,要真正安全地存储 key ,您可以使用 HSM。但当你使用软件时,总会有一个开放的结局。假设即使您有一个可以加密您的加密 key 的 super 主 key ,您也必须将 super 主 key 存储在某个地方。通常存储在 Java KeyStore 中。 Java KeyStore 受密码保护,您也必须将其存储在某个地方。

提高安全性的一种方法是对执行这些关键操作的代码进行混淆。即使混淆也可能会被破坏,但这需要时间并且难度不大。

关于java - key 安全 - 如何确保 key 安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44081199/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com