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