欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

产品安全视角 - 密钥管理系统 (KMS)

最编程 2024-07-06 16:26:08
...

KMS(Key Management System,密钥管理系统)的主要作用是让业务无法单独对数据解密,这样黑客单独攻克一个系统是无法还原数据的。要想解密已加密的数据,必须业务和KMS共同完成,缺一不可。

image.png

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对密文数据进行解密,得到明文数据。

TOB

image.png

首先就是 KMS 为业务生成一个唯一的 KEK, 业务不对 DEK 做任何的加解密工作,而是将 DEK 传递给 KMS ,让 KMS 进行加密解密。

缺点:严格依赖于 KMS 服务,一旦 KMS 挂了,业务对敏感数据就不能正常访问。

可以在初始的时候,从 KMS 获取对应的 KEK ,存储在本地缓存中,在业务中做对应的加解密操作。

TOC

TOC 的密钥管理系统,相比于 TOB 增加一个针对于每个用户的KEK,记为 UserKEK

image.png

可以将 UserKEK 使用用户管理系统的 APPKEK 对 UserKEK 进行加密,存储到用户信息表或者用户 KMS.

那么所有的数据除了对 随机 DEK 进行加密外,还需要使用 UserKEK 进行加密。

推荐阅读