第04章 用对称密码实现保密性_第1页
第04章 用对称密码实现保密性_第2页
第04章 用对称密码实现保密性_第3页
第04章 用对称密码实现保密性_第4页
第04章 用对称密码实现保密性_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章用对称密码实现保密性加密功能及其位置通信量的机密性密钥分配随机数产生

内部网接线盒通信链路卫星、微波等无线链路长途电信运营商的本地旁接链路分组交换网络的某个节点通信链路中的各种设备窃密攻击的可能位置1.加密功能及其位置1.加密功能及其位置主动攻击——需要对于链路的一部分取得物理上的控 制,并能够捕获传输内容和插入某些内容被动攻击——只需要能够观察到传输的内容就可以窃密攻击的模式线路介质与窃密攻击的关系电话双绞线、同轴电缆等使用侵入式窃听器进行主动攻击或被动攻击使用电磁辐射感应设备进行被动式攻击光缆较难进行攻击无线链路通过电磁辐射感应可容易地实现被动攻击难以实现主动攻击1.加密功能及其位置加密的基本模式链路加密端到端加密1.加密功能及其位置链路加密特征每个易受攻击的通信链路的两端都装备一个加密设备,因此所有通过这些通信键路的通信量都是安全的。但同时需要许多加密解密设备。报文在每进入一台分组交换机时都必须被解密一次,因而报文在每台交换机处容易受到攻击。在一个公众分组交换网络中,用户对结点的安全无法控制。共享一条链路的每对结点应该共享惟一的密钥,而每段链路应该使用不同的密钥,因此必须提供许多密钥。然而,每个密钥必须只分配给两个结点。1.加密功能及其位置端到端加密特征加密过程是在两个端系统上完成的。源主机或终端对数据进行加密,加密形式的数据被原封不动地传过网络到达目的主机或终端。目的端与源端共享一个密钥,因此能够解密数据。端到端加密后用户数据就是安全的。然而通信量模式并不安全,因为分组首部是未经加密而传输的。端到端加密的确提供了一定程度的认证功能。如果两个端系统共享一个加密密钥,那么接受者可以肯定它收到的所有报文都来自声称的发送者,因为只有那个发送者才共享了相应的密钥。在链路加密方案中这样的认证功能不存在。1.加密功能及其位置链路加密和端到端加密的关键特征链路加密

端到端加密在端系统和中间系统中的安全性

在发送主机上报文是暴露的

在发送主机上报文是加密的

在中间结点上报文是暴露的

在中间结点上报文是加密的

用户的作用

与发送主机交互

与发送进程交互加密过程对用户是透明的

用户应用加密主机维护加密设施

用户必须决定算法所有用户用一个加密设施

用户选择加密体制可以由硬件实现

软件实现所有报文被加密或都不被加密

对每个报文由用户选择是否加密实现上的考虑

每对主机和中间结点之间和每对中间结点和中间结点之间都需要一个密钥

每对用户需要一个密钥

提供主机认证

提供用户认证

