我一直在研究我的Web应用程序的数据库层的加密。它使用MySQL 5.1(或更高版本,我无法记得)。
由我的组织管理的应用程序为公共客户存储数据。
最简单的选择是AES_ENCRYPT / AES_DECRYPT,如果坏人以某种方式获得访问我的数据库(假设他们不知道密钥),这将有所帮助。
但是,我想更进一步,防止组织中的任何人以未加密的形式查看为客户存储的任何数据。
我们使用这个前提来存储密码;我们在应用程序级别加密原始密码,并将其与db级别的预加密pwd进行比较。这显然是一种非常常见的方法,但我们得到了用户的意见 - 与我要做的事情的关键区别在于我们无法存储未加密的密钥'使用用户密码是有问题的,因为(除了另一堆原因)如果他们改变它,所有加密数据都必须改变。
我无法理解这个想法(你可能已经猜到我不是密码学方面的专家)但是期待谷歌提出一些指示。不幸的是,我找不到多少。对于从何处开始研究,我将不胜感激。
答案 0 :(得分:1)
与我要做的事情的关键区别在于,我们无法存储未加密的密钥'使用用户密码是有问题的,因为(除了另一堆原因)如果他们改变它,所有加密数据都必须改变
这两个想法会带你走大部分路线:
当用户更改密码时,密钥将使用旧密码解密,并使用新密码重新加密。最小的努力,不重新加密整个数据集。
当我写出来时,它似乎是显而易见的/微不足道的。我不是加密专家,我也需要回答这个问题,所以请在评论中挖掘我的想法。