维护密钥的安全 统一安全管控之密钥管理KMS
发布时间:2022-07-18 09:27:43 所属栏目:安全 来源:互联网
导读:维护密钥的安全 统一安全管控之密钥管理KMS: 一、为什么要统一管控密钥 谈到信息安全免不了要解决一个问题就是数据加密。加密就会涉及到密钥相关的问题,比如密钥的生成、传输、保存、泄露等问题。如何保护好密钥的安全就成了信息安全的非常重要的一个部分
维护密钥的安全 统一安全管控之密钥管理KMS: 一、为什么要统一管控密钥 谈到信息安全免不了要解决一个问题就是数据加密。加密就会涉及到密钥相关的问题,比如密钥的生成、传输、保存、泄露等问题。如何保护好密钥的安全就成了信息安全的非常重要的一个部分。某司员工将密钥泄漏到开源网站导致重要数据丢失事件,君们还记得否?如果有完善的KMS系统这种情况很大程度上就可以避免了。 二、KMS设计 1. 密钥分级 这里按密钥作用划分为三级: 数据加密密钥(DEK):将用于数据加密的密钥,也称三级密钥(DEK);一般公司里面一个应用对应一个DEK。 密钥加密密钥(KEK):保护三级的密钥,也称二级密钥(KEK 即对DEK进行加密);一般公司里面一个部门对应一个KEK,DEK在KEK管辖之内。 根密钥(RootKey):保护二级密钥的密钥,也称一级密钥(RootKey,即是对KEK进行加密),根密钥构成了整个密钥管理系统的关键。 2. 基本架构 本文中的KMS由三大部分组成SDK、后台服务、HSM。 SDK:主要提供给服务的使用者集成到自己开发的项目中,实现密钥的创建、导入、启用、禁用等相关密钥管理和加密以及解密等常见操作。SDK分为:Client模块、加解密模块,主要负责提供简单接口完成加密解密功能。 KMS服务:主要负责从硬件安全模块获取和保存根密钥,并且安全地保存在后台内存中,然后通过密钥的派生算法生成KEK进而生成DEK。分为,根密钥加载模块、密钥派生模块、Server模块。 开发者将SDK集成到自己开发的服务或者系统的代码中,以实现只需要调用较为简单抽象的接口就能够使用密钥管理服务的相关功能。SDK中进行加解密是为了防止业务方私自保存密钥。Client模块主要是负责SDK的Http请求相关的功能,加解密模块则是负责SDK加解密相关的功能。 3. 运行功能 密钥派生: KMS中最为关键的模块是密钥派生模块。根据用户ID和随机因子通过伪随机函数派生出KEK或者DEK等密钥。KMS杜绝明文持久化保存密钥,派生出来的KEK通过Rootkey加密保存在数据库,派生出来的DEK通过KEK加密保存在数据库。 三、推动业务方使用KMS 就算KMS再安全,业务方不愿意使用对于安全来说无疑也是掩耳盗铃。 如何让业务方愿意使用,需要技术和管理相结合去推动。管理上:自上往下推动,通过高管的支持通知业务方使用KMS以及讲述使用KMS带来的收益,并通过KMS管理规范约定不通过KMS来使用密钥所承担的责任。通过定期安全宣传和培训从反面和正面去讲述其中利害。技术上:定期进行专项检查,通过代码扫描查看代码中存在的密钥硬编码,如果存在密钥硬编码则说明很有可能业务方自行创建保管密钥;定期去大数据平台进行扫描将个别字段传入KMS加密接口查看返回密文跟数据库中的密文对比,如果一样说明采用了KMS加密,如果不一样很有可能就是自行保管密钥。 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |