前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CloudFlare搞了个新技术,把你浏览的网站隐藏起来了!

CloudFlare搞了个新技术,把你浏览的网站隐藏起来了!

作者头像
轩辕之风
发布2023-10-25 09:46:49
1.1K0
发布2023-10-25 09:46:49
举报
文章被收录于专栏:编程技术宇宙编程技术宇宙

你有没有想过,当你在深夜访问XXXHub网站的时候,你电脑/手机发出的网络数据包被人在网络中间某个节点捕获,从而知道了你访问了XXXHub。

你可能会说,现在都是HTTPS了,上网内容都加了密了,别人看不到的。

但你可能不知道的是,即便是使用了HTTPS,但也只是加密了传输内容,但你是在浏览哪个网站,依然能被人知道。

这里面有两个途径可以知道你是在访问什么网站。

方法1:DNS

在正式访问网站之前,一般会有一个域名解析的过程,把XXXHub的域名转换为IP地址,才能进行后续的通信,而这个过程一般是不会加密的。所以当看到你有请求XXXHub的DNS行为,就知道你接下来要浏览这个网站了。

为了躲避通过DNS发现上网行为,目前已经有两套比较成熟的方案,分别是DNS over TLS(简称DoT)以及DNS over HTTPS(简称DoH)。

DoT类似于HTTPS,把DNS解析的过程从原来的UDP明文传输变成基于TCP的TLS连接中进行,从而隐藏DNS请求和响应内容。

DoH就更好理解了,直接把域名解析的操作,通过HTTPS来进行,都不走传统的DNS报文,而是用GET/POST获取到结果。

关于上面两项技术,详情可以参考RFC最新的文档:

DoT: https://datatracker.ietf.org/doc/html/rfc7858 DoH: https://datatracker.ietf.org/doc/html/rfc8484

方法2:HTTPS的SNI

DNS可能很多人知道,但这个SNI知道的人可能就不多了。

HTTPS,实际上就是HTTP+TLS/SSL,在进行HTTP超文本传输之前,会有一个TLS/SSL握手的过程,用于交换秘钥加密后续的内容。

而就在这个握手的阶段,将会暴露你访问的是哪个网站,比如我通过HTTPS访问百度地图,用wireshark抓个包看看:

看到了吧,在TLS握手的第一个包——Client Hello中,你要访问哪个网站就被出卖了!

这个就是SNI,全名Server Name Indication,客户端用它来表达自己想要请求哪个域名。

为什么会有这个字段呢?

想象一下,假设你有a.com和b.com两个域名,分别颁发了A和B两个证书文件,这两个域名都解析到你的同一台云服务器上,IP地址是同一个,这完全是可能的。现在来了一个HTTPS连接,如果没有表明自己要请求的域名,服务器怎么知道该返回哪个证书给浏览器呢?如果证书这一环弄错,通信就无法进行下去。

但就是这么个SNI的家伙,会出卖你要访问的网站信息。

那有没有什么办法,把这个也给藏起来,不让人知道呢?

这就是今天要说的主角:CloudFlare搞了个新技术——Encrypted Client Hello,简称ECH。

看这个英文全称就可以看出,它把TLS握手中的Client Hello消息给加密了!

它是怎么做的呢?

说起来其实也不复杂,它把原来的Client Hello拆成了两部分,一个叫outer SNI,包含不敏感的信息(比如TLS版本号,一个叫inner SNI,包含敏感的信息,比如这里的网站域名。

然后把这样一个请求发送到 cloudflare-ech.com,由它来解密。外界只会看到你在访问 Cloudflare,但不知道你的真正目的地。

听起来有些复杂,实际上跟代理差不多,Cloudflare充当了这个代理角色,你把要访问的网站地址告诉它,它来完成接下来的通信。

我是在IT技术大佬阮一峰的微博看到的这一消息,对于这项技术,评论区看法不一。

有些持怀疑态度:

也有人肯定它的积极作用:

还有一个评论亮了:

这不就相当于那啥吗?

现在,有了DoT/DoH保护你的DNS请求过程,有ECH隐藏你要访问的网站,有HTTPS加密你传输的网页内容,真正做到全程护航,网络中的其他节点理论上再也看不到你上网干了啥了!

注意我说的是网络中的节点,终端上如果被种马了,那还是白搭。

你觉得这个技术怎么样?有实际意义吗?

往期推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程技术宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法1:DNS
  • 方法2:HTTPS的SNI
  • 往期推荐
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档