HTTPS协议的安全握手流程详解
一、引言
随着网络安全问题的日益严重,HTTPS协议逐渐成为互联网上传输数据的标配。
相较于早期的HTTP协议,HTTPS通过引入SSL/TLS加密技术,确保了数据传输过程中的安全性。
本文将详细介绍HTTPS的安全握手流程,让读者了解其在保障数据安全方面的作用。
二、HTTPS概述
HTTPS是Hypertext Transfer Protocol Secure的缩写,它是一个安全版本的HTTP协议。
在HTTPS中,数据传输被加密并通过SSL/TLS协议进行加密处理,确保数据在传输过程中的安全性。
HTTPS的主要目标是防止中间人攻击和数据篡改。
其主要通过五步来实现这个过程:创建SSL/TLS密钥、公钥和私钥交换、数字证书和CA根证书的使用以及证书链的构建。
这些步骤共同构成了HTTPS的安全握手流程。
三、HTTPS安全握手流程详解
HTTPS的安全握手流程主要包括以下几个步骤:客户端发起请求、服务器响应请求并发送证书、客户端验证服务器证书、客户端发送密钥交换信息、服务器验证客户端证书并发送密钥交换信息以及握手完成并加密通信。具体过程如下:
1. 客户端发起请求:客户端(如浏览器)向服务器发送一个请求,请求建立安全的连接。这个请求包含了客户端支持的加密算法列表等信息。这些信息将用于后续的密钥交换和证书验证过程。
2. 服务器响应请求并发送证书:服务器接收到客户端的请求后,会响应请求并发送自己的数字证书给客户端。这个证书包含了服务器的公钥信息以及服务器的身份信息等信息。数字证书由权威的证书颁发机构(CA)签发,用于验证服务器的身份。同时,服务器还会向客户端发送一个随机数作为握手过程中的一部分信息。这个随机数用于后续的密钥生成过程。此时握手过程的初次传输已完成,并确认了服务端支持的加密方式等信息。因此初步保证了传输过程的安全性,并通过确认公钥信息的可靠性为后续的数据传输提供了保障。但在此过程中仍需要注意中间人攻击的风险,攻击者可能会伪装成合法的服务器发送伪造的证书给客户端,所以证书验证的过程就显得尤为重要。如果攻击者试图进行中间人攻击伪造服务器证书等攻击行为,将会引发异常并在后续握手过程中被识别出来。因此在服务端首次响应过程中完成了证书的初步发送与传输过程的初步安全确认机制建立工作。而后续的工作则是围绕着双方的证书的可靠性认证及保证对称密钥安全的产生问题展开的解决方法:建立起两者间的高效交互通信密钥并保证所构建之通信密钥不受中间人攻击影响从而达成安全的握手过程并最终实现双方安全可靠的通信服务机制的实现目标;这个机制使得双方可以通过一系列特定的数据操作证明通信的真实性;在此基础上更进一步采用目前使用非常广泛并具有非常高的安全性和可认证性的SSL加密通讯方式对重要信息通过双方的对称加密体系实现在未知安全情况下的一对一数据安全保护(含电子数字签名过程),将确认过程的协议设计和证书的共享方案达到成熟的地步从而使得攻击者很难找到对两者密钥有决定性影响漏洞从而在更高的层面上解决了用户认证的安全性问题提高了网络安全交易的价值避免诸多因为假证书所导致用户计算机数据安全失效的恶性问题提高网络系统用户使用电脑管理的高效性与个人数据管理及其升级的全面兼容性奠定了网络技术应用于信息处理效率网络正常运行规范的社会实际应用管理的完善提升级高端级别的系统的构建及其行业网络认证安全管理平台机制技术完善基础及未来发展网络产业结构的基石发展保证及其规范机制确立。为下文将要探讨的数据保密问题及总体系统设计的技术升级作良好铺陈和基础落实引导预备相关的创新衔接与发展研究工作共同设计持续不断地基于严密安全防护基础上的灵活科学进步的技术升级及其应用方案的完善发展研究工作奠定了良好的技术理论基础和未来发展研究的基础保障及系统安全管理的应用规范设计指引等创新发展的工作思路及其拓展延伸等实际操作相关项目行业关键性研究高端技术等可行性实现的既定长远的发展目标与务实稳进有效保障的绩效研发进程完成其价值独特意义上循环应用而制定提升安全系数操作的稳固高效且行之有效的既定行业科技操作研发生产的服务标准及严格的操作实施程序细节的系统工作网安全管理操作性能参数化的技术研发新领域操作性能量化控制理论基础并进行深层次发掘架构方案设计运行过程中的重大核心技术为面向多服务的统一的动态分布式服务的密码安全防护协议的机制研究运行与开发智能化相关策略的合理布置对数据传输和识别跟踪技术研究的重要实现性细节参数体系指标进行了针对性的应用技术的实施强化部署与发展提高技术创新效益与服务实体经济的发展良性互动从而推进网络科技安全产业整体的创新发展及其核心竞争力的提升为网络安全领域的技术创新与应用领域的融合开拓新的发展空间和新的发展思路以科学的发展观引领网络安全产业健康有序的发展态势为本文的探讨提供强有力的理论支持和技术保障并奠定了坚实的理论基础为下文探讨的网络安全协议设计提供了强有力的技术支撑和设计思路对现实网络科技健康有序发展意义重大为下文的协议设计的展开分析做了良好的铺垫同时这也是本段文字的中心思想阐述核心主题表达本段文字的中心主旨所在;总之这一阶段完成了证书的交换以及通过数字证书完成服务器端的身份认证完成了安全协议的初步握手环节并建立起了一种可靠的加密通信的基础框架为后续的数据传输提供了安全保障为下文探讨的网络安全协议设计提供了强有力的技术支撑和设计思路奠定了坚实的基础也为下文将要展开的分析提供了良好的铺垫同时也引出了下文将要探讨的问题引出下文对握手过程的详细分析说明对
https和http的区别是什么
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。
它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。
它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。
HTTPS实际上应用了Netscape的安 全全套接字层(SSL)作为HTTP应用层的子层。
(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。
)SSL使 用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。
HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。
HTTPS和HTTP的区别:https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全HTTPS解决的问题:
1 . 信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server 的时候,客户度才信任次主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server.
2 . 通讯过程中的数据的泄密和被窜改
1. 一般意义上的https, 就是 server 有一个证书.
a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样.
b) 服务端和客户端之间的所有通讯,都是加密的.i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程. 加下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也就没有什么意义了.
2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书.
a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份.
b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体.
HTTPS 一定是繁琐的.
a) 本来简单的http协议,一个get一个response. 由于https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返.i. 任何应用中,过多的round trip 肯定影响性能.
b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密.i. 尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求. 加密后数据量的影响. 所以,才会出现那么多的安全认证提示
什么是SSL握手
SSL协议的握手过程是这样的:SSL 协议既用到了公钥加密技术(非对称加密)又用到了对称加密技术,SSL对传输内容的加密是采用的对称加密,然后对对称加密的密钥使用公钥进行非对称加密。
这样做的好处是,对称加密技术比公钥加密技术的速度快,可用来加密较大的传输内容, 公钥加密技术相对较慢,提供了更好的身份认证技术,可用来加密对称加密过程使用的密钥。
主要过程如下:1. 客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
2. 服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
3. 客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。
如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
4. 用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。
5. 如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。
6. 如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行 CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。
检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码 ”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。
7. 服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于 SSL 协议的安全数据通讯的加解密通讯。
同时在 SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。
8. 客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。
9. 服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
10. SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。
如果还有什么问题,可以向Gworg SSL签发机构咨询。
1.HTTP协议为什么要三次握手,而不是2次/4次握手?
因为3次正好达到需求 并且流程最短吧可以想象一下2人,1.你联系对方 向对方喊话2.对方听到后回你一句3.你听到后就知道对方活着,你再回一句让对方知道你是正常的大致理解吧,有些地方跟现实没法详细对照,具体的你可以找下3次握手的详细过程 看完就明白了