对于加密数据(数据库字段级别加密)存储和并搜索的一些调查

news2024/10/5 22:22:02

一、简述

        如果您认为不良行为者不可避免地会进入您的网络,那么在将敏感数据放入数据库或文档存储之前对其进行加密是保护数据的最佳方法。对于敏感数据应该这么做。这种在存储之前进行加密的方法称为应用层加密,有相当数量的公司使用它来保护其敏感数据。

        2017 年,Equifax 遭到黑客攻击,这是历史上最大的泄密事件之一。攻击者下载了 1.46 亿美国人的出生日期、社会安全号码、地址和其他敏感信息。国会关于此次攻击的报告如下:

攻击者能够使用这些凭据访问 48 个不相关的数据库。攻击者对这 48 个数据库发送了 9,000 次查询,成功定位未加密的个人身份信息 (PII) 数据 265 次。

        因为他们以明文形式存储敏感的消费者信息。

        这不是唯一一次泄密事件,还有很多,为什么这种情况不断发生呢?

        有两个答案:

        相关法律法规和监管机制并不健全。

        加密数据会使数据变得“黑暗”并难以使用。

        在企业计算中“软件即服务”趋势的推动下,越来越多的数据被外包给远程(云)存储提供商。数据所有者希望确保他们的数据安全,不会被外部人员、内部威胁和不受信任的服务提供商等窃取。为了保护数据,使用了加密。

        然而,一旦数据被加密,加密就会使数据变得更难搜索,这既是加密所需要的,也是一个巨大的操作缺点。在理想的情况下,对数据进行加密会很方便,并且仍然能够安全地搜索数据,而不会限制应用程序架构。

        如何在不限制应用程序架构的情况下保持数据加密并仍然能够安全地搜索数据? 可以尝试可搜索加密。

二、可搜索的加密方案

        当我们讨论可搜索加密时,我们假设数据以加密方式存储在数据库中。

        有一些应用程序后端与数据库交互、读取和写入数据。有一些客户端应用程序(Web 或移动应用程序或其他服务器)使用该数据。

        可搜索加密的目标是允许客户端应用程序找到所请求的数据,而无需在数据库端或应用程序后端解密它。

1、最基本的方法

(1)解密、搜索、加密

        搜索加密数据的最基本方法是将数据下载到客户端计算机,在本地解密,然后在明文数据中搜索所需的结果。由于多种原因,由于可能存在大量数据,这种方法既不实用也不可扩展。

        再加上密钥管理问题:当客户端需要解密密钥并因此可能将其和访问凭据泄露到加密存储时,如何正确处理密钥分发。

        此外,“解密+搜索”场景中加密数据的明文副本的出现使得加密变得毫无用处,因为攻击者可以找到拦截和窃取明文副本的方法。

(2)解密、运行查询、发送结果

        另一种方法让应用程序后端(服务器端)从数据库请求加密数据,对其进行解密,在服务器端运行搜索查询,然后仅将结果发送回用户。

        与上述方案类似,这引入了密钥管理问题,因为服务器现在同时拥有数据和解密密钥。

        在这种情况下,安全性会受到损害,因为受加密保护的所有记录都将泄露给有权访问服务器环境的每个服务和攻击者。

        有两种方法可以实现可搜索加密(SE)。它可以通过以能够直接在密文上执行查询的方式加密数据来完成,或者通过引入与加密数据一起存储的可搜索索引来完成。

        然而,希望在应用程序后端支持尽可能完整的搜索功能,而不解密数据,同时将数据机密性的损失降至最低。

        在正确实施的安全搜索方案中,数据库服务器和应用程序后端(服务器端)永远不会看到解密的数据。

        可搜索加密方案的典型工作流程如下所示:

         可搜索加密的多种方法。前两种——可搜索对称加密(又名 SSE,对称可搜索加密)和带关键字搜索的公钥加密(PEKS,以紫色标记)——非常流行。

         实施 SE 并不存在单一的完美方法,因为总会有一些权衡,无论是在性能、功能、安全性还是可用性方面。

        构建可搜索加密方案的主要密码技术是对称可搜索加密(SSE)和带有关键字搜索的公钥加密(PEKS)。

        基于 SSE 的方案使用对称密钥原语,并允许用户创建密文并执行安全搜索。在PEKS方案中,公钥用于创建(写入)密文,私钥用于搜索(读取)。因此,此类方案允许多用户写入,但只有一个用户(持有私钥)能够读取其他用户写入的数据。

        另外还存在与可搜索加密相关的更多模糊技术,即谓词加密(PE)、内积加密(IPE)或隐藏向量加密(HVE)。另外还有成为FHE,使用特殊的加密密码或它们的组合,这是一种新兴技术,但大多数专家表示它尚未准备好投入生产使用。

        另一种方法称为同态加密 (HE),它通常允许对密文执行计算,生成加密结果 - 解密后,它与您对明文执行类似计算的期望相匹配。

        基于 HE 的搜索方法在理论和概念验证实现中均存在,但是,对于大多数实际用例,同态加密仍然非常脆弱且缓慢。

