半透明数据库

2024-06-26

我正在构建一个包含健康信息的应用程序。这个面向消费者的应用程序对我来说是新的。我想要一种方法来完全消除隐私问题。当我回顾保护可公开访问的数据库中的敏感数据的方法时,我经常遇到数据库半透明的概念。有原书 http://www.wayner.org/books/td/关于这个主题和来自 Oriellynet 的关于该主题的优秀教程 http://www.oreillynet.com/pub/a/network/2002/08/02/simson.html.

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

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

我们这些在日常生活中使用强加密来保护私人数据的人(当然是技术人员)在使用这些强加密系统时已经习惯了这个问题。如果“河豚”这个词是您日常词典的一部分,那是一回事,但是一个以消费者为中心的网站呢?我担心用户不愿意将他们的思想集中在真正的数据库半透明性隐含的“真正为您加密”的概念上。我害怕以“我丢失了密码”开头并以“我无能为力”结束的支持电话。

我的问题:我应该在我的应用程序中实现这个方法吗?是否有其他开源应用程序沿着这条路线进行比较数据库设计(特别是使用 php/MySQL)?我还有其他人追求这种真正安全但确实不方便的功能集吗?是否有另一种我错过的更流行和现代的数据库安全模型?数据库半透明是一种时尚还是一种我应该接受的合法数据库设计方法?虽然我总是很欣赏讨论,但我更喜欢可以在设计中利用的客观答案。


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

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

此时,您仍然处于这样的情况:如果用户忘记了密码,他们已经拥有了密码。

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

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

  • 如何在多人之间安全地分割密钥,以便没有人可以解密存储的密钥。
  • 如果“万能钥匙”真的落入坏人之手,如何最大限度地减少暴露的钥匙数量。
  • 如何确保(但愿不会)您的密钥持有者丢失了密钥,那么(a)不存在数据暴露的风险,并且(b)不存在突然永远失去重置密码的能力的风险。
  • 如何成功验证某人是否确实是他们所说的人,而不会使这成为整个安全方法中的明显漏洞。

毫无疑问,您在该领域实现的任何操作都会降低半透明数据库方法的安全性,但这可能是值得的妥协,具体取决于数据的性质。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

