https为什么比http安全?

145 阅读4分钟

前言

目前,为什么大多数项目都是用https传输而不是http呢?

总所周知 ,原因是因为它 安全

那它为什么会比http安全呢?

原因是多了个s

那么这个s到底是什么呢?

两者区别

http与https都是建立在net通信上的

而http则是通过明文传输,这种传输方式就很可能别非法篡改传输信息和被不法盗用信息

而https则多加了一层SSL加密,对传输信息进行加密传输,这种做法的好处就是能保证数据在传输过程中不被窃取和篡改,从而保证传输安全

三次握手、三次挥手、默认端口那些就不在这里说了

如何加密

https对数据加密方式大致分为两种:对称加密(也称为单秘钥加密)、非对称加密(也称双密钥加密) ,而大部分加密都采用后者

对称加密

对称加密也称为单秘钥加密,其产生一个秘钥,用于加密和解密,形成对称,所以称之为对称加密

加密过程

对称加密会生成一个秘钥(key),其加密过程就是将key和数据进行算法加密最后将这个加密后的数据(下面称为密文)进行传输

解密过程

在第一次传输拿到key后,再接下来获取到密文后再通过解密算法+key,解析出传输的数据

常用算法

DES/3DES/AES/Blowfish等

图解例子

一天,小美与小帅聊天,小美要求使用key作为秘钥,先将这个key给到小帅,小帅收到后,则进行以key为秘钥对数据进行加密传输

01.png

弊端

通过上面例子传输好像是可以正常通信的,但是,此时,老王出现了。老王通过截取第一次小美发的key,从而自己生成一个发给小帅,然后小帅通过用老王的key2加密,使得每次老王都能截取到密文并解密以及篡改

2.png

所以显而易见,对称加密的弊端 :如果第一次传输key被破解那么信息很容易遭到篡改或被不法利用

非对称加密

非对称加密即为双密钥加密。通过产生一对秘钥,一个用于加密,一个用于解密,产生的秘钥对一个为公钥用于给别人加密,自己留下私钥用于解密

加密过程

通过公钥key对数据进行加密传输

解密过程

通过私钥key对密文进行解密

常用算法

RSA/Elgamal/Rabin/D-H/ECC等

图解例子

小美跟小帅见面后,发现聊得内容不一样,这是小美发现了聊天内容被篡改了,聪明的小美觉得,那既然这样,我要加密解密都在我这边实现,看你还怎么篡改

3.png

通过图例,好像老王还是能破解篡改呀

弊端

尽管是私钥在自己手上,但是老王还是能改公钥,然后自己生成一对秘钥,给一个假的公钥给小帅

4.png

弊端:可通过第一次秘钥传输时,产生加密钥对发给客户端 ,对后续信息进行篡改

小帅:那对称加密被篡改利用,非对称加密也被篡改利用,我玩不了了,不玩了!

第三方机构:不要怕,我来给你加密试试呢?

Certificate Authority

那既然怎么加密都不安全,不妨把这个加密给别人做,毕竟专业的人做专业的事

CA即为证书颁发机构,其证书颁发流程为:

6.png

小美将服务器的服务器地址、公钥key和马内给到这个知名机构,而这个机构通过自己内部的秘钥对这些加密成证书

这证书包含:机构、服务器地址、服务器公钥通过机构私钥加密、证书签名通过机构私钥加密

由于证书中的服务器公钥、证书签名是通过CA的私钥加密的,因此其他终端只能通过CA的公钥解密读取,但无法重新加密伪造

证书签名(Signature):证书签名的算法是公开的,他出现的目的,是为了让每一个拿到证书的终端,可以验证签名是否被篡改

证书包含服务器地址、CA公钥KEY以及自己服务器的key,这样的话,服务器拿到信息就可以解密查看某些信息是否被篡改

浏览器获取证书

每个浏览器都存有各大机构的证书公钥,在小美传输信息给小帅的时候,浏览器拿到信息后验证证书签名是否一致(服务器地址,公钥),如果不一致则报错