半透明数据库

ftr*_*ter 13 database security translucency

我正在构建一个包含健康信息的应用程序.这个应用程序将面向消费者,对我来说是新的.我想要一种让隐私问题完全放心的方法.当我查看在公共可访问数据库中保护敏感数据的方法时,我经常遇到数据库半透明的概念.有关于这个主题的原始书Oriellynet关于这个主题优秀教程.

我担心的是,关于我认为非常现代的编程网站(比如这个),我看到的关于这个想法的信息很少.在维基百科上似乎没有关于这个想法的文章.这里没有关于这个主题的问题,也没有关于这个主题的最新教程或文章.简而言之,这个想法是某些数据对系统的某些用户是清楚的,而其他用户在加密方面无法访问该数据,即使他们具有管理员访问权限.

我已经在提供半透明数据访问的原型数据库上做了大量工作.我遇到了一个相当大的问题:要真正半透明,就没有密码恢复机制.如果管理员可以重置用户密码,则他们可以短暂地访问用户数据.要真正半透明,用户绝不能丢失密码.

在使用这些强大的加密系统时,我们这些使用强加密来保护我们日常生活中的私人数据(技术人员确定)的人习惯于这个问题.如果"河豚"这个词是你日常词汇的一部分,那是一回事,而是一个以消费者为中心的网站?我担心用户不会愿意围绕真正的数据库半透明隐含的"真正为你加密"概念.我害怕以"我丢失了密码"开头的支持电话,并以"我无能为力"为止告诉我.

我的问题:我应该在我的应用程序中实现此方法吗?是否有其他开源应用程序沿着这条路走下去,我可以比较数据库设计(特别是使用php/MySQL)?我还有其他人在追求这些真正安全但非常不方便的功能集吗?是否有其他数据库安全模型更流行和现代,我错过了?数据库半透明是我应该拥抱的时尚还是合法的数据库设计方法?虽然我总是喜欢讨论,但我更喜欢在设计中可以利用的客观答案.

Pau*_*ell 7

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

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

此时,您仍处于如果用户忘记密码的情况下,他们已经拥有了密码.

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

这有很多挑战和考虑因素.我对其中的大多数都有一些想法,但也会对其他人的意见感兴趣:

  • 如何在多人之间安全地拆分密钥,以便没有人可以解密存储的密钥.
  • 如果"主密钥"真正落入坏人手中,如何最大限度地减少暴露的密钥数量.
  • 如何确保如果(天堂禁止)你的钥匙持有人丢失他们的钥匙,那么(a)没有暴露数据的风险,以及(b)没有风险突然重置密码的能力永远丢失.
  • 如何成功地验证某人是否真的是他们所说的人,而不会在整个安全方法中成为一个明显的漏洞.

您在此领域实施的任何内容都会降低半透明数据库方法的安全性,毫无疑问,这可能是一个值得妥协的,具体取决于您的数据的性质.


Tre*_*oke 1

回复:半透明数据库。我想你可以使用指纹。烧伤患者或最终丢失指纹的人怎么办?哎呀。这么小的用户比例值得吗?

熟悉HIPAA,尤其是在技术方面。请记住,除了天网* 之外,没有任何系统是真正安全的,看看发生了什么!人类负责。当您在医疗公司工作时,您会签署一份保密协议,表明您不会泄露您在职责中了解到的任何信息,因为这些信息是保密的。会有人重置人们的密码。事情就是这样,因为并不是每个人都有技术能力,而且目前情况也是如此。您只需按照 HIPAA 规定实施安全即可。

  • 事实上,还有另一种真正安全的系统:它会拔掉网络和电源,然后关闭。