1.加密功能及其位置端到端加密功能的逻辑位置在链路加密中,加密功能是在通信层次结构的一个低层完成的。若用OSI表示,链路加密处于物理层或链路层。在端到端加密中,加密功能的逻辑位置有好几种可能。在最低可能的层次上,加密功能可以在网络层完成。在网络层加密中,独立可辨识的被保护对象的数目就是网络中端系统的数目。这时每个端系统都可以与另外一个端系统进行加密的信息交换,只要它们之间共享一个秘密密钥。与一个特定的目的端系统进行通信的时候,每个端系统上的用户进程和应用将使用同一个密钥采用同一个加密方案。采用这种安排,我们可能希望使用某种前端处理器(通常是一个端系统中的通信器)来负担加密功能。前端处理器FEP的加密功能1.加密功能及其位置端到端加密功能的逻辑位置在一个完全综合的互联网络内部,在诸如网络层X.25或者TCP这样的端到端协议上实施加密服务,提供了对通信量的端到端保密。然而这种方案无法对越过互联网络边界的通信量,比如电子邮件、电子数据交换EDI和文件传输提供所需要的服务。1.加密功能及其位置端到端加密功能的逻辑位置因此对于具有存储转发功能的电子邮件这样的应用来说,获得端到端加密的位置只有应用层。应用层加密的一个缺点是要考虑的实体数目增加了很多。一个支持数百个主机的网络可能支持数以千计的用户和进程,因而就必须产生和分配多得多的秘密密钥。1.加密功能及其位置加密位置与通信分层的关系越往通信层次上边走,得到加密的信息就越少,但是被加密的信息也就越安全。2.通信量的机密性可以从通信量分析攻击中得到的信息类型通信双方的身份。通信双方通信的频度。暗示出有重要信息正在交换的报文模式、报文长度和报文数量。特定的通信双方之间的交谈所关联的事件。用于建立一个隐蔽信道(Covertchannel),这个信道被用于以一种违反安全规定的方式传送信息。示例关于结点之间的报文长度和数量的知识可能使得敌对方可以确定通信双方的身份。某地区通信量的增加预示着某种事件的产生。用比某指定长度短的信息表示0,长的表示1。2.通信量的机密性链路加密方式分组首部加密,减少通信量分析的机会。通信量填充,避免估算出网络上的通信量并观察到进入和离开每个端系统的通信量大小。2.通信量的机密性端到端加密方式对通信量的机密性的保护措施极为有限。较为有效的方法是把所有数据单元都填充到一个统一的长度,空白报文随机地插入到信息流中。一个密钥可以由A选定,然后物理地传递给B。一个第三方可以选定密钥,然后物理地传递给A和B。如果A和B在不久以前使用过一个密钥,一方可以使用旧密钥加密新密钥并传输给另一方。如果A和B每人都有一个到第三方C的加密连接,C就可以用加密连接把密钥传递给A和B。两个用户之间的密钥分配模式3.密钥分配密钥分配模式1和2的可行性物理地传递密钥在实际应用中不太现实,特别是对于大系统更是如此。3.密钥分配密钥分配模式1和2的可行性示例:对于具有N个节点的端到端加密通信,所需的密钥数目为:[N(N-1)]/2≈N2/2如果N=1000,则密钥数目约为50万。如果这个网络要支持1万种应用,则密钥数目约为5000万。3.密钥分配密钥分配模式3的可行性密钥的初始分配如何实现。如果一个攻击者曾经成功地获得了一个密钥,那么所有后续的密钥就都会暴露。密钥分配模式4的可行性对于端到端加密来说,模式4的某些变体获得了广泛应用。在这个方案中,一个密钥分配中心负责按照需要分配密钥给各对用户(主机、进程、应用)。每个用户必须与密钥分配中心共享一个惟一的密钥,以便进行密钥分配。3.密钥分配密钥分配模式4的基本应用方案采用可信任的密钥分配中心。使用以等级结构排列的密钥,至少要用到两个层次的密钥(主密钥和会话密钥)。每一个端系统或用户都与密钥分配中心共享一个惟一的主密钥。端系统之间的通信使用一个临时性的密钥(会话密钥)进行加密,用完就丢弃这个密钥。会话密钥是通过用于端用户通信的同一个网络设施从密钥分配中心取得的,因此,会话密钥是以加密的形式传输的,使用的密钥则是由密钥分配中心和端系统或用户所共享的主密钥。对于N个实体,所需的主密钥为N个。3.密钥分配密钥分配模式4的基本应用方案3.密钥分配一个可行的密钥分配方案3.密钥分配一个可行的密钥分配方案实施步骤1.A向KDC发出请求,要求得到一个用来保护它与B之间逻辑连接的会话密钥。这个报文包括A和B的标识以及一个对于这次交互而言的惟一的标识符N1,我们把这个标识符称为一个“现时”(nonce)。2.KDC用一个经过Ka加密的报文作为响应。因而A是惟一可以成功收到这个报文的实体,而且A知道这个报文来自KDC。这个报文包含给A的两项内容:用于会话的一次性会话密钥KS。原来的请求报文,包括现时,以便使得A能够将这个响应与相应的请求进行匹配。(不匹配呢?)另外,这个报文还包括给B的两项内容:用于会话的一次性会话密钥KS

。A的标识符(例如它的网络地址)IDA。后两项内容是用Kb(KDC与B共享的主密钥)进行加密的,它们被发送到B来建立连接并证明A的身份。3.密钥分配一个可行的密钥分配方案实施步骤3.A把会话密钥存放起来以便用于后续的会话,并将

KDC发送给B的信息即EKb[Ks||IDA]转发给B。因为这个信息是用Kb加密的,它对窃听有了防护。B现在知道了会话密钥(Ks)。知道了通信的另一方是A(从IDA得知),并且知道了信息是从KDC发出的(因为它是用EKb加密的)。以下两个步骤是为认证而添加的:4.B使用为加密新生成的会话密钥发送一个现时N2给A。5.

