https如何工作
一、http
网络协议基于分层架构构建了七层模型,是ISO建立的用于计算机或者通信系统之间的互联的标准体系。下图展示了其中的五层:
http被称为超文本传输协议,是互联网上应用最为广泛的一种网络协议,建立在应用层当中。主要用于从www服务器传输超文本到本地浏览器,更加得高效。
由于http协议是明文传输,也不要求验证主体,所以在传输过程很容易被获取数据内容,这对于互联网数据来说是很不安全的,因此,https就应运而生。
二、加密算法
在了解https之前,需要对一些加密算法有一个概念:
1、对称加密
我们使用密钥A去加密一段数据内容,再使用密钥B去解密这段数据内容,如果加密的密钥A和解密的密钥B是一样的,那么这就是对称加密。如:AES、DES加密算法
2、非对称加密
非对称加密则加密的密钥A和解密的密钥B不一样,所以非对称加密需要两个密钥,它们是成对存在的。通常称用于加密和传输的密钥为公钥,用于解密的密钥为私钥,私钥不在网络中传输。被公钥加密的数据,必须使用对应的私钥才能解密。如:数字签名
3、hash算法(下文不涉及hash算法,这里简单提及)
hash算法是一种简单的单向算法,通过hash算法可以针对数据内容生成一段特定长度、唯一的hash值,但是hash值是不可逆的,经常用于不需要数据还原的完整性校验上。如:MD5、SHA算法
三、https
在上文中,我们了解了http是不安全的明文传输,那https是怎么做到安全传输的呢?
其实https并不是应用层上的一个新的通信协议,它只是在http的基础上加入了一层SSL或TLS,如图:
下面我们通过一个思考过程来了解https是如何工作的:
1、简单对称加密
既然http是不安全的协议,那么我如果希望传输的数据是安全的要怎么办呢?我们能想到的最简单的办法就是对被传输的数据进行加密处理,当传到服务器以后进行数据解密。如图:
这样存在什么问题呢?很显然,如何有人在传输过程截获了data和key,那么他便可以进行解密,所以这样简单的解密过程并不能保证通信安全。
2、非对称加密解决安全问题
我们看到,简单的对称加密是不能保证通信安全的。并且,我们发现不安全的主要原因是在于key是可以被截获并用来解密数据的。
根据这个问题点,我们考虑一下非对称加密。非对称加密中私钥用来解密,公钥用来加密和传输。那么用来解密的私钥就不会被截获,或者截获了公钥却并不能解密。这么一看,似乎非对称加密已经能够解决通信安全方面的问题了,如图:
通过传输公钥来加密,以及通过私钥来解密达到了传输过程解决安全问题。但是非对称加密算法的效率是远不及对称算法的,如果存在大量的数据传输,那么非对称加密为了安全性就需要付出很大的低效成本,这对于当前互联网环境来说是不可接受的,那么如何解决效率问题呢?
3、混合使用解决安全和效率问题
我们可以这么思考,既然对称加密高效,非对称加密安全,那么我们能否设计一个流程同时利用这两个特性呢?
基于这个想法,我们想数据data通过对称加密,而需要用来解密数据的key通过非对称加密。到服务端以后,先解密key,然后再通过key对称解密大量数据的data,这样既解决了安全性问题,又解决了大量数据传输效率的问题。如图:
在上面这个思考过程中,我们从对称加密的不安全到解决非对称加密的效率,了解了https是如何实现安全通信的。
四、证书
上面的过程中,我们使用公钥私钥等来加密解密,但是这里面存在一个问题。客户端或者服务端如何知道对方是否是伪造的呢?
从现实生活中类比,如果你需要购买一颗钻石,但你怎么知道这颗钻石是否是真钻呢,为此你需要查看这颗钻石是否配有相应的证书。密钥也一样,密钥需要证书来证明它是可以被信任的。
这里的类比你可能会存在以下两个疑惑:
1、客户端或者浏览器等如何知道密钥是有效的可以被信任的?
其实浏览器之类的客户端内置了很多根证书,所以一个需要被验证的密钥会根据这些内置的根证书进行验证。如:Android已经将150+个CA证书内置在手机当中,这些证书被全世界所信赖。
2、它们又是如何知道证明密钥有效的证书是不是也是被伪造的呢?
在这里要先提及一个证书链的概念,如:
证书A是可信任的,证书A信任证书B,证书B信任证书C,根据这样的依托关系,那么证书B、C也是可信任的,这个即证书链。
所以当我们要验证证书是否有效的时候,只需要去验证证书是否在可信任的证书链当中即可。如:阿里云给你颁发了证书,那么它会在阿里云的证书链上去验证证书的有效性。所以如果是一个伪造的证书是无法进入证书链的,也就是无效的不被信任的证书。
参考文章:
http://www.songzhw.com/2016/09/13/how-does-https-work/
https://blog.csdn.net/wen303614/article/details/62422856
https如何工作的更多相关文章
- HTTPS的工作原理
参考自<图解HTTP> 果壳网http://www.guokr.com/post/114121/ HTTPS的工作原理 增加了一层:HTTPS流程:应用层 HTTP->SSL/TLS ...
- HTTPS协议工作流程
被问到了,复习一下HTTPS的工作流程 提到https,不得不提SSL SSL 1. 安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全 ...
- 理解 HTTPS 的工作原理
目标读者:理解HTTP协议,对称和非对称加密,想要了解HTTPS协议的工作原理. 读完本文,你能明白 什么是HTTPS,TLS(SSL),TLS和HTTPS是什么关系? 什么是证书和数字签名,它们是如 ...
- [转载]HTTPS的工作原理
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息.TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺 ...
- HTTPS协议工作原理(SSL数字证书)
目录 HTTPS SSL协议的工作过程 SSL数字证书的查看 HTTPS 我们都知道HTTP协议是明文传输的,并且不能验证对方的身份,而且不能保证数据的完整性.而当我们在网络上进行购物电子交易时,电子 ...
- [TCP/IP] HTTPS的工作原理
一.首先HTTP请求服务端生成证书,客户端对证书的有效期.合法性.域名是否与请求的域名一致.证书的公钥(RSA加密)等进行校验: 二.客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数 ...
- https的工作流程
(1)客户端向服务器提出请求,发出SSL握手信号. (2)服务器发出回应,并出示服务器证书(公钥),显示服务器站点身份. (3)客户端验证服务器证书,并生成一个随机的会话密钥,密钥长度达到128位. ...
- HTTPS工作原理
HTTPS是什么 HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,及以安全为目标的HTTP通道,简单说就是HTTP的安全版本. ...
- 网络数据传输安全及SSH与HTTPS工作原理
本节内容 网络数据传输安全概述 数据加密算法分类 SSH工作原理 HTTPS工作原理 参考资料 个人一直在努力推动git在公司内部的普及和使用,前些日子在公司内部做了一次分享课,给大家介绍了下项目发布 ...
随机推荐
- [转]解读Unity中的CG编写Shader系列6——不透明度与混合
1.不透明度当我们要将两个半透的纹理贴图到一个材质球上的时候就遇到混合的问题,由于前面的知识我们已经知道了片段着色器以及后面的环节的主要工作是输出颜色与深度到帧缓存中,所以两个纹理在每个像素上的颜色到 ...
- “全栈2019”Java第十四章:二进制、八进制、十六进制
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 5,临界区 之 lock
前提背景:多个并发线程共享同一个资源时,为防止这些共享资源可能出现的错误或数据不一致问题,提出了临界区的概念 临界区: 指一个用以访问共享资源的代码块,这个代码块在同一时间内只能允许一个线程访问 实现 ...
- io--文件内容的复制
public class CopyTextTest_2 { private static final int BUFFER_SIZE = 1024; public static void main ...
- Spark - 经典案例
初识 Spark 大数据处理,目前还只是小白阶段,初步搭建起运行环境,慢慢学习之. 本文熟悉下 Spark 数据处理的几个经典案例. 首先将 Scala SDK 的源码导入 IDEA,方便查看和调试代 ...
- 初学C#,用vs去开始hello world!
小弟初学c#,刚刚学会用vs来编写经典的hello,world程序,记录,并且分享给大家. 1. 用vs新建一个c#控制台程序: a. 首先打开vs,如下图所示,点击[新建项目]
- numpy之转置(transpose)和轴对换
转置(transpose)和轴对换 转置可以对数组进行重置,返回的是源数据的视图(不会进行任何复制操作). 转置有三种方式,transpose方法.T属性以及swapaxes方法. 1 .T,适用于一 ...
- CH2401 送礼物(双向dfs)
CH2401 送礼物 描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到礼物之后,他就不这么认为了.某神牛有N个礼物,且异常沉重,但是GY的力气也异常的大(-_- ...
- document.documentElement和document.body区别介绍
document.documentElement和document.body区别介绍 * 区别 body是DOM对象黎明的body子节点,即标签 docummentElement 是整个树的根节点ro ...
- paraview鼠标选择网格
虽然可以根据ID选择网格,但是有时候需要选择可见面,直接鼠标比较方便,可以直接按一下键盘"S",这时候鼠标变成十字型,然后鼠标左键选择区域.