首页 编程语言 密钥管理—密钥生命周期对应的技术和流程

密钥管理—密钥生命周期对应的技术和流程

密钥管理是安全的密码算法的前置条件,如果没有安全的过程来处理密钥,那么使用密码技术就没有任何意义。

密钥管理是什么?
密钥管理是密码机制和真实系统安全性之间的接口,因此必须根据特定应用或组织的需要进行定制。

但注意,不同的体系需要不同的解决方案,没有一种绝对正确的管理密钥的方法。

下文关注:

对称密钥
公钥对中的私钥(既解密私钥或签名密钥)
密钥管理的流程
密钥管理指“ 密码学密钥的安全管理 ”,这是一个宽泛的定义,因为密钥管理涉及范围很广(可能涉及很多信息安全问题,例如物理安全、访问控制、网络安全、安全策略、风险管理和灾难恢复),流程包括:

技术控制
可能需要特殊的硬件设备来存储密码学密钥;
可能需要特殊的密码协议来建立密钥;
过程控制
指策略、实践和流程;
环境控制
根据实际环境进行调整;
人为元素
密钥管理最终通常涉及人来做事;
密钥管理的两个基本需求
这个两个密钥管理的基本需求,适用于密钥生存周期的各个阶段:

密钥的保密性;
在密钥的整个生存周期中,秘密密钥必须对所有各方保密,除非获得授权知道它们;
如使用弱密码生成机制,容易被攻击者确定关于密钥信息;
在传输时容易受到攻击,因此,必须使用安全密钥分发机制;
密钥被存储在设备上时,可能是他们最脆弱的时候;因此存储机制必须足够强大,以抵御能够访问其设备的攻击者;
如果密钥没有被正确销毁,那么它可能被恢复;
密钥目的保证;
密钥关联的实体信息(在对称密码中,可能有多个实体;在公钥密码,每个密钥通常只与一个实体关联);
使用密钥的算法;
密钥使用限制;(例如,某个对称密钥只能用于创建和验证MAC,或者某个签名密钥只能用于对某个交易额的事务进行数字签名。)
数据完整性;
将上述信息链接到密钥本身(作绑定),否则就不能依赖于它;
在某些应用中,我们需要一个更强的要求,即对目的的保证可以向第三方证明 (provable to a third party),这可能是数字签名方案的验证密钥的情况。
密钥的生存周期
密钥管理范围的另一种视角是通过考虑密钥生存周期(Key Lifecycle),它标识了在整个生存期中密钥相关的各种进程。如下图:

密钥的生存期
密钥的预期生存期(Cryptoperiod) 指的是密钥只能在指定的时间内使用,在此期间内,密钥是被认为可用的(Live)。一旦超过这个生存周期,密钥将被视为过期(Expire) ,不应该被使用。此时,它可能需要 存档(Archieve) 或 销毁(Destroy) 。

给密钥设置有限的生存期的原因:

降低密钥泄露的风险;
减少密钥管理的失败;(例如,强制每年更换密钥,将确保那些离职人员还保留了密钥,他们在下一年将无法使用)
降低未来受攻击的风险;
强制实施管理周期;(比如,对提供按年付费对电子资源的访问,那么一年的密钥生存周期就允许可访问密钥的人可以打开付费资源)
灵活性;
限制秘钥暴露;
密钥生成
密钥的生存周期,从密钥的生成开始。

直接用随机数生成的数字;
密钥长度的选择
密钥的长度取决于效率和安全性这个两个维度的考量。

密钥派生
派生出密钥的秘密值被称为基密钥(Base Key).

对称密钥的派生方法:

可以使用密钥派生函数(HKDF)派生。

也可以基于口令派生密钥。

从组元生成密钥。

密钥建立
管理对称密钥最常用的技术就是密钥分级(Key Hierarchy);

分级部署密钥有两个明显的优势:

安全分发和存储;
方便可扩展的密钥变更;
三级密钥结构案例:

主密钥(Master Key,MK)
一般使用硬件安全模块(HSM)来存储主密钥;
密钥加密密钥(Key Encrypting Key,KEK)
数据密钥(Data Key,DK),也称为会话密钥(Session Key)
密钥包装:
密钥分级中,一个密钥的传输,必须在另一个密钥的保护下。
涉及密钥派送;

