HTTPS协议分析_第1页
HTTPS协议分析_第2页
HTTPS协议分析_第3页
HTTPS协议分析_第4页
HTTPS协议分析_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、HTTPS简介2012-02-10第一节第一节 HTTPSHTTPS简介简介引入: 随着网络通信和电子商务等服务和资源进入人们的日常生活,人们在享受网络带来的各种便利的同时,面临各种各样的安全隐患。 我们经常接触到的就有邮箱登录,网上购物,电子银行等等。这很多是基于 HTTP 协议的。 但HTTPRFC2616最初是在INTERNET上不用密码的应用。因此随着人们对安全性的要求增加。HTTPS协议,为我们提供了面向通道的安全性。目录目录目录nHTTPS简介nSSL协议介绍nSSL记录协议nSSL握手协议HTTPS简介简介nHTTPS(全称:Hypertext Transfer Protocol

2、 over Secure Socket Layer)n是HTTP的安全版nHTTPS默认使用TCP端口443,也可以指定其他的TCP端口。nURI格式 https/:URL一个URI例子: https:/ Sockets Layer)协议。nSSL是Netscape公司发明的一种用于WEB的安全传输协议。 随着时间的推移由于Netscape失去了市场份额,它将SSL的维护工作移交给因特网工程任务组(IETF)。第一个后Netscape版本被重新命名为安全传输层协议(TLS), TLS (Transport Layer Security :RFC 2246)是基于SSL上研发的,但是与SSLv3

3、.0有细微的差别。n因此,SSL协议有时也称为TLS协议。目前常用的是TLSv1.0的协议。SSL协议介绍协议介绍nSSL协议的功能n1)保证传输数据的保密性n2)保证传输数据的完整性n3)实现通信双方的互相身份认证SSL协议介绍协议介绍nSSL协议在协议栈的位置IP协议协议TCP协议协议HTTP、TELNET、FTP等应用层协议等应用层协议SSL记录协议记录协议应用数据应用数据告警告警握手握手ChangeCipherSpecSSL协议介绍协议介绍nSSL 协议是一个分层的协议,共有两层组成。n高层协议包括 :nSSL 握手协议(SSL HandshakeProtocol) 、n改变加密约定协

4、议(Change Cipher Spec Protocol) 、n报警协议(AlertProtocol) n处于 SSL 协议的底层的是:n SSL记录层协议(SSL Record Protocol)SSL记录协议记录协议nSSL的记录协议n记录层协议实际上是一个简单的封装或者说是“打包”协议。记录可能是明文传送的,也可能是被加密传送的,n纪录协议的功能n保证消息的完整性n机密性SSL记录协议记录协议nSSL记录的结构示意图:类型类型版本版本长度长度明文数据明文数据/加密数据加密数据1字节2字节2字节(长度)字节类型类型:有握手协议、报警协议、改变加密约定协议、应用数据等四种有握手协议、报警协

5、议、改变加密约定协议、应用数据等四种加密数据加密数据可分解为数据HMAC填充*填充长度*注:HMAC: Keyed-Hash Message Authentication Code(消息验证码)SSL记录协议记录协议nMAC(Message Authentication Code)消息验证码消息验证码n消息验证码也称为消息摘要,是实现数据完整性的主要手段。n主要目的是认证消息、检验数据是否被篡改。n目前常用的消息摘要算法有MD5(Message-Digest Algorithm 5 ) 和SHA(Secure Hash Algorithm )。nSSL中的摘要算法是:HMAC 即 Keyed-

6、Hash Message Authentication Code。nHMAC 是在使用消息摘要函数(例如 MD5 等)的同时,增加了一个“密钥”作为输入。 SSL记录协议记录协议nSSL记录协议封装过程类型版本长度数据HMAC*填充*填充长度*1、填写”记录头信息”中的”版本”和”类型”*2、如果协商了压缩算法则压缩“数据”3、计算并附加MAC*4、计算“填充长度”,填写“填充字段”并“加密”5、填写记录头信息中的“长度”SSL记录协议记录协议nSSL记录协议解封装过程类型版本长度数据HMAC*填充*填充长度*1、读取”记录头信息”中的”版本”2、根据长度读入记录“数据”部分3、去掉“填充长度

7、”和“填充“字段*4、检查并去掉MAC5、如果协商了压缩算法则解压“数据”SSL握手协议握手协议nSSL 握手协议是SSL 协议中最重要同时也是最复杂的协议。nSSL 握手协议主要负责如下工作握手协议主要负责如下工作:n算法协商 n身份验证n 确定密钥SSL握手协议握手协议nSSL握手过程分为四种:nFull Handshake : 全流程握手,C/S双方从无到有建立SSL连接;nResum session Handshake : C/S双方曾经建立过连接,但中途断了,SSL会话信息还有保留,只需要执行部分握手流程就可建立SSL连接;nServer Re-negotiation Handsha

8、ke : 已经建立了SSL连接,但server端为了某些原因(比如安全性)要求重新对密钥进行协商,也只需要执行部分握手流程;nClient Re-negotiation Handshake : 已经建立SSL连接,但client端为了某些原因要求重新协商,只需执行部分握手流程。n全流程握手(Full Handshake) 携带客户的SSL版本号,加密套件列表,压缩算法列表,客户端随机数,sessionid = 0;传送给服务器Server HelloServer Certificate*Client Certificate Requst*Server Hello done*Client Cer

