第7讲传输层安全_第1页
第7讲传输层安全_第2页
第7讲传输层安全_第3页
第7讲传输层安全_第4页
第7讲传输层安全_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第七讲传输层安全提纲TCP/IP安全方法SSLTLSHTTPSSSHTCP/IP安全方法TCP/IP协议栈中的安全设施的相对位置Ipsec的好处是对终端用户和应用是透明的,能提供一种一般性的解决方案SSL或TLS都是可执行协议软件包的一部分,从而对应用是透明的,Netscape进而IE都配置了SSL。大部分Web服务器都实现了该协议。SSL(SecureSocketLayer)SSL(SecuritySocketLayer安全套接层)最初1994年Netscape开发,专门用于保护Web通讯.保护浏览器和服务器之间的通信,在客户和服务器之间提供服务器鉴别、可选客户鉴别和加密通信信道。使用TCP提供一种可靠的端对端的安全服务。版本和历史1.0,不成熟2.0,基本上解决了Web通讯的安全问题Microsoft公司发布了PCT(PrivateCommunicationTechnology),并在IE中支持3.0,1996年发布,增加了一些算法,修改了一些缺陷TLS1.0(TransportLayerSecurity传输层安全协议,也被称为SSL3.1),1997年IETF发布了Draft,同时,Microsoft宣布放弃PCT,与Netscape一起支持TLS1.01999年,发布RFC2246(TheTLSProtocolv1.0)功能客户端验证服务器客户段与服务器选择彼此支持的算法服务器验证客户端(可选)使用公开密钥算法产生共享的密钥SSL连接建立VersionSourceDescriptionBrowserSupportSSLv2.0VendorStandard(fromNetscapeCorp.)[SSL2]FirstSSLprotocolforwhichimplementationsexist-NSNavigator1.x/2.x-MSIE3.x-Lynx/2.8+OpenSSLSSLv3.0ExpiredInternetDraft(fromNetscapeCorp.)[SSL3]Revisionstopreventspecificsecurityattacks,addnon-RSAciphersandsupportforcertificatechains-NSNavigator2.x/3.x/4.x-MSIE3.x/4.x-Lynx/2.8+OpenSSLTLSv1.0ProposedInternetStandard(fromIETF)[TLS1]RevisionofSSL3.0toupdatetheMAClayertoHMAC,addblockpaddingforblockciphers,messageorderstandardizationandmorealertmessages.-Lynx/2.8+OpenSSLSSL协议的版本SSL3.0增加了对证书链加载的支持。使服务器可以将自己的服务器证书和发行者的证书一起传给浏览器。证书链的加载,使得客户机即使没有安装过服务器的中间证书,也可以来验证服务器证书的有效性,因为服务器的中间证书被放在证书链中一起发送给了客户机。SSL2.0协议只适用RSA密钥交换方式,而SSL3.0不仅支持RSA密钥交换(在使用证书的情况下),还支持Diffie-Hellman密钥交换(在没有使用证书或者没有客户端和服务器之间通信密钥之前的情况下。)7层模型的第4层(传输层)实际上在四层的上部:TCP不需要更改操作系统TCP提供了可靠的消息传输SSL协议的位置SSL协议可用于保护正常运行于TCP之上的任何应用协议,如HTTP、FTP、SMTP或Telnet的通信,最常见的是用SSL来保护HTTP的通信。协议的使用https://与shttp://SSLArchitecture包括SSL记录协议和三个高层协议(握手协议、密钥更改规格协议、报警协议)SSL记录协议对各种更高级的协议提供基本的安全服务。SSLconnectionatransient,peer-to-peer,communicationslinkassociatedwith1SSLsessionSSLsessionanassociationbetweenclient&servercreatedbytheHandshakeProtocoldefineasetofcryptographicparametersmaybesharedbymultipleSSLconnections