建立密码学密钥的方法:

密钥分级
可伸缩的密钥分级结构
单交易唯一密钥
密钥存储
密钥需要得到保护,那么密钥存储在哪里呢?
最好的方法是不要再任何地方存储密码学密钥,而是在需要的时候动态生成它们。

存储方式:

存储在软件中
存储在硬件中
硬件安全模块,提供防篡改功能,有人视图提取密钥,就会触发防篡改电路。
HSM, 会有一个或多个密钥始终驻留在HSM中,这个密钥称为 本地主密钥(Local Master Key,LMK)
其它类型的硬件
密钥备份/密钥存档/密钥恢复
todo

密钥使用
什么是密钥分离?

密钥变更
密钥变更的情况:

有计划的密钥变更
无计划的密钥变更
变更原理:

生成变建立一个新的密钥
撤销旧密钥
密钥激活:
密钥激活是指授权使用密钥的过程。

授权是基于密钥的身份信息进行实体身份认证。
密钥销毁
当密钥不在用于任何目的是,必须以安全的方式销毁它。

遇到一下情况时,需要销毁密钥:

当密钥过期时(密钥的生存期的自然结束)
当密钥被撤销时
在密钥存档的必要期限结束时。
采用的技术:
数据擦除,或数据清理机制。
密钥管理的实际流程实例
todo
总结
密码学原语很少因其设计的弱点而受到损害,反而常常是由于密钥管理不善而受到损害。因此,从实践的角度来看,密钥管理是最重要的一个环节。

密钥管理这个是密码学中与用户关系最大的方面,因为它是最有可能需要在单个应用环境中进行决策和流程设计的部分。

密钥管理由策略、流程控制组合,最终必须落到实践。

站心网

密钥管理是安全的密码算法的前置条件,如果没有安全的过程来处理密钥,那么使用密码技术就没有任何意义。密..

为您推荐

向商界大佬一样管理技术工作 - 以团队换将+技术重构为例

背景我们虚拟一个背景:你是一个技术团队 Leader, 近期正在主导"去IOE", "国产替代", "信创" 等技术重构工作. 但是在紧要关头, 一名下属因不可抗力离职, 并且因为之前"开源节流", 其所负责部分技术无备岗.这时候, 我..

天天写业务代码,如何成为技术大牛?

不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟"梦想总是要有的,万一实现了呢"!正是对技术梦的追求,促使我们不断地努力和提升自己。然而"梦想是美好的,现实却是残酷的",很多..

程序员如何讲清楚技术方案

最近在评审技术方案,和代码review的时候,遇到刚入行的同学们,很多都讲不清楚技术方案。具体表现是:上来不说需求,直接说算法实现。台下一头雾水,根本不知道设计方案是否合理。描述完需求后,又直接看代码,看表..

如何学习新技术

我总是感觉自己在盲目的学习一些看上去很火热的技术。比如 React Native,Flutter 等等。我家里堆了各种编程语言的入门书籍,有 Go 的,有 Erlang 的,有 c++ 的,还有 JavaScript 和 CSS。我到现在都搞不懂这个事情..

一文搞懂SaaS架构建设流程:业务战略设计、架构蓝图设计、领域系统架构设计、架构治理与实施

大家好,我是汤师爷~SaaS架构建设是一项复杂的系统工程,不仅需要技术层面的实现,更要从业务战略、架构设计、治理与实施等多个维度进行全面规划。一个成功的SaaS架构可以帮助企业降低IT成本、提升业务灵活性、加快..

码农晋升为技术管理者后,痛并快乐着的纠结内心

有一个非常有趣的现象:据说大部分的技术管理者,在其从程序员转为管理岗位的时候,都是在领导或公司的要求下,被动的推到管理岗位上的,并非是自己当初有强烈意愿、主动去选择管理岗的。这种被动的比例还不低,高达..

十年技术进阶路

前言该篇文章是我第一次跟DTCC合作编写的,整篇文章大概8000字,可能花您15分钟阅读。我和DTCC的韩楠老师,共花7了天时间,每天把该文章打磨到晚上12点,在这非常感谢编辑老师的负责与付出。这篇也是我分享里为数不..

