HTTPS协议分析.ppt

上传人:牧羊曲112 文档编号:5433740 上传时间:2023-07-06 格式:PPT 页数:30 大小:490.50KB
返回 下载 相关 举报
HTTPS协议分析.ppt_第1页
第1页 / 共30页
HTTPS协议分析.ppt_第2页
第2页 / 共30页
HTTPS协议分析.ppt_第3页
第3页 / 共30页
HTTPS协议分析.ppt_第4页
第4页 / 共30页
HTTPS协议分析.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《HTTPS协议分析.ppt》由会员分享,可在线阅读,更多相关《HTTPS协议分析.ppt(30页珍藏版)》请在三一办公上搜索。

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

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

3、是与SSLv3.0有细微的差别。因此,SSL协议有时也称为TLS协议。目前常用的是TLSv1.0的协议。,SSL协议介绍,SSL协议的功能1)保证传输数据的保密性2)保证传输数据的完整性3)实现通信双方的互相身份认证,SSL协议介绍,SSL协议在协议栈的位置,IP协议,TCP协议,HTTP、TELNET、FTP等应用层协议,SSL协议介绍,SSL 协议是一个分层的协议,共有两层组成。高层协议包括:SSL 握手协议(SSL HandshakeProtocol)、改变加密约定协议(Change Cipher Spec Protocol)、报警协议(AlertProtocol)处于 SSL 协议的底

4、层的是:SSL记录层协议(SSL Record Protocol),SSL记录协议,SSL的记录协议记录层协议实际上是一个简单的封装或者说是“打包”协议。记录可能是明文传送的,也可能是被加密传送的,纪录协议的功能保证消息的完整性机密性,SSL记录协议,SSL记录的结构示意图:,类型:有握手协议、报警协议、改变加密约定协议、应用数据等四种,加密数据,可分解为,数据,HMAC,填充*,填充长度*,注:HMAC:Keyed-Hash Message Authentication Code(消息验证码),SSL记录协议,MAC(Message Authentication Code)消息验证码消息验证

5、码也称为消息摘要,是实现数据完整性的主要手段。主要目的是认证消息、检验数据是否被篡改。目前常用的消息摘要算法有MD5(Message-Digest Algorithm 5)和SHA(Secure Hash Algorithm)。SSL中的摘要算法是:HMAC 即 Keyed-Hash Message Authentication Code。HMAC 是在使用消息摘要函数(例如 MD5 等)的同时,增加了一个“密钥”作为输入。,SSL记录协议,SSL记录协议封装过程,类型,版本,长度,数据,HMAC*,填充*,填充长度*,1、填写”记录头信息”中的”版本”和”类型”,*2、如果协商了压缩算法则压

6、缩“数据”,3、计算并附加MAC,*4、计算“填充长度”,填写“填充字段”并“加密”,5、填写记录头信息中的“长度”,SSL记录协议,SSL记录协议解封装过程,类型,版本,长度,数据,HMAC*,填充*,填充长度*,1、读取”记录头信息”中的”版本”,2、根据长度读入记录“数据”部分,3、去掉“填充长度”和“填充“字段,*4、检查并去掉MAC,5、如果协商了压缩算法则解压“数据”,SSL握手协议,SSL 握手协议是SSL 协议中最重要同时也是最复杂的协议。SSL握手协议主要负责如下工作:算法协商身份验证确定密钥,SSL握手协议,SSL握手过程分为四种:Full Handshake:全流程握手,

7、C/S双方从无到有建立SSL连接;Resum session Handshake:C/S双方曾经建立过连接,但中途断了,SSL会话信息还有保留,只需要执行部分握手流程就可建立SSL连接;Server Re-negotiation Handshake:已经建立了SSL连接,但server端为了某些原因(比如安全性)要求重新对密钥进行协商,也只需要执行部分握手流程;Client Re-negotiation Handshake:已经建立SSL连接,但client端为了某些原因要求重新协商,只需执行部分握手流程。,全流程握手(Full Handshake),携带客户的SSL版本号,加密套件列表,压缩

8、算法列表,客户端随机数,sessionid=0;传送给服务器,Server HelloServer Certificate*Client Certificate Requst*Server Hello done,*Client CertificateClient Key Exchang*Certificate verifyChange Cipher SpecClient finished Message,Client hello,Change Cipher SpecServer finished Message,Application Data,Application Data,服务器选择版本

