半透明数据库

前端之家收集整理的这篇文章主要介绍了半透明数据库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在建立一个健康信息的应用程序.这个应用程序将面向消费者,对我来说是新的.我想要一种完全放松隐私问题的方法.当我查看在可公开访问的数据库中确保敏感数据的方法时,我经常遇到数据库半透明的概念.有 the original book关于这个问题和 excellent tutorial on the subject from Oriellynet.

我担心的是,我已经看到关于这个想法的信息很少,我会认为非常现代的编程网站(像这样).关于维基百科的想法似乎没有文章.没有关于这个问题的问题,没有关于这个问题的最近的教程或文章.为了简明扼要,这个想法是某些数据对于系统的一些用户是清楚的,而其他用户即使具有管理员访问也被密码地阻止访问该数据.

我在提供半透明数据访问的原型数据库上做了大量工作.我遇到了一个相当大的问题:为了真正的半透明,没有密码恢复的机制.如果管理员可以重置用户密码,那么他们可以简单地访问用户数据.为了真正的半透明,用户永远不会松开密码.

在使用这些强大的加密系统的时候,我们这些使用强力加密来保护我们日常生活中的私人数据(技术上是可以肯定的)的人们被用于这个问题.如果“河豚”这个词是你日常词汇的一部分,那是一个消费者关注的网站?我担心用户将不会愿意围绕着真正的数据库半透明隐含的“真正加密的”为您提供的概念.我害怕以“我失去了密码”开始的支持电话,结束于我说“我没有什么可以为你做的”.

我的问题:我应该在我的应用程序中实现这个方法吗?有没有其他开源应用程序已经下了这个路由,我可以比较数据库设计(使用PHP / MysqL)?我有其他任何人追求这些真正安全的功能,但真的不方便的功能集?还有另一个数据库安全模式比较流行和现代,我错过了吗?数据库半透明是我应该拥抱的时尚还是合法的数据库设计方法?虽然我一直很感激讨论,但我更喜欢客观的答案,我可以利用我的设计.

解决方法

所以,我最近一直在看类似的东西,并且遇到同样的问题.我正在考虑实施的解决方案如下:

>注册后,为用户创建一个唯一,安全(长)的密钥,并使用它来加密他们的数据.
>使用用户密码加密该密钥. AES并将其存储在数据库中.

在这一点上,您仍然处于这样的情况:如果用户忘记了密码,他们已经拥有了密码.

>创建一个表示您的组织的公钥/私钥对,并将公钥存储在服务器上.
将密钥的私有部分分成几个组成部分,并将每个人(例如贵公司的董事)分配给拥有公司持续成功的重要股份(最好是财务).这样做,使任何两个或任何三个人可以聚在一起,并在需要时恢复完整的私钥.用自己的密码加密每个人的密钥.
>当用户注册并使用密码加密密钥时,使用组织公钥对其进行加密并存储在某个地方.
>创建一个密码重置表单,其中记录了重置用户密码的请求,以及用户是他们所说的(例如,询问/响应)的一些证据.
>在数据库中记录这些重置请求(可选地使用公钥加密).
>每小时/日/周/月一次,将所需的密钥持有者合并在一起,并使用它们的组合密钥来处理累积的重置请求,解密成功证明他们是他们所在的用户的密钥.

在这方面有很多挑战和考虑.对于大多数这些问题,我有一些想法,但也会对其他意见感兴趣:

>如何在多个人之间安全地拆分密钥,以免任何人都能解密存储的密钥.
>如果“主键”真正落入错误的手中,如何最大程度地减少将被暴露的按键数量.
>如何确保(天堂禁止)您的钥匙持有人丢失钥匙,那么(a)没有暴露数据的风险,(b)突然重置密码的能力永远不会丢失的风险.
>如何成功验证某人是否真的是他们所说的,而不是使您在整个安全方法中成为一个明显的洞.

您在这方面实施的任何事情都将降低半透明数据库方法的安全性,毫无疑问,这可能是一个有价值的妥协,取决于您的数据的性质.

猜你在找的MsSQL相关文章