CMK、CEK

一、CMK(Customer Master Key)

翻译

  • 客户主密钥

  • 也常称为:主密钥 / 根密钥

英文

  • Customer Master Key

本质

  • 用来保护其他密钥的密钥

  • 不直接用于数据加解密

特点

  • 长期存在

  • 安全级别最高

  • 一般存放在:

    • KMS(云密钥管理服务)

    • HSM(硬件安全模块)

    • 本地安全文件(仅限低安全场景)

作用

  • 只做一件事

    👉 加解密 CEK


二、CEK(Column Encryption Key / Data Encryption Key)

翻译

  • 列加密密钥

  • 也可泛指:数据加密密钥

英文

  • Column Encryption Key

  • 在某些体系中也叫 DEK(Data Encryption Key)

本质

  • 真正用于数据加解密的密钥

特点

  • 生命周期短

  • 可轮换

  • 明文通常不会落盘

  • 使用时在客户端内存中存在

作用

  • 数据库列数据进行:

    • 加密(INSERT / UPDATE)

    • 解密(SELECT)


三、CMK 与 CEK 的关系(一句话版)

CMK 管 CEK,CEK 管数据

或者更直白:

CMK 不碰数据,CEK 不暴露主密钥


四、典型加解密流程(以 JDBC 客户端加密为例)

1️⃣ 初始化阶段

  1. 客户端生成 CEK

  2. 使用 CMK 加密 CEK

  3. 加密后的 CEK 存储在:

    • 数据库系统表

    • 或密钥配置表中

👉 数据库里永远不会有 CEK 明文


2️⃣ 写数据(INSERT / UPDATE)

  1. JDBC 从数据库读取 加密的 CEK

  2. 调用 CMK 解密出 CEK(在内存中)

  3. 使用 CEK 加密列值

  4. 密文写入数据库


3️⃣ 读数据(SELECT)

  1. JDBC 读取密文列

  2. 使用 CEK 解密

  3. 返回明文给应用


五、在 openGauss Client Logic 中的对应关系

概念 openGauss 中对应
CMK CREATE CLIENT MASTER KEY
CEK CREATE COLUMN ENCRYPTION KEY
加密执行 JDBC ClientLogic + JNI
密钥存储 LOCAL / KMS(通过 KeyAdpt)
相关推荐
范什么特西11 小时前
网络代理问题
java·linux·服务器
夜影风11 小时前
Redis集群创建时出现“Node xxx.xxx is not empty”问题处理
数据库·redis·缓存
utf8mb4安全女神12 小时前
【Redis数据库】哨兵集群/redis集群/安装配置/主从复制/数据持久化操作/数据结构/安全限制/PHP redis/
linux·服务器·数据结构·数据库·redis·缓存
lzz的编码时刻12 小时前
Liquibase 入门实战教程
数据库·运维开发
Zk.Sun12 小时前
Linux设置触屏双击距离容差
linux·运维·数据库
Let's Chat Coding12 小时前
对称密钥认证:主机和设备共享同一把密钥
运维·服务器·网络
写代码的学渣13 小时前
Linux 安装 Swap 交换分区大小标准(通用 + 生产服务器 + 个人 PC)
linux·运维·服务器
山峰哥13 小时前
数据库工程:Explain执行计划对比实战指南‌
数据库·sql·oracle·深度优先·宽度优先
不知疲倦的仄仄13 小时前
ShardingSphere:高效管理数据库集群的终极方案
sql·mysql·oracle·database
crisps_ww13 小时前
自媒体运营分析-BI可视化仪表盘制作
数据库