计算机网络——HTTP/HTTPS-创新互联
窃听风险,通讯链路上被第三方获取通信内容,用户账号容易丢失;
篡改风险,通讯数据被篡改,强制执行广告等;
冒充风险,冒充服务器网站,如冒充淘宝造成财产损失;
针对窃听风险——混合加密
建立通信前采用非对称密钥的方式交换会话密钥;
通信过程中全部使用对称加密的会话密钥的方式加密明文数据;
针对篡改风险——数字签名+摘要(哈希)算法
- 数字签名中包含服务器端对数据的哈希运算值A,服务器采用私钥加密数字签名,并发送给客户端;
- 客户端采用服务器的公钥对数字签名进行解密,获哈希运算值A,并对数据进行哈希运算获得哈希运算值B;
- 比较哈希值A==哈希值B可以判断数据是否被篡改。
针对冒充风险——数字证书
为了避免客户端的公钥不是服务器发送的,而是第三方伪造的。导致第三方数据可以被客户端接收。用于验证服务器端的合法性,此时采用数字证书机制:
- 服务器将公钥注册到CA(数字认证机构);
- 客户端拿到数字证书后进行CA认证证书合法性,合法,则用服务器发送来的公钥对数字签名进行解密并校验数据是否被篡改;
- 之后客户端使用该服务器公钥对报文进行加密后发送给服务器;
二、HTTPS的应用数据是如何保证完整性的?服务器公钥+数字签名==数字证书
TLS记录协议主要负责消息(HTTP数据)的压缩,加密及数据的认证:
三、HTTPS一定安全可靠吗?这个问题的场景是这样的:客户端通过浏览器向服务端发起 HTTPS 请求时,被「假基站」转发到了一个「中间人服务器」,于是客户端是和「中间人服务器」完成了 TLS 握手,然后这个「中间人服务器」再与真正的服务端完成 TLS 握手。
从客户端的角度看,并不知道网络中存在中间人服务器这个角色。中间人服务器可以解开浏览器发起的HTTPS请求里的数据,也可以解开服务器端响应给浏览器的HTTPS响应数据。
***但是要发生上述情况的前提是,浏览器端接受了中间人服务器的数字证书(数字签名+公钥)。
中间人服务器与客户端在TLS握手过程中,实际上发送了自己伪造的证书给浏览器,而这个伪造的证书是能被浏览器识别的出非法的,会提醒用户该证书是非法的。如果用户执意点击「继续浏览此网站」,相当于用户接受了中间人伪造的证书,那么后续整个 HTTPS 通信都能被中间人监听了。
抓包工具能够抓包的关键是客户端会往系统受信任的根证书列表中导入抓包工具生成的证书,而这个证书会被浏览器信任,也就是抓包工具给自己创建了一个认证中心 CA,客户端拿着中间人签发的证书去中间人自己的 CA 去认证,当然认为这个证书是有效的。
HTTPS 协议本身到目前为止还是没有任何漏洞的,即使你成功进行中间人攻击,本质上是利用了客户端的漏洞(用户点击继续访问或者被恶意导入伪造的根证书),并不是 HTTPS 不够安全。
参考:3.1 HTTP 常见面试题 | 小林coding
四、HTTP/1.1优化——避免发送 HTTP 请求——缓存机制五、HTTP/1.1优化——减少 HTTP 请求次数1.减少重定向工作
将重定向工作交给代理服务器来完成。
2.合并请求
合并请求的方式就是合并资源,以一个大资源的请求替换多个小资源的请求。
3.延迟发送请求
通过「按需获取」的方式,来减少第一时间的 HTTP 请求次数。请求网页的时候,没必要把全部资源都获取到,而是只获取当前用户所看到的页面资源,当用户向下滑动页面的时候,再向服务器获取接下来的资源,这样就达到了延迟发送请求的效果。
六、HTTP/1.1优化——减少 HTTP 响应的数据大小对于 HTTP 的请求和响应,通常 HTTP 的响应的数据大小会比较大,也就是服务器返回的资源会比较大。考虑对响应的资源进行压缩,这样就可以减少响应的数据大小,从而提高网络传输的效率。
- 无损压缩;
- 有损压缩;
客户端支持的压缩算法,会在 HTTP 请求中通过头部中的Accept-Encoding
字段告诉服务器:
Accept-Encoding: gzip, deflate, br
服务器收到后,会从中选择一个服务器支持的或者合适的压缩算法,然后使用此压缩算法对响应资源进行压缩,最后通过响应头部中的content-encoding
字段告诉客户端该资源使用的压缩算法。
content-encoding: gzip
七、数字证书的作用?附加:HTTP/1.1优化——使用长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。
用于验证服务器端的合法性!
第三方中间人服务器如果伪造服务端,将其伪造的数字证书发送给客户端,将无法被CA认证数字证书的合法性,因此可以判断其不是服务端发来的数字证书。
从而保证客户端获得的公钥是目的服务端私钥对应的公钥。
八、HTTPS——RSA加密算法九、HTTPS——ECDHE加密算法RSA加密,由于客户端和服务器的随机数都是公开的,一旦服务端的私钥被泄露,第三方中间服务器就可以获得客户端发来的第三个随机数,最终算出会话密钥,导致会话密钥泄露(RSA不具备前向安全性)。
防止第三方中间服务器的关键内容在于,数字证书可以保证客户端收到的公钥是服务端发来的合法公钥,其服务端合法。
RSA加密,由于客户端和服务器的随机数都是公开的,一旦服务端的私钥被泄露,第三方中间服务器就可以获得客户端发来的第三个随机数,最终算出会话密钥,导致会话密钥泄露(RSA不具备前向安全性)。
ECDHE加密中,服务器生成一个椭圆曲线公钥Q2使用私钥加密后发送给客户端,客户端生成一个椭圆曲线公钥Q1使用公钥加密发送给服务器。
即使第三方服务器破解了服务器端的私钥,最终也只能获得客户端发送的椭圆曲线公钥Q1,由于不知道服务器和客户端的随机数私钥d1,d2,因此仍无法破解会话密钥。
参考:
使用ECDHE加密算法的TLS握手流程_windsofchange的博客-博客_ecdhe算法
分分钟让你理解HTTPS - 掘金
在第二次握手的时候,服务器会下发用于证明自己身份的证书,这个证书会用预设在设备上的公钥来解密。所以要么是经过认证的证书用权威机构的私钥加密,再用权威机构的公钥解密。要么是使用非权威机构的私钥加密,找不到公钥解密。
如果不小心安装过非权威机构的根证书,比如黑客提供的恶意证书,此时设备上多了一个预设的公钥,那么用恶意私钥加密的证书就能被正常解析出来。所以千万不要随便安装根证书。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享文章:计算机网络——HTTP/HTTPS-创新互联
网址分享:http://hbruida.cn/article/dsiipo.html