我一直在为我的web应用程序的数据库层进行加密。它使用的是MySQL 5.1 (或更高版本,我不记得了)。
该应用程序由我的组织管理,为公共客户存储数据。
最简单的选择是AES_ENCRYPT/AES_解密,如果坏人以某种方式访问了我的数据库(假设他们不知道密钥),这会有所帮助。
然而,我想更进一步,阻止组织中的任何人查看以未加密形式为客户存储的任何数据。
我们使用这个前提来存储密码;我们在应用程序级别对原始密码进行加密,并将其与db级别的预加密pwd进行比较。这显然是一种非常常见的方法,但我们有来自用户的输入--与我所要做的最重要的不同是,我们不能存储一个未加密的“密钥”,而使用用户的密码是有问题的,因为(除了另一堆原因),如果他们更改它,所有加密的数据都必须更改。
我无法理解这个想法(你可能已经猜到我不是密码学方面的专家了),但我希望谷歌能提出一些建议。不幸的是我找不到多少。如果能给我指点从哪里开始研究的话,我将不胜感激。
发布于 2014-12-05 16:47:12
与我试图做的事情的关键区别是,我们不能存储一个未加密的“密钥”,而使用用户的密码是有问题的,因为(除了另一堆原因)如果他们更改它,所有加密的数据都必须被更改
这两种想法让你大半步之遥:
当用户更改密码时,密钥将用旧密码解密,并使用新密码重新加密。最小的努力,没有重新加密整个数据集。
当我把它写出来时,这似乎是显而易见的/琐碎的。我不是密码专家,我也需要这个问题的答案,所以请在评论中指出我的想法的漏洞。
https://stackoverflow.com/questions/24320065
复制相似问题