当前位置: 首页 > 面试题库 >

加密的数据库查询

柯耀
2023-03-14
问题内容

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

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

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

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

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

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

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

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

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

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

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

只是提供一些信息:

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

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

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

新问题:

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

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


问题答案:

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

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

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

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



 类似资料:
  • Android原生是不支持数据库加密的,所以要想加密数据库就需要使用其它的方式。而这个SDK是从原生Android4.0源码里单独移植SQLITE模块,并将这个模块编译时加入加密方法,因为SQLITE源码中是有加密的接口,所以移植时就只需将这个预编译参数加入和一些文件即可。 这个SDK只支持Android2.1以上的版本。

  • 我在文档中看到Firebase实时数据库是加密的<但是有一些术语我不完全理解: Firebase服务使用HTTPS加密传输中的数据,并从逻辑上隔离客户数据。什么在逻辑上隔离了客户数据 平均值 “此外,几个Firebase服务还加密其静态数据:Firebase实时数据库Firebase测试实验室”有人能用外行的术语解释一下吗

  • 我们在确保遵守刚刚生效的新GDPR方面落后了,我目前正在考虑为我们的电子商务网站加密数据库中存储的数据。我意识到加密并不是强制性的,但我认为它更不是一种有用的附加安全性。 我的问题是:在静止状态下加密整个数据库,以及使用我自己的加密存储值,有什么优点/缺点吗?这是你会做的事情,还是你会考虑这些方法中的一种就足以为个人数据提供良好的安全? 我的理论是,在使用PHP脚本存储和检索值时加密这些值,如果有

  • 问题内容: 我被要求 对db中的各个db字段 进行 加密 。 问题是这些字段在读取后需要解密。 我正在使用 Django 和 SQL Server 2005 。 有什么好主意吗? 问题答案: 是的。告诉任何告诉你真实的人。没有道理/没有道理。如果是关于存储的值的,那么企业版2008可以存储加密的DB文件。 否则,如果您真的需要(具有所有缺点),只需对其进行加密并将其存储为字节字段。

  • bcrypt 数据加密 文档:https://www.npmjs.com/package/bcryptjs 安装:cnpm i -S bcryptjs [ ] 使用: 封装helper函数 app / extend / helper.js // 引入加密插件 const bcrypt = require('bcryptjs') const jwt = require('jsonwebtoken')

  • EncryptAlgorithm SPI 名称 详细说明 EncryptAlgorithm 数据加密算法 已知实现类 详细说明 MD5EncryptAlgorithm 基于 MD5 的数据加密算法 AESEncryptAlgorithm 基于 AES 的数据加密算法 RC4EncryptAlgorithm 基于 RC4 的数据加密算法 QueryAssistedEncryptAlgorithm S