在我公司的 MySQL 数据库中加密客户信息的最佳方法? [关闭]
Posted
技术标签:
【中文标题】在我公司的 MySQL 数据库中加密客户信息的最佳方法? [关闭]【英文标题】:Best Way to Encrypt Customer Information in My Company's MySQL DB? [closed] 【发布时间】:2012-03-05 04:06:21 【问题描述】:长话短说,我们公司最近发生了一起入侵事件,其中我们的 mysql 数据库被倾销并被盗。高管们现在真的很紧张,除了加强其他安全措施外,他们还打算加密数据库中的所有客户信息(电子邮件地址、家庭地址、姓名等)。
我不确定从哪里开始。我们运行一个 php 应用程序。显然,这会产生一些我们希望最小化的额外开销。另一个问题是在使用新加密字段的地方很难更改代码。
我觉得这是一种不必要的预防措施,但管理层似乎对此很坚定。
哪种类型的加密算法/方法最适合此用例?
【问题讨论】:
增强您的服务器安全性。花时间在那里。加密所有数据似乎真的很极端。推回去,西装不知道一切。 您的数据库访问应该被隔离到只需要对模型进行低级更改来加密数据的地步。从字面上看,您的数据层/模型/业务对象之外的任何内容都不需要更改,甚至应该知道数据是加密的。如果您因为模型的内部存储发生变化而不得不改变模型的使用方式,那么您的应用程序编写得非常糟糕。 @earthmeLon “盐和散列”与这个问题无关,完全。 “向它扔盐和哈希”!= 安全性,如果你不知道它是什么,你不应该建议它。 @earthmeLon 同样,盐和散列在这里并不适用,即使作为关键字也是如此。他不是在谈论安全地存储密码,而是在谈论使用可逆加密来存储“电子邮件地址、家庭住址、姓名”。如果您想要有用的关键字,请尝试“securing PII”。 Personally Identifiable Information 的安全存储是一项巨大的交易,在您开始存储客户数据之前就应该解决这个问题。 @meagar - 所以,当我访问 Facebook 的 API 并收集数千个用户的个人信息时,你的建议是非法的?您所指的 PII“法律”意味着您需要保护诸如 SSN 的 CC 信息等信息,而不是基本信息 【参考方案1】:这里有一篇关于如何使用 MySQL 执行此操作的非常好的文章:http://thinkdiff.net/mysql/encrypt-mysql-data-using-aes-techniques/。
您会希望将 AES 与 256 位密钥一起使用,因为这是目前流行的最佳实践/标准。 256 位 AES 密钥的大小被认为足以抵御现代计算能力。
加密您的数据库是个好主意,无论您是否认为它是矫枉过正。即使数据不是非常敏感,客户记录的丢失至少会让您的公司非常尴尬,并且可能会对客户信心和人们在未来交出数据的意愿产生不利影响。加密数据库的全部内容目前可能不是行业标准,但趋势正在朝着这种方向发展,采用更强大的安全态势不会对您造成伤害。如果不出意外,请将其视为您的深度防御实施中的另一个条目。
我还建议您查看这篇文章 - http://www.symantec.com/connect/articles/secure-mysql-database-design - 因为它提供了一个很好的、相当基本的安全数据库系统设计介绍,应该为您提供一些关于检查您的应用程序的其他事项的指导。
【讨论】:
这种方法不是很安全,因为这种方法会使加密模式回退到不安全的ECB模式。以上是关于在我公司的 MySQL 数据库中加密客户信息的最佳方法? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在不使用 mysql 服务器资源的情况下加密数据的最佳方法是啥?使用 CFB 模式的 mcrypt 是使用 php 的最佳方式吗?