浅谈HTTPS传输过程

HTTPS是什么

  HTTPS不是一个新的协议,可以理解为是一个HTTP协议的加密"版本"(HTTP+SSL(TLS))。那为什么HTTP协议需要加密,不加密会出现什么问题呢?先来了解下传统的加密方式

加密方式

  

  对称加密:对称加密是Server和Client都拿一个相同的密钥进行加密和解密,他的优点的性能好一点,但是也存在很多问题。

  问题

    1、服务器如何把密钥安全的给到客户端(存在请求被拦截、窜改)

    2、假设一个客户端的密钥泄露了被公开,所有的客户端以及服务器的连接传输都是不安全的

    

  非对称加密:非对称加密将密钥拆分为公钥、私钥,两个秘钥,私钥存在服务器不能让任何人知道,公钥则可以随意发布给任何客户端。采用此加密方式,发送方将报文用公钥加密后,接受方收到密文(加密后的报文)采用私钥进行解密拿到报文,这种方式发送方就不用获取私有就可以进行加密传输避免了密钥泄露。虽然解决了对称加密密钥传输泄露问题,但是非对称加密的性能肯定要比对称加密的方式性能低很多。其实也会存在一些安全隐患:

  问题

    1、客户端无法证明公钥的来源的真实性(假设在服务端将公钥分发给客户端的过程中被攻击者拦截,并换成其他的公钥或者密钥。或者是收到了非目标服务器的公钥,两者之间的数据传输将被阻断)

    2、客户端和服务端开始通讯时,MITM将客户端请求拦截掉,将自己的公钥发送给客户端(客户端以为是服务端返回的),伪造一个请求发送给服务端(服务端以为是客户端发起的),拿到服务端的公钥。那之后客户端发送的数据,MITM可以用自己的私钥解开,服务器返回的密文,MITM同样也可以用公钥解开。两端的交互MITM都知道的一清二楚,并且客户端和服务器也不会发现任何异常。当然此问题就算是HTTPS方式,过程中少了"内置公钥"同样也会发生,大家可以看完HTTPS传输过程后思考下。

HTTPS传输过程

  HTTPS综合了两种加密方式的优点,在密钥交换时才用非对称加密来保证安全性(当然这个安全性还是要和CA认证机构挂钩,单纯的非对称加密肯定还是有问题的),在建立完桥梁时就采用对称加密的方式进行request和response。

     

  • 以上有两对公私钥,一把是CA机构的公钥和私钥,一把是服务器的公钥和私钥。
  • 数字签名由数字证书的明文内容组成然后通过CA机构私钥进行加密后的密文(只有CA机构的公钥可以打开)。
  • 步骤2“内置公钥”的存在就是为了防止公钥在网络之中传输容易泄露的问题,浏览器或者操作系统在安装时默认就会植入一些世界公认的可信任CA机构的证书(可以理解里面包含公钥)或者是用户自主导入的根证书(比如支付宝等金融机构会提示用户安装根证书的原因)。
  • 较为关键的步骤是数字签名验证阶段,再拿到服务器给到的数字证书后,用内置的CA证书的公钥去解密数字签名,解密后拿到证书的明文内容,然后和服务器发送的数字证书的明文内容做比较(数字签名=证书上的明文内容被私有加密后),如果发现不匹配,那证明证书可能被篡改过,则就会拒绝链接。
  • 当然验证阶段还有一些细节的验证操作,比如:服务器返回的证书浏览器是否信任,如果不信任,交给用户去选择是否继续。明文验证等等。最关键的验证还是数字签名验证阶段
  • 步骤4客户端根据服务器的算法生成一组随机数(当做对称加密的密钥),然后用之前拿到的数字证书上(服务器返回的)的公钥进行加密。
  • 步骤4.1和4.2用私钥解密就拿到了与客户端之间沟通的密钥(对称加密),之后的步骤4.3.2的请求报文和响应报文都采用这个密钥进行加密

HTTPS也可能带来的安全问题

  非对称加密问题2留了一个疑惑,不知道大家看完有没有想到,“内置公钥”是系统或浏览器直接默认内置的,这些内置的CA机构,上面也提到了“世界公认”比较出名的,如果想在这些出名的机构申请证书对与一些普通的网站来说需要花费昂贵的成本,而且有效期还较短,带一个通配符*的一个域名,一年就要5000块。那么随着一些中小型网站的增多,也会有一些个人认证机构。不过一些网站因负买不起合法的证书因此会自己制造一个根证书用于加密传输,这些当然就是不受信任的证书。访问这种网站时,服务端就会发来一个根证书,让用户选择是否信任。

  那么这种操作就给MITM带来了可乘之机,假设MITM造假一个根证书,如果用户信任了这个根证书。

       

  • 步骤3.3.1.1.2.2.2拿到了对称密钥这次的连接就基本完蛋了,他随之可以解密之后的传输的报文。MITM让客户端和服务器互相都感觉不到异常。
  • 最重要的是跳过了数字签名阶段,MITM让客户端验证了他自己申请的根证书,并把客户端发出去的请求拦截后伪造后发给服务器,神不知鬼不觉的就攻击成功了。
  • 假设客户端没有信任此证书,则数字签名验证这个阶段就会失败了。

