您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 网络安全与信息加密技术-第十四章.
第14章密钥管理和分发第15章用户认证密钥管理和密钥分发很复杂,包括对密码、协议和管理的考虑。本章的目的是让读者认识到复杂难懂的问题及对密钥管理和分发的各个方面有一个大致的认识。对于对称加密来说,通信双方必须使用相同的密钥并且该密钥要对其他人保密,在限制攻击者攻陷密钥所需的数据总数时,频繁的秘钥交换是安全的。因此,任何密码系统的强度取决于密钥分发技术,即在想要交换数据的两者之间传递密钥且不给其他人知道的方法。对A和B来说,密钥的分发能以以下不同的方式得到。1.A选择一个密钥后以物理的方式传递给B。2.第三方选择密钥后物理地传递给A和B。3.如果A和B先前或者最近使用过一个密钥,则一方可以将新密钥用旧密钥加密后发送给另一方。4.如果A和B到第三方C有加密连接,C可以在加密连接上传送密钥给A和B。14.1基于对称加密的对称密钥分发其中第1种和第2种方法需要手动交付一个密钥,对于链接加密来说是必要的,因为每个链接加密设备都只能与链接终端的用户交换数据。然而,手动交付对于网络中的端到端加密是不实用的。在分布式系统中,任何给定的主机或者终端可能需要同时与很多其他主机或终端交换数据,因此每个设备都需要提供大量的密钥。这个问题在大范围的分布式系统中更加明显。这个问题的规模依赖于需支持的通信对的数目。如果端到端加密在网络中或者IP层执行,那么网络中每一对想要通信的主机都需要一个密钥,即若有N台主机则需要的密钥数目为𝑵(𝑵−𝟏)/𝟐。如果加密在应用层执行的话,每一对需要通信的用户或者进程都需要一个密钥,然而一个网络可能有上百台主机,但却有上千个用户和进程。下图中举例说明了端到端加密的密钥分发任务的量级。一个基于节点的网络有1000个节点就需要分发大概50万个密钥,如果相同的网络支持10000个应用,则在应用层加密就需要5000万个密钥。对于第(3)种方式列出的方法可用于链接加密或者端到端加密,如果攻击者成功的获得一个密钥,因而随后的秘钥都会泄露,那么,潜在的百万密钥就必须进行重新分发。对端到端的加密,很多关于第(4)种方法的变体已被广泛采用。这种策略中,负责为用户(主机、进程或者应用)分发密钥的秘钥分发中心是必需的,且为了密钥的分发,每个用户都需要和秘钥分发中心共享唯一的密钥。密钥分发中心是基于密钥层次体系的,最少需要两个秘钥层。两个终端之间的通信使用临时密钥(通常指的是会话密钥)加密。会话密钥往往被用于逻辑链接中,如帧的转发或传输连接,然后随着连接的断开而丢弃。终端用户通信所使用的会话密钥从密钥分发中心得到,因此,会话密钥可以用密钥分发中心与终端用户或者用户共有的主密钥加密后进行传送。每一个终端系统或者用户和密钥分发中心共有唯一的主密钥。如果有N个实体想要逐对通信,那么每次通信需要大概𝑵𝑵−𝟏/𝟐个会话密钥,然而,这里只需要每个实体拥有一个主密钥,即共N个。因此,主密钥的分发可以通过一些不加密的方式完成,如物理传送。1.密钥分发方案密钥分发可以用不同的方式实现,一种典型的方案如下图所示。该方案假设每个用户和密钥分发中心(KDC)共享唯一的秘钥。假设用户A想要和B建立以逻辑连接,并且要求一次性的会话密钥来保护连接上传输的数据。A有主密钥𝐾𝑎(只有它自己和KDC知道),B有主密钥𝐾𝑏(和KDC共享),步骤如下:1.A向KDC发送包请求一个会话密钥来保护到B的逻辑连接的安全,其中包括A、B的身份以及该次传输的唯一标志𝑵𝟏,称为临时交互号(nonce)。这个临时交互号可以是一个时间戳、计数器或者一个随机数。最低要求是每次请求的临时交互号是不同的,而且为了防止伪造还要求对手很难猜出该临时交互号,于是,随机数作为临时交互号是个很好的选择。2.KDC返回的信息是用𝑲𝒂加密的,因此只有A能成功地读取该信息并且A知道是由KDC发来的。该信息中包含A想获取的两个部分:用于会话的一次性会话秘钥𝑲𝒔。之前的请求信息,包括临时交互号,该信息使得A能够将这些返回信息和之前的请求相比较。因此,A可以知道它的原始信息在KDC收到之前是否被更改过,并且因为临时交互号的原因,可知道先前的请求是否被重放。另外,该信息中也包含B想获取的两个部分:用于会话的一次性会话密钥𝑲𝒔。A的标志(如A的网络地址)𝑰𝑫𝑨。后面这两个部分由𝑲𝒃加密,发送给B,以达到建立连接并检验A的身份。3.A存储将要使用的会话密钥,把来源于KDC的信息发送给B,即𝑬(𝑲𝒃,[𝑲𝒔||𝑰𝑫𝑨])。因为这个消息是用𝑲𝒃加密的,所以可以防止窃听。B现在知道会话密钥为𝑲𝒔、想建立连接的另一方是𝑨(𝑰𝑫𝑨),并且该信息是由KDC加密的(因为是使用𝑲𝒃加密的)。此时,会话密钥已经安全地在A和B之间建立,并且A、B可以使用其来保护通信,然而还有另外两步要满足:4.B使用新的会话密钥𝑲𝒔加密临时交互号𝑵𝟐并将结果发送给A。5.同样,A使用𝑲𝒔加密𝒇(𝑵𝟐)后发给B,其中𝒇是一个执行𝑵𝟐转换的函数。这一点能够保证B在步骤(3)中收到的信息没有受到重放攻击。注意,实际的密钥分发方案只包括步骤(1)至步骤(3),步骤(3)至步骤(5)执行认证功能。2.层次密钥控制对于单个的KDC没有必要限制其密钥分发功能,但是,对大型网络来说这样做是不实用的。为了改变这种情况,出现了KDC的层次体系,例如有本地KDC,每一个本地KDC负责其所在的整个内部网络的一个域,如一个局域网(LAN)或者一栋建筑物。由于每一个本地域中的各个实体要相互通信,故由本地KDC负责密钥分发。如果两个实体在不同的域,则需要一个共享秘钥,此共享秘钥由两个相对应的本地KDC通过全局KDC协商产生,这种情况下,这三个KDC中的任意一个都可以选择密钥。层次的概念可以依据用户的规模以及内部网络的地理范围扩展到三个或者更多的层。层次策略使得主密钥分发的开销最小化,因为大部分的主密钥是由本地KDC及其实体所共享的,而且,该策略将有缺陷的或者被破坏的KDC的危害限制在本地域中。3.会话密钥生命周期会话密钥交换得越频繁就越安全,因为对于任何给定的会话密钥,攻击者拥有的密文会比较少。另一方面,会话密钥分发会延迟交换的开始时间,增加网络负担。安全管理者在决定特定会话密钥的生命周期时,必须平衡这些竞争代价。对于面向连接的协议,在会话的整个生命周期中使用同一个会话密钥,为每一次新的会话使用新的会话密钥。如果一个逻辑连接的生命周期很长,则它需要周期性地改变会话密钥,协议数据单元(PDU)的序列号随之重置。对一个无连接协议,如面向事物的协议,没有明确的连接初始和终止,因此不知道需要多长时间来更换一次密钥,最安全的方法是每次都使用新的会话密钥。然而,这也否定了无连接协议最主要的一个优点,即最小化每次执行的开销和延时。一个比较好的策略是为特定时期或者特定数量的事物分配不同的会话密钥。4.透明的密钥控制方案前边提出的密钥分发方法有很多变形,这里讲讲述其中一种。这一方案以一种对终端用户透明的方式,对网络或者传输层提供端到端的加密。该方法假定通信使用面向连接的端到端的协议如TCP,该方法值得注意的元素是会话安全模块(SSM),SSM包含一个协议层,执行端到端加密的功能以及代表主机、终端获取会话密钥的功能。建立连接的步骤如上图所示。当一台主机想要与另一台主机建立连接时,它就发送一个连接建立请求包(步骤1);请求方的SSM缓存该请求包,并向KDC申请建立连接(步骤2),其中SSM和KDC之间的通信是由两者共享的主密钥加密的。如果KDC同意建立连接,则产生会话密钥并分发给要通信的这两个SSM,分发的过程中使用KDC与每个SSM的主密钥加密(步骤3);请求方的SSM释放缓存的请求包,连接将会在两个终端系统之间建立(步骤4)。两个终端系统间所有的用户数据的交互都需要各自的SSM使用一次性会话密钥加密。自动密钥分发方法使得终端用户访问主机或者主机之间交换数据时更加灵活。5.分布式密钥控制密钥分发中心必须是可信的,而且是防破坏的,但如果密钥是完全分布式的,则无此要求。虽然对只使用对称加密的大型网络,完全分布式是不实用的,但是在局部环境下还是很有用的。为了进行会话密钥的分发,分布式方法要求每个终端系统都能够以安全的方式与所有潜在的同伴或系统进行通信,因此,配置n个终端的分布式密钥分发中心大概𝒏𝒏−𝟏/𝟐个主密钥。设置一个会话密钥大致需要以下几步:1.A发起会话密钥请求给B,包括一个临时交互号𝑵𝟏。2.B用共享主密钥加密信息并回复给A,该信息中包含B选择的会话密钥、B的标志符、值𝒇𝑵𝟏、临时交互号𝑵𝟐。3.使用新的会话密钥,A返回信息𝒇𝑵𝟐给B。每个节点至多拥有(𝒏−𝟏)个主密钥,和所需要的会话密钥一样多。信息传递使用主密钥的时间很短,因此密钥分析很困难。与之前一样,会话密钥用于在有限的时间内保护消息。6.控制密钥的使用密钥层次体系的概念和自动密钥分发技术的使用大大减少了必须手动管理和分发的密钥数量,而且满足自动密钥分发使用方式上强加控制的要求。如除了划分主密钥和会话密钥外,还要定义基于不同用途的各种会话密钥,如:数据加密密钥,用于网络中的通用通信。PIN加密密钥,用于电子资金过户和销售点应用的个人识别码(PIN)。文件加密密钥,用于存储公开可访问的加密文件。另外还需要考虑一个主密钥被作为数据加密密钥的风险。通常,主密钥在KDC和终端系统的硬件中是物理安全的,所以该主密钥加密的会话密钥是安全的。然而,如果主密钥曾作为会话密钥,则非授权的应用可能会获得以后通信中用该主密钥加密的会话密钥。基于密钥关联的特征,在限制密钥和使用方式的系统中添加控制是可行的。一个简单的设计是为了每一个密钥关联一个标签,这里提出的技术用于DES,使用每个64位DES中的8个非密钥位[8个非密钥位通常预留为奇偶校验]以形成密钥标签。其中这些位有以下解释:1位表示该密钥是会话密钥还是主密钥1位表示该密钥能否用于加密1位表示该密钥能否用于解密剩下的位预留为将来使用。因为标签嵌入在密钥中,密钥分发时标签页一起被加密。这种方案的缺陷是:1.标签的长度被限制为8位,限制了它的灵活性。2.标签不能以清晰的格式传播,所以只能解密后使用,限制了对密钥使用方式的控制。一个更加灵活的策略是控制向量。在这种策略中,每个会话密钥有一个关联控制向量,该向量包含很多域,详细说明了会话密钥的用法和限制。控制向量的长度各不相同。在KDC中产生密钥时,控制向量是与密钥关联的。产生关联和去除关联的过程如下图所示。第一步,控制向量通过Hash函数,产生一个与加密秘钥长度相同的值。本质上,Hash函数用一种合理的方式将数值从大范围映射到小范围中,例如,范围是𝟏~𝟏𝟎𝟎的数字被映射到𝟏~𝟏𝟎之间的数字,大约𝟏𝟎%的原值被映射到一个目标值。然后,将Hash值和主密钥异或得到一个输出,该输出作为输入密钥来加密会话密钥,即𝑯𝒂𝒔𝒉值=𝑯=𝒉𝑪𝑽输入密钥=𝑲𝒎⨁𝑯密文=𝑬(𝑲𝒎⨁𝑯,𝑲𝒔)其中,𝑲𝒎是主密钥,𝑲𝒔是会话密钥。通过逆操作可恢复出会话密钥:𝑫(𝑲𝒎⨁𝑯,𝑬𝑲𝒎⨁𝑯,𝑲𝒔)KDC将会话密钥传递给用户时,伴随着一个明文形式的控制向量。恢复会话密钥必须同时使用用户与KDC共享的主密钥以及控制向量,即会话密钥与其控制向量之间的关联是被保持的。相比于8位标签,使用控制向量有一下两个优点:第一,控制向量的长度没有限制,可以给密钥的使用添加任意复杂的控制;第二,在所有的操作层面上,明文形式的控制向量都是有效的,即密钥应用的控制可以在多个位置使用。因为公钥加密系统的效率比较低,所以几乎不会用于大数据块的直接加密,而是经常用于小块数据的加密。公钥密码系统最重要的应用之一是用于密钥的加密分发,在本书第五部分将会介绍很多例子。这里我们讨论通用的原则和典型的方法。14.2基于非对称加密的
本文标题:网络安全与信息加密技术-第十四章.
链接地址:https://www.777doc.com/doc-2071035 .html