9、,确定要用的加密套件、压缩算法,计算sessionid,以及随机数发给客户端,服务器将自己的证书发送给客户端,服务端向客户端索要证书,服务端通知客户端握手消息发送完成,客户端向服务器端发送自己的证书,客户端密钥交换(产生预主密钥(preMasterKey),客户端证书验证,让服务器验证发消息的客户端和客户端证书的真实所有者,改变加密约定消息,通知服务端,之后的消息开始启用加密参数,客户端的SSL协商成功结束,发送握手验证报文确保消息的完整性,服务器端的SSL协商成功结束,发送握手验证报文确保消息的完整性,改变加密约定消息,通知客户端,之后的消息开始启用加密参数,应用数据传送,下一页,携带客户的

10、SSL版本号,加密套件列表,压缩算法列表,客户端随机数,sessionid=0;传送给服务器,Client hello,客户端给服务器端发个hello的问候,问候里包含有它使用的SSL版本号、加密套件列表,压缩算法列表,客户端随机数,sessionid=0;,服务器收到客户端的问候后,会从客户端提供的版本号中选出双方都支持的最高版本,从加密套件列表选择一种支持也安全性强的加密套件,从压缩算法列表选择压缩算法(一般为空)。,返回,Client hello,服务器端将上述选择的加密套件,压缩算法(NULL),且计算一个session_id,和服务器端随机数发送给客户端,服务器选择版本,确定要用的加

11、密套件、压缩算法,计算sessionid,以及随机数发给客户端,Server hello,客户端收到serverhello的报文会将加密套件,压缩算法(NULL),session_id,和服务器端随机数缓存起来。接着继续握手过程。,返回,Server hello,服务器将自己的证书发送给客户端,Server Certificate*,服务器端将自己的证书发送给客户端,证明自己的身份。证书中包含有服务器的身份信息,以及服务器的公钥。,客户端收到Certificate报文会验证该证书是否过期,并将服务器的公钥缓存起来。,返回,Server Certificate*,Client Certifica

12、te Requst*,如果是SSL的双向认证的话,那么服务器端会向客户端发送client cert request 消息,索要客户端的证书,证书中包含有server端支持的证书类型,和所信任的所有证书发行机构(CA(Certificate Authority)列表。,客户端收到Client Certificate Requst报文将消息中的证书类型列表和可信任证书发行机构列表保存下来,可在后面发送客户端证书时候拿来筛选证书用。,服务端向客户端索要证书,返回,Client Certificate Requst*,Server Hello done,服务器端通知客户端这一步的握手消息发送完成。等待

13、客户端确认。,服务端通知客户端握手消息发送完成,返回,Server Hello done,*Client Certificate,客户端从之前收到server端发的cert request消息中的支持的证书类型列表和信任的根CA(Certificate Authentication)列表中选择满足条件的第一个证书发送给服务器。,客户端向服务器端发送自己的证书,服务器端会缓存客户端的公钥。,返回,*Client Certificate,Client Key Exchang,若为RSA加密,客户端则产生一个48位随机数作为pre-master(预主密钥)并用服务器公钥加密后发出去。,客户端向服务器

14、端发送一个48位的预主密钥,服务器端缓存预主密钥。,返回,Client Key Exchang,*Certificate verify,客户端证让服务器验证发消息的客户端和客户端证书的真实性,由于之前的Client Certificate消息中包含有客户端的公钥,因此用公钥解密该消息,验证客户端的真实性。,Certificate verify这个消息中要包含一个签名,签名里头内容就是从client hello开始到目前为止所有握手消息(不包括本消息)的摘要,然后用客户端的私钥加密。,返回,*Certificate verify,Change Cipher Spec,改变加密约定消息,通知服务端

15、,之后的消息开始启用加密参数,在发送该消息的同时,客户端会把之前的客户端随机数,服务器端随机数、以及预主钥产生一个主密钥。并将主密钥进行密钥导出(服务器端的写MAC密钥、客户端写MAC密钥、服务器端的写密钥、客户端的写密钥),该过程只在本地进行,不发送给对方。,Change Cipher Spec该消息只有一个值为1的字节。不属于握手协议,和握手协议同一级别的改变加密约定协议。发送该消息的作用是为了告诉对方接下来的消息将采用新协商的加密套件和密钥进行通信。,返回,Change Cipher Spec,Client finished Message,客户端的SSL协商成功结束,发送握手验证报文确

16、保消息的完整性,这是客户端SSL协商成功结束的消息。也是第一个用协商好的密钥加密的消息。会把从client hello一直到现在的数据摘要,用客户端密钥加密,发送给服务器。确保握手过程的完整性和机密性。,返回,Client finished Message,SSL握手协议,加密套件列表:列表中包含了Client端支持的所有密钥套件。一个密钥套件定义了一个密钥规格,其中描述如下 内容:密钥交换算法(非对称加密算法),是否出口对称加密算法支持的最高对称密钥位数MAC(Message Authentication Code)算法(或摘要算法)。例:SSL_RSA_WITH_RC4_128_MD5=0 x0004/*非对称加密算法或密钥交换算法为RSA,采用高强度128位对称加密算法RC4,摘要或MAC算法为MD5,不支持出口*/,SSL握手协议,非对称加密算法和对称加密算法,明文:ABCDEF,密文:*,加密运算,密钥A,密文:*,发送报文,接受报文,明文:ABCDEF,密钥B,解密运算,图 非对称加密,明文:ABCDEF,密文:*,加密运算,密钥A,密文:*,发送报文,接受报文,明文:ABCDEF,密钥A,解密运算,图 对称加密,总结,总结:介绍了HTTPS协议介绍了SSL协议的历史和体系结构介绍了SSL的记录协议的结构,封装和解封装流程介绍了SSL握手流程,谢谢,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号