首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql数据库的零知识加密

mysql数据库的零知识加密
EN

Stack Overflow用户
提问于 2014-06-20 04:38:50
回答 1查看 821关注 0票数 3

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

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

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

然而,我想更进一步,阻止组织中的任何人查看以未加密形式为客户存储的任何数据。

我们使用这个前提来存储密码;我们在应用程序级别对原始密码进行加密,并将其与db级别的预加密pwd进行比较。这显然是一种非常常见的方法,但我们有来自用户的输入--与我所要做的最重要的不同是,我们不能存储一个未加密的“密钥”,而使用用户的密码是有问题的,因为(除了另一堆原因),如果他们更改它,所有加密的数据都必须更改。

我无法理解这个想法(你可能已经猜到我不是密码学方面的专家了),但我希望谷歌能提出一些建议。不幸的是我找不到多少。如果能给我指点从哪里开始研究的话,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2014-12-05 16:47:12

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

这两种想法让你大半步之遥:

  • 使用密钥加密数据(按您想要的方式)
  • 不要将此密钥存储在普通文件中,而是使用用户密码加密密钥。
  • 在用户登录时,您将他们的密码与其本身的单向版本(哈希/盐渍,通常的方式)进行比较。
  • 如果匹配,则使用密码解密数据加密密钥。
  • 然后使用此密钥访问加密的数据。

当用户更改密码时,密钥将用旧密码解密,并使用新密码重新加密。最小的努力,没有重新加密整个数据集。

当我把它写出来时,这似乎是显而易见的/琐碎的。我不是密码专家,我也需要这个问题的答案,所以请在评论中指出我的想法的漏洞。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24320065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档