Security 在服务器上安全存储聊天日志的最佳方法

Security 在服务器上安全存储聊天日志的最佳方法,security,encryption,Security,Encryption,我正在开发的聊天应用程序需要在服务器上存储聊天历史记录。什么是安全存储此文件的最佳方法?我不想在表中存储纯文本聊天日志 我最初的想法是根据*用户密码对它们进行加密存储,但是如果用户忘记了自己的密码,那么最好的处理方法是什么?因为我不知道用新密码解密和重新加密的密码是什么 另一种解决方案是使用公钥加密所有内容,并将私钥存储在单独的机器上(以及服务器的本地内存中),并在需要解密和获取完整的聊天历史记录时获取私钥 任何帮助或案例研究都会很棒 *添加此选项是为了避免混淆,因为如果数据库被盗,您需要防止以

我正在开发的聊天应用程序需要在服务器上存储聊天历史记录。什么是安全存储此文件的最佳方法?我不想在表中存储纯文本聊天日志


我最初的想法是根据*用户密码对它们进行加密存储,但是如果用户忘记了自己的密码,那么最好的处理方法是什么?因为我不知道用新密码解密和重新加密的密码是什么

另一种解决方案是使用公钥加密所有内容,并将私钥存储在单独的机器上(以及服务器的本地内存中),并在需要解密和获取完整的聊天历史记录时获取私钥

任何帮助或案例研究都会很棒


*添加此选项是为了避免混淆

,因为如果数据库被盗,您需要防止以下情况:

  • 避免使用纯文本信息
  • 密钥不能存储在同一数据库中
  • 你不想要一把钥匙,因为如果猜到了,他们就会解锁所有的东西
  • 您不希望密钥绑定到用户提供的信息上(特别是当信息容易猜测或可能更改/忘记时)

因此,如果你有预算,我会使用基于预算的解决方案。这将提供必要的分离,并为您提供良好的密钥,这些密钥不会存储在文件系统或数据库中,而是安全地存储。您可以从一张卡开始(将所有内容都放在同一台物理服务器上),或者在必要时扩展到机架式机箱。

“我最初的想法是根据密码加密存储它们”谁的密码?我无法想象用户会乐意将他们的私钥交给您存储-这有点破坏了对象。只要告诉他们,如果他们丢失了私钥,他们将永久失去对历史记录的访问权。私钥方案是一个极好的选择,可以说是最安全的途径。也就是说,这样做的风险在于,任何拥有私钥的人都可以解密它。也就是说,你想从谁那里得到它?窥探DBA还是偷窃?这是一个关于类似主题的好帖子:为什么要加密?你想保护它不受谁的伤害?另外,您如何知道用户的密码?如果这是用户的密码,她应该是唯一知道它的人吗?谢谢。user93353-用户将输入密码以“保护”他的聊天。Martin James-我们将为他们生成一个私钥,仅用于此用途。谢谢Josh,虽然我们没有预算获得HSM,但这仍然是一个很好的链接。