半透明数据库 的相关文章

  • Laravel 插入三向数据透视表

    Summary 我正在构建音乐发现服务 我的问题是 如何将数据插入三向数据透视表 标签 跟踪 用户 Schema 我看到了这个架构在 LaravelSD http www laravelsd com share WNmzz8 它由六个主表
  • 按钮 Onclick 调用 Javascript,后者调用 PHP 文件,该文件添加到 Mysql 数据库

    我需要添加到数据库的帮助 我想从按钮单击方法调用 javascript scrt Javascript 脚本 我想调用一个 php 文件 其中包含一些添加到 MySQL 数据库的代码 我确实尝试了 20 多个网站 但没有任何帮助 如果 AJ
  • 不同的数据库使用不同的名称引用吗?

    例如 mysql引用表名使用 SELECT FROM table name 注意 其他数据库是否使用不同的字符来引用其表名 这种引号的使用称为分隔标识符 它是 SQL 的重要组成部分 因为否则您将无法使用以下标识符 例如表名和列名 包含空格
  • Grails Spring Security 插件 - 修改登录用户的权限

    我有一个简单的 Grails 应用程序 安装了 Spring Security Core 插件并且工作正常 但是 我还没有找到任何解决方案来解决在安全上下文中更新登录用户权限的问题 我不是在谈论更新当前用户的详细信息 即 springSec
  • c3p0 连接检查

    我第一次尝试使用 c3p0 实现解决方案 我了解如何初始化连接池并从池中 签出 连接 如下所示 ComboPooledDataSource cpds new ComboPooledDataSource cpds setDriverClass
  • 对于向 XSS 漏洞开放 JWT,我应该有多担心?

    我正在构建一个 Node js Web 应用程序 该应用程序使用用于 GUI 的 React 和由 Apollo 提供的 graphQL 用于连接到 AWS 上的 RDS MySQL 实例的后端 我正在对用户进行身份验证 然后返回 JWT
  • PHP 中的 MD5 替代方案? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 java 反射中隐藏我的安全密钥

    下面的类是我用于加密的安全密钥提供程序 public class MySecretKey private String key 2sfdsdf7787fgrtdfg cj5 Some Util methods goes on Here 首先
  • 一次将多个值插入MySQL [重复]

    这个问题在这里已经有答案了 谁能解释一下为什么这个 PHP MySQL 不起作用 基本上我需要从表单中一次插入大量行 因此会有多个名称字段 多个短 中 长字段等 我收到此错误 Notice Undefined variable Short1
  • 通用 Oracle 数据收集存储

    我正在设计一个新的实验室数据库 我想将所有测试的原始结果存储在一起 在某些情况下 结果是单个值 然而 结果有时是原始波形或信号 下面哪种情况是理想的 以及为什么 或提供您自己的理想选择 选项 1 将每个单独的数据点存储为单独的结果行 距 t
  • 如何让MySQL数据库完全在内存中运行?

    我注意到我的数据库服务器支持内存数据库引擎 我想让一个已经运行 InnoDB 的数据库完全在内存中运行以提高性能 我怎么做 我探索了 PHPMyAdmin 但找不到 更改引擎 功能 假设您了解注释中提到的使用 MEMORY 引擎的后果 并且
  • Microsoft SQL 数据库的 WebSocket 侦听器

    我目前正在开发一个项目 该项目必须使用 WebSockets 作为将数据传输到客户端的方式 基础设施看起来像这样 客户端 gt Web 服务器 gt Microsoft SQL 数据库 我想最理想的情况应该是这样的 客户端打开一个到服务器的
  • 如何查看我的 laravel 数据库?

    我已经设置了功能性的 laravel 项目 数据库连接有效 我已经通过终端添加了一些表 但现在我想看到它 就像您可以使用 phpmyadmin 看到所有内容一样 默认情况下如何找到数据库文件以及如何打开它 在终端中 cd 进入项目目录 va
  • 有谁知道有一个很好的库可以将一个人的名字映射到他或她的性别吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在寻找一个图书馆或数据库 可以根据一个人的名字或昵称猜测他或她是男性还是女性 就像是 john gt M mary gt F al
  • Mysql如何将数据库中的时间数据类型设置为仅HH:MM

    如何将我的 mysql 数据库字段 时间 数据类型设置为数据库中的 HH MM 在我的脚本中 用户仅输入 HH MM 并且数据库自动添加最后一个 SS 数字 问题是当我拉取时要编辑的值 它还添加了最后一个数字 这有点烦人 我可以用 PHP
  • mysql字符串转换返回0

    why select aaa 0返回 1 真 如果我有一张像这样的桌子 userid pass user1 pas1 如果我查询 select from table where userid 0 and pass 0 它给了我所有的行 My
  • Spring security @secure 不适用于角色层次结构

    我在 spring security 中使用角色层次结构spring securityConfig xml is
  • 测试 ODBC 连接的有效方法

    我们的产品是一个 TCP 监听事务处理器 传入连接被分配一个线程来处理连接和一个数据库连接来使用 我们维护一个数据库连接池 而不是为每个传入的客户端连接建立新的数据库连接的昂贵方法 数据库连接池相当可配置 最小 最大大小 增长率等 一些细节
  • ASP.NET MVC5 - 将用户保留在 Oracle 数据库中

    一旦创建了一个ASP NET MVC5项目 目标框架是 NET 4 5 1认证类型是个人用户帐户 那么配置项目以便将用户 声明 角色等保留在 Oracle 12c 数据库中的最优雅的方法是什么 我的意思是 如何在不影响自动生成的 MVC5
  • 如何测试网页代码?

    对于严重依赖状态的数据库后端开发编写测试代码 是否有人有一些好的提示 具体来说 我想为从数据库检索记录的代码编写测试 但答案将取决于数据库中的数据 可能会随着时间的推移而改变 人们通常是否会使用 冻结 数据库制作单独的开发系统 以便任何给定

