HTTP不安全是因为底层传输技术(TCP/IP),不对自己的承载的Payload(HTTP)加密保护、完整性保护、服务器身份认证、。
如果,
HTTP在扔给TCP/IP传输之前,请求一家名叫TLS(Transport Layer Security)的保安公司,提供以下安全保护服务:
- 加密保护(Encryption),HTTP内容加密,第三方无法知晓原始明文内容。
- 完整性保护(Integrity),第三方一旦篡改内容,接收方可以检测到并关闭安全连接。
- 服务器身份认证(Server Authentication),TLS Handshake阶段,强制验证服务器数字证书,确保服务器就是真正要通信的服务器。
- 防重放攻击保护(Anti-replay)每个TLS保护的HTTP包裹,都有一个从0开始线性增长的序列号,任何重放HTTP包裹的行为,都会被检测到并关闭安全连接。
那么,就可以大声地说,
HTTP是安全的!
为了区别使用明文传输(TCP/IP)的HTTP,使用密文传输的(TLS/TCP/IP)HTTP,将后者标记为HTTP Secure,简写为HTTPS。
这个世界压根没有什么HTTPS这个协议,只有HTTP协议!!!
如果理解了这一点,恭喜诸位,没有白费5分钟阅读这篇文章!
如果没有理解这一点,请不要继续,换篇文章看看!
接下来回答题主的问题
Q1: HTTPS 网站该如何传递参数?
和HTTP网站传输参数没有任何区别,一样一样的,因为就是HTTP协议啊!
Q2: 如果和 HTTP一样那么不就是参数是明文的有被拦截的风险,怎么能说 HTTPS 是安全的呢?
HTTP Secure(HTTPS)和HTTP的区别,上文已经解释。故HTTP Secure = HTTP + TLS,HTTP在经过TLS的安全加密,成为密文+完整性保护HMAC,然后在TCP连接上传输,最后以IP Packet形式在互联网上一路到达目的地。先校验HMAC,如果错直接Reset安全连接。如果校验通过,再尝试将密文解密成HTTP,提交给应用层处理。
在整个Packet诞生的流水线,HTTP --- TLS---TCP--- IP,虽然HTTP、TCP、IP 都没有加密,但是,只要TLS加密,HTTP就是安全的!
Why?
TLS相当于加密信封(Encryption Envelope),而HTTP就是加密信封里的一封信(Message)。
所以,HTTP这封信的所有内容都是安全的,Header、Body都是安全的!
回答完问题,再写一点补充阅读。
为何HTTP不能实现自己的安全加密功能?而要借助TLS的安全加密服务?
当然可以,但是代码重用的效率显然很低很低。
FTP、POP3、smtp、smb以及N多应用层协议需要安全加密保护,是不是都要实现自己的代码?
很显然是的!
将安全会话层独立出来,可以给N多应用层协议提供安全服务,这个安全会话层就是TLS, 一套代码,N次使用,这个N是没有上限的,将代码重用的效率提升到最大!
故,
- HTTP实现了应用层,OSI参考模型的7层/应用层(Application)。
- HTTP实现了表示层(Media Type),OSI参考模型的6层/表示层(Presentation)。
- TLS实现了会话层,OSI参考模型的5层/会话层(Session)。
- TCP实现了传输层,OSI参考模型的4层/传输层(Transport)。
- IP实现了网络层,OSI参考模型的3层/网络层(Network)。
- 硬件接口实现了链路层,OSI参考模型的2层/链路层(Link)。
- 硬件接口实现了物理层,OSI参考模型的1层/物理层(Physical)。
伟大的OSI参考模型,伟大的抽象,伟大的预卜先知!
夸完了,再来看看脆弱性。HTTP Secure和HTTP一样,最终都是TCP来承载,很容易被伪造的TCP Reset报文给Reset掉连接。
此外,只要将TCP报文修改并update checksum,可以瞒得过TCP,但是TLS会校验出错,一丢了事?
No!
TLS会报Alert Error并关闭连接!
任何一点的风吹草动,就可以将TLS连接给Reset掉,这是它脆弱性的一面。
另外,服务器认证这个环节是首席攻击目标。在一个大型企业,为了监控员工的HTTPS加密流量,必须将HTTPS流量在防火墙上解密,看看有没有病毒、恶意代码、未授权文件泄露,防火墙必须使用自己的数字证书伪装成服务器的数字证书。只要用域GPO将防火墙的自签名证书提前推送给员工电脑并信任,就可以完成以上解密的任务。
国家安全部门,除了以上的攻击手段,还会利用成千上万的服务器24小时连轴转,做什么?
计算主流浏览器常用ECC Group的公钥-私钥对,海量的ECC Group的公钥-私钥对诞生并存储,只要Client-Server的TLS DHE交换的任意一方的公钥匹配到存储的公钥,即可完整破解。
即使暂时没有匹配到,随着时间的推移,海量的公钥-私钥对越来越庞大,破解的概率越来越高,只要将流量Capture下来。
原文始发于微信公众号(车小胖谈网络):为什么说 HTTPS 是安全的?
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论