我刚刚发现了信息,我只是在检查是否有与项目中的一些朋友一起遇到约束的想法,尽管这更多是我一直在尝试找到的理论问题一个答案一段时间。
我不太喜欢密码学,但是如果我不够清楚,我将尝试编辑/评论以澄清任何问题。
简而言之,环境是这样的:
前端用于访问加密/解密密钥,后端用于存储和查询的应用程序。
例如,有一个您无法访问几个字段的数据库,让我们说“地址”,它通常是文本/ varchar。
您无权访问用于解密信息的密钥,并且所有信息到达已加密的数据库。
主要的问题是这样的,如何在数据库中一致地进行查询,所以不可能做诸如“’%F搂YU /麓〜#JKSks23%’之类的地址”之类的事情。(如果有人对这个问题有答案,可以随时开枪)。
但是可以where address='卤!NNsj3~^潞-:'吗?还是会完全吞噬数据库?
where address='卤!NNsj3~^潞-:'
可能适用的另一个限制是前端没有太多可用的处理能力,因此已经加密/解密的信息已开始将其推向极限。(这样做只是为了避免诸如“将表的联接导出到前端并在那里查询”之类的答复。)
有人可以指出我要继续考虑的方向吗?
非常感谢您在凌晨4点收到如此迅速的回复,对于第一次使用该社区的我,我真的感到很印象深刻。(或者也许我只是针对不同的时区)
只是提供一些信息:
主要问题在于部分匹配。在大多数数据库中,强制性要求是允许部分匹配。主要约束是实际上 不允许数据库所有者查看数据库内部的信息 。在最近的10分钟内,我提出了一个可能的解决方案,该解决方案又扩展到可能的数据库问题,我将在此处添加:
允许半部分匹配的可能解决方案:
新问题:
Scriptum后:我不接受Cade Roux的回答,只是为了进行进一步讨论,特别是对新问题的可能回答。
您可以按照描述的方式进行操作- 例如,有效地查询哈希,但是并没有多少具有该要求的系统,因为在那一点上,安全性要求正在干扰系统的其他可用要求-即,没有部分匹配,因为加密将其排除在外。压缩也有同样的问题。多年前,在非常小的环境中,我不得不先压缩数据,然后再将其放入数据格式。当然,不能轻易地搜索这些字段。
最终,在更典型的应用程序中,密钥将可供链中某人(可能是Web服务器)使用。
对于最终用户流量,SSL保护该管道。一些网络交换机可以在Web服务器和数据库之间保护它,并且可以在数据库中存储加密的数据,但是您不会像这样查询加密的数据。
一旦数据显示出来,就可以在计算机上使用它,因此任何通用计算设备都可以在这一点上被规避,并且您的应用程序之外还具有外围防御功能,这些功能确实可以发挥作用。