KEK 和 DEK 的简单介绍

kms(Key Management Service),在需要加解密的应用中必不可少,实现上利用了密码学相关对称,非对称算法,密钥交换协议等。这些算计算机基础知识,有两个名词KEK和DEK 需要额外解释。

概念解释

DEK:(Data Encryption Key,数据加密密钥),即对数据进行加密的密钥。

  • 每条记录均使用不同的DEK(随机生成)。
  • DEK不能明文存储,需要使用KEK再次加密。
  • DEK在加密后建议随密文数据一起存储,可用于大数据场景。当只有少量的DEK且预期不会增长时,才会考虑存储在KMS(不推荐)。

KEK:(Key Encryption Key,密钥加密密钥),即对DEK进行加密的密钥。

  • 每个应用或每个用户在每个应用中应该使用不同的KEK。
  • KEK加密存储在KMS系统中,不随密文数据一起存储,通常也不应存储在应用自身。

image.png

加解密流程

加密时,使用随机生成的DEK对明文数据进行加密,使用KEK对随机DEK加密,最后加密后的数据和加密后的DEK一并写入数据库(或其他存储系统)

image.png

解密时,从数据库或存储系统提取密文数据和密文DEK,先使用KEK对密文DEK进行解密,得到明文的DEK,再使用明文的DEK对密文数据进行解密,得到明文数据。

image.png

因此加解密时都需要KMS 系统和业务本身参与,黑客即使获取了某一个密钥也无法获得明文数据。

参考:

https://juejin.cn/post/7241004522566205498

updatedupdated2025-08-272025-08-27