第4章网络安全-2安全协议课件

上传人:沈*** 文档编号:241644998 上传时间:2024-07-12 格式:PPT 页数:107 大小:2.14MB
返回 下载 相关 举报
第4章网络安全-2安全协议课件_第1页
第1页 / 共107页
第4章网络安全-2安全协议课件_第2页
第2页 / 共107页
第4章网络安全-2安全协议课件_第3页
第3页 / 共107页
点击查看更多>>
资源描述
第第4章章 网络安全网络安全-2安全协议安全协议主要知识点:主要知识点:-Kerberos协议协议 -SSL协议协议 -IPSec协议协议 -PGP 7/12/20241网络安全协议网络安全协议按照其完成的功能可以分为:(1)密密钥钥交交换换协协议议:一般情况下是在参与协议的两个或者多个实体之间建立共享的秘密,通常用于建立在一次通信中所使用的会话密钥。(2 2)认认证证协协议议:认证协议中包括实体认证(身份认证)协议、消息认证协议、数据源认证和数据目的认证协议等,用来防止假冒、篡改、否认等攻击。(3 3)认认证证和和密密钥钥交交换换协协议议 :这类协议将认证和密钥交换协议结合在一起,是网络通信中最普遍应用的安全协议。该类协议首先对通信实体的身份进行认证,如果认证成功,进一步进行密钥交换,以建立通信中的工作密钥,也叫密钥确认协议。7/12/20242网络层的安全协议:网络层的安全协议:IPSecIPSec传输层的安全协议:传输层的安全协议:SSL/TLSSSL/TLS应用层的安全协议应用层的安全协议:SHTTPSHTTP(Web安全协议)PGPPGP(电子邮件安全协议)S/MIMES/MIME(电子邮件安全协议)MOSSMOSS(电子邮件安全协议)PEMPEM(电子邮件安全协议)SSHSSH(远程登录安全协议)Kerberos Kerberos(网络认证协议)等。常见的网络安全协议常见的网络安全协议7/12/20243KerberosKerberos协议协议 在一个开放的分布式网络环境中,用户通过工作站访问服务器上提供的服务时,一方面,工作站无法可信地向网络服务证实用户的身份,可能存在着以下三种威胁:用户可能访问某个特定工作站,并假装成另一个用户在操作工作站。用户可能会更改工作站的网络地址,使从这个已更改的工作站上发出的请求看似来自伪装的工作站。用户可能窃听他人的报文交换过程,并使用重放攻击来获得对一个服务器的访问权或中断服务器的运行。7/12/20244另一方面,在开放的网络环境中,客户也必须防止来自服务端的欺骗。以自动取款机ATM为例,如果存在欺骗,那么客户将泄漏自己的帐户信息。如何使用一个集中的认证服务器,提供用户对服务器的认证以及服务器对用户的认证,这就是Kerberos要解决的问题。7/12/20245KerberosKerberos概述概述 Kerberos是由美国麻省理工学院(MIT)提出的基于可信赖的第三方的认证系统,它是基于Needham-Schroeder协议设计的,采用对称密码体制。Kerberos一词源自希腊神话,在希腊神话故事中,Kerberos是一种长有三个头的狗,还有一个蛇形尾巴,是地狱之门的守卫者。现代取Kerberos这个名字意指要有三个“头”来守卫网络之门,这“三头”包括:-认证认证(authentication)-清算清算(accounting)-审计审计(audit)7/12/20246KerberosKerberos协议中的一些概念中的一些概念 Principal(Principal(安全个体安全个体)被鉴别的个体,有一个名字(name)和口令(password)。KDC(Key distribution centerKDC(Key distribution center,密钥分配中心密钥分配中心)可信的第三方,即Kerberos服务器,提供ticket和临时的会话密钥。TicketTicket(访问许可证)访问许可证)是一个记录凭证,客户可以用它来向服务器证明自己的身份,其中包括客户的标识、会话密钥、时间戳,以及其他一些信息。Ticket中的大多数信息都被加密,密钥为服务器的密钥。7/12/20247AuthenticatorAuthenticator(认证符)认证符)是另一个记录凭证,其中包含一些最近产生的信息,产生这些信息需要用到客户和服务器之间共享的会话密钥。CredentialsCredentials(证书)证书)由一个ticket加上一个秘密的会话密钥组成。7/12/20248KerberosKerberos协议的工作的工作过程程 KerberosKerberos基本思想基本思想 采用对称密钥体制对信息进行加密,能正确对信息进行解密的用户就是合法用户。用户在对应用服务器进行访问之前,必须先从第三方(Kerberos 服务器)获取该应用服务器的访问许可证(ticket)。认证服务器认证服务器ASAS(Authentication Server)许可证颁发服务器许可证颁发服务器TGSTGS(Ticket Granting Server)7/12/20249KerberosKerberos协议的工作的工作过程程 认证服务器认证服务器AS许可证颁发服务器许可证颁发服务器TGS用户用户C应用服务应用服务器器V图7.3Kerberos的认证过程7/12/202410用户想要获取访问某一应用服务器的许可证时,先以明文方式向认证服务器AS发出请求,要求获得访问TGS的许可证。AS以证书(credential)作为响应,证书包括访问TGS的许可证和用户与TGS间的会话密钥。会话密钥以用户的密钥加密后传输。用户解密得到TGS的响应,然后利用TGS的许可证向TGS申请应用服务器的许可证,该申请包括TGS的 许 可 证 和 一 个 带 有 时 间 戳 的 认 证 符(authenticator)。认证符以用户与TGS间的会话密钥加密。7/12/202411TGS从许可证中取出会话密钥、解密认证符,验证认证符中时间戳的有效性,从而确定用户的请求是否合法。TGS确认用户的合法性后,生成所要求的应用服务器的许可证,许可证中含有新产生的用户与应用服务器之间的会话密钥。TGS将应用服务器的许可证和会话密钥传回到用户。用户向应用服务器提交应用服务器的许可证和用户新产生的带时间戳的认证符(认证符以用户与应用服务器之间的会话密钥加密)。应用服务器从许可证中取出会话密钥、解密认证符,取出时间戳并检验有效性。然后向用户返回一个带时间戳的认证符,该认证符以用户与应用服务器之间的会话密钥进行加密。据此,用户可以验证应用服务器的合法性。7/12/202412KerberosKerberos的主要的主要优点:点:通过对实体和服务的统一管理实现单一注册,也就是说用户通过在网络中的一个地方的一次登录就可以使用网络上他可以获得的所有资源。KerberosKerberos存在存在的问题:的问题:Kerberos服务器的损坏将使得整个安全系统无法工作;AS在传输用户与TGS间的会话密钥时是以用户密钥加密的,而用户密钥是由用户口令生成的,因此可能受到口令猜测的攻击;Kerberos使用了时间戳,因此存在时间同步问题;要将Kerberos用于某一应用系统,则该系统的客户端和服务器端软件都要作一定的修改。7/12/202413Kerberos实验 Windows 2019 Server中Kerberos认证服务的创建:(1)升级Windows 2019 Server为域控制器;(2)配置DNS服务器(3)配置Kerberos服务(4)Windows xp客户端加入域1415KerberosKerberos协议体系架构体系架构16在整个KerberosV5身份认证过程中主要用到两个服务,那就是Kerberos服务和DNS服务,分别所用到的端口为TCP88和TCP53。所以,在域网络中要使用Kerberos协议进行身份认证,就必须确保网络防火墙对这两个端口保持开放。参与参与KerberosKerberos身份身份认证的的组件件17SSLSSL协议协议 SSL(安全套接字层,SecureSocketLayer)协议是网景(Netscape)公司提出的基于WEB应用的安全协议,是一种用于传输层安全的协议。传输层安全协议的目的是为了保护传输层的安全,并在传输层上提供实现保密、认证和完整性的方法。SSL指定了一种在应用程序协议(例如http、telnet、NNTP、FTP)和TCP/IP之间提供数据安全性分层的机制。它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。7/12/202418SSLSSL协议概述概述 图7.4 SSL的体系结构 SSL握手协议SSL修改密文协议SSL告警协议HTTPSSL记录协议TCPIP7/12/202419 SSL中有两个重要概念:SSLSSL连接接:连接是提供恰当类型服务的传输。SSL连接是点对点的关系,每一个连接与一个会话相联系。SSLSSL会会话:SSL会话是客户和服务器之间的关联,会话通过握手协议(在SSL协议的高层)来创建。会话定义了加密安全参数的一个集合,该集合可以被多个连接所共享。会话可以用来避免为每个连接进行昂贵的新安全参数的协商。7/12/202420SSLSSL记录协议 SSL SSL从应用层取得的数据需要重定格式(分片、可选的压缩、应用MAC、加密等)后才能传给传输层进行发送。同样,当SSL协议从传输层接收到数据后需要对其进行解密等操作后才能交给上层的应用层。这个工作是由SSL记录协议完成的。7/12/202421上层报文分片1分片2分片n压缩(可选)加密增加MAC增加SSL记录首部图7.6 SSL记录协议的发送方执行的操作步骤7/12/202422SSL记录协议中发送方发送方执行的操作步骤:从上层接受传输的应用报文;分片:将数据分片成可管理的块,每个上层报文被分成16KB或更小的数据块;进行数据压缩(可选):压缩是可选的,压缩的前提是不能丢失信息,并且增加的内容长度不能超过1024字节,缺省的压缩算法为空;应用MAC:加入信息认证码(MAC),这一步需要用到共享的密钥;加密:利用IDEA、DES、3DES或其他加密算法对压缩报文和MAC码进行数据加密;增加SSL首部:增加由内容类型、主要版本、次要版本和压缩长度组成的首部。将结果传输到下层。7/12/202423SSL记录协议中接收方接收数据的工作过程从低层接受报文;解密;用事先商定的MAC码校验数据;如果是压缩的数据,则解压缩;重装配数据;传输信息到上层。7/12/202424SSLSSL修改密文修改密文规约协议 SSL修改密文规约协议用来发送修改密文规约协议信息。任何时候客户都能请求修改密码参数,比如握手密钥交换。在修改密文规约的通告发出以后,客户方就发出一个握手密钥交换信息(如果可得到的话),鉴定认证信息,服务器则在处理了密钥交换信息之后发送一个修改密文规约信息。此后,新的双方约定的密钥就将一直使用到下次提出修改密钥规约请求为止。7/12/202425SSLSSL告警告警协议 SSL告警协议是用来将SSL有关的告警传送给对方实体的。和其他使用SSL的情况一样,告警报文按照当前状态说明被压缩和加密。SSL告警协议的每个报文由两个字节组成。第一个字节的值用来表明警告的的级别,第二个字节表示特定告警的代码。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。警示消息有两种:一种是 Fatal错误,如传递数据过程中,发现错误的MAC,双方就需要立即中断会话,同时消除自己缓冲区相应的会话记录;第二种是Warning消息,这种情况,通信双方通常都只是记录日志,而对通信过程不造成任何影响。7/12/202426SSLSSL握手握手协议 一个SSL会话工作在不同的状态,即会话状态和连接状态。会话状态会话状态:会话标识符对方的证书压缩方法密文规约主密钥可重新开始标志连接状态连接状态:服务器和客户随机数服务器写MAC密钥客户写MAC密钥服务器写密钥客户写密钥初始化向量序号SSL握手协议用于鉴别初始化和传输密钥,它使得服务器和客户能相互鉴别对方的身份,并保护在SSL记录中发送的数据。因此在传输任何应用数据前,都必须使用握手协议。图7.7SSL握手过程SSL客户端SSL服务器端发送”hello”消息传送数据回复”hello”消息,发出服务器证书,服务器密钥交换信息,证书请求,服务器HELLODONE发送证书,客户密钥交换信息,证书验证信息,结束发修改密文规约信息结束发修改密文规约信息传送数据214357/12/202429SSLSSL握手的详细过程握手的详细过程第一步:客户发出一个带有客户HELLO信息的连接请求。这信息包括:想要使用的SSL版本号。时间信息,以标准的UNIX32位格式标识的现时和日期。会话标识(可选),如果没有指定的话,则服务器便重用上一次的会话标识或返回一个错误信息密文组(客户方所支持的各种加密算法选项清单。包括认证码、密钥交换方法、加密和MAC算法)。客户方所支持的压缩算法。随机数。7/12/202430SSL握手的详细过程第二步:服务器评估客户方发来的HELLO信息中的各项参数,并且返回一个服务器方的HELLO信息,其中含有服务器选来用于SSL会话的各项参数(版本号、时间信息、以标准的UNIX32位格式标识的现时和日期、会话标识、密文组、压缩方法、随机数)。在服务器HELLO信息之后,服务器发出如下信息:服务器证书,如果服务器需要被鉴别的话。服务器密钥交换信息,如果得不到证书或证书仅仅用作签名的话。证书请求,如果客户要求被鉴别的话。最后,服务器发出一个服务器HELLODONE信息,开始等待客户的回音。7/12/202431SSL握手的详细过程第三步:客户发送下列信息:如果服务器发出了一个证书请求,那么客户方必须发送一个证书或非证书信息。如果服务器发送了一个服务器密钥交换信息,那么客户方就发送一个基于公钥算法的由HELLO信息决定的密钥交换信息。如果客户方已经发送了一个证书,那么客户方就需验证服务器方的证书并且发出一个证书验证信息指明结果。然后,客户方发出一个结束信息,指出协商过程已经完成。客户方还发送一个修改密文规约信息来产生共享的常规密钥。应该注意这部分工作不是由握手协议控制,是由修改密文规约协议管理的。7/12/202432SSL握手的详细过程第四步:服务器发出一个结束信息指出协商协商阶段完成。然后服务器发出一个密文修改规约信息。第五步:会话双方分别产生一个加密密钥,然后他们再根据这些密钥导出会话主密钥。握手协议改变状态至连接状态。所有从应用层的来的数据传输作为特定信息传输给对方。7/12/202433在在WindowsWindows中使用中使用证书和和SSLSSL 本实验中将首先看看默认情况下什么证书颁发机构被配置来与浏览器合作。然后将创建一个证书颁发机构服务器,设置一个Web服务器来使用SSL,并测试新的配置。当使用SSL连接到Web服务器时,地址栏中的URL将显示https。SSL在传输层使用TCP端口443。7/12/202434在Web服务器上使用证书进行身份认证的示意图35实验步骤1列举浏览器所配置的受信任的证书颁发机构。2安装并配置证书颁发机构服务器(事先已默认配置了WEB服务器)。3创建证书请求。4颁发/签署证书。5用SSL安全化Web站点。6描述当以SSL连接时Web页面使用的过程。36SSL协议的优点协议的优点机密性机密性即连接是私有的。在初始握手阶段,双方建立对称密钥后,信息即用该密钥加密。完整性完整性在信息中嵌入信息鉴别码(MAC)来保证信息的完整性。其中使用了安全哈希函数(例如SHA和MD5)来进行MAC计算。鉴别鉴别在握手阶段,客户鉴别服务器用不对称密钥或公开密钥。7/12/202437SSL协议的不足协议的不足SSL要求对每个数据进行加密和解密操作,因而在带来高性能的同时,对系统也要求高资源开销。SSL协议主要是使用公开密钥体制和X.509数字证书技术保护信息传输的机密性和完整性,它不能保证信息的不可抵赖性,主要适用于点对点之间的信息传输,常用WebServer方式。SSL为带有安全功能的TCP/IP套接字应用程序接口提供了一个替代的方法,理论上,在SSL之上可以安全方式运行任何原有TCP/IP应用程序而不需修改,但实际上,SSL目前还只是用在HTTP连接上。7/12/202438OpenSSL官方网站为openssl.org/Eric A.Young和Tim J.Hudson这两个加拿大人自2019年开始编写后来具有巨大影响的OpenSSL软件包,这是一个没有太多限制的开放源代码的软件包。2019年,OpenSSL项目组接管了OpenSSL的开发工作,并推出了OpenSSL的0.9.1版,目前为止,OpenSSL的算法已经非常完善,对SSL2.0、SSL3.0以及TLS1.0都支持。OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台使用同样熟悉的东西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得OpenSSL具有广泛的适用性。OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算密码算法库法库,SSL协议库协议库,应用程序应用程序。7/12/202439openssl-加密算法加密算法作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。1.1.对称加密算法对称加密算法OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。2.2.非对称加密算法非对称加密算法OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名。DSA算法则一般只用于数字签名。403.3.信息摘要算法信息摘要算法OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。4.4.密钥和证书管理密钥和证书管理 密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准。首先,OpenSSL实现了ASN.1的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请求以及CRL等数据对象的DER、PEM和BASE64的编解码功能。OpenSSL提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12和PKCS#8的编解码功能。OpenSSL在标准中提供了对私钥的加密保护功能,使密钥可以安全地进行存储和分发。在此基础上,OpenSSL实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库,支持证书的管理功能,包括证书密钥产生、请求产生、证书签发、吊销和验证等功能。OpenSSL提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。415.5.SSL和和TLS协议协议 OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议。OpenSSL也实现了TLSv1.0,TLS是SSLv3的标准化版,虽然区别不大,但毕竟有很多细节不尽相同。虽然已经有众多的软件实现了OpenSSL的功能,但是OpenSSL里面实现的SSL协议能够对SSL协议有一个更加清楚的认识,因为至少存在两点:一是OpenSSL实现的SSL协议是开放源代码的,可以追究SSL协议实现的每一个细节;二是OpenSSL实现的SSL协议是纯粹的SSL协议,没有跟其它协议(如HTTP)协议结合在一起,澄清了SSL协议的本来面目。6.6.应用程序应用程序OpenSSL的应用程序已经成为了OpenSSL重要的一个组成部分。现在OpenSSL的应用中,很多都是基于OpenSSL的应用程序而不是其API的,如OpenCA,就是完全使用OpenSSL的应用程序实现的。OpenSSL的应用程序是基于OpenSSL的密码算法库和SSL协议库写成的,所以也是一些非常好的OpenSSL的API使用范例。OpenSSL的应用程序提供了相对全面的功能,在相当多的人看来,OpenSSL已经为自己做好了一切,不需要再做更多的开发工作了,所以,他们也把这些应用程序成为OpenSSL的指令。OpenSSL的应用程序主要包括密钥生成、证书管理、格式转换、数据加密和签名、SSL测试以及其它辅助配置功能。427.7.Engine机制机制Engine机制的出现是在OpenSSL的0.9.6版的事情,开始的时候是将普通版本跟支持Engine的版本分开的,到了OpenSSL的0.9.7版,Engine机制集成到了OpenSSL的内核中,成为了OpenSSL不可缺少的一部分。Engine机制目的是为了使OpenSSL能够透明地使用第三方提供的软件加密库或者硬件加密设备进行加密。OpenSSL的Engine机制成功地达到了这个目的,这使得OpenSSL已经不仅仅使一个加密库,而是提供了一个通用地加密接口,能够与绝大部分加密库或者加密设备协调工作。当然,要使特定加密库或加密设备更OpenSSL协调工作,需要写少量的接口代码,但是这样的工作量并不大,虽然还是需要一点密码学的知识。Engine机制的功能跟Windows提供的CSP功能目标是基本相同的。目前,OpenSSL的0.9.7版本支持的内嵌第三方加密设备有8种,包括:CryptoSwift、nCipher、Atalla、Nuron、UBSEC、Aep、SureWare以及IBM 4758 CCA的硬件加密设备。现在还出现了支持PKCS#11接口的Engine接口,支持微软CryptoAPI的接口也有人进行开发。当然,所有上述Engine接口支持不一定很全面,比如,可能支持其中一两种公开密钥算法。438.8.辅助功能辅助功能BIO机制是OpenSSL提供的一种高层IO接口,该接口封装了几乎所有类型的IO接口,如内存访问、文件访问以及Socket等。这使得代码的重用性大幅度提高,OpenSSL提供API的复杂性也降低了很多。OpenSSL对于随机数的生成和管理也提供了一整套的解决方法和支持API函数。随机数的好坏是决定一个密钥是否安全的重要前提。OpenSSL还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等。44IPSec协议协议 由于协议IPv4最初设计时没有过多地考虑安全性,缺乏对通信双方真实身份的验证能力,缺乏对网上传输的数据的完整性和机密性保护,并且由于IP地址可软件配置等灵活性以及基于源IP地址的认证机制,使IP层存在着网络业务流易被监听和捕获、IP地址欺骗、信息泄漏和数据项被篡改等多种攻击,而IP是很难抵抗这些攻击的。为了实现安全IP,因特网工程任务组IETF于1994年开始了一项IP安全工程,专门成立了IP安全协议工作组IPSEC,来制定和推动一套称为IPSec的IP安全协议标准。45IPSecIPSec协议组网网络认证协议 Authentication HeaderAuthentication Header(AHAH)封封 装装 安安 全全 载 荷荷 协 议 Encapsulating Encapsulating Security Security PayloadPayload(ESPESP)密密钥管理管理协议Internet Key Exchange Internet Key Exchange(IKEIKE)网网络认证及加密算法及加密算法 46IPSecIPSec安全体系安全体系结构构图7.8 IPSec安全体系结构 IPSec体系结构ESP协议AH协议加密算法DOI解释域密钥管理认证算法47ESP协议规定了为通信提供机密性和完整性保护的具体方案,包括ESP载荷的格式、语义、取值以及对进入分组和外出分组的处理过程等。DOIInterpretation of Domain,DOI规定了每个算法的参数要求和计算规则,如算法的密钥长度要求、算法强度要求以及初始向量的计算规则等。AH协议定义了认证的应用方法,提供数据源认证和完整性保证。IKE协议是IPSec目前唯一的正式确定的密别交换协议,为AH和ESP提供密钥交换支持,同时也支持其他机制,如密钥协商。48安全关联(安全关联(Security Association,SA)为了正确封装及提取IPSec数据包,有必要采取一套专门的方案,将安全服务/密钥与要保护的通信数据联系到一起;同时要将远程通信实体与要交换密钥的IPSec数据传输联系到一起。换言之,要解决如何保护通信数据、保护什么样的通信数据以及由谁来实行保护的问题。这样的构建方案称为安全关联(Security Association,SA)。49 SA是单向的,要么对数据包进行“进入”保护,要么进行“外出”保护。也就是说,在一次通信中,IPSec 需要建立两个SA,一个用于入站通信,另一个用于出站通信。若某台主机,如文件服务器或远程访问服务器,需要同时与多台客户机通信,则该服务器需要与每台客户机分别建立不同的SA。50AHAH(Authentication HeaderAuthentication Header)协议 AH协议规定了AH头在AH实现中应插入IP头的位置、AH头的语法格式、各字段的语义及取值方式,以及实施AH时进入和外出分组的处理过程。AH机制涉及到密码学中的核心组件鉴别算法。AHAH的功能的功能AHAH的两种模式的两种模式AHAH的格式的格式 认证算法认证算法51AHAH的功能的功能 AH协议为IP通信提供数据源认证、数据完整性和反重播保证,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。AH的工作原理是在每一个数据包上添加一个身份验证报头。此报头包含一个带密钥的hash散列(可以将其当作数字签名,只是它不使用证书),此hash散列在整个数据包中计算,因此对数据的任何更改将致使散列无效这样就提供了完整性保护。AH不能提供加密服务,这就意味着分组将以明文的形式传送。由于AH的速度比ESP稍微快一点,因此仅当需要确保分组的源和完整性而不考虑机密性的时候,可以选择使用AH。52AHAH的两种模式的两种模式 传输模式传输模式:传输模式用于两台主机之间,只对上层协议数据(传输层数据)和IP头中的固定字段提供认证,主要保护传输层协议头,实现端到端的安全;隧道模式隧道模式:隧道模式对整个IP数据项提供认证保护,把需要保护的IP包封装在新的IP包中,既可用于主机也可用于安全网关,并且当AH在安全网关上实现时,必须采用隧道模式。53AHAH的两种模式的两种模式 数据数据IP 包头包头数据数据IP 包头包头AH数据数据原原IP 包头包头AH新新IP 包头包头传输模式传输模式隧道模式隧道模式545556AHAH的格式的格式 图7.11AH报头格式下一个报头长度安全参数索引(SPI)序列号认证数据(hash检查和)AH报头57Next Header(下一个报头,占8字节):识别下一个使用IP协议号的报头,例如,Next Header值等于6时,表示紧接其后的是TCP报头。对于UDP,它的值将是17。Length(长度,占8字节):AH报头长度。Security Parameters Index(SPI,安全参数索引,占32字节):这是一个为数据报识别安全关联的 32 位伪随机值。其中,SPI 值0 被保留,用来表明“没有安全关联存在”。58Sequence Number(序列号,占32字节):这是一个无符号单调递增的计数器,从1开始的32位单增序列号,不允许重复,唯一地标识了每一个发送数据包,为安全关联提供反重播保护。接收端校验序列号为该字段值的数据包是否已经被接收过,若是,则拒收该数据包。对于一个特定的SA,它实现反重传服务。这些信息不被接收对等实体使用,但是发送方必须包含这些信息。当建立一个SA时,这个值被初始化为0。如果使用反重传服务重传,那么这个值决不允许重复。由于发送方并不知道接受方是否使用了反重传功能,该字段中的值不能被重复的事实就要求终止SA,并且在传送第23个分组之前建立一个新的SA。59Authentication Data(AD,认证数据,可变长):包含完整性检查和。接收端接收数据包后,首先执行hash计算,再与发送端所计算的该字段值比较,若两者相等,表示数据完整,若在传输过程中数据遭修改,两个计算结果不一致,则丢弃该数据包。通过这个值,通信双方能实现对数据的完整性保护、分组级数据源鉴别以及通信的抗重放攻击。60传输模式下的AH数据包格式61隧道模式下的AH数据包格式62认证算法算法 用于计算完整性校验值(ICV)的认证算法由SA指定,对于点到点通信,合适的认证算法包括基于对称密码算法(如DES)或基于单向Hash函数(如MD5或SHA-1)的带密钥的消息认证码(MAC)。63ESPESP(Encapsulating Security Encapsulating Security PayloadPayload)协议 ESP涉及到密码学中的核心组件加密和鉴别算法。ESPESP的功能的功能 ESPESP的两种模式的两种模式 ESPESP的格式的格式 加密算法和认证算法加密算法和认证算法 ESPESP处理处理 64ESPESP的功能的功能 ESP为IP数据包提供完整性检查、认证和加密,可以看作是“超级AH”,因为它提供机密性并可防止篡改。ESP服务依据建立的安全关联(SA)是可选的。一些限制:完整性检查和认证一起进行。仅 当 与 完 整 性 检 查 和 认 证 一 起 时,“重 播(Replay)”保护才是可选的。“重播”保护只能由接收方选择。ESP的加密服务是可选的,但如果启用加密,则也就同时选择了完整性检查和认证。因为如果仅使用加密,入侵者就可能伪造包以发动密码分析攻击。ESP可以单独使用,也可以和AH结合使用。ESPESP的两种模式的两种模式 数据数据IP 包头包头加密后的数据加密后的数据IP 包头包头ESP头部头部ESP头头新新IP 包头包头传输模式传输模式隧道模式隧道模式ESP尾部尾部ESP验证验证ESP尾部尾部ESP验证验证数据数据原原IP 包头包头加密部分加密部分666768ESPESP的格式的格式 ESP协议包括ESP报头、ESP报尾、ESP认证报尾三个部分。图7.14ESP报头、报尾和认证报尾69两种模式下的ESP数据包格式传输模式隧道模式70加密算法和加密算法和认证算法算法 ESP所采用的加密算法由SA指定。为了提高加密效率,ESP设计使用的是对称密码算法。由于IP包可能会失序到达,因此每个IP包必须携带接收者进行解密所要求的密码同步数据(如初始化向量IV)。这个数据可以在有效负载字段中明确携带,也可以从包头中推导出来。由于机密性是可选择的,因此加密算法可以是“空”。ESP中的认证算法同AH的认证算法一样。由于认证算法是可选的,因此认证算法也可以是“空”。虽然加密和认证算法都可为空,但二者不能同时为空。因为这样做不仅毫无安全保证可言,而且也为系统带来了无谓的负担。71ESPESP处理处理 ESP 的处理过程发生在发送时的IP分割之前以及接受时的IP重新组合之后。发送时的处理ESP头定位:在传输模式下,ESP头插在IP头和上一层协议头之间;在隧道模式下,ESP头在整个源IP数据项之前。查找:只有当与此会话相关的有效的SA存在时,才进行ESP处理。包加密:把数据封装到ESP的有效负载字段,在传输模式下,只封装上层协议数据;在隧道模式下、封装整个原IP数据项。应使用由SA指定的密钥和加密算法对上述结果加密。72 接受时的处理过程 当接收方收到一个IP数据项时,先根据包中目的IP地址、安全协议ESP和SPI查找SA,若没有用于此会话的SA存在,则接收者必须丢弃此包,并记入日志,否则就按SA中指定的算法进行解密并重新构造原IP数据项格式。73IKE(Internet Key Exchange)协议 IKE主要完成两个作用:安全关联的集中化管理,减少连接时间;密钥的生成和管理。IKE协议是IPSec目前唯一的正式确定的密钥交换协议,它为AH和ESP提供密钥交换支持,同时也支持其他机制,加密钥协商。IKE是由另外三种协议(ISAKMP、Oakley 和SKEME)混合而成的一种协议。74实验:利用IPSec保证远程数据传输安全性任任务务:在在windows server 2019/2019和和winxp上上配配置置IPSec策略策略,验验证证配配置置IPSec策策略略后后,通通过过抓抓包包工工具具抓抓取取两两台台机机器器上上的通信数据,检查数据是否被重新封装的通信数据,检查数据是否被重新封装实验环境:实验环境:需要两台虚拟机:(1)Windows server 2019/2019:操作系统为win2019,IP:192.168.134.111,充当telnet服务器(2)winxp:操作系统为winxp,IP:192.168.134.110,安装wireshark/sniffer抓包软件,充当telnet客户端75Windows中的Ipsec安全策略76实验步骤(1)在在win server 2019/2019上开启上开启telnet服务服务服务器管理器服务器管理器-功能功能-添加功能添加功能-telnet服务器服务器-启动服务启动服务(2)由由winxp通过通过telnet登录到登录到win server 2019/2019上,并且开启抓包工具,抓取通信时输入的用户名上,并且开启抓包工具,抓取通信时输入的用户名和密码和密码(3)在在win server 2019/2019上配置上配置IPSec策略,策略,源源是是192.168.134.110或任何地址或任何地址77实验步骤78实验步骤(4)配置完策略指派配置完策略指派(分配)(分配),则策略才能运行,则策略才能运行79实验步骤(5)在在winxp上完成同样的配置,目标主机指向上完成同样的配置,目标主机指向win server 2019/2019的的IP(192.168.134.111),或任何地址),或任何地址(6)再由再由winxp通过通过telnet登录到登录到win server 2019/2019上,并且开启上,并且开启wireshark抓包工具,抓包工具,这时无法这时无法抓到通信时抓到通信时输入的用户名和密码输入的用户名和密码了了。80特别提示:特别提示:IPSec默认是使用默认是使用kerberos来进行身份验证来进行身份验证的的(需要需要域环境域环境)。本实验本实验想在工作组环境下想在工作组环境下实现实现IPSec,只需要将身份,只需要将身份验证验证方法从方法从kerberos改为预共享密钥即可。两台机改为预共享密钥即可。两台机器器设设置同样的共享密钥就可以通过验证建立连置同样的共享密钥就可以通过验证建立连接了。接了。81 PGPPretty Good Privacy(相当好的保密)是由MIT的P.R.Zimmerrmann提出的,主要用于安全电子邮件,它可以对通过网络进行传输的数据创建和检验数字签名、加密、解密以及压缩。PGP 82PGP的功能表功能使用的算法解释说明保密性IDEA、CAST或三重DES,Diffie-Hellman或RSA发送者产生一次性会话密钥,用会话密钥以IDEA或CAST或三重DES加密消息,并用接收者的公钥以Diffie-Hellman或RSA加密会话密钥签名RSA或DSS,MD5或SHA用MD5或SHA对消息散列并用发送者的私钥加密消息摘要压缩ZIP使用ZIP压缩消息,以便于存储和传输E-mail兼容性Radix64交换对E-mail应用提供透明性,将加密消息用Radix64变换成ASCII字符串分段功能-为适应最大消息长度限制,PGP实行分段并重组鉴别 图7.15(a)PGP的操作过程只进行鉴别 其中,图7.15记号的含义为:Ks:会话密钥EP:公钥加密Kra:用户A的私钥DP:公钥解密KUa:用户A的公钥EC:常规加密H:散列函数DC:常规解密|:连接Z:用ZIP算法进行数据压缩R64:用radix64转换到ASCII格式Z-1:解压缩MMHEPH|ZZ-1DP比较EKRaH(M)KRaKUa发送者A接收者BPGP鉴别的过程发送者产生消息M;用SHA-1对M生成一个160位的散列码H;H用发送者的私钥加密,并与M连接;接收者用发送者的公钥解密并恢复散列码H;对消息M生成一个新的散列码,与H比较。如果一致,则消息M被认证,即报文作为已鉴别的报文而接受。(提供DSS/SHA-1可选替代方案和签名与消息分离的支持。)85机密性机密性 PGP提供的另一个基本服务是机密性,它是通过对将要传输的报文或者将要像文件一样存储在本地的报文进行加密来保证的(如图7.15(b)所示)。图7.15(b)PGP的操作过程只保证机密性 KsMMEPECDC|ZZ-1DPKUbEKUbKsKRb86鉴别与机密性与机密性 PGP可以同时提供机密性与鉴别。当加密和认证这两种服务都需要时,发送者先用自己的私钥签名,然后用会话密钥加密,再用接收者的公钥加密会话密钥(如图7.15(c)所示)。图7.15(c)PGP的操作过程鉴别与机密性 MHEP|ZKRaDCDPEKUbKsKRbKsEP|KUbECMHZ-1DP比较EKRaH(M)KUa压缩 PGP对报文进行压缩,这有利于在电子邮件传输和文件存储时节省空间。但压缩算法的放置位置比较重要,在默认的情况下,放在签名之后加密之前。这是因为:对没有经过压缩的报文进行签名更好些。这样,为了将来的验证就只需要存储没压缩的报文和签名。如果对压缩文档签名,那么为了将来的验证就必须或者存储压缩过的报文、或者在需要验证时更新压缩报文;88即使个人愿意在验证时动态生成重新压缩的报文,PGP的压缩算法也存在问题。算法不是固定的,算法的不同实现在运行速度和压缩比上进行不同的折衷,因此产生了不同的压缩形式。但是,这些不同的压缩算法是可以互操作的,因为任何版本的算法都可以正确地解压其他版本的输出。如果在压缩之后应用散列函数和签名,将约束所有的PGP实现都使用同样的压缩算法。在压缩之后对报文加密可以加强加密的强度。因为压缩过的报文比原始明文冗余更少,密码分析更加困难。89电子子邮件的兼容性件的兼容性 当使用PGP时,至少传输报文的一部分需要被加密。因此,部分或全部的结果报文由任意的8bit二进制流组成。但是,很多电子邮件系统只允许使用ASCII文本。为了满足这一约束,PGP提供了将原始8位二进制流转换成可打印的ASCII字符的服务。为实现这一目的采用的方案是Radix64转换,每三个字节的二进制数据为一组映射成四个ASCII字符。这种格式附加了CRC校验来检测传输错误。90分段与重分段与重组 电子邮件设施经常受限于最大的报文长度,例如最大50kb的限制。任何长度超过这个数值的报文都必须划分成更小的报文段,每个段单独发送。为了满足这个约束,PGP自动将太长的报文划分成可以使用电子邮件发送的足够小的报文段。分段是在所有其他的处理(包括Radix64转换)完成之后才进行的,因此会话密钥部分和签名部分只在第一个报文段的开始位置出现一次;在接收端,PGP将各段自动重新装配成完整的原来的分组。91PGP密密钥管理管理 PGP包含四种密钥:一次性会话密钥公开密钥私有密钥基于口令短语的常规密钥92深入研究内容网络安全编程网络安全基础编程技术主要包括6个方面:Socket编程注册表编程文件系统编程定时器编程驻留程序编程多线程编程93Socket编程谈网络安全编程离开网络编程就会大失其味,凡是基于网络应用的程序都离不开Socket。Socket的意思是套接字,是计算机与计算机之间通信的接口。使用Winsock提供的API函数是最基本的网络编程技术,程序proj3_11.cpp利用Socket获得本机的IP地址和机器名。94Socket编程案例名称:使用Socket得到IP地址程序名称:proj3_11.cpp#include#includevoidCheckIP(void)/CheckIP函数,用于获取本机IP地址WORDwVersionRequested;/WORD类型变量,用于存放Winsock版本的值WSADATAwsaData;charname255;/用于存放主机名PHOSTENThostinfo;wVersionRequested=MAKEWORD(2,0);/调用MAKEWORD()函数获得Winsock的版本,用于加载Winsock库if(WSAStartup(wVersionRequested,&wsaData)=0)/加载Winsock库,如果WSAStartup()函数的返回值为0,说明加载成功if(gethostname(name,sizeof(name)=0)/判断是否成功的将本地主机名存放入由name参数指定的缓冲区中if(hostinfo=gethostbyname(name)!=NULL)/如果获得主机名成功的话,调用inet_ntoa()函数取得IP地址LPCSTRip=inet_ntoa(*(structin_addr*)*hostinfo-h_addr_list);printf(本机的IP地址是:%sn,ip);/输出IP地址printf(本机的名称是:%sn,name);WSACleanup();/卸载Winsock库,并释放所有资源intmain()CheckIP();/调用CheckIP()函数获得并输出IP地址return0;95注册表编程注册表的句柄可以由调用RegOpenKeyEx()和RegCreateKeyEx()函数得到的,通过函数RegQueryValueEx()可以查询注册表某一项的值通过函数RegSetValueEx()可以设置注册表某一项的值。RegCreateKeyEx()函数和RegSetValueEx()函数的使用方法如程序proj3_12.cpp所示。96操作注册表操作注册表#include#includemain()HKEYhKey1;DWORDdwDisposition;LONGlRetCode;/创建创建lRetCode=RegCreateKeyEx(HKEY_LOCAL_MACHINE,SOFTWAREMicrosoftWindowsNTCurrentVersionIniFileMappingWebSecurity,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey1,&dwDisposition);/如果创建失败,显示出错信息如果创建失败,显示出错信息if(lRetCode!=ERROR_SUCCESS)printf(ErrorincreatingWebSecuritykeyn);return(0);/设置第一个键值设置第一个键值lRetCode=RegSetValueEx(hKey1,Hack_Name,0,REG_SZ,(byte*)“hubu,100);/设置第二个键值设置第二个键值lRetCode=RegSetValueEx(hKey1,Hack_Hobby,0,REG_SZ,(byte*)Running,100);/如果创建失败,显示出错信息如果创建失败,显示出错信息if(lRetCode!=ERROR_SUCCESS)printf(ErrorinsettingSection1valuen);return(0);printf(注册表编写成功!注册表编写成功!n);return(0);97文件系统编程文件系统编程非常的重要,可以在文件系统编程非常的重要,可以在DOS命令行下执行的操作都可以使用程序实现。命令行下执行的操作都可以使用程序实现。在在DOS命令行下使用命令命令行下使用命令“netuserHacker/add”添加一个用户,同样可以在程序中实现,如程序添加一个用户,同样可以在程序中实现,如程序proj3_15.cpp所示所示。案例名称:添加系统用户案例名称:添加系统用户程序名称:程序名称:proj3_15.cpp#include#includemain()char*szCMD=netuserHacker/add;BOOLbSuccess;PROCESS_INFORMATIONpiProcInfo;STARTUPINFOInfo;Info.cb=sizeof(STARTUPINFO);Info.lpReserved=NULL;Info.lpDesktop=NULL;Info.lpTitle=NULL;Info.cbReserved2=0;Info.lpReserved2=NULL;bSuccess=CreateProcess(NULL,szCMD,NULL,NULL,false,NULL,NULL,NULL,&Info,&piProcInfo);if(!bSuccess)printf(创建进程失败!创建进程失败!);return1;98定时器编程著名的“CIH病毒”每年定时发作,其中需要利用定时器来控制程序的执行。定时器程序分成两大类,一类是循环执行另一类是根据条件只执行一次。在程序中加载定时器,如程序proj3_18所示。99定时器编程定时器编程案例名称:定时器编程案例名称:定时器编程程序名称:程序名称:proj3_18.cpp#includeWNDCLASSwc;HWNDh_wnd;MSGmsg;/*消息处理函数消息处理函数wndProc的声明的声明*/longWINAPIWindowProc(HWND,UINT,WPARAM,LPARAM);/*winMain函数的声明函数的声明*/intPASCALWinMain(HINSTANCEh_CurInstance,HINSTANCEh_PrevInstance,LPSTRp_CmdLine,intm_Show)/*初始化初始化wndclass结构变量结构变量*/wc.lpfnWndProc=WindowProc;wc.hInstance=h_CurInstance;wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wc.lpszClassName=TheMainClass;/*注册注册WndClass结构变量结构变量*/RegisterClass(&wc);/*创建窗口创建窗口*/h_wnd=CreateWindow(TheMainClass,OurfirstWindow,WS_OVERLAPPEDWINDOW,0,0,400,500,0,0,h_CurInstance,0);/*显示窗口显示窗口*/ShowWindow(h_wnd,SW_SHOWMAXIMIZED);/*消息循环消息循环*/while(GetMessage(&msg,NULL,0,0)DispatchMessage(&msg);return(msg.wParam);#defineID_TIMER1100定时器编程定时器编程/*定义消息处理函数定义消息处理函数*/longWINAPIWindowProc(HWNDh_wnd,UINTWinMsg,WPARAMw_param,LPARAMl_param)staticBOOLfFlipFlop=FALSE;HBRUSHhBrush;HDChdc;PAINTSTRUCTps;RECTrc;switch
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!