当前位置: 首页 > 科技观察

保护密钥的安全,统一安全管控KMS的密钥管理

时间:2023-03-20 00:36:22 科技观察

1.为什么要对密钥进行统一管理和控制谈到信息安全,一个不可避免的问题就是数据加密。加密涉及与密钥相关的问题,例如密钥的生成、传输、存储和泄露。如何保护密钥的安全已经成为信息安全中非常重要的一环。某公司员工泄露开源网站密钥,导致重要数据丢失。你还记得吗?如果有一个完善的KMS系统,可以在很大程度上避免这种情况。对于大多数没有KMS管理系统的公司来说,密钥本地化会导致密钥分散在代码和配置文件中。缺乏统一管理导致开发和维护成本巨大,密钥容易泄露。也有一些公司使用硬件加密机来管理密钥,即HSM,全称是HardwareSecurityModule。这种管理密钥的方式确实非常安全,但是由于各级密钥都在HSM中进行管理,成本太高。软硬件结合是更好的方式,通过项目密钥管理服务KMS轻松创建和管理密钥,同时为密钥提供保护,避免密钥泄露。使得开发者无需投入大量时间和精力来保证密钥的保密性、完整性和可用性。通过密钥管理服务,开发者在处理密钥时会更安全、更方便、更简单,从而可以将更多的时间和精力集中在如何使用加解密功能实现业务场景上。二、KMS设计1、密钥分类这里根据密钥的作用分为三级:数据加密密钥(DEK):用于数据加密的密钥,也称为三级密钥(得克);一般公司中一个应用程序对应一个DEK。KeyEncryptionKey(KEK):保护三级密钥,也称为二级密钥(KEK加密DEK);一般来说,一个公司的一个部门对应一个KEK,DEK隶属于KEK。根密钥(RootKey):保护二级密钥的密钥,也称为主密钥(RootKey,加密KEK)。根密钥构成了整个密钥管理系统的密钥。2.基本架构本文中的KMS由三部分组成:SDK、后台服务、HSM。SDK:主要提供给服务使用者集成到自己开发的项目中,实现密钥创建、导入、启用、禁用、密钥管理、加解密等常用操作。SDK分为:Client模块、加解密模块,主要负责提供简单的接口,完成加解密功能。KMS服务:主要负责从硬件安全模块中获取并保存根密钥,并安全存储在后台内存中,然后通过密钥推导算法生成KEK,再生成DEK。分为根密钥加载模块、密钥推导模块和服务器模块。HSM:提供根密钥生成和保管服务。架构图架构图说明:根密钥生成,为了生成根密钥的保密性,三人分别将约定算法的三个随机因子输入到HSM中生成根密钥,非法读取HSM中的根密钥该密钥会导致HSM被破坏而无法使用,从而保护根密钥不被泄露。另外,为了保存根密钥以便及时恢复,三个随机因子应该分别存放在三个保险箱中。为防止根密钥泄露,根密钥RootKey由密钥管理服务KMS从硬件安全模块(HSM)中读取,按照一定的去中心化算法存储在内存中。开发者将SDK集成到自己开发的服务或系统的代码中,从而实现密钥管理服务的相关功能,只需要调用一个相对简单抽象的接口即可。SDK中加解密的目的是防止业务方私藏密钥。Client模块主要负责SDK的HTTP请求相关功能,加解密模块负责SDK的加解密相关功能。3.运行功能密钥推导:KMS中最关键的模块是密钥推导模块。根据用户ID和随机因子,通过伪随机函数推导出KEK或DEK等密钥。KMS消除了密钥的明文持久存储。导出的KEK通过Rootkey加密存储在数据库中,导出的DEK通过KEK加密存储在数据库中。创建密钥:用户在KMS提供的SDK中调用createuserdatakey,然后用户传入用户ID等必要信息(如果要创建KEK,传入部门信息,如果要创建DEK,传入申请信息)KMS服务器验证请求验证通过后,KMS服务器在用户名下新建一个密钥,返回密钥ID密钥加密(解密同理):服务调用者调用KMS提供的SDK,直接加密服务调用者传入用户ID,KeyID,待加密的明文KMS服务器验证keyID,用户ID,验证是否在用户ID下,KMS服务器返回DEK给SDK对SDK加密算法中的明文进行加密,返回密文III。促成业务方即使使用了KMS,无论KMS多么安全,业务方不愿意使用,从安全性上来说无疑是一种欺骗。如何让业务方愿意使用,需要技术和管理的结合来推动。管理方面:自上而下推动,通过高管的支持通知业务方使用KMS并说明使用KMS的好处,通过KMS管理规范约定不通过KMS使用密钥的责任。通过定期的安全宣传和培训,从消极和积极的方面说出它的利弊。技术上:定期进行专项检查,通过扫码检查代码中的硬编码密钥,如果有硬编码密钥,说明业务方可以自行创建和保管密钥;定期去大数据平台扫描个别字段通过KMS加密接口检查返回的密文与数据库中的密文对比。如果相同,说明使用了KMS加密。如果不是,则很可能密钥被自己保管。现有的所有加密技术都是基于密钥破解时间非常长的事实。想象一下,如果出现量子计算机,可以在几秒内破解出一个2048位的密钥,那么现有的加密技术就没有用了。