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)
相关推荐
七夜zippoe16 小时前
DolphinDB分区策略:VALUE分区详解
数据库·oracle·分区·value·dolphindb
rKWP8gKv716 小时前
数据库连接池选型:HikariCP与Druid的性能对比
数据库
Sarvartha16 小时前
三目运算符
linux·服务器·前端
dreamZhanglx16 小时前
MySQL进阶
数据库·mysql
有浔则灵16 小时前
GORM 日志与调试完全指南:从基础配置到生产实践
服务器·数据库·gorm
xmjd msup16 小时前
MySQL 函数
数据库·mysql
司南-704916 小时前
Dense结构下的 大模型系统架构研究
服务器·人工智能·后端
PaperData16 小时前
2003-2026.1北大法宝地方数字经济政策数据
数据库·数据分析·学习方法·经管
BU摆烂会噶16 小时前
【LangGraph】持久化实现的三大能力——人机交互
数据库·人工智能·python·langchain·人机交互
jefl jxak17 小时前
mysql用户名怎么看
数据库·mysql