Https原理及流程

密码学基础

在正式讲解HTTPS协议之前,我们首先要知道一些密码学的知识。

明文: 明文指的是未被加密过的原始数据。
密文:明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。
密钥:密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。

对称加密:对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。
其加密过程如下:明文 + 加密算法 + 私钥 => 密文
解密过程如下: 密文 + 解密算法 + 私钥 => 明文

对称加密中用到的密钥叫做私钥,私钥表示个人私有的密钥,即该密钥不能被泄露。
其加密过程中的私钥与解密过程中用到的私钥是同一个密钥,这也是称加密之所以称之为“对称”的原因。由于对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解,所以对称加密的缺点是密钥安全管理困难。

非对称加密:非对称加密也叫做公钥加密。非对称加密与对称加密相比,其安全性更好。对称加密的通信双方使用相同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对密钥,即公钥和私钥,且二者成对出现。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。
被公钥加密过的密文只能被私钥解密,过程如下:
明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文
被私钥加密过的密文只能被公钥解密,过程如下:
明文 + 加密算法 + 私钥 => 密文, 密文 + 解密算法 + 公钥 => 明文

由于加密和解密使用了两个不同的密钥,这就是非对称加密“非对称”的原因。
非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
在非对称加密中使用的主要算法有:RSA、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等。

HTTPS通信过程

HTTPS协议 = HTTP协议 + SSL/TLS协议,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,需要用HTTP对加密后的数据进行传输,由此可以看出HTTPS是由HTTP和SSL/TLS一起合作完成的。

SSL的全称是Secure Sockets Layer,即安全套接层协议,是为网络通信提供安全及数据完整性的一种安全协议。SSL协议在1994年被Netscape发明,后来各个浏览器均支持SSL,其最新的版本是3.0

TLS的全称是Transport Layer Security,即安全传输层协议,最新版本的TLS(Transport Layer Security,传输层安全协议)是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。在TLS与SSL3.0之间存在着显著的差别,主要是它们所支持的加密算法不同,所以TLS与SSL3.0不能互操作。虽然TLS与SSL3.0在加密算法上不同,但是在我们理解HTTPS的过程中,我们可以把SSL和TLS看做是同一个协议。

HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输,总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。

以下图片来自于limboy的博客

image.png

HTTPS在传输的过程中会涉及到三个密钥:

服务器端的公钥和私钥,用来进行非对称加密

客户端生成的随机密钥,用来进行对称加密

一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步。
1.客户端向服务器发起HTTPS请求,连接到服务器的443端口

2.服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。

3.服务器将自己的公钥发送给客户端。

4.客户端收到服务器端的证书之后,会对证书进行检查,验证其合法性,如果发现发现证书有问题,那么HTTPS传输就无法继续。严格的说,这里应该是验证服务器发送的数字证书的合法性,关于客户端如何验证数字证书的合法性,下文会进行说明。如果公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,这样在概念上和服务器端的密钥容易进行区分。然后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS中的第一次HTTP请求结束。

5.客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。

6.服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。

7.然后服务器将加密后的密文发送给客户端。

8.客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。

作者:Leon_hy
链接:https://www.jianshu.com/p/14cd2c9d2cd2

(0)

相关推荐

  • TCP/IP 开胃菜 之 HTTP

    作者丨sowhat1412 来源丨sowhat1412 1 TCP/IP 1.1  TCP/IP 定义 TCP/IP 协议族是一组协议的集合,也叫互联网协议族,计算机之间只有遵守这些规则,才能进行通信 ...

  • 常见网站中的 HTTPS 是否能保护传输中的数据?

    HTTPS 是 Internet 主干协议或超文本传输协议(HTTP)的安全版本,用于在 Web 浏览器和网站之间传输数据.当用户在线交换敏感数据(如检查其银行帐户或登录其电子邮件服务)时,安全的互联 ...

  • 密码套件:密码,算法和协商安全设置(一)

    如果我们在与SSL / TLS和HTTPS加密的交互时间足够长,那么我们将会遇到"密码套件"这一个词组.听起来像一个某种服务套餐,但确实密码套件在我们通过Internet建立的每个 ...

  • GWAS | 原理和流程 | 全基因组关联分析 曼哈顿图 Manhattan_plot | QQ p...

    生物空间站 17篇原创内容公众号名词解释和基本问题:关联分析:就是AS的中文,全称是GWAS.应用基因组中数以百万计的单核苷酸多态:SNP为分子遗传标记,进行全基因组水平上的对照分析或相关性分析,通过 ...

  • 抗滑桩施工工艺原理及流程简介

    来源:基础工程汇 建设工程抗滑桩施工工艺原理及流程简介 一.抗滑桩施工工艺介绍 1什么是抗滑桩 抗滑桩是穿过滑坡体深入于滑床的桩柱,用以支挡滑体的滑动力,起稳定边坡的作用,适用于浅层和中厚层的滑坡,是 ...

  • android中wifi原理及流程分析(很经典)

    在网上找的一篇好文章,分析的很详细,自己再加了些东西,图片有点大,不能完全显示,点击图像拖动鼠标直接查看图像. wifi相关的文件位置: WIFI Settings应用程序位于 packages/ap ...

  • 8张gif图,详细介绍新风系统的工作原理及流程!

    工作原理及流程GIF 1.室外新鲜空气,通过进风口进入新风系统.如下图: 2.空气置换.净化:室外新鲜空气与室内污浊的空气经过高性能空气质量交换器(热转换器),污浊空气部分能量(排风系统中的部分能量有 ...

  • 转基因鼠构建原理与流程

    转基因鼠构建原理与流程

  • HTTPS原理探究与CA证书

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/HTTPS原理探究 作者:融水公子 rsgz 网络安全 网络安全教程 http://www.rsgz.top/post/771.html HTTP ...

  • 查缺补漏 | 6.2 育种原理及流程

    提纲 核心点拨 1.育种方式及原理辨析 (1)诱变育种的原理 (2)单倍体育种与杂交育种的原理 (3)多倍体育种的原理 注意 多倍体育种中秋水仙素可处理"萌发的种子或幼苗",单倍体 ...

  • KI小鼠构建技术原理及流程

    基因敲入可以在目的基因位置引入特定的突变或外源基因.比如在目的基因上引入点突变(模拟人类遗传疾病模型) :或将报告基因(如EGFP,mRFP,mCherry,mYFP,或LacZ等)通过同源重组的方式 ...

  • 完全性基因敲除大鼠构建技术原理及流程

    完全性基因敲除大鼠是通过CRISPR/Cas9基因敲除技术,针对靶基因设计和构建gRNA与Cas9表达质粒,造成目的基因的功能区域被敲除,获得全身所有的组织和细胞中都不表达该基因的大鼠模型. 完全性基 ...