内容简介:Key Management Service:密钥管理服务,为公司加解密、接口签名等服务提供统一的密钥管理能力,包括密钥生成、存储、下发、更新、销毁等。1、密钥属性:(1)密钥状态
Key Management Service:密钥管理服务,为公司加解密、接口签名等服务提供统一的密钥管理能力,包括密钥生成、存储、下发、更新、销毁等。
一、概念
1、密钥属性:
(1)密钥状态
NEW:相应的密钥版本已准备就绪,可以使用。 USING:相应的密钥版本已无法使用,但密钥材料仍可以使用,并且可重新设置成已启用状态。 STOP:手动停用的密钥。 LIMIT:限制的密钥,不可在做加密操作,但可以用来解密历史数据。 DEL:删除的密钥,不能再进行任何加密或者解密操作。
(2)密钥版本:从1.0逐渐增加。
(3)有效期:单个密钥有效期60分钟。密钥失效前10分钟生成新密钥。
2、密钥用途:KMS为以下场景提供相应的密钥用途:数据加密、数字签名、各种场景的key管理。
3、密钥更新:密钥更新,不会对历史数据重新加密,只是在更新的时间点之后,自动使用新密钥做加密
自定更新,设置更新周期和更新时间 手动更新,随时更新,并且不影响自动更新
4、密钥分级:密钥分级保证密钥本身的安全性。
简单的分级方案: 第一层:工作密钥,DEK,用来加密实际的敏感数据。 第二层:密钥加密密钥,又叫做终端主密钥,KEK,用来加密工作密钥,在各个终端中存在。 第三层:非对称密钥,数字证书的一部分,用来识别身份,并加密传输KEK。
二、思路
1、严格校验用户端和服务端的身份,避免冒用。身份校验应以可信的第三方CA为标准。
2、密钥管理设计时要充分考虑密钥备份、容灾恢复等问题。
3、在各个关键节点要设计降级方案,如向KMS申请密钥超时,SDK需要支持本地生成临时密钥。
4、密钥更新过程中一定要保证多节点的密钥一致性。
5、能在SDK中封装好的功能尽量在SDK封装好,避免与业务线代码侵入过多。
6、尽量避免转加密现象。
三、组成架构
简单的密钥管理体系由四大部分组成:
KMS:密钥管理系统,用来统一管理各类密钥的生命周期,维护密钥各类属性。在密钥更新的过程中,实际是由KMS来判断是否需要更新、向各客户端下发更新指令,并实际生成密钥的。
TMS:TOKEN管理系统,用来管理各个系统和密钥直接的对应权限关系。
CA:统一认证中心,用来生成并下发数字证书,管理数字证书生命周期。
SDK:按照统一标准封装加解密、签名等方法,并在后台与KMS定期通信,维护密钥更新流程。
四、密钥管理方案
初始化阶段:
1、各个Service首先在KMS中接入获得身份令牌token
2、各个Service生成自己的RSA公私钥
3、各个Service拿自己的RSA公钥去CA申请证书
密钥准备阶段:
1、Service用自己的证书去KMS申请需要的密钥
2、密钥保存在Service本地,定期去KMS重新获取(当有效期设置为0时,即不在Service本地保存,一次一密)
业务调用阶段:
1、Service用获取到的签名密钥做签名,加密密钥做加密,调用其他服务。
2、其他业务线校验签名,返回数据。
五、密钥管理的一些经验:
1、什么时候做数字签名?
每次接口调用都做数字签名。
2、数据加密的算法?
建议采用对称加密AES256位密钥,待加密的数据类型不同,选择不同模式,一般情况下CBC模式适合大多数场景,XTS模式适合本地存储场景。
3、如何判断一条数据是否被加密?
在系统迁移的过程中,必然出现明文和加密两种逻辑同事出现的情况,此时就需要程序判断数据是明文还是密文,建议在SDK中提供方法判断。
4、存储加密数据库索引如何处理?
基于安全的设计,相同的明文可能密文不同,因此需要建立一条不可逆并且与明文一一对应的值做索引。
5、存储加密历史数据如何处理?
第一次加密之前的历史数据,需要提前先由刷库 工具 统一将明文刷成密文,刷库时,需要先新建一列密文列,将明文列加密后刷到密文列中,之后程序写入或者更新操作时,需要对明文列、密文列双写,读取操作时只读取密文列,等程序稳定运行一段时间后,再将明文列删除。
第一次加密之后,随着密钥定期更新,不同时期的数据使用不同密钥加密。
6、密钥如何存储?
在KMS服务端,工作密钥需要加密存储于数据库中,加密存储的密钥可采用分段式密钥,通过RAID方式将不同密钥段存储于不同介质中。
7、证书如何生成下发?
证书生成下发通常有两种方式,第一种是SDK生成RSA公私钥,将RSA公钥发给CA申请证书,CA用自己的私钥签发证书后返回给SDK。第二种是直接CA生成RSA公私钥,并签发证书,并下发给SDK。这两种方式可根据实际业务需求选择。
证书是对客户端做身份识别的最重要标识,因此在第一次下发证书时,建议采用可信的第三方系统独立下发,如SRE发布系统。如果有有效且安全的手段保证客户端的合法性,可通过SDK与KMS的交互来下发证书。
8、证书如何验证,保证客户端的合法性?
证书验证需要两个步骤:
(1)验证证书的合法性,通过CA的公钥解密证书,校验签名即可验证证书的合法性、未被篡改。
(2)验证客户端持有证书对应的私钥,KMS向SDK发起challenge,向SDK发送一个随机数,SDK使用私钥加密后,返回给KMS,KMS使用证书中的公钥解密,验证SDK确实持有合法的私钥,证明SDK的合法身份。未了保证安全性,KMS发送的随机数可以做一次哈希。
9、密钥协商方式?
密钥协商可采用集中协商或者分散协商两种方式。
(1)集中协商:各个SDK分别向KMS请求密钥,KMS生成后返回给各个SDK。
(2)分散协商:假设有两个客户端A和B,A和B使用DH密钥协商算法,来协商密钥。
以上所述就是小编给大家介绍的《密钥管理架构设计概述》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 密钥繁多难记难管理?认识高效密钥管理体系
- HTTPS之密钥知识与密钥工具Keytool和Keystore-Explorer
- 秘密的实质——密钥
- 密钥安全技术
- 代码审计 | SiteServerCMS密钥攻击
- 解读以太坊2.0密钥
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法交易:制胜策略与原理
[美]欧内斯特·陈(Ernest P. Chan) / 高闻酉、黄蕊 / 机械工业出版社 / 49.00
本书是一本引人入胜、信息量大、覆盖各类交易策略的图书。无论个人投资者,还是机构投资者,都可以借鉴和使用其中的策略。本书中的策略大致可分为均值回归系统和动量系统两大类。书中不仅介绍了如何使用每种类别的交易策略,更解释了各种策略之所以有效的原因。本书始终以简单、线性的交易策略为重心,因为复杂的交易策略容易受到过度拟合及数据窥探的侵害。数学和软件是算法交易的两条腿。本书用到了一定程度的数学知识,使其对各......一起来看看 《算法交易:制胜策略与原理》 这本书的介绍吧!