考研复习 Day 51 | 密码学--第九章 密钥管理(上)

注:以下内容参考《新编密码学》范九伦 张雪锋 侯红霞 编著


第9章 密钥管理

著名的Kerckhoffs原则指出:密码系统的安全仅取决于对用户密钥的保护。密钥管理作为提供数据机密性、完整性、可认证性和可鉴别性等安全技术的基础,涵盖了密钥的设置、产生、分配、存储、装入、使用、备份、恢复、提取、更新、撤销、销毁以及保护等一系列内容和过程。

9.1 密钥管理的生命周期

密钥管理覆盖了密钥的整个生命周期,大致分为12个阶段(图9-1):

1. 用户登记

一个实体成为安全域的授权成员,包括初始密钥材料(如共享口令或PIN码)的获取、创建或交换。

2. 系统和用户初始化

系统初始化包括搭建和配置安全操作环境;用户初始化包括软件和硬件的安装及初始密钥材料的安装。

3. 密钥材料安装

将密钥材料配置到实体的软件或硬件中。技术包括手工输入口令、磁盘交换、ROM设备、智能卡等。

4. 密钥生成

按照预定规则,采用可行措施产生符合应用目标或算法属性要求的伪随机有效密钥。

5. 密钥登记

将密钥材料与相关实体的信息和属性捆绑(如身份、认证信息等),并通过公开目录等方式供其他实体访问。

6. 密钥使用

密钥在其有效期内可用于加密、解密、认证等操作。需注意不同密钥用于不同场合,必要时提前更新或终止。

7. 密钥材料备份

将密钥副本备份到独立、安全的存储媒体上,以便恢复时使用。

8. 密钥存档

对过期或提前撤销的密钥进行较长时间的离线保存,以备特殊情况(如仲裁、过去签名验证)时检索。

9. 密钥更新

当前密钥有效期即将结束时,用新密钥取代,需重新安装、登记、备份和发布。

10. 密钥恢复

从备份或存档的密钥材料中检索并重新构造出密钥(如设备损坏或口令遗忘时)。

11. 密钥撤销

在密钥正常生命周期结束前提前作废(如密钥泄露或相关人员变动)。需通过公告通知所有相关实体。

12. 密钥销毁

将不再需要的密钥材料从正式记录中清除,销毁所有备份,安全清除存储媒体,使密钥无法恢复。

密钥状态分类

  • 预运行状态:尚不能用于正常密码操作

  • 运行中状态:可用且处于正常使用中

  • 后运行状态:不再用于正常用途,但可能需要离线访问

  • 过期状态:任何情况下不再使用,相关记录已销毁


9.2 单钥体制的密钥管理

9.2.1 密钥的分类

从密钥管理角度一般将密钥分为以下四类:

密钥类型 说明 有效期
初始密钥 由用户选定或系统分配,用于自动控制密钥生成器 较长
会话密钥 一次通信中真正使用的数据加密密钥 短期(一次会话)
密钥加密密钥 用于加密传输中的会话密钥等其他密钥 长期或暂时
主密钥 对密钥加密密钥进行保护,层次最高,通常手工分配 较长

分层密钥结构的优点:每个密钥使用次数不多,同一密钥产生的密文量有限,有利于系统安全。

9.2.2 密钥分配的基本方法

单钥体制密钥分配的四种基本方法:

  1. 手工方式:一方选取密钥后手工发送给另一方

  2. 可信第三方手工分配:由可信第三方选取密钥后手工发送给双方

  3. 加密传输:用已共享的密钥加密新密钥,通过网络发送

  4. KDC分配:通过密钥分配中心(KDC)利用各自的主密钥分配会话密钥