9、tificateClient Key Exchang*Certificate verifyChange Cipher SpecClient finished MessageClient helloChange Cipher SpecServer finished MessageApplication DataApplication Data服务器选择版本,确定要用的加密套件、压缩算法,计算sessionid,以及随机数发给客户端服务器将自己的证书发送给客户端服务端向客户端索要证书服务端通知客户端握手消息发送完成客户端向服务器端发送自己的证书客户端密钥交换(产生预主密钥(preMasterKey

10、)客户端证书验证,让服务器验证发消息的客户端和客户端证书的真实所有者 改变加密约定消息,通知服务端,之后的消息开始启用加密参数客户端的 SSL 协商成功结束,发送握手验证报文确保消息的完整性服务器端的 SSL 协商成功结束,发送握手验证报文确保消息的完整性改变加密约定消息,通知客户端,之后的消息开始启用加密参数应用数据传送下一页 携带客户的SSL版本号,加密套件列表,压缩算法列表,客户端随机数,sessionid = 0;传送给服务器Client hellon客户端给服务器端发个hello的问候,问候里包含有它使用的SSL版本号、加密套件列表,压缩算法列表,客户端随机数,sessionid =

11、 0;n服务器收到客户端的问候后,会从客户端提供的版本号中选出双方都支持的最高版本, 从加密套件列表选择一种支持也安全性强的加密套件,从压缩算法列表选择压缩算法(一般为空)。返回nClient hellon服务器端将上述选择的加密套件,压缩算法(NULL),且计算一个session_id,和服务器端随机数发送给客户端服务器选择版本,确定要用的加密套件、压缩算法,计算sessionid,以及随机数发给客户端Server hellon客户端收到serverhello的报文会将加密套件,压缩算法(NULL),session_id,和服务器端随机数缓存起来。接着继续握手过程。返回nServer hel

12、lo服务器将自己的证书发送给客户端Server Certificate *n服务器端将自己的证书发送给客户端,证明自己的身份。证书中包含有服务器的身份信息,以及服务器的公钥。n客户端收到Certificate报文会验证该证书是否过期,并将服务器的公钥缓存起来。返回nServer Certificate *Client Certificate Requst*n如果是SSL的双向认证的话 ,那么服务器端会向客户端发送client cert request 消息,索要客户端的证书,证书中包含有server端支持的证书类型,和所信任的所有证书发行机构(CA(Certificate Authority)

13、列表。 n客户端收到Client Certificate Requst报文将消息中的证书类型列表和可信任证书发行机构列表保存下来,可在后面发送客户端证书时候拿来筛选证书用。 服务端向客户端索要证书返回nClient Certificate Requst*Server Hello donen服务器端通知客户端这一步的握手消息发送完成。等待客户端确认。服务端通知客户端握手消息发送完成返回nServer Hello done*Client Certificaten客户端从之前收到server 端发的 cert request 消息中的支持的证书类型列表和信任的根 CA (Certificate Au

14、thentication)列表中选择满足条件的第一个证书发送给服务器。客户端向服务器端发送自己的证书n服务器端会缓存客户端的公钥。返回n*Client CertificateClient Key Exchangn若为RSA加密,客户端则产生一个 48 位随机数作为 pre-master(预主密钥) 并用服务器公钥加密后发出去。 客户端向服务器端发送一个48位的预主密钥n服务器端缓存预主密钥。返回nClient Key Exchang*Certificate verify客户端证让服务器验证发消息的客户端和客户端证书的真实性n由于之前的Client Certificate消息中包含有客户端的公钥

15、,因此用公钥解密该消息,验证客户端的真实性。nCertificate verify这个消息中要包含一个签名,签名里头内容就是从 client hello 开始到目前为止所有握手消息(不包括本消息)的摘要,然后用客户端的私钥加密。返回n*Certificate verifyChange Cipher Spec改变加密约定消息,通知服务端,之后的消息开始启用加密参数n在发送该消息的同时,客户端会把之前的客户端随机数,服务器端随机数、以及预主钥产生一个主密钥。并将主密钥进行密钥导出(服务器端的写MAC密钥、客户端写MAC密钥、服务器端的写密钥、客户端的写密钥),该过程只在本地进行,不发送给对方。nC

16、hange Cipher Spec该消息只有一个值为1的字节。不属于握手协议,和握手协议同一级别的改变加密约定协议。发送该消息的作用是为了告诉对方接下来的消息将采用新协商的加密套件和密钥进行通信。返回nChange Cipher SpecClient finished Message客户端的 SSL 协商成功结束,发送握手验证报文确保消息的完整性n这是客户端SSL协商成功结束的消息。也是第一个用协商好的密钥加密的消息。会把从client hello一直到现在的数据摘要,用客户端密钥加密,发送给服务器。确保握手过程的完整性和机密性。返回nClient finished MessageSSL握手协议握手协议n 加密套件列表加密套件列表:n列表中包含了Client端支持的所有密钥套件。n一个密钥套件定义了一个密钥规格,其中描述如下 内容:n密钥交换算法(非对称加密算法),n是否出口n对称加密算法n支持的最高对称密钥位数nMAC (Message Authentication Code)算法 (或摘要算法)。n例:SSL_RSA_WITH_RC4_128_MD5 = 0 x0004 /* 非对称加密算法或密钥交

温馨提示

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

评论

0/150

提交评论