前言
目前,为什么大多数项目都是用https传输而不是http呢?
总所周知 ,原因是因为它 安全
那它为什么会比http安全呢?
原因是多了个s
那么这个s到底是什么呢?
两者区别
http与https都是建立在net通信上的
而http则是通过明文传输,这种传输方式就很可能别非法篡改传输信息和被不法盗用信息
而https则多加了一层SSL加密,对传输信息进行加密传输,这种做法的好处就是能保证数据在传输过程中不被窃取和篡改,从而保证传输安全
三次握手、三次挥手、默认端口那些就不在这里说了
如何加密
https对数据加密方式大致分为两种:对称加密(也称为单秘钥加密)、非对称加密(也称双密钥加密) ,而大部分加密都采用后者
对称加密
对称加密也称为单秘钥加密,其产生一个秘钥,用于加密和解密,形成对称,所以称之为对称加密
加密过程
对称加密会生成一个秘钥(key),其加密过程就是将key和数据进行算法加密最后将这个加密后的数据(下面称为密文)进行传输
解密过程
在第一次传输拿到key后,再接下来获取到密文后再通过解密算法+key,解析出传输的数据
常用算法
DES/3DES/AES/Blowfish等
图解例子
一天,小美与小帅聊天,小美要求使用key作为秘钥,先将这个key给到小帅,小帅收到后,则进行以key为秘钥对数据进行加密传输
弊端
通过上面例子传输好像是可以正常通信的,但是,此时,老王出现了。老王通过截取第一次小美发的key,从而自己生成一个发给小帅,然后小帅通过用老王的key2加密,使得每次老王都能截取到密文并解密以及篡改
所以显而易见,对称加密的弊端 :如果第一次传输key被破解那么信息很容易遭到篡改或被不法利用
非对称加密
非对称加密即为双密钥加密。通过产生一对秘钥,一个用于加密,一个用于解密,产生的秘钥对一个为公钥用于给别人加密,自己留下私钥用于解密
加密过程
通过公钥key对数据进行加密传输
解密过程
通过私钥key对密文进行解密
常用算法
RSA/Elgamal/Rabin/D-H/ECC等
图解例子
小美跟小帅见面后,发现聊得内容不一样,这是小美发现了聊天内容被篡改了,聪明的小美觉得,那既然这样,我要加密解密都在我这边实现,看你还怎么篡改
通过图例,好像老王还是能破解篡改呀
弊端
尽管是私钥在自己手上,但是老王还是能改公钥,然后自己生成一对秘钥,给一个假的公钥给小帅
弊端:可通过第一次秘钥传输时,产生加密钥对发给客户端 ,对后续信息进行篡改
小帅:那对称加密被篡改利用,非对称加密也被篡改利用,我玩不了了,不玩了!
第三方机构:不要怕,我来给你加密试试呢?
Certificate Authority
那既然怎么加密都不安全,不妨把这个加密给别人做,毕竟专业的人做专业的事
CA即为证书颁发机构,其证书颁发流程为:
小美将服务器的服务器地址、公钥key和马内给到这个知名机构,而这个机构通过自己内部的秘钥对这些加密成证书
这证书包含:机构、服务器地址、服务器公钥通过机构私钥加密、证书签名通过机构私钥加密
由于证书中的服务器公钥、证书签名是通过CA的私钥加密的,因此其他终端只能通过CA的公钥解密读取,但无法重新加密伪造
证书签名(Signature):证书签名的算法是公开的,他出现的目的,是为了让每一个拿到证书的终端,可以验证签名是否被篡改
证书包含服务器地址、CA公钥KEY以及自己服务器的key,这样的话,服务器拿到信息就可以解密查看某些信息是否被篡改
浏览器获取证书
每个浏览器都存有各大机构的证书公钥,在小美传输信息给小帅的时候,浏览器拿到信息后验证证书签名是否一致(服务器地址,公钥),如果不一致则报错