“零知识”加密mysql数据库(“zero knowledge” encryption for my

2019-10-20 08:23发布

我一直在寻找我的web应用程序的数据库层加密。 它使用MySQL 5.1(或更高,我不记得的副手)。

该应用程序,通过我的组织管理,公共客户端存储数据。

最简单的选择是AES_ENCRYPT / AES_DECRYPT如果坏人不知何故虎子访问到我的数据库(假设他们不知道密钥),这将有助于。

不过,我想更进一步借此,防止在我的组织任何人能够查看存储为客户在其未加密形式的任何数据。

我们使用这个前提下,为存储密码; 我们加密在应用程序级的原始密码,并将它与在数据库级别的预加密PWD。 这显然是一个很常见的方法,但我们必须从用户那输入 - 有什么,我试图做的关键区别是,我们不能从存储未加密的“密钥”,并使用该用户的密码是有问题的,因为(除原因另一个堆),如果他们改变它,所有的加密数据将不得不改变。

我不能让我的头围绕这个观点(你可能已经猜到我不是在密码学方面的专家),但预计谷歌抛出了几个三分球。 不幸的是,没有多少我能找到。 我将是从哪里开始研究任何指针感激。

Answer 1:

有什么,我试图做的关键区别是,我们不能使用用户的密码是有问题的,因为(除的原因另一个堆),如果他们改变它,所有的加密数据必须存储未加密的“密钥”和被改变

这两个主意把你大部分的存在方式:

  • 使用一键(你想要的方式)对数据进行加密
  • 而不是存储在平原此键,使用用户密码加密密钥
  • 在用户登录你比较他们对自身的单向型密码(散列/腌制时,你通常会这样)
  • 如果匹配,您使用的密码解密数据加密密钥
  • 然后您可以使用此键来访问加密数据

当用户更改他们的密码,密钥就会被解密使用旧密码和新密码重新加密。 最小的努力,没有重新加密整个数据集。

当我写了这一点,似乎很明显/微不足道。 我不是加密专家,我需要一个答案,这个问题为好,所以请万佛洞在我的意见想法。



文章来源: “zero knowledge” encryption for mysql database