第四章身份认证技术-SSL协议_第1页
第四章身份认证技术-SSL协议_第2页
第四章身份认证技术-SSL协议_第3页
第四章身份认证技术-SSL协议_第4页
第四章身份认证技术-SSL协议_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

SSL,SecureSocketLayerTLS,TransportLayerSecurity参考资料密码编码学与网络安全:原理与实践第14章WilliamStallings电子工业出版社SSL连接像TCP的套接字那样SSL的目标SSL(SecureSocketLayer)是一种在TCP协议之上为两个端实体(EndEntity)之间提供安全通道的协议。包括SSLv2、SSLv3、TLS协议应用层IPTCPSSLSSL的历史Netscape公司于1994开发

SSLv2releasedin1995SSLv3alsoreleasedin1995duetobugsinv2

Microsoft提出PCT(PrivateCommunicationTechnology)1996年IETF成立

TransportLayerSecurity(TLS)committeeTLSv1wasbaseduponSSLv3

Netscape、Microsoft都支持TLSv1TLS1与SSL3的差别非常微小。SSL提供3个方面的安全服务-认证认证-利用数字证书技术和可信任的第三方认证机构,为客户机和服务器之间的通信提供身份认证功能,以便于彼此之间进行身份识别-使用

X.509v3数字证书客户对服务器的身份认证(可选)SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。服务器对客户的身份认证可通过公钥技术和证书进行认证,也可通过用户名,password来认证。SSL提供3个方面的安全服务

-机密性和完整性机密性-在SSL客户机和服务器之间传输的所有数据都经过了加密处理,以防止非法用户进行窃取、篡改和冒充。usingoneofDES,TripleDES,IDEA,RC2,RC4,…完整性-SSL利用加密算法和Hash函数来保证客户机和服务器之间传输的数据的完整性。usingMACwithMD5orSHA-1建立服务器与客户之间安全的数据通道SSL要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性SSL提供的安全服务用户和服务器的合法性认证usingX.509v3digitalcertificates传输数据的机密性usingoneofDES,TripleDES,IDEA,RC2,RC4,…传输数据的完整性usingMACwithMD5orSHA-1SSL结构-两层握手协议:用于在客户与服务器之间建立安全连接之前交换安全信息客户和服务器之间相互认证协商加密算法和密钥它提供连接安全性,有三个特点身份认证,至少对一方实现认证(对服务器的),也可以是双向认证协商得到的共享密钥是安全的,中间人不能够知道协商过程本身是可靠的记录协议建立在可靠的传输层协议(TCP)上它提供连接安全性,有两个特点保密性,使用了对称加密算法完整性,使用HMAC算法用来封装上层的协议改变密码规格协议告警协议SSL工作原理采用握手协议建立客户与服务器之间的安全通道,该协议包括双方的相互认证,交换密钥参数采用告警协议向对端指示其安全错误采用改变密码规格协议告知改变密码参数采用记录协议封装以上三种协议或应用层数据SSL基本概念

连接(Connection)和会话(Session)连接:连接是能提供合适服务类型的传输(在OSI分层模型中的定义);对SSL,这样的连接是对等关系;连接是暂时的,每个连接都和一个会话相关会话:SSL会话是指在客户机和服务器之间的关联;会话由握手协议创建;会话定义了一组可以被多个连接共用的密码安全参数对于每个连接,可以利用会话来避免对新的安全参数进行代价昂贵的协商。会话是虚拟的结构会话状态参数连接状态参数SSLHandshake握手协议SSL最复杂部分服务器和客户能够相互鉴别对方的身份;协商加密和MAC算法;协商用来保护SSL记录中发送的数据的加密密钥。握手由在客户和服务器之间交换的报文实现。SSL握手协议报文格式ClientServerC>SHandshakeClientHelloVersion3.1random[32]=17083bddaf902e92952026cb884c8b855c71860b2870d6959bc909959e7d99ebciphersuitesTLS_RSA_WITH_RC4_128_MD5TLS_DH_RSA_WITH_DES_CBC_SHA......compressionmethodsNULLS>CHandshakeServerHelloVersion3.1random[32]=27f4389a5b238e…….7d71780b325ee4……session_id[32]=3a0e…………………………….4566cipherSuiteTLS_RSA_WITH_RC4_128_SHAcompressionMethodNULL一建立安全能力ClientHelloSSLClientSSLServerPort443https://www.在SSL上运行HTTP客户发送一个client_hello消息,包括以下参数:

版本、随机数(32位时间戳+28字节随机序列)、会话ID、客户支持的密码算法列表(CipherSuite)、客户支持的压缩方法列表然后,客户等待服务器的server_hello消息SSLClientSSLServerServerHello服务器发送server_hello消息,参数:

客户建议的低版本以及服务器支持的最高版本、服务器产生的随机数、会话ID、服务器从客户建议的密码算法中挑出一套、服务器从客户建议的压缩方法中挑出一个DataEncryption:

