几种常见的数据库加密方案分析

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: “xxx拖库”、“xxxx数据泄露”等等层出不穷的安全事件表明,要想根本上解决这种越过网络防护,绕开权控体系,直接复制文件块并异地还原解析的“内鬼”式攻击方式,必须采用存储层的加密技术,确保敏感信息一旦落盘,必须密文存储。随着数据库加密技术在国内市场的兴起,更多数据安全企业的涌入,市面上出现了几种具有代表性的数据库加密技术。一、前置代理及加密网关技术1)技术原理该方案的总体技术思路即在数据库之前增加一道安全代理服务,对数据库访问的用户都必须经过该安全代理服务,在此服务中实现如数据加解密、存取控制等安全策略。然后安全代理服务通过数据库的访问接口实现数据存储。安全代理服务存在于客户端应

“xxx拖库”、“xxxx数据泄露”等等层出不穷的安全事件表明,要想根本上解决这种越过网络防护,绕开权控体系,直接复制文件块并异地还原解析的“内鬼”式攻击方式,必须采用存储层的加密技术,确保敏感信息一旦落盘,必须密文存储。随着数据库加密技术在国内市场的兴起,更多数据安全企业的涌入,市面上出现了几种具有代表性的数据库加密技术。

一、前置代理及加密网关技术

1)技术原理

该方案的总体技术思路即在数据库之前增加一道安全代理服务,对数据库访问的用户都必须经过该安全代理服务,在此服务中实现如数据加解密、存取控制等安全策略。然后安全代理服务通过数据库的访问接口实现数据存储。安全代理服务存在于客户端应用与数据库存储引擎之间,负责完成数据的加解密工作,加密数据存储在安全代理服务中。

2)利弊分析:前置代理及代理网关加密技术,迈不过去的“坎”

①由于在安全增强代理中需要存储加密数据,因此要解决与数据库存储数据的一致性问题,这基本不可实现。

②数据的联合检索问题:由于在数据库内外都存在数据,这些数据的联合检索将变得很困难;SQL语法的完全兼容也非常困难。
③开发无法透明问题:数据库协议虽然存在标准,但事实上每个不同的数据库版本都会进行若干变更、扩展和增强,使用了这些特性的用户必须进行改造。同时在安全代理中对数据库通讯协议的模拟非常困难。
④数据库的优化处理、事务处理、并发处理等特性都无法使用:查询分析、优化处理、事务处理、并发处理工作都需要在安全增强器中完成,无法使用数据库在并发处理和查询优化上的优势,系统的性能和稳定性更多地依赖于安全代理;
⑤对于对存储过程、触发器、函数等存储程序的实现支持也非常困难。
另外此种方案需要在安全代理服务层提供非常复杂的数据库管理功能,如:SQL命令解析,通讯服务,加密数据索引存储管理、事务管理等等,因此存在巨大的开发工作量及很高的技术复杂度,此外还有类似于存储过程、触发器等无法解决的技术问题。

二、应用层改造加密技术

1)技术原理应用层

加密方案的主要技术原理是应用系统通过加密API(JDBC,ODBC,CAPI等)对敏感数据进行加密,将加密数据存储到数据库的底层文件中;在进行数据检索时,将密文数据取回到客户端,再进行解密,应用系统自行管理密钥体系。

2)利弊分析:应用层加密技术,只是看起来很美

最主要不足在于:应用程序必须对数据进行加解密,增加编程复杂度,而且无法对现有系统做到透明,应用程序必须进行大规模改造。这种技术无法利用数据库的索引机制,加密后数据的检索性能大幅下降。

三、基于文件级的加解密技术

1)技术原理

顾名思义,基于文件级的加解密技术是不与数据库自身原理融合,只是对数据存储的载体从操作系统或文件系统层面进行加解密的技术手段。

这种技术通过在操作系统中植入具有一定入侵性的“钩子”进程,在数据存储文件被打开的时候进行解密动作,在数据落地的时候执行加密动作,具备基础加解密能力的同时,能够根据操作系统用户或者访问文件的进程ID进行基本的访问权限控制。