传统线程技术中创建线程的两种方式

传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法;二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread。这两种方式大部分人可能都知道,但是为什么这样玩就..

一个技术管理者的苦逼【技术管理漫谈】

希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。角色转变 从工程师转技术管理这两年,好比头马变成车夫,除了角色认知的转变,还要看方向,定计划。不仅仅是自己拉好车的事情,..

技术团队管理者的问题视角

团队基建考虑的因素- 人心稳定性- 团队技能分布:(每个人熟悉的技术栈,技能)- 团队职业规范方向:(谁去当架构师、技术专家、技术经理、交互专家)- 合作意识:(工程师的积极性:主动问询,共同协商)- 团队规范..

技术实力的本质是什么?

背景今天,我们来讨论一个问题:技术实力的本质究竟是什么?在工作中,你可能会遇到,为什么他的实力不如我,他却可以晋升?在面试中,你可能会遇到,我把系统性能优化了10倍,为什么面试官还是看不上我?为什么?到..

什么是VoidZero?Vue和Vite之父尤雨溪成立的技术公司

VoidZero是一家由Vue和Vite之父尤雨溪成立的技术公司,主要致力于解决JavaScript工具链的碎片化、依赖复杂以及性能瓶颈问题,通过提供一个统一、高性能的开发工具链来改善开发者的开发体验。优点分析统一性:VoidZer..

ASP.NET Core主机和应用启动流程

主机主要负责Web应用程序的启动和生存期的管理,配置服务器和请求处理管道。主机配置日志,依赖关系的注入。主机实际上是一个封装了应用资源的对象。创建主机生成器>配置主机>创建主机>运行主机Host有两种,通用主机..

深入浅出Oracle-DBA入门、进阶与诊断案例免费下载

目前市场上的Oracle书籍普遍存在的问题是模式单一,要么只讲基础知识,要么侧重代码编程实例,要么针对具体的版本特性(Oracle8i/Oracle9i/Oracle10g等),要么缺少实践应用检验,很少能对Oracle相关知识进行全面深..

初次走上技术管理岗位的思考总结

初次走上管理岗位的技术骨干,总是有很多困惑。为什么比以前写代码还累?怎么让任务安排更合理?为什么总有下属不愿意进步,每天得过且过?诸如此类的问题,本文并不能都给出解决方法。本文的目的是抛砖引玉,如果诸..

微信小程序开发流程

微信小程序开发是一种基于微信平台的轻量级应用开发。以下是一般的微信小程序开发流程:注册小程序账号: 首先,你需要在微信公众平台注册一个小程序账号。这需要你的手机号和一个有效的邮箱地址。创建新小程序: 登..

桌面应用开发常用技术栈

开发电脑桌面应用可以使用多种技术栈,具体选择取决于开发者的需求和偏好。以下是一些常见的技术栈:前端开发技术栈:通常使用桌面应用开发框架,如Electron、Qt、JavaFX等。前端开发语言可以选择JavaScript、TypeSc..

.NET哪些技术已经淘汰了

从2023年12月15日的最新情况来看,.NET已经淘汰的技术主要有以下几类:.NET Framework 4.8之前的版本:.NET Framework 4.8是.NET Framework的最后一个版本,于2019年11月发布。微软已经宣布,将于2023年11月10日停止..

.NET架构师技术要求:掌握.NET平台和架构设计能力

作为一个.NET架构师,你需要具备以下技术要求:精通.NET平台:作为.NET架构师,你应该对.NET平台和相关技术栈有深入的理解,包括.NET Framework和.NET Core。你应该熟悉.NET编程语言,如C#,以及相关的.NET开发工具..

基于浏览器的流程编辑工具:Node-RED简介

Node-RED是一种编程工具,用于以新颖有趣的方式将硬件设备、API和在线服务连接在一起。它提供了一个基于浏览器的流程编辑器,使您可以轻松地使用设计器中的各种节点将流连接在一起,并且可以一键将其部署到其运行,..

发表回复

返回顶部

微信分享

微信分享二维码

扫描二维码分享到微信或朋友圈

链接已复制