三、实用的 SQL 数据库可搜索加密

        流行方法是使用“盲索引”。这个想法基于使用强大的、经过行业验证的密码来加密数据字段,但首先从原始字段计算“可搜索哈希”(也称为盲索引)。数据库存储字段的哈希值和加密值。当需要搜索时,后端应用程序还会计算搜索查询的盲索引,然后运行数据库命令来比较索引。当数据在 SQL 数据库中存储和处理时,这种方法尤其有效。

        还有方法是透明数据加密 (TDE) ,对数据文件进行加密。这种加密称为静态数据加密。TDE 对数据和日志文件进行实时 I/O 加密和解密。加密使用数据库加密密钥 (DEK)。数据库引导记录存储恢复期间可用性的密钥。DEK 是对称密钥。它由服务器master数据库存储的证书或 EKM 模块保护的非对称密钥保护。

        另外还有基于文本提取关键字和参数,然后通过这些参数和关键字进行搜索。

        oracle

        您可以通过以下方式加密列及其数据指定数据库表中列的某些参数的值。您还可以通过创建附加列(哈希列)来启用对加密数据的搜索,该列存储将 RSA SHA-1 算法应用于加密数据的纯文本值的结果。搜索可以区分大小写或不区分大小写,具体取决于您配置搜索的方式。

Configuring Encryption and Search on Encrypted Datahttps://docs.oracle.com/cd/E63029_01/books/Secur/secur_dataencrypt014.htm

        mysq

        基于 HMAC-SHA256 的盲索引优于简单哈希。

$first_name_hash = hash_hmac('sha256', $firstName, $secretKey);
$stmt = $db->prepare('SELECT * FROM table WHERE first_name_idx = ?');
$result = $db->execute([$first_name_hash])
    ->fetch(PDO::FETCH_ASSOC);
if ($result) {
    $first_name = Crypto::decrypt($result['first_name_encrypted'], $otherSecretKey);
}

        AWS 

        亚马逊使用称为beacons的技术进行加密数据搜索,它在写入字段的明文值和实际存储在数据库中的加密值之间创建映射。信标是截断的基于哈希的消息身份验证代码 (HMAC) 标签,用于在字段的明文值和加密值之间创建映射。当您将新值写入配置为可搜索加密的加密字段时,AWS 数据库加密开发工具包会根据明文值计算 HMAC。此 HMAC 输出与该字段的明文值进行一对一 匹配。HMAC 输出被截断,以便多个不同的明文值映射到同一个截断的 HMAC 标签。

        从以上几个示例我们可以看出,数据库处理的加密搜索的流程方式主要是使用盲索引。

四、小结

        加密后的数据,不只是搜索,还有排序等操作都会比较困难。但是加密和安全是非常重要且复杂的主题。始终应该注意到,在安全方面没有一刀切的解决方案。可搜索加密绝对是可能的,但它是否适合您的系统取决于其风险和威胁概况。有时加密的数据应该保持加密状态。 

        要决定是否应该在项目中使用可搜索加密,请根据您的情况做出选择。例如,考虑对安全搜索方案工作的性能效率和负担得起的速度的特定要求。

        另外以上的内容,均是个人对可搜索加密的一个简单调查。一定是有失偏颇,仅供参考,不喜可喷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB 迭代最近点ICP配准 (23)

MATLAB 迭代最近点ICP配准 (23) 一、算法介绍二、具体代码1.流程2.代码3.函数详解4.结果展示一、算法介绍 ICP 迭代最近点配准方法,基本是一种固定的点云精配准方法,其变种很多,这里是点到点的传统点云ICP配准方法,具体的过程如上图所示:需要提供红色和蓝色两组点云,其…

echarts 字符串模板和formatter的使用(鼠标悬浮显示的气泡自定义)