2)利弊分析:跳出“体系”之外,优势与风险同在

这种技术巧妙的绕过了让各路英雄头疼的问题。对数据库高端特性兼容、查询检索性能保障、统计分析效率等关键技术指标均有较好的适应情况。

然而在这种机制下,存在的问题也会比较明显,包含以下几类:
①操作系统或文件系统级加解密,对不同平台适应性较差,而且与内核绑定过重,一旦出现程序故障,会对操作系统造成较大影响,容易导致业务中断。
②操作系统或文件级加解密的权控在系统层,因此无法单独完成对不同手游账号卖号数据库账号的访问权限的设置,需要和其他产品与技术进行组合。
③操作系统或文件级的加解密针对落地文件进行操作,加解密粒度比较粗糙,无法针对列级进行加密。

四、基于视图及触发器的后置代理技术

1)技术原理

这种技术是使用“视图”+“触发器”+“扩展索引”+“外部调用”的方式实现数据加密,同时保证应用完全透明。核心思想是充分利用数据库自身提供的应用定制扩展能力,分别使用其触发器扩展能力、索引扩展能力、自定义函数扩展能力以及视图等技术来满足数据存储加密,加密后数据检索,对应用无缝透明等核心需求。

2)利弊分析:后置代理,独自过独木桥

以传统的列加密为代表的后置代理加密技术,经过几年演进逐步被大家接受,这种技术拥有前置代理和应用改造所不具备的透明性,灵活性以及数据库高端技术的兼容性,可谓率先走过了数据库加密这一风险与挑战都巨大的“独木桥”。然而向前看,“独木桥”还在。

“应用环境下,单表亿级数据规模,加密后查询检索性能会不会受到明显影响?”“对密文数据的统计分析操作,如何保证速度基本不下降?”“实施加密后,对密文数据的运维、迁移、备份等操作,如何将改动降至最低”“大量的数据加密,会否带来更大量的空间膨胀”……这些自数据库加密技术问世以来就相伴而生的问题,不仅变成了用户心头的疑云,也成为了后置代理加密技术提供商亟待解决的当务之急。

压力下的技术突破——表空间加密技术

有没有一种加密手段能够满足如下要求呢?
1)透明性足够好。不影响sql语句执行,不需要应用改造已上线系统。
2)兼容性足够好。既能满足多节点,数据分区等特性,又满足该数据库常用的运维工具和手段。
3)性能足够好。即使对密文字段进行统计分析,或批量模糊查询,也能保证其可用。
4)安全性足够好。密钥独立,权控独立,算法独立(国密),均纳入刚需。

目录
相关文章
|
2月前
|
消息中间件 canal 缓存
项目实战:一步步实现高效缓存与数据库的数据一致性方案
Hello,大家好!我是热爱分享技术的小米。今天探讨在个人项目中如何保证数据一致性,尤其是在缓存与数据库同步时面临的挑战。文中介绍了常见的CacheAside模式,以及结合消息队列和请求串行化的方法,确保数据一致性。通过不同方案的分析,希望能给大家带来启发。如果你对这些技术感兴趣,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
139 6
项目实战:一步步实现高效缓存与数据库的数据一致性方案
|
2月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
6天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
7天前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
1月前
|
SQL 关系型数据库 MySQL
Vanna使用ollama分析本地数据库
这篇文章详细介绍了如何使用Vanna和Ollama框架来分析本地数据库,实现自然语言查询转换为SQL语句并与数据库交互的过程。
118 7
Vanna使用ollama分析本地数据库
|
10天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
24 2
|
2月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
345 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
1月前
|
存储 分布式计算 数据库
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版
|
1月前
|
SQL 自然语言处理 关系型数据库
Vanna使用ollama分析本地MySQL数据库
这篇文章详细介绍了如何使用Vanna结合Ollama框架来分析本地MySQL数据库,实现自然语言查询功能,包括环境搭建和配置流程。
162 0
|
1月前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
116 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
下一篇
无影云桌面