一种密钥管理系统的设计与实现

2022-05-28 14:22:18 浏览数 (2)

概述

随着国家监管和合规的要求,以及数据作为公司重要的资产,避免数据泄漏对公司造成负面影响,因此需要对数据进行加密再存储。然而在推进业务数据加密过程中,也会忽视了由于设计不完善、实现不规范给系统带来的风险。应用中常见的反面例子有:

  1. 使用的密码算法强度不足。如使用MD5、SHA1哈希算法存储用户密码、手机号等。——可以通过彩虹表攻击在有限空间 时间内通过碰撞推导原文,目前业界已普遍采用强度更强的PBKDF2等算法替代。
  2. 密钥长度不足导致密钥空间有限,在现有计算条件下易于被暴力破解。如:64位(有效长度56位)密钥长度的DES密钥、1024位RSA密钥在现有硬件条件下,可在几天或几小时内实现破解。
  3. 算法使用不当,导致抗分析能力较弱。反面案例有:通过不安全的伪随机数产生密钥,导致碰撞概率极高;加密过程中初始向量IV为空,使差分攻击难度降低;HMAC摘要中未使用盐值导致重放等横向攻击。
  4. 密钥存储方案或存储环境存在泄露风险。如:通过配置文件、硬编码等方式存储密钥,攻击者可通过越权查看配置文件、反编译程序代码等方式获取密钥。
  5. 不合理的密钥分发机制导致密钥在分发、传输过程中泄露。如:线下传输密钥或直接将密钥明文以文件形式传递,导致密钥泄露的风险大大增加。

从以上安全风险来看,密钥在生成、更新、存储、分发、使用过程中,存在着泄露、滥用、权限管控缺失、无法有效审计等风险,进而直接影响整个密码系统和应用方案的安全性。因此在密码技术实践过程中,密钥的安全保存、合理使用、最小授权、有效审计是系统的核心任务,也就是密钥管理系统(KMS)的核心价值。

KMS总览

KMS(Key Management System)即密钥管理系统,用于对密钥的生命周期进行管理,提供统一的使用接口,并实现权限管控、审计追溯等能力。

将KMS系统划分为三个核心模块:

  1. 安全区 - 整个系统的安全根,主要负责安全存储系统的根密钥,仅对系统内必要的功能模块开放访问权限。
  2. 服务层 - 系统主要功能的实现部分,为用户和KMS的应用提供密钥管理、数据加密等服务,这也是KMS中与业务逻辑关系最紧密的部分。
  3. 接入层 - 面向应用系统提供业务接入能力,KMS通过提供多语言、多框架适配的SDK,来支持更低成本的集成。

根据三个核心模块又将KMS划分成六大功能模块点:

  1. 应用管理 - KMS以应用维度,通过应用管理员方式来进行密钥托管。应用在一个实际业务场景一般指一个大型的项目,而应用管理通常是项目的leader或者负责人。每个应用分配独有的密钥,该密钥由腾讯云KMS的MasterKey加密存储。
  2. 密钥管理 - 应用管理员可以创建,使用,销毁密钥。密钥必须跟应用关联,每个密钥由应用密钥来进行加密存储。KMS默认实现高随机的密钥生成算法,也支持外部导入自有密钥。KMS通过版本号来实现密钥的更新轮换,同时保证密钥的备份恢复机制,在密钥丢失、灾难场景下,能够较快恢复密码服务能力。
  3. 服务管理 - 通常一个应用将由多个服务来支撑运行。因此服务不负责管理密钥,只向应用申请密钥的访问权限。服务管理员一般是具体开发人员。KMS支持密钥下发本地加密,也支持远程加密,这更安全但同时也伴随性能损耗。因此KMS由应用管理员来决定密钥的使用方式。
  4. 审批管理 - 针对应用,密钥,服务三大模块。根据不同场景,实现多维度,多层级,可拓展的审批功能。并通过邮件,企业微信等方式实现审批的快速响应。
  5. 审计管理 - 审计包括访问日记记录和转岗回收两大功能。KMS会记录用户每一次操作记录,保证用户风险操作的可回溯。同时对于转岗离职人员,将强制回收相应的权限。
  6. 开放接口 - KMS基于人的维度管理密钥,同时也基于服务的维度访问使用密钥。因此在一些具体的应用场景下,KMS还负责为业务方提供与应用相关的安全接口,如:数据加密封装、接口签名等。

在此基础上,依赖公司部分已有基础架构(依赖服务)、腾讯云KMS基础能力,实现了KMS的平台层(负责系统监控和密钥管理);面向各业务系统在应用界面提供数据安全能力(如接口管控、数据加密等);同时在用户界面上平台层主要面向不同用户(业务方团队、安全运营团队)提供业务接入管理。

主要流程及模块

具体业务流程

产品全景图

业务部署图

应用场景介绍

在数据安全应用中,密码学技术主要用于接口签名和数据加密两个经典场景,如下图:

接口签名

数字签名经典算法有两类:

  1. 基于PKI体系公私钥对的非对称算法:通常使用私钥进行签名、公钥进行验签。常见的算法有RSA、椭圆曲线ECC、国密算法SM2。
  2. 基于对称密钥的HMAC算法:使用散列函数H,以消息M、盐值Salt、对称密钥K作为输入,输出定长摘要。常见的算法有:HMAC-MD5、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512等 。

由于公钥密码算法性能较低,因此在接口签名时通常采用轻量级的HMAC算法来实现,业界典型应用有AWS Signature、OAuth等。通常由服务端为客户端签发一组AK/SK安全凭证,其中AK用以标识客户端身份,而SK用于签名消息的生成和验证。

KMS签名

kms采用的是腾讯云TC3-HMAC-SHA256签名方法。

https://cloud.tencent.com/document/api/213/30654

数据加密

在与各业务线的密切合作中,逐渐确定了覆盖数据传输和存储场景的数据加密方案,并通过持续丰富完善的加密框架,帮助业务系统快捷的实现数据加密能力集成,支持无侵入、低侵入的集成方式。

结语

数据已愈发成为每个公司的核心竞争力,数据的价值已不言而喻,数据安全的重要性也越来越高。在高价值的数据无处不在,同时数据安全又是一项安全与业务紧密结合、长期且艰巨的工作。通过持续打造KMS等公共安全能力,把高标准的数据安全赋能到业务流程中,不断提升公司数据安全治理的技术底座。

0 人点赞