2017-02-21 119 views
1

我有2个NodeJS应用程序,他们交换一些数据。数据通过AES加密。 目前AES KEY在客户端和服务器的JavaScript代码中进行了硬编码。在哪里存储有关数据?

问题是:什么是最佳实践?我在哪里存储客户端/服务器的密钥?这两款应用都是100%的控制台应用。 (没有用户/浏览器交互)。

更新:我用术语客户端/服务器。因为 - 对我和关于应用程序。逻辑它的服务器/客户端关系。但是,但应用程序。实际上是在两个独立的AWS服务器实例上运行的。我甚至可以在两个实例之间进行IP限制。因此,任何人都不能访问其他AWS RDP帐户以及通过两个实例通过端口进行通信的实例...

它们通过Web套接字连接交换数据,有时它们还访问运行在第三例......多数民众赞成在所有......这是足够安全的钥匙硬编码或我应该把它们放在哪里?

+0

公钥和私钥。为客户提供公钥。在只有管理员可以访问私钥的服务器上。然后,你们都成了。如果您知道目标操作系统,您可以尝试在密钥存储区中进行设置。 – Tschallacka

+0

如果存在任何rootkit风险(总是存在),请尽量多做,以防止它首先发生。然后,您可以添加密码并在启动时使用readline读取它。确保所有敏感信息仅在用户可读的情况下才能读取,如果无法防止将其存储在文件中。保持它们不在应用程序目录中。 –

回答

1

你应该有一个随机的密钥而不是修复的密钥,因为如果有人得到它,那么他们可以在中间人攻击中使用一个人。

尝试在服务器上生成密钥并将其发送给客户端。在客户端存储这个地方(最好在一个范围内),当你需要读或写消息时,你可以简单地使用它。

此外,你应该为每个客户端有不同的密钥,如果可能的话,你应该定期更换密钥。

如果您知道如何将其转换回来,即使使用混淆器(几乎总是可以反混淆),一切都是非常开源的。拥有硬编码的密钥是有用的,因为根本没有密钥。