KDC分配流程(图9-2):

  1. A向KDC发送请求(包含A、B身份标识和唯一性标识符N₁)

  2. KDC用A的主密钥KA加密应答消息(包含会话密钥KsKs和用B的主密钥加密的包EKBKs,IDA

  3. A解密获得Ks,重新选择会话密钥K,用Ks加密后连同EKBKs,IDA发送给B

  4. B解密获得K ,验证后返回确认,密钥分配完成

9.2.3 层次式密钥控制

当网络规模很大时,可划分多个安全域,每个域设置一个KDC,形成层次结构(图9-3)。同一域内用户由本地KDC分配密钥;不同域用户通过共同的上级KDC协作分配。

9.2.4 分布式密钥控制

无需KDC,但要求通信双方事先共享一个主密钥(图9-4):

  1. A向B发送请求(含一次性随机数N₁)

  2. B选择会话密钥K,用主密钥加密后回送(含IDB,N₁,N₂)

  3. A解密验证后,用会话密钥加密N₂+1回送B

优点:无KDC瓶颈;缺点:需要预先共享主密钥,不适合大规模网络。


9.3 公钥体制的密钥管理

9.3.1 公开密钥的分发

1. 公开发布

用户将自己的公钥直接发送或广播。缺点:公钥真实性和完整性难以保证,易被假冒。

2. 使用公钥目录分发

建立公开、动态、可在线访问的公钥数据库,由可信机构(公钥目录管理员)维护。缺点:公钥目录可能成为性能瓶颈和攻击目标。

3. 在线安全分发

用户向公钥管理机构请求其他用户公钥,管理机构用私钥签名后回复,请求者用管理机构公钥验证。缺点:管理机构必须在线,可能成为瓶颈。

4. 使用公钥证书分发(最佳方案)

由证书管理机构(CA)为用户创建并颁发公钥证书,证书包含用户名、公钥、有效期、CA签名等。用户通过交换证书实现公钥分发,离线验证签名即可确认公钥真实性。优点:CA压力小,可靠性高,效率高。

9.3.2 用公钥加密分配单钥体制的会话密钥

虽然利用公钥证书能够在通信各方之间方便地交换密钥,但由于公钥加密的速度远比单钥加密慢,通信各方通常不直接采用公钥体制进行保密通信。但是,将公钥体制用于分配单钥体制的会话密钥却是非常合适的。

图9-5描述了如何利用公钥加密分配单钥体制的会话密钥。图中,PKXPKX和SKXSKX分别表示用户X的公钥和私钥,CERTXCERTX代表用户X的公钥证书。这个过程具有保密性和认证性,因此既能防止被动攻击,又能抵抗主动攻击。

图9-5 用公钥加密分配单钥体制的会话密钥

协议步骤

(1) 用户A发起请求

A→B:ESKA IDA∥N₁ ∥CERTA

用户A将自己的身份IDA和一个一次性随机数N₁用自己的私钥SKA加密,并附上自己的公钥证书CERTA一起发送给用户B。这里的私钥加密不是为了保密,而是为了让对方能够更好地验证自己的公钥证书,同时还可以抵抗对消息的篡改。

(2) 用户B响应

B→A:ESKB EPKA\[Ks∥IDB∥N₁∥N₂ ]∥CERTB

用户B验证收到的消息,并从中提取对方的公钥PKA和一次性随机数N₁,然后选取一个会话密钥Ks和一个新的一次性随机数N₂,将Ks与自己的身份IDB以及N₁和N₂一起先用对方的公钥PKA加密,再用自己的私钥SKB签名,并附上自己的公钥证书回送给用户A。这个消息实现了保密与认证的结合,A收到消息后可以从中获得一个机密的会话密钥Ks,同时确信这个会话密钥一定来自B。

(3) 用户A确认

A→B:EKsN₂+1

A验证收到的消息,并解密出会话密钥Ks和一次性随机数N₂,然后对N2做一个简单变换(例如加1),再将变换的结果用Ks加密发送给用户B。若B能从所收到的消息中解密出N₂+1,则可相信A已经与其共享了会话密钥Ks,会话密钥的分配工作结束。

协议分析

该协议具有以下安全特性:

特性 实现方式
保密性 会话密钥Ks用对方的公钥PKA加密,只有A能解密
认证性 消息用发送方的私钥签名,接收方可用其公钥验证
抗重放攻击 使用一次性随机数N₁,N₂保证消息新鲜性
抗中间人攻击 公钥证书CERT保证公钥的真实性

9.3.3 Diffie-Hellman密钥交换与中间人攻击

W. Diffie与M. Hellman于1976年提出了Diffie-Hellman密钥交换算法。该算法能用来在两个用户之间安全地交换密钥材料,从而使双方得到一个共享的会话密钥,但该算法只能用于交换密钥,不能用于加/解密。

Diffie-Hellman密钥交换的安全性基于求解有限域上离散对数的困难性。

协议步骤

首先,双方需要约定一个大素数p和它的一个本原根g,然后整个密钥交换的过程分两步完成:

  1. 交换公开值:双方(记为A和B)分别挑选一个保密的随机整数XA和XB,并分别计算

    YA=g^XA mod  p,YB=g^XB mod  p

    然后互相交换,即A将YA发送给B,而B将YB发送给A。其中,YA和YB分别相当于A和B的公开密钥(但却不能用于真正的消息加密)。

  2. 计算共享密钥:A和B分别计算

    K=YB^XA mod  p,K=YA^XB mod  p

    得到双方共享的密钥K。这是因为:
    YB^XA=(g^XB)^XA=g^(XAXB)=(g^XA)^XB=YA^XB

由于XA和XB是保密的,攻击者最多能够得到p、g、YA和YB。如果攻击者希望得到K,那么至少需要计算出XA和XB中的一个,这意味着需要求解离散对数,这在计算上是不可行的。

中间人攻击

虽然Diffie-Hellman密钥交换简单易行,但它很容易遭受中间人攻击(Man-In-the-Middle Attack),具体方法如下:

  1. 在A将本人的公开密钥YA=g^XA mod  p发送给B的过程中,中间人MIM(攻击者)截取YA,并用自己的公开密钥YM=g^XM mod  p取代YA,发送给B。

  2. 在B将本人的公开密钥YB=g^XB mod  p发送给A的过程中,中间人MIM截取YB,并用自己的公开密钥YM=g^XM mod  p取代YB,发送给A。

  3. A、B、MIM分别计算会话密钥:

    • A与MIM共享会话密钥K1=YM^XA=g^(XAXM) mod  p

    • B与MIM共享会话密钥K2=YM^XB=g^XBXM mod  p
      一般情况下K1≠K2,但A与B对此一无所知。

  4. 接下来,在A与B通信过程中,A用K1加密发送给B的消息,B用K2加密发送给A的消息。中间人MIM截取来自A的消息用K1解密,再用K2重新加密后发送给B;对于来自B的消息则先用K2解密,然后用K1加密后发送给A。这样,中间人MIM就可以轻易监视A与B的通信,甚至还能够在其中实施篡改、伪造或假冒攻击。

防御方法

在Diffie-Hellman密钥交换中,中间人攻击之所以能够得逞,是因为密钥交换者A和B交换的消息未被认证保护。只需让A和B分别对他们发送的消息施加数字签名,并在协议的每一步进行签名验证,那么中间人将不会有任何机会。

改进的Diffie-Hellman密钥交换方案(使用数字签名):

假定A和B互相拥有对方的公钥证书,那么他们可以按照如下步骤安全地生成一个共享会话密钥:

  1. A选取一个随机数XA,计算YA=g^XA mod  p并将其发送给B。

  2. B收到YA之后,也选取一个随机数XB,计算YB=g^XB mod  p并根据Diffie-Hellman协议计算出共享会话密钥K=g^(XAXB) mod  p。然后,B对YA、YB签名,再用计算出的会话密钥K对签名加密,最后把它与YB一起发送给A,即B发送给A的消息为:

    YB,EK(SIGB(YA,YB))

  3. A收到消息后,也根据Diffie-Hellman协议计算出共享会话密钥KK,然后用KK解密收到的消息EK(SIGB(YA,YB)),并验证B的数字签名SIGB(YA,YB)。如果签名通过验证,那么A再用自己的私钥对YA、YB签名,并将签名结果用共享密钥K加密后送回给B:

    EK(SIGA(YA,YB))

  4. B用会话密钥K解密收到的消息,并验证A的数字签名。如果签名通过验证,那么A和B获得了共享的会话密钥K,并且在这个过程中攻击者没有任何渗透机会,因此K是安全的。


注:以上内容的理解和计算,如果有任何错误,希望各位读者和大佬指出改正,非常感谢!!!

相关推荐
黄金龙PLUS11 小时前
基于ARX结构的新型序列密码算法FlashLight
算法·网络安全·密码学·哈希算法·同态加密
下午写HelloWorld1 天前
【概念与应用】轻量级加密算法LEA、动态脱敏算法DDA、零知识证明ZKP和优化协同交互协议OCIP
算法·区块链·密码学·安全架构·零知识证明
如君愿1 天前
考研复习 Day 50 | 密码学--第八章 数字签名与身份认证(下)
密码学·课后习题
下午写HelloWorld1 天前
后量子密码算法:协同签名研究综述
算法·密码学·后量子·协同签名
夏语灬2 天前
cryptography:Python 密码学标准库的终极选择
开发语言·python·密码学
laoli_coding2 天前
数据机密性保护算法汇总(国际算法)
安全·网络安全·密码学
风行南方2 天前
什么是密码学?
密码学
如君愿2 天前
考研复习 Day 49 | 密码学--第八章 数字签名与身份认证(中)
密码学
huluang3 天前
密评多选题 — 陷阱名单(费曼自述法版)
网络·数据库·密码学