避免每条连接需要进行的代价高昂的新的安全参数协商过程SSL参数会话状态参数会话标识符:由服务器产生用于标识活动的或可恢复的会话状态的一个任意字节序列对等证书:对等的X.509V3证书压缩方法:加密前用于压缩数据的算法密码规格:大块数据加密算法,计算MAC的散列算法主密钥:48字节的会话密钥可恢复性:能否把会话用于创建新连接的标志比特连接状态参数服务器和客户端随机数:服务器写MAC密钥:服务器发送数据时用于计算MAC的密钥客户端写MAC密钥:客户端发送数据时用于计算MAC的密钥服务器写密钥:服务器用于加密数据、客户端用于解密数据的密钥客户端写密钥:客户端用于加密数据、服务器用于解密数据的密钥初始化向量:当CBC模式中的数据块正在使用时,需要为每个密钥配置一个初始化向量。之后的IV值为前一次分组密码算法的最后一个密文分组序列号SSLRecordProtocolServicesConfidentiality机密性usingsymmetricencryptionwithasharedsecretkeydefinedbyHandshakeProtocolAES,IDEA,RC2-40,DES-40,DES,3DES,Fortezza,RC4-40,RC4-128messageiscompressedbeforeencryptionmessageintegrity消息完整性usingaMACwithsharedsecretkeysimilartoHMACbutwithdifferentpaddingSSL记录协议每个这样的段最大为2^14-1=16383个字节。从原始数据段到生成SSL明文分段、SSL压缩、SSL密文(加密步骤)SSL记录格式SSL记录头部包括:内容类型(8位)--可以是修改密码协议、报警协议、握手协议、应用数据四种主版本号(8位)副版本号(8位)压缩长度(16位)-以字节为单位的明文分段(压缩分段)长度ContentTypeMajorVersionMinorVersionCompressedLengthPlaintext(optionallycompressed)MAC(0,16,or20bytes)Encrypted1(a)ChangeCipherSpecProtocol1byte(c)HandshakeProtocolType1byteLengthContent3bytes3bytes(b)AlertProtocolLevel1byteAlert1byte(d)OtherUpperLayerProtocolasTLSPayloadContentUpto214+2048bytesSSL记录协议负载SSL修改密文协议协议由单个消息组成,该消息只包含一个值为1的单个字节。该消息的唯一作用就是使未决状态拷贝为当前状态,更新用于当前连接的密码组。为了保障SSL传输过程的安全性,双方应该每隔一段时间改变加密规范。SSL告警协议为对等实体传递SSL的相关警告。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。警示消息有两种

Fatal错误,如传递数据过程中,发现错误的MAC,双方就需要立即中断会话,同时消除自己缓冲区相应的会话记录;

Warning消息,这种情况,通信双方通常都只是记录日志,而对通信过程不造成任何影响。(对警告的内容做了相关的约定)SSL握手协议1使得服务器和客户能够相互鉴别对方,协商具体的加密算法和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据SSL握手协议允许通信实体在交换应用数据之前协商密钥的算法、加密密钥和对客户端进行认证(可选)的协议,为下一步记录协议要使用的密钥信息进行协商,使客户端和服务器建立并保持安全通信的状态信息。SSL握手协议是在任何应用程序数据传输之前使用的。SSL握手协议包含四个阶段:建立安全能力;服务器鉴别和密钥交换;客户鉴别和密钥交换;完成握手协议。建立安全能力服务器认证和密钥交换客户端认证和密钥交换完成SSL握手协议细节第一阶段客户端发起建立连接请求Client_hello消息

Version:客户端SSL的最高版本号Random:随机序列32位时间戳+28字节随机数(防重放攻击),用于生成主秘密。SessionID:会话ID非零值表示用户希望重用现有会话的参数;零值表示客户端希望建立新的会话ID并协商安全参数

CipherSuite:密码构件,客户端可以支持的密码算法组合(以优先递减顺序给出)CompressionMethod:客户端支持的压缩方法列表ServerHello信息Version:取客户端支持的最高版本号和服务端支持的最高版本号中的较低者。Random:用于生成主秘密的32字节的随机数。(客户端一个、服务端一个)会话ID:如果client_hello中的会话ID非零,则差找相应存储的会话参数,反馈用原值,为零则产生一个新的会话ID从客户端的密码套件列表中选择的一个密码套件,若用原会话ID,则直接用相应参数从客户端的压缩方法的列表中选择的压缩方法SSL握手协议细节密码套件列表参数密钥交换方法(6种:无效(没有密钥交换)、RSA、匿名Diffie-Hellman、EphemeralDiffie-Hellman、FixedDiffie-Hellman、Fortezza);

块加密算法(AES,IDEA,RC2-40,DES-40,DES,3DES,Fortezza,RC4-40,RC4-128)MAC算法(MD5,SHA-1)FixedDiffie-Hellman

公钥证书中包含固定的Diffie-Hellman公钥参数EphemeralDiffie-Hellman

Diffie-Hellman公钥参数使用发送者的RSA私钥或DSS密钥的方式被交换和签名,可以获得一个临时的被认证的密钥SSL握手协议细节列举JSSE支持的几个套件:

SSL_RSA_WITH_RC4_128_MD5=0x0004

/*非对称加密算法或密钥交换算法为RSA,采用高强度128位对称加密算法RC4,摘要或MAC算法为MD5,不支持出口*/

SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA=0x0014

/*非对称加密算法或密钥交换算法支持RSA和DH,采用40位对称加密算法DES,摘要或MAC算法为SHA,可以出口*/

