HTTPS加密原理

说一下HTTP和HTTPS

1.概念

   http是超文本传输协议,是一种客户端和服务器端请求和应答的标准,可以使浏览器更加高效。

   https是以安全为目标的HTTP通道,HTTPS是在HTTP基础上加上SSL层

2.区别

   https协议需要CA证书认证,费用较高

   http是超文本传输协议,信息是明文传输;https是具有安全性的ssl加密传输协议

   使用不同的连接方式,端口也不同,一般来说http使用的是80端口,https使用的是443端口

   http连接简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http更安全

3.https协议的加密原理

在描述加密原理之前先了解一下两种加密类型

两种加密类型

加密类型包含对称加密和非对称加密。

对称加密效率高,使用一对共同的密钥进行加密和解密,但是公钥无法安全传输。AES加密算法

举个栗子,学霸小明手里有一道数学题目的答案:123,他想把答案传给自己暗恋的小红。他们在开考前约定了一个密钥456,小明就会对答案进行加密:123+456=579,小明将579写在小纸条上扔给小红,中途别人捡到小纸条,不知道他们是加密传输的,以为正确答案是579。而小红拿到小纸条后,用密钥将答案解密579-456=123,所以小红就得到了正确答案。这就是对称加密传输,加解密效率高,速度快,但是双方任意一方泄露了密钥,那么人和人都知道传输内容了。

非对称加密可以解决上述问题。非对称加密是有公钥和私钥两把密钥。私钥自己藏着,公钥公开。但是效率较低,需要通过证书和权威机构验证公钥的合法性。RSA加密算法

举个栗子,经过上次作弊后,小红发现如果密钥泄露是一件和可怕的事情,所以她和小明商量了一下决定使用非对称加密。小红生成了一对公钥和私钥,然后把公钥公开,小明就拿到了小红的公钥,把答案经过公钥加密后传输给小红,小红再利用私钥解密,得到答案结果。如果在这个过程中,其他人得到传输内容,他们只有小红的公钥,没有小红的私钥,无法进行解密。

HTTPS = HTTP+SSL

先从CA证书说起。CA 证书其实就是数字证书,是由 CA 机构颁发的。至于 CA 机构的权威性,那么是毋庸置疑的,所有人都是信任它的。CA 证书内一般会包含以下内容:

  • 证书的颁发机构、版本
  • 证书的使用者
  • 证书的公钥
  • 证书的有效时间
  • 证书的数字签名 Hash 值和签名 Hash 算法

下面说一下客户端如何校验 CA 证书

CA 证书中的 Hash 值,其实是用证书的私钥进行加密后的值(证书的私钥不在 CA 证书中)。然后客户端得到证书后,利用证书中的公钥去解密该 Hash 值,得到 Hash-a ;然后再利用证书内的签名 Hash 算法去生成一个 Hash-b 。最后比较 Hash-a 和 Hash-b 这两个的值。如果相等,那么证明了该证书是对的,服务端是可以被信任的;如果不相等,那么就说明该证书是错误的,可能被篡改了,浏览器会给出相关提示,无法建立起 HTTPS 连接。除此之外,还会校验 CA 证书的有效时间和域名匹配等。

接下来我们就来详细讲一下 HTTPS 中的 SSL 握手建立过程,假设现在有客户端 A 和服务器 B :

  1. 首先,客户端 A 访问服务器 B ,比如我们用浏览器打开一个网页 https://www.baidu.com ,这时,浏览器就是客户端 A ,百度的服务器就是服务器 B 了。这时候客户端 A 会生成一个随机数1,把随机数1 、自己支持的 SSL 版本号以及加密算法等这些信息告诉服务器 B 。
  2. 服务器 B 知道这些信息后,然后确认一下双方的加密算法,然后服务端也生成一个随机数 2 ,并将随机数2 和 CA 颁发给自己的证书一同返回给客户端 A 。
  3. 客户端 A 得到 CA 证书后,会去校验该 CA 证书的有效性,校验方法在上面已经说过了。校验通过后,客户端生成一个随机数3 ,然后用证书中的公钥加密随机数3 并传输给服务端 B 。
  4. 服务端 B 得到加密后的随机数3,然后利用私钥进行解密,得到真正的随机数3。
  5. 最后,客户端 A 和服务端 B 都有随机数1、随机数2、随机数3,然后双方利用这三个随机数生成一个对话密钥。之后传输内容就是利用对话密钥来进行加解密了。这时就是利用了对称加密,一般用的都是 AES 算法。
  6. 客户端 A 通知服务端 B ,指明后面的通讯用对话密钥来完成,同时通知服务器 B 客户端 A 的握手过程结束。
  7. 服务端 B 通知客户端 A,指明后面的通讯用对话密钥来完成,同时通知客户端 A 服务器 B 的握手过程结束。
  8. SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户端 A 和服务器 B 开始使用相同的对话密钥进行数据通讯。

到此,SSL 握手过程就讲完了。可能上面的流程太过于复杂,我们简单地来讲:

  1. 客户端和服务端建立 SSL 握手,客户端通过 CA 证书来确认服务端的身份;
  2. 互相传递三个随机数,之后通过这随机数来生成一个密钥;
  3. 互相确认密钥,然后握手结束;
  4. 数据通讯开始,都使用同一个对话密钥来加解密;

我们可以发现,在 HTTPS 加密原理的过程中把对称加密和非对称加密都利用了起来。即利用了非对称加密安全性高的特点,又利用了对称加密速度快,效率高的好处。真的是设计得非常精妙,令人赞不绝口。

4.HTTPS的优点

1.使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

2.HTTPS协议是由SSL+HTTP协议构建可加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,保证数据的完整性

3.HTTPS是现行架构中最安全的,并不是绝对安全,但是它大幅度增加了人为攻击的成本

5.HTTPS的缺点

1.https握手比较费时,会延长页面加载时间50%,增加10%~20%的耗电

2.https缓存不如http高效,会增加数据开销

3.SSL证书成本随功能强大而增加

4.SSL证书需要绑定IP,不能在同一个ip上绑定多个域名,ipv4资源支持不了这种消耗

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值