随机推荐

  • Pandas DataFrame - 列 whos dtype=='category' 上的聚合导致性能下降

    我使用内存使用量较高的大数据帧 并且我读到 如果更改重复值列上的数据类型 我可以节省大量内存 我尝试了一下 确实内存使用量下降了 25 但随后我遇到了我无法理解的性能缓慢问题 我对 dtype 类别 列进行分组聚合 在更改 dtype 之前
  • 解析 Immutable.js 中的嵌套记录

    假设我使用 Immutable js 定义了以下记录 var Address Immutable Record street city zip var User Immutable Record name address new Addre
  • MySQL - 如何按相关性排序? INNODB表

    我在一个名为 cards 的 INNODB 表中有大约 20 000 行 所以 FULLTEXT 不是一个选项 请考虑这张表 id name description 1 John Smith Just some dude 2 Ted Joh
  • Excel 仅粘贴特殊使用值,还将值的数据类型与值一起复制到目标单元格中

    我一直在尝试更多地了解 Excel 单元格 特别是它们的数据类型 如果有人对细节感兴趣 我的调查位于下面的编号点中 我的结论被标记为 A 到 D 我真的很感兴趣是否有人有什么可以补充的 答 每个 Excel 单元格都有一个属性 用于定义它将
  • Emacs shell:保存提交消息

    我几天前开始使用 emacs 在 emacs shell M x shell 中使用 git 时遇到问题 当我 git commit 或 git commit amend 时 它会打开 vim 来编辑并保存提交消息 我对此表示同意 但我找不
  • Python 中的 Hello World [重复]

    这个问题在这里已经有答案了 我尝试运行一个 python 脚本 print Hello World 我收到此错误 File hello py line 1 print Hello World SyntaxError invalid synt
  • asp.net在网站中添加自定义控件

    我想在我的网站中制作自定义控件 注意 不是网络应用程序 以下是代码 using System using System Collections Generic using System Linq using System Web using
  • 不使用 var 关键字声明变量

    w3schools 上写着 如果声明变量时不使用 var 则该变量始终变为 GLOBAL 在函数内部声明全局变量有用吗 我可以想象在某些事件处理程序中声明一些全局变量 但它有什么用呢 更好地利用内存 不 没有内存优势或类似的东西 w3sch
  • 以清晰的方式在 1 个轴上显示 3 个直方图 - matplotlib

    我生成了 3 组数据 它们以 numpy 数组的形式组织 我有兴趣将这三组数据的概率分布绘制为标准化直方图 所有三个分布看起来几乎相同 因此将所有三个分布绘制在同一轴上以便于比较似乎是明智的 默认情况下 matplotlib 直方图绘制为条
  • 利用 Python f 字符串和 Yaml 文件?

    如果我有一个 yaml 文件 其中包含一个带有括号符号 的字符串 与 python f 字符串配合使用 那么如何在此处利用 f 字符串插值 以这个简单的 yaml 文件为例 tmp yaml k1 val1 k2 val2 as well
  • 返回 C++ 对象时的复制和销毁

    我有一段相当简单的测试代码 include
  • 数据集子集的回归

    我想做以下事情并需要一些帮助 分别计算 身高 与 年龄 的斜率和截距 lm Height Age 一 每个人 二 性别 并创建一个包含结果 斜率和截距 的表 我可以使用 申请 吗 在下一步中 我想做一个统计测试 以确定性别之间的斜率和截距是
  • Yield return 返回什么样的类

    所以我注意到这段代码有效 class Program public static void Main Int32 numbers 1 2 3 4 5 using var enumerator Data GetEnumerator publi
  • 如何为Z3设置Java开发环境

    如何为Z3 SMT求解器设置Java开发环境 Note 作者撰写并回答 请参阅我可以回答我自己的问题吗 https stackoverflow com help self answer Z3 是一个带有 Java 绑定的 C 应用程序 首先
  • 如何在 JavaScript 中正确初始化 ErrorEvent?

    我需要开火ErrorEvent以编程方式 但无法弄清楚如何初始化事件的属性 这些属性是只读的 并且initEvent 仅初始化事件类型 是否冒泡以及是否可取消 I tried var myErrorEvent new ErrorEvent
  • 哪种算法可以解决我的婚礼餐桌问题?

    我的婚礼有 x 位客人 有 y 张桌子 有 z 个座位 客人A可以与客人B同桌 客人C不能与客人D同桌 给定所有客人之间所有连接的数据集 是否有已知的算法可以解决此类问题 我确信这种问题有一个抽象的父问题 称为 问题 x 或其他问题 或者它
  • Spring-data-redis @Cacheable java.lang.ClassCastException:java.util.HashMap无法转换为java.lang.String

    我想使用 spring data redis 在我的 spring boot 应用程序中缓存数据 但它总是说强制转换异常 我用谷歌搜索了一段时间 但没有任何想法 请帮助我 谢谢 任何建议都很棒 这是我的 Redis 配置 Configura
  • 空提交的 Git 补丁

    我创建一个空提交 git commit allow empty m something important 有时它很有用 例如协调 2 个 或更多 不同的 git 树 然而 当我 git format patch 空提交被省略 因为它们不与
  • Linux GCC 上 的 C++ 编译问题

    尝试过谷歌并在这里搜索 但没有运气 我正在尝试将一些使用 Windows 的代码移植到 Linux 上 然后我得到了大量的编译错误 我所做的只是 include
  • 半透明数据库

    我正在构建一个包含健康信息的应用程序 这个面向消费者的应用程序对我来说是新的 我想要一种方法来完全消除隐私问题 当我回顾保护可公开访问的数据库中的敏感数据的方法时 我经常遇到数据库半透明的概念 有原书 http www wayner org