小结

  看完这个问题,是不是觉得以后什么证书信息都敢了,其实也不是这种个人认证的证书不敢信任,假设你经常浏览某某个人网站,而且你很了解这个网站,那不必担心。假设涉及到网银、在线支付,或是一些知名的网站,这种公司性质的网站一定会申请合法的根证书,一旦发现根证书不受信任,果断终止。不过一般的网民用户也不会经常浏览那些个人网站或者小型网站,如果遇到要信任根证书时,就果断拒绝掉吧。

原文地址:https://www.cnblogs.com/yangtianle/p/11202574.html

时间: 2024-11-03 00:43:29

浅谈HTTPS传输过程的相关文章

[转]浅谈https\ssl\数字证书

浅谈https\ssl\数字证书 http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的SSL数字证书申请:http://www.shuzizhengshu.com 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 名词解释 首先解释一下上面的几个名词: https:在http(超文本传输协议)基础上提出的

浅谈HTTPS以及Fiddler抓取HTTPS协议

最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同时抓取到HTTPS和HTTP协议,设置只是很小的一步,关键是了解HTTPS协议的原理.Fiddler抓取HTTPS协议的原理,然后才能更好的理解如何进行设置.本文主要由三部分组成,第一部分用比较通俗形象的方式简述了HTTPS的原理,第二部分则是在第一部分的基础上介绍Fiddler抓取HTTPS协议的

浅谈HTTPS以及Fiddler抓取HTTPS协议(摘抄)

一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等.HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息.网上有诸多资料,有些写得过于晦涩难懂,尤其是需要密码学的一些知识.我做了一下简单的整理,刨除复杂的底层实现,单从理解SSL协议的角度宏观上认识一下HTTPS.一言以弊之,HTT

浅谈https\ssl\数字证书[转载]

在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 名词解释 首先解释一下上面的几个名词: https:在http(超文本传输协议)基础上提出的一种安全的http协议,因此可以称为安全的超文本传输协议.http协议直接放置在TCP协议之上,而https提出在http和TCP中间加上一层加密层.从发送端看,这一层负责把http的内容加密后送到下层的TCP,从接收方看,这一层负责将TCP送来的数据解密还原成http的内容.

浅谈https\ssl\数字证书

全球可信的SSL数字证书申请:http://www.shuzizhengshu.com 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 名词解释 首先解释一下上面的几个名词: https:在http(超文本传输协议)基础上提出的一种安全的http协议,因此可以称为安全的超文本传输协议.http协议直接放置在TCP协议之上,而https提出在http和TCP中间加上一层加密层.从发送端看,这一层负责把http的内容加

浅谈 HTTPS 和 SSL/TLS 协议的背景与基础

相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 TCP 的关系(尤其是"短连接"VS"长连接") 大致了解加密算法的概念(尤其是"对称加密与非对称加密"的区别) 大致了解 CA 证书的用途 考虑到很多技术菜鸟可能不了解上述背景,俺先用最简短的文字描述一下.如果你自认为不是菜鸟,请略过本章节,直接去看"HTTPS 协议的需求&

浅谈HTTPS和SSL/TLS协议的背景和基础

相关背景知识要说清楚HTTPS协议的实现原理,至少要需要如下几个背景知识.大致了解几个基础术语(HTTPS.SSL.TLS)的含义大致了解HTTP和TCP的关系(尤其是"短连接"和"长连接")大致了解加密算法的概念(尤其是"对称加密和非对称加密")大致了解CA证书的用途 考虑到很多的技术菜鸟不可能了解到上述的背景,我想用最简单的文字描述一下.如果你自己认为自己不是菜鸟,请略过此文,直接看"HTTP协议的需求". HTTPS:首

浅谈HTTPS安全性

各位可曾有过使用智能手机App在网络商店购物的经验,想必是有的,那你/妳会不会担心不够安全呢?有人会说放心吧,购物网站有使用SSL/TLS加密传输,我们就来聊聊HTTPS好了. 客户端与服务器端的交握过程是这样的,client发出request,而server在收到request后,会将自身信息以证书(包括签发机构,主体,公钥…)的形式回传.此时client会验证证书的合法性,若是受信任的,以浏览器为例,可以在网址列看到一把锁头,不然的话可是会出现警示标志的哦~ 若是证书合法(或不合法但使用者选

浅谈SpringMVC执行过程

通过深入分析Spring源码,我们知道Spring框架包括大致六大模块, 如Web模块,数据库访问技术模块,面向切面模块,基础设施模块,核心容器模块和模块, 其中,在Spring框架的Web模块中,又包含很多前端技术,如SpringMVC,Spring WebSocket,Spring WebPortlet等,在本篇文章中,我们主要分析SpringMVC模块, 在分析SpringMVC技术时,本篇文章将通过解读SpringMVC源码,并通过编译器断点调试追踪,研究Spring核心类的UML图,来