(一)HTTP协议 和 HTTPS协议的区别(4点):
1. HTTP协议的端口号是80, HTTPS协议的端口号是443
2. HTTP协议使用的URL是以 http:// 开头,HTTPS协议使用的URL是以https://开头
3. HTTP协议和HTTPS协议最主要的区别是:
HTTP协议所生成的HTTP请求报文被TCP协议 以明文形式透明传输,同时 客户端与服务器之间无法核验对方的身份(不晓得对方是真的baidu.com 还是一个假冒钓鱼网站)
HTTPS协议则是 在 TCP协议基础上,又增加了TLS协议,即, HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。(具体来说就是:先通过TCP三次握手建立可靠的通信,而后通过TLS4次握手来交换证书、秘钥等,而后再继续通信传输数据)。HTTPS上所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥 通过 CA证书 进行了非对称加密传递给 客户端。
总结来说,HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
4. 最后一点就是:对于搜索引擎来说,更偏好HTTPS 协议下的网站,因为 HTTPS 能够提供更高的安全性和用户隐私保护。使用 HTTPS 协议的网站在搜索结果中可能会被优先显示,从而对 搜索引擎的展示结果排序产生影响。
(@)HTTPS的缺点:
虽然HTTPS有很多优势,也是应用最广泛、现行最安全的协议:
他同样有缺点:
1、HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
2、HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
3、SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
4、SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
5、HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。
(二)什么是非对称加密,什么是对称加密?
1. 非对称加密:
需要公钥和私钥2个秘钥 :在通信时,私钥仅由解密者保存,公钥由任何一个想与解密者通信的发送者(加密者)所知
2. 对称加密:
只需要一个秘钥,通信双方可以通过这个密钥加密发送数据,解密收到的数据
(三)SSL\TLS协议采用的加密通信方式是什么?
SSL\TLS协议采用的加密通信方式是:通信过程中采用对称加密,而对称加密的秘钥通过非对称加密来传输
这样,复杂的非对称加密传输只实现了一次,交换对称加密的密钥;在之后的信息通信中,使用绝对安全的密钥,对信息进行对称加密,即可保证传输消息的保密性
(四)为啥使用非对称加密来传输对称加密的秘钥 ?SSL\TL引入CA证书的通信流程是 什么?
1. 使用非对称加密来传输对称加密的秘钥 是为了避免如下场景:
客户端 C 和服务器 S 想要使用 SSL/TLS 通信,由上述 SSL/TLS 通信原理,C 需要先知道 S 的公钥,而 S 公钥的唯一获取途径,就是把 S 公钥在网络信道中传输。
但是网络信道通信中有几个前提:
- 任何人都可以捕获通信包
- 通信包的保密性由发送者设计
- 保密算法设计方案默认为公开,而(解密)密钥默认是安全的
因此,假设 S 公钥不做加密,在信道中传输,那么很有可能存在一个攻击者 A,发送给 C 一个诈包,假装是 S 公钥,其实是诱饵服务器 AS 的公钥。当 C 收获了 AS 的公钥(却以为是 S 的公钥),C 后续就会使用 AS 公钥对数据进行加密,并在公开信道传输,那么 A 将捕获这些加密包,用 AS 的私钥解密,就截获了 C 本要给 S 发送的内容,而 C 和 S 二人全然不知。
同样的,S 公钥即使做加密,也难以避免这种信任性问题
2、引入CA的作用是啥?引入CA后客户端和服务器的通信流程为:
因此,需要引入第三方平台 :证书颁发机构(CA,Certificate Authority)。
CA 默认是受信任的第三方。CA 会给各个服务器颁发证书,证书存储在服务器上,并附有 CA 的电子签名(电子签名可以防止证书被伪造)。
那么,现在的通信流程变为:
当客户端(浏览器)向服务器发送 HTTPS 请求时,一定要先获取目标服务器的证书,并根据证书上的信息,检验证书的合法性。一旦客户端检测到证书非法,就会发生错误。
客户端获取了服务器的证书并验证合法后,由于 证书上包含着服务器的公钥信息,客户端就可以放心的信任证书上的公钥就是目标服务器的公钥。
客户端获得公钥,于是放宽心进行 数据的对称加密解密 通信
【总结下】CA就是在提供一个 非对称的加密传输对称秘钥 和 验证服务器安全 的功能:
CA用自己的秘钥对服务器证书加密,客户端用存在自己系统中的CA发布的公钥对收到的证书进行解密,匹配客户端自己系统中存放的签名和发来的证书上的签名是否一致,一致说明访问的服务器合法,同时也获得了 能 与该合法的服务器 通信的 对称公钥