A也使用Ks响应一个f(N2),其中f是一个对N2进行某种变换的函数(例如加1)。密钥分配过程只涉及步骤上到3,而步骤4和5以及3完成的是认证功能。3.密钥分配层次式密钥控制把密钥分配功能限制到一个KDC是不必要的。对于一个大的网络来说,这样的安排也是不现实的。系统可以建立一系列的KDC,各个KDC之间存在层次关系。例如可以有本地KDC,其中的每一个只负责整个网络的一个小区域,诸如一个局域网或者一栋建筑。对于同一个区域中两个实体之间的通信来说,本地KDC负责密钥分配。如果不同区域中的两个实体需要一个共享的密钥,那么对应的本地KDC就通过全局进行通信。在这种情况下三个所涉及到的KDC都可以选择密钥。层次式的概念可以推广到三层甚至更多的层次,这依赖于用户群的大小和互联网络的地理分布。层次方案使得主密钥分配所涉及的工作量减至最小,因为大部分的主密钥都是由一个本地的KDC和它的本地实体共享的。另外这样的方案还将一个出错或受到破坏的KDC的危害限制在它的本地区域。3.密钥分配会话密钥的生命期会话密钥更换得越频繁,它们就越安全,因为敌对方对于任何一个给定的会话密钥拥有的可利用密文就越少。另一方面,会话密钥的分配过程造成信息交互的延时,并且对网络容量造成负担。一个安全管理者必须对这些矛盾的因素进行权衡,以确定一个特定的会话密钥的使用寿命。对于面向连接的协议来说,一个明显的选择是在一个连接打开的持续时间内使用同一个会话密钥,而对每个新的会话则使用新的会话密钥。如果一个逻辑连接持续时间很长,那么定期更换会话密钥是明智的,更新的时间可以是每次PDU(协议数据单元)的序号环回的时间。对于一个无连接的协议,比如一个面向交易的协议,不存在一个明确的连接发起和终止时刻,因而要多长时间更换一次会话密钥并不是显而易见的。最安全的方式是对每个交互使用一个新的会话密钥。然而,这将减少无连接协议的主要优点,即对每个交互来说最小的开销和延时。一个更好的策略是,在每个固定的时间段或者对于一定数量的交互数量使用一个给定的会话密钥。3.密钥分配一种透明的密钥控制方案3.密钥分配一种透明的密钥控制方案步骤:当一个主机希望与另一个主机建立一个连接时,它就传输一个连接请求分组(步骤1)。前端处理器存下这个分组,并向KDC申请建立这个连接的许可(步骤2)。FEP与KDC之间的通信使用仅由FEP和KDC共享的一个主密钥加密。如果KDC同意连接请求,它就产生会话密钥,并且传递给两个相应的前端处理器,对每个前端处理器都使用惟一的临时密钥(步骤3)。请求方的前端处理器现在就可以把连接请求分组发送出来,在两个端系统之间就建立了一个连接(步骤4)。两个端系统之间的所有用户数据交换都由它们分别的前端处理器使用一次性会话密钥进行加密。优点:它对端系统的影响最小。从主机的角度看,FEP就好像是一个分组交换结点,对网络的主机接口不用改变。从网络的角度看,FEP就好像是一个主机,对主机的分组交换接口不用改变。3.密钥分配分散式密钥控制使用一个密钥分配中心对我们就提出了如下要求:KDC是可信任的并且应该保护它免于被破坏。如果密钥分配完全分散化,则这个要求就可以免掉。虽然对于较大的网络来说只用常规加密实现完全的分散化是不实用的,但在一个局部范围实现分散化还是有用的。一种分散化的方式是要求每个端系统能够与所有潜在的伙伴以安全的方式为了会话密钥分配的目的进行通信。因而对于一个有n个端系统的配置就可能需要多达[n(n-1)]/2个主密钥。3.密钥分配分散式密钥控制A给B发出一个要求会话密钥的请求,并包括一个现时Nl。B使用一个采用共享的主密钥加密的报文进行响应。响应报文包括由B选择的会话密钥、B的一个标识符、f(Nl)的值和另一个现时N2。使用一个新的会话密钥,A将f(N2)返回给B。因而虽然每个结点必须保存最多(n-1)个主密钥,但是需要多少会话密钥就可以产生多少。因为使用主密钥传输的报文很短,所以密码分析很困难。和以前一样,为了保护会话密钥,它们只被使用一段有限的时间。3.密钥分配密钥的使用方法密钥层次结构的概念和自动密钥分配技术的使用极大地减少了必须由人工方式管理和分配的密钥的数量。对于自动分配的密钥的使用方式施加某些限制也可能是必要的,例如,除了区分主密钥和会话密钥,我们也可能希望根据用途定义不同类型的密钥,比如:数据加密密钥,用来在网络上进行一般的通信。PIN加密密钥,用于电子资金转账和销售点应用的个人身份号码PIN。文件加密密钥,用来加密存放在公众可存取地点的文件。为了说明按照用途区分密钥的价值,考虑一个主密钥被当作数据加密密钥置入一个设备的危险。正常情况下,主密钥被以物理方式保护在密钥分配中心和端系统的密码加密硬件中。用这个主密钥加密后的会话密钥与用这样的会话密钥加密的数据一样,对于各种应用程序都是可以得到的。然而,如果一个主密钥被当成一个会话密钥,那么一个未经授权的应用程序就可能获取用这个主密钥加密的那些会话密钥的明文形式。3.密钥分配控制密钥的使用方式方案1对于DES密钥,给每个密钥关联一个标记,这些标记存放在DES密钥的每个64bit密钥中的额外8比特中,即用通常留做奇偶校验的8个非密钥比特形成了密钥标记:一个比特指示这个密钥是会话密钥还是主密钥。一个比特指示这个密钥是否可用于加密。一个比特指示这个密钥是否可用于解密。其余比特留待将来使用。优点:因为这个标记被嵌入密钥之中,在这个密钥被分配时它随着被加密,因此受到了保护。缺点:(1)标记长度限于8比特,限制了它的灵活性和功能;(2)因为这个标记并不是以明文形式传输的,它只能用在解密的地方,这就使得可以用来控制密钥使用的方法很有限。3.密钥分配控制密钥的使用方式方案2每个会话密钥都有一个由许多字段组成的相关的控制向量,各个字段规定这个密钥的用途和限制。控制向量的长度可以变化。在KDC处产生密钥的时候控制向量就与密钥以加密的方式耦合在一起。控制向量与密钥的耦合以及去耦的过程如下:3.密钥分配控制密钥的使用方式方案21.控制向量被通过一个散列函数产生一个长度等于加密密钥长度的输出。2.散列值然后被与主密钥进行异或以产生一个输出,这个输出被用作加密会话密钥的密钥输入。散列值=H=h(CV)密钥输入=Km⊕H密文=EKm⊕H[Ks]3.会话密钥通过相反的操作恢复成明文。Ks=DKm⊕H[EKm⊕H[Ks]]当一个会话密钥被从KDC传递给一个用户时,和它一起传递的还有一个明文形式的控制向量。会话密钥只能通过使用用户和KDC共享的主密钥和控制向量来恢复,因而会话密钥和它的控制向量之间的联系得到了保持。使用控制向量与使用一个8bit的标记相比有两个好处。首先,对控制向量的长度没有限制,这就可以使我们对密钥的使用施加任意复杂的控制。第二,在所有操作阶段控制向量都是以明文方式存在的,因而对密钥使用的控制可以在多个位置进行。4.随机数产生随机数的用途示例:在相互认证方案,要用到现时进行握手以便防止重放攻击。使用随机数充当现时会挫败敌对方确定或猜测现时的努力。会话密钥的产生,这可能是由密钥分配中心进行的,也可能是由参与者一方进行的。RSA公开密钥加密算法中的密钥产生。随机数的评定随机程度均匀分布:这一系列数值的分布应该是均匀的;也就是说,每个数出现的频率应该近似相等。(好评定)独立性:系列中的任意一个数都无法从其他数推测得到。(难评定)不可预测程度保证敌对方从序列前边的元素无法预测出将来的元素。4.随机数产生随机数的来源真正的随机数的来源难以得到。物理的噪声发生器,比如离子辐射事件的脉冲检测器、气体放电管和带泄露的电容,是一个可能的来源。然而这些设备在网络安全应用中用处很小。这种数值的随机性和精确性都有问题,更不用说对于一个互联网络中的每个系统都附加这么一个设备本身也很不方便。找到已经发表的高质量的随机数,然而这些随机数对于一个有相当规模的网络安全应用的可能需要来说数量有限。另外,虽然这些书中的数确实有着统计上的随机性,它们却是可以预测的,因为敌对方知道了你用的是哪本书也可以得到一本。密码编码应用通常使用算法技术来产生随机数。这些算法是确定性的,因此产生的数值序列并不是统计随机的。然而,如果算法很好,所得的序列就可以通得过许多随机性的合理测试。这些数经常被称为伪随机数。4.随机数产生目前评价一个随机数产生器的三种准则T1:这个函数应该是一个完整周期的产生函数。也就是说,这个函数应该在重复之前产生出0到m之间的所有数。T2:产生的序列应该看起来是随机的。这个序列本身不是随机的,因为它是以确定性的方法产生的,但是有许多统计测验可以用来评价一个序列具有的随机程度。T3:这个函数应该用32bit运算器高效实现。4.随机数产生线性同余方法伪随机数产生器随机数序列[Xn]通过下列迭代方程得到:Xn+1=(aXn+c)modm其中:

