HTTPS 是在 HTTP 的基础上,引入了一个加密层(SSL)。HTTP 是明文传输的(不安全)
当下所见到的大部分网站都是 HTTPS 的,这都是拜“运营商劫持”所赐
下载⼀个“天天动听“:
即使运营商不劫持,如果被黑客盯上了,也是可能会对你的信息安全造成一些影响的
有些商场、饭店会提供 WiFi
解决安全问题,最核心的要点,就是“加密”。黑客领域的攻防,都是“相对”的概念,这是一个对抗的过程。但是可以做到,即使数据被黑客拿到了,他也解析不了/无法篡改,也能起到安全的效果
引入加密,是保证数据安全的有效手段
密码学中的几个重要概念:
明文:要传输的真实数据,要表达的实际的意思 密文:针对明文加密后,得到的结果。往往是不直观的,不易理解的 密钥:加密和解密过程中的关键道具
对称加密:加密和解密用的是同一个密钥
非对称加密:加密和解密用的不是同一个密钥,这两个密钥 k1
和 k2是成对的
k1
加密,k2
解密k2
加密,k1
解密两个密钥,可以一个公开出去,称为“公钥”,另一个自己保存,称为“私钥” 手里只有一把的话,是无法知道另一把是什么的(是有一定的数学原理的)
只要针对 HTTPS
的数据进行解密了,就能够得到 HTTP
格式的数据
上述的运营商劫持,无论是修改 referer
还是修改返回的链接(body
),本质上都是明文传输惹的祸。需要引入加密,对上述传输的数据进行保护,主要就是要针对 header
和 body
进行加密
通过对称加密的方式,针对传输的数据进行加密操作,这样网络上传输的就是密文了
问题的关键: 密钥需要传输给对方,一旦黑客拿到了密钥,意味着加密操作就没意义了
使用非对称加密主要的目的是为了加密“对称密钥”,确保对称密钥的安全性
不能使用非对称加密针对后续传输的各种
header
、body
等进行加密,而是只能对对称加密的密钥进行加密
888888
对称密钥了888888
安全到达服务器,后续服务器和客户端之间就可以使用 888888
作为对称加密的密钥,此时黑客就无法破解后续的数据了客户端向服务器要公钥和通过公钥传输对称加密的密钥的两步操作就是 SSL
内部完成的操作。使用 HTTPS
的时候,磁层也是 TCP
,先进行 TCP
三次握手,TCP
连接打通之后,就要进行 SSL
的握手了(交换密钥的过程)。后面才是真正的传输业务数据。(完整的 HTTPS
的请求/响应)
此处公钥和私钥可以这样理解
可以让服务器生成公钥私钥。私钥就只有服务器自己知道,公钥可以告诉任何人
上述操作,其实仍然存在严重的漏洞,黑客仍然有办法破解掉其中的加密操作