http协议与https
http是应用层协议,是web浏览器端向服务器端进行通信需要遵循的超文本传输协议,只有通过http传输,服务器才能接收到web发过来的请求,web浏览器才能呈现服务器端的资源。
但是http采用明文传输,也就是说请求地址响应资源都会暴露在外界,容易被拦截泄露,不安全
由此引入到https协议,其是在http与tcp协议之间加了一层ssl协议,用于安全认证
https如何保证安全:
-
对称加密
- 对称加密客户端服务器采用同一个密钥进行加解密,若传输过程吧被拦截获取密钥,那么密文就会被获取解密,不安全
-
非对称加密
-
非对称加密采用公钥加密、私钥解密的方式,客户端服务器各自生成一对公钥与密钥,把公钥给对方,私钥不外露,客户端把明文利用服务端提供的公钥进行加密,服务端利用自己的私钥进行解密即可;整个过程即使公钥被中间人获取,由于没有私钥依然无法解密,因此相较安全。
- 但若中间人获取服务端公钥并发送自己生成的公钥给客户端,如上图所示,仍然不安全
- 上述情况客户端无法判断公钥的真假造成的。如果客户端可以辨别公钥的真假,那么这个中间人攻击也就迎刃而解了
-
证书
-
这种情况下可以引入证书,证书是网站上线成立时由专门的认证机构申请的,证书里面包含服务器的公钥
客户端与服务端建立连接时就会获取服务端提供的证书,然后利用系统内置的权威机构的公钥对证书中的加密签名进行解密得到初始签名、然后再基于证书内的属性重新计算,若两次的计算结果一致则验证通过,客户端就可以利用证书内的公钥进行加密了
中间人若改了公钥,客户端就会计算证书两次签名不一致得出该公钥错误
-