网络安全系列 之 密钥安全管理


最近涉及到安全相关的知识,这里对安全秘钥管理要点做简单记录:

加密技术 是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。

0. 基本概念

加密包括两个元素:算法密钥。一个加密算法是将消息与密钥(一串数字)结合,产生不可理解的密文的步骤。
密钥是结合密码算法一起使用的参数,拥有它的实体可以加密或恢复数据。

密钥可以分对称密钥和非对称密钥。

对称密钥: 加/解密使用相同密钥。 -- AES等算法
非对称密钥:需要两个密钥来进行加密和解密。(公钥和私钥) -- RSA等算法

1. 密钥分层管理结构

工作密钥 (WK/WorkKey)

密钥加密密钥 (KEK或MK/MasterKey)

根密钥(RK/RootKey)

  • 密钥分层管理至少选择两层结构进行管理:根密钥和工作密钥。

2. 密钥生命周期安全管理

密钥生命周期 由于不良设计可能导致的安全问题
生成: 生成算法随机性差,导致密钥可被预测,或攻击者可以自己生成密钥。
分发: 密钥明文分发,导致密钥存在被攻击者截获的风险。
更新: 密钥从不更新,导致攻击者更容易获取密钥,从而能够轻易获取敏感数据的明文。
存储: 密钥明文存储在数据库中,导致攻击者容易读取出密钥,从而能够轻易获取敏感数据的明文。
备份: 如果重要密钥从不备份,一旦密钥丢失,将导致原有加密的数据不能解密,大大降低了系统可靠性。
销毁: 密钥仅被普通删除,导致攻击者有可能恢复出密钥。

密钥的建立包括密钥的生成和分发。

2.1 生成

  1. 基于安全的随机数发生器
  2. 基于密钥导出函数

PBKDF2是一个基于口令的密钥导出函数,导出密钥的计算公式:
DK = PBKDF2(HashAlg, Password, Salt, count, dkLen)
PBKDF2 :密钥导出函数名
输入:
HashAlg :哈希算法(推荐使用SHA256)
Password :用户输入的口令或者读取的一串字符串
Salt :盐值,为安全随机数,至少为8字节
count :迭代次数,正整数
dkLen :导出密钥的字节长度,正整数。
输出:
DK :导出的密钥,长度为dkLen个字节的字符串。
```
http://javadoc.iaik.tugraz.at/iaik_jce/current/iaik/pkcs/pkcs5/PBKDF2.html
3. 基于标准的密钥协商机制
4. 基于安全的密钥生成工具等

2.2 分发

密钥的分发是将密钥通过安全的方式传送到被授权的实体,一般通过安全传输协议或者使用数字信封等方式来完成。

数字信封是对称密码体制和非对称密码体制的一种混合应用,即解决了非对称密码体制加解密效率的问题,又妥善解决了密钥传送的安全问题。

  • 在密钥的分发过程中,对于对称密钥和非对称密钥的私钥而言,应保证其完整性和机密性;

    推荐产品开发人员使用安全的加密传输协议(如SSL、IPSec、SSH)来传输这些敏感数据。
    当产品的应用场景中不具备建立安全传输协议的条件时,也可以使用数字信封来完成密钥的分发。

数字信封加解密接口

接口 iPSI OpenSSL
加密 CRYPT_sealInit() EVP_SealInit()
加密 CRYPT_sealUpdate() EVP_SealUpdate()
加密 CRYPT_sealFinal() EVP_SealFinal()
解密 CRYPT_openInit() EVP_OpenInit()
解密 CRYPT_openUpdate() EVP_OpenUpdate()
解密 CRYPT_openFinal() EVP_OpenFinal()

对于非对称密钥的公钥而言,应保证其完整性与真实性。

2.3 使用

  • 一个密钥只用于一个用途(如:加密、认证、随机数生成和数字签名等)。

  • 非对称加密算法私钥仅可被其拥有者掌握。

2.4 存储

  • 用于数据加解密的工作密钥不可硬编码在代码中。

  • 对称密钥、私钥、共享秘密等均属于敏感数据,在本地存储时均需提供机密性保护。

       上层密钥的机密保护由下层密钥提供 --> 根密钥的安全管理。
    
  • 密钥组件方式生成根密钥时,密钥组件需要分散存储,当密钥组件存储于文件中时,须对文件名做一般化处理。

2.5 更新

当密钥已经达到其使用期限或者密钥已经被破解时,密码系统需要有密钥更新机制来重新产生新的密钥

  • 密钥须支持可更新,并明确更新周期。

2.6 备份

密钥丢失将导致密文数据无法解密,这样便造成了数据的丢失。
应依据具体场景,来评估是否需要对密钥提供备份与恢复机制

2.7 销毁

  • 不再使用的密钥应当立即删除。

2.8 可审核

  • 密钥管理操作需要记录详细日志。

密钥的生成、使用(作为管理用途,如加解密密钥、派生密钥必须记日志,作为业务用途,如加解密业务数据则不要求)、更新、销毁操作是重要的管理操作。
日志中需详细记录密钥的各项管理操作,包括但不限于记录操作的主体(人或设备)、时间、目的、结果等可用于事件追溯的信息。

posted @ 2017-11-07 11:09  eaglediao  阅读(...)  评论(...编辑  收藏