dan*_*dan 24 database security encryption couchdb
我正在构建一个需要存储敏感信息的应用程序,这意味着数据在我的数据库中加密,以便有权访问数据库的黑客/员工无法解密敏感数据.但是,它仍然需要可搜索(在某个级别).
我理解可能必须做出某些妥协.例如,我愿意保留一些未加密的数据属性,以便在必要时使它们可索引,但"主体"必须加密.
存储需要由授权人员查看,搜索和/或排序的敏感数据的最佳实践和方法有哪些?
(我正在考虑从"正文" 中提取非停止词并在加密正文之前将它们按字段随机排列,然后将该字段提供给搜索索引器,我怀疑它提供了任何真正的安全性.)
更新:您需要查看CipherSweet而不是滚动自己的设计.它处理了许多微妙的安全细节,并具有直接的安全性论点.
散列函数不是解决方案.正如所接受的答案所暗示的那样,索引加密数据需要由MAC促成的"盲目索引".
假设您正在加密社会安全号码.将它们插入数据库时,您可能会执行以下操作:
$ssn_encrypted = \Defuse\Crypto\Crypto::encrypt($ssn, $our_encryption_key);
$ssn_blind_idx = \hash_hmac('sha512', $ssn, $our_search_key);
Run Code Online (Sandbox Code Playgroud)
然后将两个值存储在数据库中.当您需要根据SSN输入快速获取值时,您可以重新计算HMAC并根据该值进行搜索.
数据库永远不会看到SSN,您的加密密钥永远不应该被检入源代码控制(SVN,git等).
小智 5
我正在寻找解决同样问题的方法.
我发现的最好的想法之一是来自RaulGarcía的这篇文章,http://blogs.msdn.com/b/raulga/archive/2006/03/11/549754.aspx.
他建议使用MAC来创建可索引的列.该解决方案适用于MS SQL Server,但它可以应用于其他系统.
归档时间: |
|
查看次数: |
10762 次 |
最近记录: |