JSSE,即Java(TM)SecureSocketExtension。JSSE是基于安全算法和握手机制之上的合成体。JSSE将危险的安全弱点降到最低点,并且它减轻了开发者的负担,使得开发者可以很轻松的整合到程序中。

SSL(SecureSocketsLayer)是JSSE中的重要的部分。OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台使用同样熟悉的东西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得OpenSSL具有广泛的适用性。1998年,OpenSSL项目组接管了OpenSSL的开发工作,并推出了OpenSSL的0.9.1版,到目前为止,OpenSSL的算法已经非常完善,对SSL2.0、SSL3.0以及TLS1.0都支持。SSL握手协议细节第二阶段服务器认证和密钥交换证书:服务器将数字证书和到根CA整个链发给客户端,使客户端能用服务器证书中的服务器公钥认证服务器。服务器密钥交换(可选):这里视密钥交换算法而定证书请求:服务端可能会要求客户自身进行验证。服务器握手完成:第二阶段的结束,第三阶段开始的信号SSL握手协议细节如果协商过程中确定使用RSA交换密钥,SSL握手协议细节证书(可选):为了对服务器证明自身,客户要发送一个证书信息,这是可选的,在IIS中可以配置强制客户端证书认证。客户机密钥交换(Pre-master-secret):这里客户端将预备主密钥发送给服务端,注意这里会使用服务端的公钥进行加密。证书验证(可选),对预备秘密和随机数进行签名,证明自己拥有证书的私钥。SSL握手协议细节Client发送消息给服务器确认将来客户端将会用会话密钥,然后客户端发送一个消息(加密的)指示服务器客户端握手部分结束。Server发送消息给客户端确认服务器端将会使用会话秘钥,然后服务端发送一个消息(加密的)指示客户端服务器握手部分结束。SSL握手结束,SSL会话开始。C与S使用会话密钥来加解密相互发送的数据以及验证消息的完整性。CryptographicComputationsmastersecretcreationaone-time48-bytevaluegeneratedusingsecurekeyexchange(RSA/Diffie-Hellman)andthenhashinginfogenerationofcryptographicparametersclientwriteMACsecret,aserverwriteMACsecret,aclientwritekey,aserverwritekey,aclientwriteIV,andaserverwriteIV

generatedbyhashingmastersecret密钥计算过程SSL协议安全性分析鉴别机制公开密钥技术和数字证书可以实现客户端和服务器端的身份鉴别。加密机制

混合密码体制的使用提供了会话和数据传输的加密性保护。双方使用非对称密码体制协商出本次将要使用的会话密钥,并选择一种对称加密算法。完整性机制

定义了共享的、可以用来形成报文鉴别码MAC的密钥。数据进行分片压缩后,使用单向散列函数产生一个MAC,加密后置于数据包的后部,并且再一次和数据一起被加密,然后加上SSL首部进行网络传输。 这样,如果数据被修改,其散列值就无法和原来的MAC相匹配,从而保证了数据的完整性。抗重放攻击

