【DB吐槽大会】第80期 - PG 不支持透明加密(TDE)功能

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 大家好,这里是DB吐槽大会,第80期 - PG 不支持透明加密(TDE)功能

背景


1、产品的问题点

  • PG 不支持透明加密(TDE)功能, 实际上这个功能已开发好, 又因为没有完整的regress test被打回了.

2、问题点背后涉及的技术原理

  • 安全风险存在于:
  • 网络窃取客户端与数据库传输的内容
  • 通过SSL链路、数据类型透明加密(传输加密内容)可以杜绝
  • 机房直接窃取存储介质
  • 通过介质加密、数据库数据文件TDE功能、数据类型透明加密(存储加密内容)可以杜绝
  • 操作系统入侵, 窃取数据文件
  • 通过数据文件加密(数据库数据文件TDE功能)、数据类型透明加密(存储加密内容)可以杜绝
  • 数据库入侵, 通过流复制协议拷贝明文数据文件.
  • 通过数据库数据文件TDE功能、数据类型透明加密(存储加密内容)可以杜绝
  • 数据库入侵, 直接窃取数据库存储的表、字段、行等内容
  • 数据类型透明加密(存储加密内容)可以杜绝
  • 透明加密是指对业务没有侵入的加密方法, 例如不影响原有的计算、索引、排序等功能.
  • 一般对业务有感的加密, 直接使用加密后的值无法像使用原始值一样进行计算、排序的动作, 因为加密后存储的内容发生了变化. 例如pgcrypto加密插件, 如果存储加密后的值, 排序和原始值的顺序肯定是不一样的, 也不能直接使用加密值进行加减乘除计算.
  • 《DB吐槽大会,第30期 - PG 某些敏感信息未隐藏》

3、这个问题将影响哪些行业以及业务场景

  • 通用

4、会导致什么问题?

  • 非透明加密对业务有侵入,
  • 无法实现数据库端的计算(等值查询除外, 但是等值查询也可能因为加密的hash value空间变小, 映射冲突导致结果与原始查询不一致. 需要拿到结果后在业务端使用原始值再次过滤. )
  • 不能使用索引排序功能
  • 不能使用排序功能
  • 不能使用索引进行范围查询
  • 非透明加密的密钥必须存储在客户端, 如果存储在数据库端有数据安全风险.

5、业务上应该如何避免这个坑

  • 可以使用文件系统加密替代TDE

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 文件系统加密安全级别不够高, 在操作系统文件系统挂载的情况下, 可以拷贝明文的数据文件.

7、数据库未来产品迭代如何修复这个坑

  • 希望TDE功能尽快合并到PG未来的大版本中. 解决机房直接窃取存储介质、操作系统入侵, 窃取数据文件、数据库入侵, 通过流复制协议拷贝明文数据文件的安全风险.
  • 希望支持类型的透明加密, 例如阿里云提供的 SGX 全加密数据库功能. 解决所有安全风险. 需要硬件支持(例如CPU支持enclave)



相关文章
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用合集之polardb支持透明数据加密TDE吗
PolarDB是阿里云推出的一种云原生数据库服务,专为云设计,提供兼容MySQL、PostgreSQL的高性能、低成本、弹性可扩展的数据库解决方案,可以有效地管理和优化PolarDB实例,确保数据库服务的稳定、高效运行。以下是使用PolarDB产品的一些建议和最佳实践合集。
PolarDB产品使用合集之polardb支持透明数据加密TDE吗
|
6月前
|
算法 Java 开发工具
使用阿里云KMS产品针对 Springboot 接口参数加密解密功能
针对Springboot里面使用开源工具使用加解密,替换成阿里云KMS产品进行加解密;
858 2
|
JavaScript 数据安全/隐私保护 Python
Crack App | 某搜索 App 中关于 x 信文章检索功能的加密参数分析(Frida Hook 篇)
Crack App | 某搜索 App 中关于 x 信文章检索功能的加密参数分析(Frida Hook 篇)
116 0
|
6月前
|
存储 算法 安全
Java代码能实现这些隐藏的加密功能
Java代码能实现这些隐藏的加密功能
106 0
|
6月前
|
JSON 算法 Java
SpringBoot 实现接口参数加密解密功能
SpringBoot 实现接口参数加密解密功能
409 0
|
6月前
|
关系型数据库 分布式数据库 数据库
如何为PolarDB数据库设置透明数据加密(TDE)
如何为PolarDB数据库设置透明数据加密(TDE) 透明数据加密(TDE,Transparent Data Encryption)是PolarDB数据库提供的一种实时I/O加密和解密功能,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密,而不会增加数据文件的大小。开发人员无需更改任何应用程序,即可使用TDE功能。
149 3
|
6月前
|
算法 Java 数据库连接
实现 MyBatis-Plus 中的配置加密功能(使用 AES 算法)
实现 MyBatis-Plus 中的配置加密功能(使用 AES 算法)
875 0
|
6月前
|
存储 数据库连接 Nacos
在Nacos中,db怎么加密?
在Nacos中,db怎么加密?
293 1
|
资源调度 算法 数据安全/隐私保护
功能:crypto-js加密解密
功能:crypto-js加密解密
143 0
|
安全 网络安全 数据安全/隐私保护
HTTPS 加密访问功能 | 学习笔记
快速学习 HTTPS 加密访问功能