gpt4 book ai didi

php - "zero knowledge"mysql数据库加密

转载 作者:行者123 更新时间:2023-11-29 00:12:43 24 4
gpt4 key购买 nike

我一直在研究我的 Web 应用程序的数据库层的加密。它使用的是 MySQL 5.1(或更高版本,我不记得了)。

由我的组织管理的应用程序为公共(public)客户存储数据。

最简单的选择是 AES_ENCRYPT/AES_DECRYPT,如果坏人以某种方式访问​​我的数据库(假设他们不知道 key ),这将有所帮助。

但是我想更进一步,防止我组织中的任何人能够查看以未加密形式为客户存储的任何数据。

我们使用这个前提来存储密码;我们在应用程序级别加密原始密码,并将其与数据库级别的预加密密码进行比较。这显然是一种非常常见的方法,但我们有来自用户的输入 - 与我正在尝试做的事情的关键区别在于我们无法存储未加密的“ key ”并且使用用户密码是有问题的,因为(除了另一堆原因)如果他们更改它,则必须更改所有加密数据。

我无法理解这个想法(您可能已经猜到我不是密码学专家)但期待 Google 提出一些建议。不幸的是,我找不到太多。对于从哪里开始研究的任何指示,我将不胜感激。

最佳答案

the crucial difference with what I am trying to do is that we can't store an unencrypted 'key' and using the user's password is problematic because (aside from another heap of reasons) if they change it, all the encrypted data would have to be changed

这两个想法将带您完成大部分工作:

  • 使用 key 加密数据(以您想要的方式)
  • 不要以明文形式存储此 key ,而是使用用户密码来加密 key
  • 在用户登录时,您将他们的密码与自身的单向版本(散列/加盐,您通常使用的方式)进行比较
  • 当匹配时,您使用密码来解密数据加密 key
  • 然后您使用此 key 访问加密数据

当用户更改密码时, key 将使用旧密码解密并使用新密码重新加密。最少的工作量,无需重新加密整个数据集。

在我写这篇文章时,它似乎很明显/微不足道。我不是加密专家,我也需要这个问题的答案,所以请在评论中戳穿我的想法。

关于php - "zero knowledge"mysql数据库加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24320065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com