
本文共 1358 字,大约阅读时间需要 4 分钟。
http存在的问题?
1.http都是明文传输的,在传输过程报文可能会被拦截查看和篡改
http正常给服务器发送一个消息
消息在中间传递传递的过程中可能被黑客拦截篡改,修改发送的信息
解决:可以使用加密的方法解决上面的问题
加密
对称加密:产生一个秘钥,客户端或服务器通过秘钥进行加密和解密
存在问题:秘钥可能会被黑客得到,然后对报文进行篡改,这个秘钥是公开的
服务器给客户端先发来一个秘钥,客户端通过这个秘钥对报文进行加密,服务器拿到报文后用秘钥进行解密
在这个过程中如果秘钥被黑客拿到,当黑客拦截你的消息是可以通过秘钥进行解密和重新加密,进而进行篡改
解决:为了防止上面的问题,可以使用非对称加密,只公开公钥,公钥加密,秘钥解密,当黑客拿到公钥时,也无法对报文进行解密
非对称加密:产生一对秘钥,一个公钥一个私钥,通常通过公钥加密,秘钥解密
公钥公开,秘钥不公开
存在问题:公钥可以被所有人拿到,黑客可以利用拿到公钥,对公钥重新伪造,客户端用假的公钥对自己的秘钥进行加密,这样黑客就可以医用假的私钥对这个秘钥解密,得到秘钥,进而拦截数据和篡改数据,客户端无法知道真正的公钥是什么,无法确定真正的服务器是谁
首先,服务器会给客户端一个公钥key1,客户端拿到公钥会,会使用公钥对报文进行加密,服务器拿到报文后通过秘钥key1可以进行解密
但此时会存在一个问题,服务器发给客户端的报文,客户端无法进行解密
这时就需要再需要一个秘钥,两方通过这个秘钥进行传输,当客户端拿到公钥之后,会给服务器发一个秘钥key2(通过公钥key1加密的),服务器拿到这个秘钥后,两边之后通过这个秘钥进行通信
但是之前的公钥可能,黑客拦截到公钥key1,然后给客户端返回一个假的公钥key3
客户端用个这假的公钥key3对秘钥key2进行加密,黑客可以拿到这个key2,使用公钥key1对key2加密发给服务器
这样黑客就有了秘钥key2,由于最终通信是依靠这个秘钥,因此黑客可以对消息进行查看和篡改
解决:就需要一个第三方对公钥进行加密,使其不能被篡改伪造
CA认证
证书颁发流程:服务器将自己的公钥交给CA认证机构,机构用自己的秘钥给这个公钥进行加密,并部署数字签名和颁发公钥证书,将自己的公钥植入到所有的浏览器中
证书:有域名,证书颁发机构,证书签名(加密之后),公钥(加密之后)
服务器公钥和证书签名都是通过第三方加密的,通过CA的公钥解密读取,无法进行加密伪造
数字签名:域名+CA公钥+服务器公钥
https传输过程
1.服务器先给客户端发回一个公钥证书(服务器公钥加证书签名),客户端拿到证书和签名后,使用CA公钥进行解密,然后验证签名,验证服务器身份
黑客可以拦截并查看证书,但不能篡改里面的公钥和证书签名,只能修改域名等其他信息,当客户端验证签名就会出错,会自动断开连接
2.后面就和之前一样了,可以正常通信了
黑客可以截取数据,但不能对数据进行查看和篡改
https解决的问题就是,通过非对称加密对秘钥进行加密和解密,用加密后的秘钥利用对称加密进行传输,并用ca认证的方式保证服务器公钥不被篡改,保证客户端数据发送到真正的浏览器
无论是http还是https,数据都有可能被拦截,但https保证了数据不能被篡改和查看
发表评论
最新留言
关于作者