需求:在鼠标悬浮中加一个总数字段,图1为默认,图2为需要实现的效果 有两种方式,第一种:在图表添加一条新的图形,默认会自动添加 需要在整个数据列表中计算出来成为新的数组 methods: {// 根据自己的业务情…

SpringBoot源码分析(4)--Environment(下)/配置文件加载原理

SpringBoot源码分析 SpringBoot源码分析(1)–SpringBootApplication注解使用和原理/SpringBoot的自动配置原理详解SpringBoot源码分析(2)–SpringBoot启动源码(万字图文源码debug讲解springboot启动原理)SpringBoot源码分析(3)–Environment简介/prepareEnvironment准备环境&a…

UNet训练自己的数据集

pycharm中python环境设置: 打开左上角File ---> Settings ---> 如下图 ---> Add 选择合适的python版本,进行环境设置 UNet训练自己的数据集: 一、训练自己的数据集 1、本文使用VOC格式进行训练。 2、训练前将标签文件放在VOCde…

谈 Dojo 应用的 UI 自动化测试

目录 前言: Dojo 是什么? Dojo 应用 UI 自动化测试面临的挑战 A. 异步请求的处理 B. 元素定位 图 1. Dojo 按钮小部件 C. Dojo 复杂性 D. 产品复杂性 E. 频繁的 UI 更改 F. Dojo 升级 Dojo 应用 UI 自动化测试框架挑选(设计&#…

IIS WebApi: 文件上传,大小限制,提示413 (Request Entity Too Large)

问题:IIS WebApi文件上传,大小限制,提示413 (Request Entity Too Large) 一:在web.config上配置,按照以下格式,将下列标红加粗的地方,按照对应位置复制到web.config中,即可解决。 注&#xff…

本质安全设备标准(IEC60079-11)的理解(五)绝对可靠器件infallible components

在前面的章节中我们简单提及到绝对可靠器件, 这里重新摘抄如下: “这里顺便说一下可靠元器件(infallible component)的理解。它在标准里面占有不少的章节,而且开始理解他也有一些费劲。本人从两个方面理解它 &#x…

工艺流程图绘制流程?试试这样绘制

工艺流程图绘制流程?绘制工艺流程图可以帮助我们更好地理解工艺流程,确定生产流程,优化生产效率,并帮助人们更好地进行生产管理和质量控制。通过工艺流程图,我们可以清晰地了解每一步骤所需的设备和材料,以…

【Java】基于云计算-智慧校园电子班牌系统源码带原生微信小程序端

一、前言 智慧校园系统是利用物联网和云计算,强调对教学、科研、校园生活和管理的数据采集、智能处理、为管理者和各个角色按需提供智能化的数据分析、教学、学习的智能化服务环境。它包含“智慧环境、智慧学习、智慧服务、智慧管理”等层面的内容。 智慧校园描绘的…

webpack笔记一

文章目录 什么是webpack安装webpack一、创建配置项二、安装webpack局部安装(推荐)全局安装 三、安装webpack-cli(可选) 核心概念入口(entry)出口(output)loader插件(plugin)模式(mode) 项目实例webpack基本使用 html打包插件:html-webpack-plugin文件拷贝插件&#…

电子版简历有哪些(合集)

word、Excel、PPT简历 传统的电子版简历,即用文档软件编辑的简历。这一类简历的呈现模式只有单一的文字、图片或表格。传统,意味着被广泛求职者所使用。优点包括有:传统、端庄、直观。但传统也意味着没有创新。缺点包括有:乏味、不…

Gradle下载和配置教程:Windows、Mac和Linux系统安装指南

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

linux入门练级篇 第三讲 基本指令3

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

如何使用ChatGPT制作免费的数字人

传统的数字人制作过程 制作属于自己的免费的数字人是一个复杂的过程,需要涉及多个方面的知识和技术。以下是一个大致的步骤指南,以帮助你开始这个过程: 1. 确定数字人的目标和设计:首先,你需要确定数字人的用途和目标…

PPT里动画连续多次移动一个元素

PPT里有移动动画, 每次只可以移动一次. 其实可以再此添加移动动画, 但是注意新添加的动画移动轨迹是从原先的位置开始的: 如果想要其连续移动, 那么可以把第二次开始的起点拖动到第一次移动的终点上去:

MSP432学习笔记14:定时器A的学习整理

本文整理学习一下定时器A的相关基础知识,本文比较偏向理解与理论性, 主要是深入在官方手册层面进行对定时器A的深入研究,定时器 A的相关实践基本上在之前的文章中都有提及: 1.定时器A定时中断: MSP432学习笔记7&…

导航流程:从输入URL到页面展示,这中间发生了什么?

“在浏览器里,从输入 URL 到页面展示,这中间发生了什么? ”这是一道经典的面试题,能比较全面地考察应聘者知识的掌握程度,其中涉及到了网络、操作系统、Web 等一系列的知识。所以我在面试应聘者时也必问这道题&#xf…

Linux学习之系统默认打开的文件描述符、重定向

系统默认打开的文件描述符 一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。可以在/proc/PID/fd里边可以看到打开文件的描述符,PID需要改成具体的pid,比如可以使用A终端输入vim proctest之后按下回车键。 打开一个vim编辑窗口。 再打…

产品经理考PMP?开什么玩笑

早上好,我是老原。 熟悉我的粉丝都知道,我平常喜欢逛知乎,这不就关注到了一个话题 ​ 关于这个问题,老原我的回答当然是,有用。 毕竟没有人会自信到,可以只做产品经理的产品设计、需求分析、画画原型等&a…

云计算行业岗位介绍

云计算、大数据、人工智能作为新一代信息技术产业,未来发展前景不可估量,就业“前途”一片光明。 随着阿里云、腾讯云、华为云为首的国内云厂商的快速发展,释放出来的岗位也越来越多,很多有着“大厂梦”的小伙伴可以通过考取大厂…