m:模数,m>0

a:乘数,0≤a<m

c:增量,0≤c<mX0:初始值或种子,0≤X0<m如果m、a、c和X0都是整数,那么这个技术就将产生一系列的整数,其中每个都在0≤Xn<m的范围内。数值m、a、c的选择对于做出一个好的随机数产生器十分关键。例如考虑a=c=1,这样产生的序列明显不能令人满意。再考虑a=7,c=0,m=32和X0=1,这将产生出序列{7,17,23,1,7,等等},它也明显不能令人满意。在所有可能的32个值中,这个序列才用了4个,因而这个序列被称为具有周期4。如果将a的值改为5,那么序列变为{1,5,25,29,17,21,9,13,1,等等},在这里周期增加为8。我们希望m很大,以便可能产生出一个很长序列的不同的随机数。一个常用的准则是将m选为几乎等于一个给定计算机所能表示的最大非负整数。因而,通常选择的m值是一个接近或等于231的数。4.随机数产生线性同余方法伪随机数产生器只要对a,c和m选取适当的值,算法就可以通过评价一个随机数产生器的三种准则的测验。对于T1这个准则,可以证明如果m是素数而c=0,那么对于一定的a值,这个产生函数的周期就是m-1,只有数值0不在其中。对于32bit算术来说,m的一个方便的素数取值是231-1。因而产生函数就可以写为:Xn+1=(aXn)mod(231-1)在乘数a的超过20亿的可选数值中,只有不多的几个可以通过所有三个测验。其中的一个是a=75=16807,这个数值最初被设计用于IBM360系列计算机。这个产生器得到了广泛使用,并且它受到的测验比其他任何伪随机数产生器都彻底,它经常被推荐用于统计以及模拟工作。4.随机数产生线性同余方法伪随机数产生器线性同余算法的优点是,如果对于乘数和模数进行适当的选择,得到的数值序列从统计上看与从集合1,2,…,m-1中随机抽取(但不重新放回)的数值序列是无法分辨的。但是除了对于初值X0的选取之外,这个算法本身并没有什么随机之处。一旦选定了这个数值,序列中的其他数值就是确定性地出现的,这对于密码分析有着重要的意义。如果敌对方知道我们用的是线性同余算法,并且参数是已知的(例如a=75、c=0、m=231-1),那么一旦发现了一个数值,所有接着的数值就都知道了。即使如果敌对方只知道我们使用了线性同余算法,那么只要知道序列的一个小部分就足以确定算法的参数。假定敌对方能够确定数值X0、X1、X2和X3,那么:X1=(aX0+c)modmX2=(aX1+c)modmX3=(aX2+c)modm这些方程可以解出a、c和m。因而虽然能够使用一个好的伪随机数产生器已经很不错,但仍然需要使得实际的序列不可重新产生,以便敌对方即使知道序列的一部分也不足以确定序列将来的元素。这个目标可以用许多方法达到,例如,有人建议使用一个内部系统时钟修改随机数流。使用这个时钟的一种方法是使用目前的时钟(模m)作为新的种子重新启动序列,另一种方法是简单地将目前的时钟值和每个随机数相加(模m)。4.随机数产生密码编码方式产生的随机数方法1——循环加密一个具有周期N的计数器为加密逻辑提供输入。例如,如果要产生56bit的DES密钥,就可以用一个周期为256的计数器。每产生一个密钥,计数器就加1。因而,由这个方案产生的伪随机数经过一个周期就重复了:每个输出X0、X1,…,XN-1都基于一个不同的计数器值,因此X0≠X1≠…≠XN-1。因为主密钥是受到保护的,从一个或多个以前的密钥推导出以后的密钥从计算角度看是不可行的。为了进一步加强这个算法,可以把一个具有完整周期的伪随机数产生器的输出作为这个算法的输入,而不是只用一个计数器。4.随机数产生密码编码方式产生的随机数方法2——DES输出反馈方式DES的输出反馈方式OFB不仅可以用来进行流加密,还可以用来产生密钥。注意它的每个操作阶段的输出都是一个64bit的数值,其中j个最左边的比特被反馈回来进行加密。连续的64bit输出就组成了一个具有良好统计特性的伪随机数序列。另外,与上一个小节提出的方式类似,使用一个受到保护的主密钥也保护了产生出来的会话密钥。4.随机数产生密码编码方式产生的随机数方法3——AN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论