您好,欢迎访问三七文档
网络安全协议授课教师:董晓慧Email:ise_dongxh@ujn.edu.cn为什么需要协议?密码学的用途是解决种种难题。密码学解决的各种难题围绕机密性、鉴别、完整性和不诚实的人。你可能了解各种算法和技术,但除非它们能够解决某些问题,否则这些东西只是理论而已。课程介绍密码协议网络安全应用:Kerberos、PGP、S/MIME、IPSec、SSL/TLS和SET等系统安全:网络入侵、恶意软件和防火墙等。参考书籍应用密码学(美)BruceSchneier著吴世忠等译机械工业出版社网络安全基础WilliamsStallings著白国强等译清华大学出版社第一章协议结构模块1.1协议概述什么是协议一系列步骤,它包括两方或多方,设计它的目的是要完成一项任务。协议的特点协议中的每个人都必须了解协议,并且预先知道所要完成的所有步骤协议中的每个人都必须同意并遵循它协议必须是清楚的,每一步必须明确定义,并且不会引起误解协议必须是完整的,对每种可能的情况必须规定具体的动作协议的目的计算机需要正式的协议来完成人们不用考虑就能做的事情。保证公平和安全根据完成某一任务的机理,协议抽象出完成此任务的过程。密码协议使用密码学的协议。参与该协议的伙伴可能是朋友和完全信任的人,或者也可能是敌人和互相完全不信任的人。协议中的角色为了帮助说明协议,列出了几个人作为助手。Alice和Bob是开始的两个人,他们将完成所有的两人协议。按规定,由Alice发起所有协议,Bob响应。如果协议需要第三或第四人,Carol和Dave将扮演这些角色。由其他人扮演的专门配角,将在后面介绍。剧中人人名角色Alice所有协议中的第一个参加者Bob所有协议中的第二个参加者Carol三、四方协议中的参加者Dave四方协议中的参加者Eve窃听者Mallory恶意的主动攻击者Trent值得信赖的仲裁者Walter监察人:在某些协议中保护Alice和BobPeggy证明人Victor验证者仲裁协议仲裁者是在完成协议的过程中,值得信任的公正的第三方。“公正”意味着仲裁者在协议中没有既得利益,对参与协议的任何人也没有特别的利害关系。“值得信任”表示协议中的所有人都接受这一事实,即仲裁者说的都是真实的,他做的是正确的,并且他将完成协议中涉及他的部分。仲裁者能帮助互不信任的双方完成协议。例1:Alice要卖汽车给不认识的Bob,Bob想用支票付账,但Alice不知道支票的真假。在Alice将车子转给Bob前,他必须查清支票的真伪。同样,Bob也并不相信Alice,就像Alice不相信Bob一样,在没有获得所有权前,也不愿将支票交给Alice。这时就需要双方信任的律师,在律师的帮助下,Alice和Bob能够用下面的协议保证互不欺骗。TrendAliceBob(1)Alice将车的所有权交给律师(2)Bob将支票交给Alice(3)Alice在银行兑现支票(4)在等到支票鉴别无误能够兑现的时间之后,律师将车的所有权交给Bob。如果在规定的时间内支票不能兑现,Alice将证据出示给律师,律师将车的所有权和钥匙还给Alice。例2:银行也使用仲裁协议。Bob能够用保付支票从Alice手中购买汽车:(1)Bob开一张支票并交到银行。(2)在验明Bob的钱足以支付支票上的数目后,银行将保付支票交给Bob。(3)Alice将车的所有权交给Bob,Bob将保付支票交给Alice。(4)Alice兑现支票。裁决协议由于雇用仲裁者代价高昂,仲裁协议可以分成两个低级的子协议一个是非仲裁子协议,执行协议的各方每次想要完成的;另一个是仲裁子协议,仅在例外的情况下,既有争议的时候才执行,这种特殊的仲裁者叫做裁决人。合同-签字协议可以归纳为下面的形式非仲裁子协议(每次都执行):Alice和Bob谈判合同的条款Alice签署合同Bob签署合同裁决子协议(仅在有争议的时候执行)Alice和Bob出现在法官面前Alice提出他的证据Bob也提出他的证据法官根据证据裁决裁决者和仲裁者的不同:裁决者不总是必需的。对协议的攻击密码攻击可以直接攻击协议中所用的密码算法,或用来实现该算法和协议的密码技术,或攻击协议本身。我们仅讨论最后一种情况,假设密码算法和密码技术都是安全,只关注对协议本身的攻击。被动攻击与协议无关的人能够窃听协议的一部分或全部,因为攻击者不可能影响协议,所以他能做的事是观察协议并试图获取消息。主动攻击可能改变协议以便对自己有利。可能假装是其他一些人,在协议中引入新的消息,删除原有的消息,用另外的消息代替原来的消息,重放旧的消息,破坏通信信道,或者改变存储在计算机中的消息等;他们具有主动的干预。1.2使用对称密码学通信通信双方怎样安全地通信呢?当然,他们可以对通信加密。(1)Alice和Bob协商用同一密码系统。(2)Alice和Bob协商同一密钥。(3)Alice用加密算法和选取的密钥加密他的明文消息,得到了密文消息。(4)Alice发送密文消息给Bob。(5)Bob用同样的算法和密钥解密密文,然后读它。对称密码算法存在下面的问题密钥必须秘密地分配,它们比任何加密的消息更有价值,因为知道了密钥意味着知道了所有消息。如果密钥被损害了(被偷窃,猜出来,被逼迫交出来,受贿等等),那么Eve就能用该密钥去解密所有传送的消息,也能够假装是协议的一方,产生虚假消息去愚弄另一方。假设网络中每对用户使用不同的密钥,那么密钥总数随着用户数的增加迅速增多。1.3单向函数单向函数本身并不是一个协议,但对本书所要讨论的大多数协议却是一个基本结构模块。单向函数计算起来相对容易,但求逆却非常困难已知x,很容易计算f(x),但已知f(x),却难于计算x很好的例子:打碎盘子陷门单向函数有一个秘密陷门的一类特殊的单向函数。在一个方向上易于计算而反方向却难于计算;但是如果知道那个秘密,就能很容易在另一个方向上计算出这个函数。1.4单向散列函数单向散列函数有很多名字:压缩函数、收缩函数、消息摘要、指纹、密码校验和、信息完整性检验,操作检验码是现代密码学的中心,是许多协议的另一个结构模块。散列函数把可变输入长度串(叫做预映射)转换成固定长度(经常更短)输出串(叫做散列值)的一种函数。简单的散列函数就是对预映射的处理,并且返回由所有输入字节异或组成的一字节。消息鉴别码消息鉴别码(MessageAuthenticationCode,MAC)也叫数据鉴别码(DAC),它是带有秘密密钥的单向散列函数。散列值是预映射的值和密钥的函数。在理论上,与散列函数一样,只有拥有密钥的某些人才能验证散列值。1.5使用公开密钥密码学通信公开密钥密码学(public-keycryptography)使用两个不同的密钥,一个是公开的,另一个是秘密的。从公开密钥很难推断出私人密钥。持有公开密钥的任何人都可加密消息,但却不能解密,只有持有私人密钥的人才能解密。例:下面描述Alice怎样使用公开密钥密码发送消息给Bob(1)Alice和Bob选用一个公开密钥密码系统;(2)Bob将他的公开密钥传送给Alice;(3)Alice用Bob的公开密钥加密他的消息,然后传送给Bob;(4)Bob用他的私人密钥解密Alice消息。一般的说,网络中的用户约定一公开密钥密码系统,每一用户有自己的公开密钥和私人密钥,并且公开密钥在某些地方的数据库中都是公开的。这个协议就更容易了(1)Alice从数据库中得到Bob的公开密钥。(2)Alice用Bob的公开密钥加密消息,然后送给Bob。(3)Bob用自己的私人密钥解密Alice发送消息。混合密码系统(HybridCryptosystems)在大多数实际的实现中,公开密钥密码用来保护和分发会话密钥(sessionkey),这些会话密钥用在对称算法中,对通信消息进行保密,有时称这种系统为混合密码系统。例:(1)Bob将他的公开密钥发给Alice。(2)Alice产生随机会话密钥K,用Bob的公开密钥加密,并把加密的密钥Eb(K)送给Bob.(3)Bob用他的私人密钥解密Alice的消息,恢复出会话密钥:DB(EB(K))=K。(4)他们两人用同一会话密钥对他们的通信消息进行加密。1.6数字签名在文件上手写签名长期以来被用作作者身份的证明,或至少同意文件的内容,为什么?签名是可信的。签名使文件的接收者相信签名者是慎重地在文件上签字的。签名不可伪造。签名证明是签字者而不是其他人慎重地在文件上签字。签名不可重用。签名是文件的一部分,不法之徒不可能将签名移到不同的文件上。签名的文件是不可改变的。在文件签名后,文件不能改变。签名是不可抵赖的。签名和文件是物理的东西。签名者事后不能声称他没有签过名。使用对称密码系统和仲裁者对文件签名Trent是一个有权的、值得依赖的仲裁者。他能同时与Alice和Bob(也可以是其他想对数据文件签名的任何人)通信。他和Alice共享秘密密钥KA,和Bob共享另一个不同的秘密密钥KB。签名过程如下(1)Alice用KA加密她准备发送给Bob的消息,并把它传送给Trent。(2)Trent用KA解密消息。(3)Trent把这个解密消息和他收到Alice消息的声明,一起用KB加密。(4)Trent把加密的消息包传给Bob。(5)Bob用KB解密消息包,他就能读Alice所发的消息和Trent的证书,证明消息来自Alice。使用公开密钥密码术对文件签名有几种公开密钥算法能用作数字签名。在某些算法中,例如RSA,公开密钥或者私人密钥都可用作加密。用你的私人密钥加密文件,你就拥有安全的数字签名。在其他情况下,如DSA,算法便区分开来了——数字签名不能用于加密。签名过程如下(1)Alice用她的私人密钥对文件加密,从而对文件签名。(2)Alice将签名的文件传给Bob。(3)Bob用Alice的公开密钥解密文件,从未验证签名。使用公开密钥密码学和单向散列函数对文件签名在实际的实现过程中,采用公开密钥密码算法对长文件签名效率太低,为了节约时间,数字签名协议经常和单向散列函数一起使用。签名过程(1)Alice产生文件的单向散列值。(2)Alice用她的私人密钥对散列加密,凭此表示对文件签名。(3)Alice将文件和散列签名送给Bob。(4)Bob用Alice发送的文件产生文件的单向散列值,然后用数字签名算法对散列值运算,同时用Alice的公开密钥对签名的散列解密。如果签名的散列值与自己产生的散列值匹配,签名就是有效的。1.7带加密的数字签名通过把公开密钥密码和数字签名结合起来,能够产生一个协议,可把数字签名的真实性和加密的安全性合起来。例:想象你妈妈写的一封信:签名提供了原作者的证明,而信封提供了秘密性。(1)Alice用她的私人密钥对消息签名:SA(M)。(2)Alice用Bob的公开密钥对签名的消息加密,然后送给Bob:EB(SA(M))。(3)Bob用他的私人密钥解密:DB(EB(SA(M)))=SA(M)(4)Bob用Alice的公开密钥验证并且恢复出消息:VA(SA(M))=M。小结协议的定义协议的目的仲裁协议裁决协议使用对称密码学通信数字签名
本文标题:网络安全协议
链接地址:https://www.777doc.com/doc-1268249 .html