Quantcast
Channel: IT瘾博客推荐
Viewing all articles
Browse latest Browse all 532

网络安全系列 之 密钥安全管理 - eaglediao - 博客园

$
0
0

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

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

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)来传输这些敏感数据。
    当产品的应用场景中不具备建立安全传输协议的条件时,也可以使用数字信封来完成密钥的分发。

数字信封加解密接口

接口iPSIOpenSSL
加密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 可审核

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

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

关于密钥管理的几个设计原则
网络安全有赖于密钥管理的有效性,即保证密码的产生,存储,传输和使用的安全性,这就要求对密钥进行有效的管理。



1,任何密码不以明文的方式进行存储,除非是放在足够安全的密码装置内。人工分配的密钥必须以密钥分量方式分别由不同的多个可信任的实体保管,不得直接以明文方式由单个实体掌握,对密码装置的任何操作均无法使得密钥以明文方式出现于密码装置之外;


2,保证密钥的分离性,不同通信实体之间使用不同的密钥,且这些密钥不能存在相关性,即一对通信实体之间的安全通信出现问题,不应引起另一对实体的安全通信,包含这四个实体中有两个实体相同的情况;


3,密钥需要具备一定的备份机制,当系统出现故障导致密钥的丢失,应该能通过对密钥备份的回复,来确保系统是可修复的,但密钥的备份不应该降低密钥管理的安全性。


4,密钥必须具备有效期,当旧密钥过期时,需要及时进行密钥的替换,同时,新密钥安全性和旧密钥的安全性应该分离,即旧密钥即使泄漏也不应该引起新密钥的安全性出现问题.


5,密钥管理需要具备层次性。
       网络要求每次交易的PIN保密.MAC的计算以及其它信息的加密所使用的密钥互不相同,作到一次一密.而为了保证交易的延续性,这些密钥均要由一个实体产生并安全地传输到另一个与之通信的实体, 这就要求通信双方必须共同使用一个加密密钥(KEK),以加密上述的各种工作密钥,KEK不能通过网络进行传输,而只能在系统使用前装入,或者通过两个实体各自分别产生一个相同的密钥作为KEK,有了KEK,便解决了会话密钥的传输问题。



       在网络中,商户、发卡行均需要与为数众多的实体进行安全通信,这就要求系统中具有大量的密钥(会话密钥和KEK),这些密钥无法全部保存在安全密码装置中,因此需要使用主密钥(MFK)对这些密钥加密存储于密码装置之外的主机数据库中。



   一级:MFK,主密钥,存储于密钥装作中,用于加密KEK和SK,以保存在密码装作外。
   二级:KEK,密钥加密密钥,用于SK的加密传送,每对通信实体都有一相同的KEK。
   三级:SK,会话密钥,用于加密PIN,产生MAC和验证MAC等。



6,密钥和密钥属性

       KEK和SK都具有密钥属性,用于功能分离和使用合法性检验,以提高系统的逻辑安全.密钥的属性包含此密钥的层次(标识KEK或SK).使用有效次数.MFK序号.密钥用途和密钥校验值等内容,密钥属性与密钥一起使用,密码装置根据密钥属性校验密钥使用的合法性.控制密钥的误用.密钥校验值由相应密钥值与属性在MFK的加密下产生.密钥属性仅与相应密钥的明文保存在主机中,也仅用于主机安全密码装置,不进行传输。


Viewing all articles
Browse latest Browse all 532

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>