我想加密我存储在服务器上的用户数据,以便在我的服务器遭到入侵时安全。以下是一个很好的方法:
每个用户的密码都是GPG密钥对的密码。在保存到数据库之前,所有用户的数据都使用公钥加密。密码将被丢弃,密钥对仅在会话期间保留,因此只有在提供密码时才能解密数据。
答案 0 :(得分:3)
从某人妥协您的服务器的角度来看,确保数据安全的唯一方法就是您的方式,当用户必须提供密钥以便每次解密时。
任何其他技术都会留下一些可以被利用的弱点。
但是你必须确保另一种方式(我的意思是当用户提供密码时)也是安全的,使用https和防止会话攻击,跨脚本等等。
如果您没有特定的硬件来进行额外的保护,就像它们根据时间生成伪随机数(就像银行令牌一样)或类似的东西,最好的办法是保持密钥与用户或使用具有更高安全性的第三方存储作为Azure或Amazon上的SQL。
在考虑了很多关于将加密密钥放在哪里使数据变得模糊之后我使用了相同的方法,即使我的服务器受到了损害。我找到的唯一安全方式是“与用户”。
答案 1 :(得分:1)
您的方法可以保护您免受一次攻击:窃取您的数据库(并且只有在您正确加密密钥时)。如果您的服务器遭到入侵,他们可以使用您的ssl私钥并监听您的网络流量(使用用户密钥)