1、HTTP和HTTPS的区别算法
HTTP协议传输的数据都是未加密的,也就是明文的,所以使用HTTP协议传输隐私信息很是不安全。浏览器
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。安全
HTTPS的缺点:服务器
2、密码学基础网络
明文指的是未被加密过的原始数据。大数据
明文被某种加密算法加密以后,会变成密文,从而确保原始数据的安全。密文也能够被解密,获得原始的明文。网站
密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。加密
密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。spa
对称加密又叫作私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据。操作系统
对称加密的特色是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。
加密过程以下:明文 + 加密算法 + 私钥 => 密文
解密过程以下:密文 + 解密算法 + 私钥 => 明文
其加密过程当中的私钥与解密过程当中用到的私钥是同一个密钥,这也是称加密之因此称之为“对称”的缘由。因为对称加密的算法是公开的,因此一旦私钥被泄露,那么密文就很容易被破解,因此对称加密的缺点是密钥安全管理困难。
而非对称加密使用一对密钥,即公钥和私钥,且两者成对出现。
私钥被本身保存,不能对外泄露。公钥指的是公共的密钥,任何人均可以得到该密钥。用公钥或私钥中的任何一个进行加密,用另外一个进行解密。
被公钥加密过的密文只能被私钥解密,过程以下:
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在传输的过程当中会涉及到三个密钥:
服务器端的公钥和私钥,用来进行非对称加密;
客户端生成的随机密钥,用来进行对称加密。
一个HTTPS请求实际上包含了两次HTTP传输,能够细分为如下几步。
1.客户端向服务器发起HTTPS请求,链接到服务器的443端口。
服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥能够发送给任何人。
服务器将本身的公钥发送给客户端。
2.客户端收到服务器端的公钥以后,会对公钥进行检查,验证其合法性,若是发现发现公钥有问题,那么HTTPS传输就没法继续。严格的说,这里应该是验证服务器发送的数字证书的合法性。
若是公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,咱们将该密钥称之为client key,即客户端密钥。而后客户端用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS中的第一次HTTP请求结束。
而后服务器将加密后的密文发送给客户端。
客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,获得服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。
4.在接下来的传输过程当中,客户端和服务器都使用对称加密的密钥进行对称加解密。
备注:前3步都属于握手阶段,到第4步才真正进入内容传输阶段。之因此到传输阶段选择使用对称加密的方式是由于对称加密的方式执行快。
注意⚠️: 证实公钥的正确性的方法:使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书。4、验证公钥
浏览器在整个通讯的最开始会请求服务器的公钥(实际上是证书),这里的公钥就是咱们常说的 SSL 证书的一部分了。
关于 SSL 证书,通常是由专门机构(CA 机构)颁发,其实也就是颁发几个文件,其中有包含私钥信息的文件和包含公钥信息的文件,私钥文件一直秘密地保存在服务器,不会公布出去,公钥文件会在此次请求中下发给浏览器。
公钥文件除了包含有公钥密钥信息外,还有其余信息好比域名、颁发机构、有效期等等。
好比百度首页的证书信息以下图所示:
每个证书都包含域名信息,操做系统也维护了一个可信的证书列表。当客户端得到服务器返回的证书后,提取证书里的域名、签发机构等信息,而后根据本地的可信证书列表判断该证书是否可信,而后才提取证书里的公钥并接着和服务器通讯,不然给出警告。
通常来讲,高质量的 SSL 证书须要购买,并且价格不菲。若是对站点的要求没有那么高,也能够在一些网站上申请免费证书,好比SSL证书选购 - 腾讯云、SSL For Free。