前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一种密钥管理系统的设计与实现

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

原创
作者头像
卡卡罗特杨
修改2022-05-28 14:22:18
3.8K0
修改2022-05-28 14:22:18
举报

概述

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

  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等公共安全能力,把高标准的数据安全赋能到业务流程中,不断提升公司数据安全治理的技术底座。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • KMS总览
    • 主要流程及模块
      • 具体业务流程
        • 产品全景图
          • 业务部署图
          • 应用场景介绍
            • 接口签名
              • KMS签名
            • 数据加密
            • 结语
            相关产品与服务
            密钥管理系统
            密钥管理系统(Key Management Service,KMS)是一款安全管理类服务,可以让您轻松创建和管理密钥,保护密钥的保密性、完整性和可用性,满足用户多应用多业务的密钥管理需求,符合合规要求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档