加密技术中key-protecting key(密钥保护密钥)的含义是什么?
SQL Server始终加密双层密钥机制说明
官方表述的核心含义
始终加密功能采用双层密钥分离架构,其中列主密钥(CMK)处于密钥层级的上层,列加密密钥(CEK)处于下层。所谓「CMK是密钥保护密钥,用于加密一个或多个CEK」,指的是CMK的唯一作用不是直接加解密业务敏感数据,而是专门负责保护CEK的安全性,一个CMK可以同时对应加密多个不同的CEK,实现多份工作密钥的统一管理。
CEK被另一密钥「保护」的具体指代内容
- CEK是直接用于加解密表中敏感列的工作密钥,如果明文存储CEK,任何能接触到数据库的人员(包括DBA、拿到备份的攻击者)都可以直接用CEK解密所有敏感数据,加密机制完全失效。
- 这里的「保护」核心操作是用CMK对明文CEK做加密运算,数据库中只会存储被CMK加密后的密文CEK,全程不会存储明文形态的CEK。
- CMK本身不会存放在SQL Server实例内部,而是存储在独立的可信密钥存储中(比如企业自建的密钥管理系统、客户端本地证书存储等),只有经过授权的业务客户端才有CMK的访问权限,数据库侧完全没有权限获取CMK,也无法自行解密存储的密文CEK。
- 实际数据访问流程中,客户端需要先从数据库获取密文CEK,再调用独立密钥存储的CMK解密得到明文CEK,最后用明文CEK解密获取的密文业务数据,整个过程明文CEK和明文业务数据都不会传递到数据库侧,从根源上避免了数据库端的内部泄露和拖库风险。
内容的提问来源于stack exchange,提问作者Oscar K
相关产品推荐
相关产品推荐