RC2-40RC4-128DESDES403DESIDEA

FortezzaMessageDigest:MD5SHA.CipherSuiteAlternativesKeyExchange.

RSAFixedDiffie-HellmanEphemeralDiffie-HellmanAnonymousDiffie-Hellman

FortezzaDataCompression:

PKZipWinZip

gzip

StuffItSSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5SSLClientSSLServerServerCertificate服务器发送certificate消息,消息包含一个X.509证书,或者一条证书链(除了匿名DH之外的密钥交换方法都需要)服务器发送server_key_exchange消息(可选的),有些情况下可以不需要。服务器长期密钥只能用于签名时,签发一个临时的长度较短的密钥消息包含签名,被签名的内容包括两个随机数以及服务器参数ClientCertificateRequest服务器发送certificate_request消息(可选)非匿名server可以向客户请求一个证书包含证书类型和CAsServerDoneMessage服务器发送server_hello_done,然后等待应答二服务器鉴别和密钥交换SSLClientSSLServerClientCertificate客户收到server_done消息后,它根据需要检查服务器提供的证书,并判断server_hello的参数是否可以接受,如果都没有问题的话,发送一个或多个消息给服务器。如果服务器请求证书的话,则客户首先发送一个certificate消息,若客户没有证书,则发送一个no_certificate警告。然后客户发送client_key_exchange消息,消息的内容取决于密钥交换的类型(如果是RSA,则含加密的48字节的PreMasterSecret)。最后,客户发送一个certificate_verify消息(可选),其中包含一个签名,对从第一条消息以来的所有握手消息的HMAC值(用master_secret)进行签名三客户机验证和密钥交换SSL密钥的计算KDF:keyderivationfunction密钥导出函数pre_master_secret的获得-密钥交换算法在hello消息中,双方交换随机数以及各种算法两类密钥交换算法:RSA,客户产生一个48字节的pre_master_secret,然后通过服务器的公钥传递给服务器Diffie-Hellman,双方协商得到的密钥被用作pre_master_secret再从pre_master_secret计算得到master_secretmaster_secret总是48字节长,而pre_master_secret长度不定,取决于密钥交换算法密钥导出函数-MD5、SHA-1或者两者结合确保每个摘要的输出都是不同的pre_master_secretmastersecretClientwriteMACsecretClientwritesecretClientwriteIVServerwriteMACsecretServerwritesecretServerwriteIV密码参数的生成密码参数的生成确保每个摘要的输出都是不同的Key_block导出其他密钥SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5

选用密钥块的次序client_write_MAC_secret=key_block[0,..,15]server_write_MAC_secret=key_block[16,…,31]client_write_key=key_block[32,…,36]server_write_key=key_block[37,…,41]相关密钥生成final_client_write_key=MD5(client_write_key||ClientHello.random||ServerHello.random)[0.…,15]final_server_write_key=MD5(server_write_key||ServerHello.random||ClientHello.random)[0,…,15]client_write_IV=MD5(ClientHello.random||ServerHello.random)[0,…,7]server_write_IV=MD5(ServerHello.random||ClientHello.random)[0,…,7]SSLClientSSLServerC>SS>CC>SS>CEncryptionMACIVEncryptionMACIV密钥交换结果SSLClientSSLServerClientFinishchange_cipher_specchange_cipher_spec

ServerFinish四完成第四阶段建立起一个安全的连接客户发送一个change_cipher_spec消息,并且把协商得到的CipherSuite拷贝到当前连接的状态之中(目前只包含类型号)然后,客户用本次连接协商的算法、密钥参数发送一个finished消息,这条消息可以检查密钥交换和鉴别过程是否已经成功。其中包括一个校验值,对所有以来的消息进行校验。服务器同样发送change_cipher_spec消息和finished消息。握手过程完成,客户和服务器可以传送应用层数据。第一次加密ByIntroducingSSLandCertificatesusingSSLeay-FrederickJ.hirschSSL记录协议(SSLRecordProtocol)操作ByIntroducingSSLandCertificatesusingSSLeay-FrederickJ.hirsch1.分片ByIntroducingSSLandCertificatesusingSSLeay-FrederickJ.hirsch2.压缩无损压缩不会增加1024字节以上长度的内容没有默认压缩算法3.MAC计算4.加密5.封装SSL记录协议提供的服务机密性(confidentiality)报文完整性(messageintegrity)SSL修改密码规格协议由单个报文组成,报文值为1的单个字节将挂起状态变成当前状态,指示在此之后的所有消息都将使用刚刚商定的密码进行加密。SSLAlertProtocol(警告协议)decompressionfailure,handshakefailure,illegalparameterclosenotify,nocertificate,badcertificate,unsupportedcertifi

温馨提示

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

评论

0/150

提交评论