SSL使用序列号来保护通信方免受报文重放攻击。这个序列号被加密后作为数据包的负载。 在整个SSL握手中,都有一个唯一的随机数来标记这个SSL握手,这样重放便无机可乘。SSL协议安全性分析SSL脆弱性分析客户端假冒因为SSL协议设计初衷是对Web站点及网上交易进行安全性保护,使消费者明白正在和谁进行交易要比使商家知道谁正在付费更为重要,为了不致于由于安全协议的使用而导致网络性能大幅下降,SSL协议并不是默认地要求进行客户鉴别,这样做虽然有悖于安全策略,但却促进了SSL的广泛应用。针对这个问题,可在必要的时候配置SSL协议,使其选择对客户端进行认证鉴别。无法提供基于UDP应用的安全保护SSL协议需要在握手之前建立TCP连接,因此不能对UDP应用进行保护。如果要兼顾UDP协议层之上的安全保护,可以采用IP层的安全解决方案。SSL协议不能对抗通信流量分析由于SSL只对应用数据进行保护,数据包的IP头和TCP头仍然暴露在外,通过检查没有加密的IP源和目的地址以及TCP端口号或者检查通信数据量,一个通信分析者依然可以揭示哪一方在使用什么服务,有时甚至揭露商业或私人关系的秘密。进程中主密钥泄漏除非SSL的工程实现大部分驻留在硬件中,否则主密钥将会存留在主机的主存储器中,这就意味着任何可以读取SSL进程存储空间的攻击者都能读取主密钥,因此,不可能面对掌握机器管理特权的攻击者而保护SSL连接,这个问题要依靠用户管理策略来解决。SSL脆弱性分析磁盘上的临时文件可能遭受攻击对于使用虚拟内存的操作系统,不可避免地有些敏感数据甚至主密钥都交换到存盘上,可采取内存加锁和及时删除磁盘临时文件等措施来降低风险安全盲点系统管理员不能使用现有的安全漏洞扫描或网络入侵检测系统来审查或监控网络上的SSL交易。加密技术使得通过网络传输的信息无法让IDS辨认.使得最重要的服务器反而成为受到最少防护的服务器。对此,恶意代码检测、增强的日志功能等基于主机的安全策略会成为最后防线。SSL脆弱性分析SSL的评价SSL仍然不失为一套全面完善的安全策略中有效的组成元素。然而,与网络安全的其它工具软件一样,仅使用单一的防护软件都是远远不够的。对SSL的过高评价有可能带来高的安全风险,它仅仅是网络安全工具的一种,必须和其它网络安全工具紧密结合,方能构造出全面、完善、安全可靠的网络。传输层安全(TLS)RFC5246非常接近于SSLv3记录格式与SSL完全相同不同消息认证码的计算使用了RFC2104定义的HMAC算法;而SSL也使用相同算法,只是填充部分采用了与密钥串接的方式而不是异或方式,安全强度基本相同定义了更多的报警码密钥构建细小差别TLS不支持Fortezza密钥计算HTTPsHTTP和SSL结合实现网络浏览器和服务器之间的安全通信,RFC2818HTTPS和HTTP的区别https协议需要到CA申请证书,一般免费证书很少,需要交费。http信息是明文传输,https则是具有安全性的SSL加密传输协议。http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。HTTPs解决的问题信任主机的问题.采用https的服务器必须从CA申请一个用于证明服务器用途类型的证书。目前所有的银行系统网站,关键部分应用都是https的。客户通过信任该证书,从而信任了该主机。通讯过程中的数据的泄密和被篡改一般意义上的https,就是服务器有一个证书。保证服务器是他声称的服务器。

服务端和客户端之间的所有通讯,都是加密的。客户端产生一对称的密钥,通过服务器的证书来交换密钥所有的信息往来都加密

少许对客户端有要求的情况下,会要求客户端也必须有一个证书。除了用户名/密码,还有一个CA认证过的身份。个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体。SSH(SecureShell

)一、信任主机的问题.采用https的服务器必须从CA(CertificateAuthority)申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。所以目前所有的银行系统网站,关键部分应用都是https的。客户通过信任该证书,从而信任了该主机。其实这样做效率很低,但是银行更侧重安全。这一点对我们没有任何异议,我们的服务器,采用的证书不管是自己发布的还是从公众的地方发布的,其客户端都是自己人,所以我们也就肯定信任该服务器。二、通讯过程中的数据的泄密和被篡改1.一般意义上的https,就是服务器有一个证书。a)主要目的是保证服务器就是他声称的服务器,这个跟第一点一样。b)

服务端和客户端之间的所有通讯,都是加密的。i.具体讲,是客户端产生一个对称的密钥,通过服务器的证书来交换密钥,即一般意义上的握手过程。ii.接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。2.少许对客户端有要求的情况下,会要求客户端也必须有一个证书。a)这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA认证过的身份。因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份。b)目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体。

[protocolforsecurenetworkcommunicationsdesignedtobesimple&inexpensiveSSH1providedsecureremotelogonfacilityreplaceTELNET&otherinsecureschemesalsohasmoregeneralclient/servercapabilitySSH2fixesanumberofsecurityflawsdocumentedinRFCs4250through4254SSHclients&serversarewidelyavailablemethodofchoiceforremotelogin/XtunnelsSSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH客户端适用于多种平台。

几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平台—都可运行SSH。SSH(SecureShell

)SSH(SecureShell

)SSHTransportLayerProtocolserverauthenticationoccursattransportlayer,basedonserver/hostkeypair(s)serverauthenticationrequiresclientstoknowhostkeysinadvance(客户端本地数据库保存,服务器公钥或者CA根密钥)packetexchangeestablishTCPconnectioncanthenexchangedataidentificationstringexchange(识别字符串交换)这些字符用于Diffie-Hellman密钥交换,algorithmnegotiation(算法协商)给出算法清单,包括密钥交换、加密、MAC算法和压缩算法(p136)

keyexchange(密钥交换),Diffie-Hellman服务器用私钥签名endofkeyexchange,(密钥生成-协商后的密钥做hash运算)servicerequest请求获得身份认证usingspecifiedpacketformat(分组长度、填充域长度、压缩的有效载荷、SSHUserAuthenticationProtocolauthenticatesclienttoserverthreemessagetypes:SSH_MSG_USERAUTH_REQUESTSSH_MSG_USERAUTH_FAILURESSH_MSG_USERAUTH_SUCCESSauthe

温馨提示

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

评论

0/150

提交评论