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)
相关推荐
jiayou6421 小时前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤2 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
Sinclair2 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
Rockbean3 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
爱可生开源社区3 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
茶杯梦轩3 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
随逸1773 天前
《从零搭建NestJS项目》
数据库·typescript
海天鹰4 天前
【免费】PHP主机=域名+解析+主机
服务器
加号34 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏4 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker