首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在存储加密的客户数据的同时,最好的方法是什么?

在存储加密的客户数据的同时,最好的方法是什么?
EN

Stack Overflow用户
提问于 2011-02-11 03:21:59
回答 8查看 13.5K关注 0票数 26

我正在构建一个需要存储敏感信息的应用程序,这意味着我的数据库中的数据是加密的,因此有权访问数据库的黑客/员工无法破译敏感数据。但是,它仍然需要是可搜索的(在一定程度上)。

我理解可能需要做出某些妥协。例如,如果有必要,我愿意保留一些未加密的数据属性以使它们可索引,但是“主体”必须是加密的。

对于存储需要由授权人员查看、搜索和/或排序的敏感数据,有哪些最佳实践和方法?

(我正在考虑从“正文”中提取非stop words,并在加密正文之前将它们随机放在一个字段中,然后将该字段提供给搜索索引器,我怀疑这是否提供了任何真正的安全性。)

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-02-12 08:09:51

我目前正在寻找解决这个问题的方法。

我发现的最好的想法之一,是来自https://docs.microsoft.com/en-us/archive/blogs/raulga/indexing-encrypted-data的这篇文章。

他建议使用MAC来创建一个可索引的列。该解决方案适用于MS SQL Server,但也可以应用于其他系统。

票数 8
EN

Stack Overflow用户

发布于 2015-10-14 04:50:24

更新:您将希望查看CipherSweet,而不是滚动自己的设计。它负责大量的subtle security details,并且有一个straightforward security argument

散列函数不是这里的解决方案。正如公认的答案所暗示的那样,indexing encrypted data需要一个“盲目索引”,由MAC促成。

假设你在加密社保号码。当您将它们插入到数据库中时,您可能会执行如下操作:

代码语言:javascript
复制
$ssn_encrypted = \Defuse\Crypto\Crypto::encrypt($ssn, $our_encryption_key);
$ssn_blind_idx = \hash_hmac('sha512', $ssn, $our_search_key);

然后将这两个值存储在数据库中。当您需要根据SSN输入快速获取一个值时,您可以重新计算HMAC并基于此进行搜索。

数据库永远不会看到SSN,并且您的加密密钥永远不应该签入到源代码控制(SVN、git等)中。

票数 10
EN

Stack Overflow用户

发布于 2013-01-16 13:57:44

您需要使用一类新的加密算法,称为格式保留加密(搜索Wiki)。

我会明智地随意使用这样的算法,因为它们对文献来说是相对较新的,并且这是一个经验法则,在您可以将算法用于严肃的目的之前,您需要等待算法经过(比方说)十年的加密分析。我也不确定这种加密格式是否有任何标准。只有2010年提交的标准草案。http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/ffx/ffx-spec.pdf

因此,请考虑明智地使用它。对于需要超过(比方说)5年的保密跨度的信息,不要依赖格式保留加密。

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

https://stackoverflow.com/questions/4961603

复制
相关文章

相似问题

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