【问题标题】:Managing and storing AES keys in a webserver application在 Web 服务器应用程序中管理和存储 AES 密钥
【发布时间】:2014-11-14 22:49:01
【问题描述】:
我有一个网络服务器应用程序,它接收上传的文件,使用 AES256 对其进行加密和解密。我对它们进行了加密,因此潜在的黑客以某种方式进入了存储,无法对文件做任何事情。目前,每个文件都使用相同的硬编码密钥进行加密。
使用存储在数据库中的其他随机密钥加密每个文件是否更安全,也许是散列(和加盐)?这甚至提供更高级别的安全性吗?或者将这些密钥存储在数据库中会更糟吗?
【问题讨论】:
标签:
encryption
web-applications
aes
【解决方案1】:
密钥存储是一个相当基本的问题,如果没有相当特殊的硬件很难解决。
只要您将密钥与加密数据存储在同一台机器上,攻击者就会同时获得两者。如果您只有更多的键,这不会从根本上改变。
您也不能对键进行散列/加盐,因为散列是一种单向函数,仅使用存储的散列,您自己(或您的应用程序)将无法计算键,所以这是没有意义的。
如果可行,您可以在应用服务器启动时手动输入密钥,因此密钥只存在于 RAM 中,而不是磁盘中。确保它不会被调出交换分区。
如果您可以在客户端加密文件(在上传之前),那么只有用户拥有密钥,那会更安全...