2020/1/23Ch7-网络安全协议1信息安全原理与技术郭亚军宋建华李莉清华大学出版社2020/1/23Ch7-网络安全协议2第7章网络安全协议•主要知识点:--简单的安全认证协议--Kerberos协议--SSL协议--IPSec协议--PGP2020/1/23Ch7-网络安全协议3网络安全协议按照其完成的功能可以分为:(1)密钥交换协议:一般情况下是在参与协议的两个或者多个实体之间建立共享的秘密,通常用于建立在一次通信中所使用的会话密钥。(2)认证协议:认证协议中包括实体认证(身份认证)协议、消息认证协议、数据源认证和数据目的认证协议等,用来防止假冒、篡改、否认等攻击。(3)认证和密钥交换协议:这类协议将认证和密钥交换协议结合在一起,是网络通信中最普遍应用的安全协议。该类协议首先对通信实体的身份进行认证,如果认证成功,进一步进行密钥交换,以建立通信中的工作密钥,也叫密钥确认协议。2020/1/23Ch7-网络安全协议4•网络层的安全协议:IPSec•传输层的安全协议:SSL/TLS•应用层的安全协议:SHTTP(Web安全协议)PGP(电子邮件安全协议)S/MIME(电子邮件安全协议)MOSS(电子邮件安全协议)PEM(电子邮件安全协议)SSH(远程登录安全协议)Kerberos(网络认证协议)等。常见的网络安全协议2020/1/23Ch7-网络安全协议57.1简单的安全认证协议•Needham-Schroeder认证协议是最为著名的早期的认证协议,许多广泛使用的认证协议都是以Needham-Schroeder协议为基础而设计的。•Otway-Rees协议Otway-Rees协议的主要功能是完成身份的双向认证,使用对称密码。2020/1/23Ch7-网络安全协议67.1.1Needham-Schroeder认证协议Needham--Schroder协议的目的是使得通讯双方能够互相证实对方的身份并且为后续的加密通讯建立一个会话密钥(sessionkey)。协议涉及三个主体:A和B,以及A,B信赖的可信第三方,也叫认证服务器(authenticationserver)S。2020/1/23Ch7-网络安全协议7Needham和Schroeder于1978年提出的基于共享密钥体系的协议过程:图7.1Needham-Schroeder认证过程其中,Kas是A与S之间的共享密钥,Kbs是B与S之间的共享密钥。Kab是认证服务器临时生成的密钥,用于A、B双方认证之后的加密通讯,称为会话密钥。Na和Nb分别是A和B生成的随机量(nonce)。ABS13452(1)AS:A,B,Na(2)SA:{Na,B,Kab,{Kab,A}Kbs}Kas(3)AB:{Kab,A}Kbs(4)BA:{Nb}Kab(5)AB:{Nb-1}Kab2020/1/23Ch7-网络安全协议8Needhaul-Scllroeder共享密钥协议的漏洞假定有攻击者H记录下A与B之间执行Needham-Schroeder共享密钥协议的一轮消息,并且进而破获了其会话密钥Kab(如经过蛮力攻击等),攻击者可以在第3步冒充A利用旧的会话密钥欺骗B。在这个攻击中,攻击者H首先向B发送一个他记录的从A发出的旧消息,此消息用于向B表明是A在与B通讯并且Kab是会话密钥。B无法知道这是不是一个A发送的正常通讯请求,也不记得他过去曾经用过Kab作为会话密钥。遵循协议,B将向A发送一个加密的新随机量作为挑战。H截获之,并用Kab解密得到此随机量,然后向B返回一个响应消息,使得B相信他正在用会话密钥Kab与A通讯,而实际上A根本没有参加这一轮协议的运行。除非B记住所有以前使用的与A通信的会话密钥,否则B无法判断这是一个重放攻击,攻击者由此可以随意冒充A与B进行通讯了!2020/1/23Ch7-网络安全协议9Denning协议使用时间戳修正了这个漏洞,改进的协议如下:其中T表示时间戳。T记录了认证服务器S发送消息(2)时的时间,A、B根据时间戳验证消息的“新鲜性”,从而避免了重放攻击。(1)AS:A,B(2)SA:{B,Kab,T,{Kab,A,T}Kbs}Kas(3)AB:{Kab,A,T}Kbs(4)BA:{Nb}Kab(5)AB:{Nb-1}Kab2020/1/23Ch7-网络安全协议107.1.2Otway-Rees协议图7.2Otway-Rees认证过程•标号1表示A产生一消息,包括用和S共享的密钥Kas加密的一个索引号R、A的名字、B的名字和一随机数Ra。•标号2表示B用A消息中的加密部分构造一条新消息。包括用和S共享的密钥Kbs加密的一个索引号R、A的名字、B的名字和一新随机数Rb。ABS12342020/1/23Ch7-网络安全协议11•标号3表示S检查两个加密部分中的索引号R是否相同,如果相同,就认为从B来的消息是有效的。S产生一个会话密钥Ks用Kb和Ka分别加密后传送给B,每条消息都包含S接收到的随机数。•标号4表示B把用A的密钥加密的消息连同索引号R一起传给A。2020/1/23Ch7-网络安全协议127.2Kerberos协议在一个开放的分布式网络环境中,用户通过工作站访问服务器上提供的服务时,•一方面,工作站无法可信地向网络服务证实用户的身份,可能存在着以下三种威胁:①用户可能访问某个特定工作站,并假装成另一个用户在操作工作站。②用户可能会更改工作站的网络地址,使从这个已更改的工作站上发出的请求看似来自伪装的工作站。③用户可能窃听他人的报文交换过程,并使用重放攻击来获得对一个服务器的访问权或中断服务器的运行。2020/1/23Ch7-网络安全协议13•另一方面,在开放的网络环境中,客户也必须防止来自服务端的欺骗。以自动取款机ATM为例,如果存在欺骗,那么客户将泄漏自己的帐户信息。如何使用一个集中的认证服务器,提供用户对服务器的认证以及服务器对用户的认证,这就是Kerberos要解决的问题。2020/1/23Ch7-网络安全协议147.2.1Kerberos概述Kerberos是由美国麻省理工学院(MIT)提出的基于可信赖的第三方的认证系统,它是基于Needham-Schroeder协议设计的,采用对称密码体制。Kerberos一词源自希腊神话,在希腊神话故事中,Kerberos是一种长有三个头的狗,还有一个蛇形尾巴,是地狱之门的守卫者。现代取Kerberos这个名字意指要有三个“头”来守卫网络之门,这“三头”包括:-认证(authentication)-清算(accounting)-审计(audit)2020/1/23Ch7-网络安全协议15Kerberos协议中的一些概念•Principal(安全个体)被鉴别的个体,有一个名字(name)和口令(password)。•KDC(Keydistributioncenter,密钥分配中心)可信的第三方,即Kerberos服务器,提供ticket和临时的会话密钥。•Ticket(访问许可证)是一个记录凭证,客户可以用它来向服务器证明自己的身份,其中包括客户的标识、会话密钥、时间戳,以及其他一些信息。Ticket中的大多数信息都被加密,密钥为服务器的密钥。2020/1/23Ch7-网络安全协议16•Authenticator(认证符)是另一个记录凭证,其中包含一些最近产生的信息,产生这些信息需要用到客户和服务器之间共享的会话密钥。•Credentials(证书)由一个ticket加上一个秘密的会话密钥组成。2020/1/23Ch7-网络安全协议177.2.2Kerberos协议的工作过程•Kerberos基本思想采用对称密钥体制对信息进行加密,能正确对信息进行解密的用户就是合法用户。用户在对应用服务器进行访问之前,必须先从第三方(Kerberos服务器)获取该应用服务器的访问许可证(ticket)。•认证服务器AS(AuthenticationServer)•许可证颁发服务器TGS(TicketGrantingServer)2020/1/23Ch7-网络安全协议187.2.2Kerberos协议的工作过程①②③④⑤⑥认证服务器AS许可证颁发服务器TGS用户C应用服务器V图7.3Kerberos的认证过程2020/1/23Ch7-网络安全协议19•①用户想要获取访问某一应用服务器的许可证时,先以明文方式向认证服务器AS发出请求,要求获得访问TGS的许可证。•②AS以证书(credential)作为响应,证书包括访问TGS的许可证和用户与TGS间的会话密钥。会话密钥以用户的密钥加密后传输。•③用户解密得到TGS的响应,然后利用TGS的许可证向TGS申请应用服务器的许可证,该申请包括TGS的许可证和一个带有时间戳的认证符(authenticator)。认证符以用户与TGS间的会话密钥加密。2020/1/23Ch7-网络安全协议20•④TGS从许可证中取出会话密钥、解密认证符,验证认证符中时间戳的有效性,从而确定用户的请求是否合法。TGS确认用户的合法性后,生成所要求的应用服务器的许可证,许可证中含有新产生的用户与应用服务器之间的会话密钥。TGS将应用服务器的许可证和会话密钥传回到用户。•⑤用户向应用服务器提交应用服务器的许可证和用户新产生的带时间戳的认证符(认证符以用户与应用服务器之间的会话密钥加密)。•⑥应用服务器从许可证中取出会话密钥、解密认证符,取出时间戳并检验有效性。然后向用户返回一个带时间戳的认证符,该认证符以用户与应用服务器之间的会话密钥进行加密。据此,用户可以验证应用服务器的合法性。2020/1/23Ch7-网络安全协议21•Kerberos的主要优点:通过对实体和服务的统一管理实现单一注册,也就是说用户通过在网络中的一个地方的一次登录就可以使用网络上他可以获得的所有资源。•Kerberos存在的问题:①Kerberos服务器的损坏将使得整个安全系统无法工作;②AS在传输用户与TGS间的会话密钥时是以用户密钥加密的,而用户密钥是由用户口令生成的,因此可能受到口令猜测的攻击;③Kerberos使用了时间戳,因此存在时间同步问题;④要将Kerberos用于某一应用系统,则该系统的客户端和服务器端软件都要作一定的修改。2020/1/23Ch7-网络安全协议227.3SSL协议SSL(安全套接字层,SecureSocketLayer)协议是网景(Netscape)公司提出的基于WEB应用的安全协议,是一种用于传输层安全的协议。传输层安全协议的目的是为了保护传输层的安全,并在传输层上提供实现保密、认证和完整性的方法。SSL指定了一种在应用程序协议(例如http、telnet、NNTP、FTP)和TCP/IP之间提供数据安全性分层的机制。它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。2020/1/23Ch7-网络安全协议237.3.1SSL协议概述图7.4SSL的体系结构SSL握手协议SSL修改密文协议SSL告警协议HTTPSSL记录协议TCPIP2020/1/23Ch7-网络安全协议24SSL中有两个重要概念:•SSL连接:连接是提供恰当类型服务的传输。SSL连接是点对点的关系,每一个连接与一个会话相联系。•SSL会话:SSL会话是客户和服务器之间的关联,会话通过握手协议(在SSL协议的高层)来创建。会话定义了加密安全参数的一个集合,该集合可以被多个连接所共享。会话可以用来避免为每个连接进行昂贵的新安全参数的协商。2020/1/23Ch7-网络安全协议257.3.2SSL记录协议SSL从应用层取得的数据需要重定格式(分片、可选的压缩、应用MAC、加密等)后才能传给传输层进行发送。同样,当SSL协议从传输层接收到数据后需要对其进行解密等操作后才能交给上层的应用层。这个工作是由SSL记录协议完成的。2020/1/23Ch7-网络安全协议26上层报文分片1分片2分片n压缩(可选)加密增加MAC增加SSL记录首部图7.6SSL记录协议的发送方执行的操作步骤2020