目录
一、HTTPS是什么?
二、加密的方式
1.对称加密
2.非对称加密
3、证书
一、HTTPS是什么?
HTTPS协议是在HTTP协议的基础上加了一个加密层。因为HTTP协议是明文传输的,这样很容易被别人获取到信息。
有意思的是HTTPS的使用最开始不是用来防止黑客入侵,而是为了防止运营商劫持。因为我们的信息都是在运营上的设备之上进行传输的,所以运营商有能力获取到我们的数据并加以篡改从而获取到一些不正当的收益。举个例子,搜狗搜索通过广告计费,很重要的一个标志就是HTTP协议里的refer,表示这个页面是从哪个页面跳转过来的,它可以记录有多少请求来源于搜狗的广告,如果运营商把里面的refer修改,那么搜狗的广告收益就会受到很大影响。为了防止运营商对数据进行劫持,各个互联网公司开始使用HTTPS协议进行加密。
HTTP底层也是TCP协议,在TCP进行三次握手后进行SSL握手(交换密钥),然后开始信息传输。
二、加密的方式
1.对称加密
对称加密是指客户端和服务器用同一把锁来进行加密和解密。每个客户端在和服务器进行信息传输时都要生成自己的锁,这意味着每个客户端的锁是不同的,在进行信息传输前需要先把自己的锁传给服务器。但是这个过程是存在安全隐患的,黑客可以半路拦击获取到锁,所以单单使用对称加密是不安全的。
2.非对称加密
非对称加密会使用两把锁,通过数学算法生成一对锁,用一把锁加密后再用另一把锁解密可以获得原数据。我们把这两把锁成为公钥和私钥,公钥是可以公开给所有人的。服务器生成一对锁,把私钥留在自己手里,然后把公钥传给客户端,因为公钥本来就可以公开,所以不怕被黑客获取到,这样就完美解决了对称加密的问题。
需要注意的是,非对称加密的用途主要是用来加密对称密钥的传输,后续信息过程的加锁解锁都通过对称密钥来完成。因为非对称加密消耗的CPU资源是要远远大于对称加密,需要考虑成本问题。
那么非对称加密是不是就完美了呢,当然不是,他依旧存在一个很大的漏洞,黑客可以对其进行中间人攻击。中间人攻击是指黑客可以自己生成一对公钥和私钥,在服务器向客户端传递公钥时把其替换为自己的公钥,这样当客户端发送数据后就可以用自己的私钥进行解密。不仅如此,在解密得到客户端的数据后,他还会用之前拦截的服务器的公钥进行加密后再把信息传给服务器,这样服务器在进行解密时就不会被发现数据被窃取了。
3、证书
为了防止中间人攻击,就要使客户端有能力辨别公钥是否被修改过,这个时候就要用到证书。证书是由专门的权威机构提供的,在注册网站时需要向权威机构申请,证书是一个结构化的数据,上面有很多属性,比如域名、公钥、证书有效期等。
用户拿到证书后第一件事就是验证证书的真伪。公证机构会对证书上的内容通过特定算法生成一个校验和,再用公证机构自己的私钥对其加密生成签名。
公正机构总共也没几家,一般系统都内置有他们的公钥。用户拿到证书后需要做两件事,一是用相同的算法对证书内容进行操作生成校验和1,然后用系统内置的公钥对签名进行解密生成校验和2,对比这两个校验和,如果相同的话,就证明证书没有被修改过。
那么黑客是否还有机会篡改证书呢?如果黑客只尝试修改服务器公钥,那么校验和就会发生改变显然不行,如果黑客即修改公钥又修改签名,但由于没有公正机构的私钥无法生成加密后的签名,如果用自己的私钥生成那么用户再解密时就会发现,这样一来就把黑客的路全部堵死了。
需要注意的是我们提到的安全并不是指没有办法破解,而是指破解需要的成本远远高于破解后的收益,那么自然也就安全了。