小编典典

加密的数据库查询

sql

我刚刚发现了信息,我只是在检查是否有与项目中的一些朋友一起遇到约束的想法,尽管这更多是我一直在尝试找到的理论问题一个答案一段时间。

我不太喜欢密码学,但是如果我不够清楚,我将尝试编辑/评论以澄清任何问题。

简而言之,环境是这样的:

  • 前端用于访问加密/解密密钥,后端用于存储和查询的应用程序。

  • 例如,有一个您无法访问几个字段的数据库,让我们说“地址”,它通常是文本/ varchar。

  • 您无权访问用于解密信息的密钥,并且所有信息到达已加密的数据库。

主要的问题是这样的,如何在数据库中一致地进行查询,所以不可能做诸如“’%F搂YU
/麓〜#JKSks23%’之类的地址”之类的事情。(如果有人对这个问题有答案,可以随时开枪)。

但是可以where address='卤!NNsj3~^潞-:'吗?还是会完全吞噬数据库?

可能适用的另一个限制是前端没有太多可用的处理能力,因此已经加密/解密的信息已开始将其推向极限。(这样做只是为了避免诸如“将表的联接导出到前端并在那里查询”之类的答复。)

有人可以指出我要继续考虑的方向吗?


非常感谢您在凌晨4点收到如此迅速的回复,对于第一次使用该社区的我,我真的感到很印象深刻。(或者也许我只是针对不同的时区)

只是提供一些信息:

主要问题在于部分匹配。在大多数数据库中,强制性要求是允许部分匹配。主要约束是实际上 不允许数据库所有者查看数据库内部的信息
。在最近的10分钟内,我提出了一个可能的解决方案,该解决方案又扩展到可能的数据库问题,我将在此处添加:

允许半部分匹配的可能解决方案:

  • 密码+用户的几个公共字段实际上是加密的密钥。对于身份验证,其想法是对静态值进行加密,然后在数据库中进行比较。
  • 创建一组新表,以解析的方式存储信息,这意味着:“第四街”将成为2个加密行(一个表示“第4个”,另一个表示“街道”)。由于已经可以在单独的表上执行搜索,因此这将允许半部分匹配。

新问题:

  • 这可能会再次吞噬数据库服务器,还是有人认为这是解决部分匹配问题的可行解决方案?

Scriptum后:我不接受Cade Roux的回答,只是为了进行进一步讨论,特别是对新问题的可能回答。


阅读 225

收藏
2021-04-19

共1个答案

小编典典

您可以按照描述的方式进行操作-
例如,有效地查询哈希,但是并没有多少具有该要求的系统,因为在那一点上,安全性要求正在干扰系统的其他可用要求-即,没有部分匹配,因为加密将其排除在外。压缩也有同样的问题。多年前,在非常小的环境中,我不得不先压缩数据,然后再将其放入数据格式。当然,不能轻易地搜索这些字段。

最终,在更典型的应用程序中,密钥将可供链中某人(可能是Web服务器)使用。

对于最终用户流量,SSL保护该管道。一些网络交换机可以在Web服务器和数据库之间保护它,并且可以在数据库中存储加密的数据,但是您不会像这样查询加密的数据。

一旦数据显示出来,就可以在计算机上使用它,因此任何通用计算设备都可以在这一点上被规避,并且您的应用程序之外还具有外围防御功能,这些功能确实可以发挥作用。

2021-04-19