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)
相关推荐
weixin_5112552117 小时前
MySQL升级记录
数据库·mysql
程序猿乐锅18 小时前
【黑马点评 | 第八篇】Redisson分布式锁
java·数据库·spring boot·redis·分布式·spring·缓存
Leo.yuan19 小时前
2026年本地化Data Agent优质厂商盘点:哪些产品更适合企业生产环境
大数据·数据库·人工智能
做运维的阿瑞19 小时前
数据库增删改的安全写法
数据库·sql·mysql
程序边界19 小时前
迁移评估不再拍脑袋,这个数据迁移工具的量化报告把我救了(上)
数据库
阿狗童鞋20 小时前
Redis实战指南
数据库·redis·缓存
筝筝ba20 小时前
openBMC功耗封顶GUI测试
服务器
lupai21 小时前
维修保养记录精准版 API 对接实战指南
数据库·python
niuTaylor21 小时前
飞腾 FT-2000/4 Ubuntu 内存卡 / NVMe SSD 系统制作完整指南
linux·服务器·人工智能·驱动开发·单片机
Huangjin007_1 天前
【Linux 系统篇(二十五)】文件(二) 系统文件I/O详解
linux·运维·服务器