调查印度的TLS屏蔽

2020-09-28 11:01:52

这份报告调查了印度基于传输层安全(TLS)的拦截。印度互联网与社会中心(CIS)之前的研究已经揭露了基于SNI域的TLS阻塞。OONI还实施并开始测试基于SNI的TLS阻塞测量。

最近,岩浆项目记录了印度独联体和奥尼的方法论可以改进的案例。他们特别发现,屏蔽有时似乎不仅取决于SNI字段的值,还取决于正在使用的Web服务器的地址。这些发现后来通过使用扩展的测量方法在西班牙和伊朗的OONI测量中得到证实。

因此,我们很想看看这种扩展的方法是否会在印度发现更多的TLS封锁案例。为了回答这个研究问题,我们在三家流行的印度互联网服务提供商(ISP)(ACTFibernet、BhartiAirtel和RelianceJio)的网络上进行了实验,这三家提供商占印度互联网用户的70%以上。

我们在Bharti Airtel和Reliance Jio上记录了基于SNI的拦截。我们还发现,Reliance Jio不仅根据SNI值拦截TLS流量,还根据与TLShandShake相关的Web服务器拦截TLS流量。此外,我们注意到ACT Fibernet的DNS解析器直接指向ACT Fibernet本身拥有的服务器。这样的服务器导致TLS握手失败,但审查的根本原因是DNS。

我们还记录了我们测试的一个端点collegehumor.com:443不允许从几个有利位置和控制测量建立TCP连接。然而,在Reliance Jio中,我们看到到这些端点的连接成功完成并且在TLS握手期间发生超时的情况。我们认为这是由于某种代理终止TCP连接并执行TLS握手造成的。

传输层安全(TLS)是一种加密协议,它提供具有保密性和真实性的端到端安全性通信,通常用于加密Web流量,就像HTTPS中所做的那样。服务器名称索引(SNI)最先在RFC6066中定义,它是TLS的扩展,便于多路复用,即在同一服务器上托管多个HTTP网站。换句话说,SNI让内容提供商有机会在同一IP地址下托管各种网站。例如,216.58.209.36 IP(属于Google)允许使用HTTPS访问www.google.com和www.youtube.com,具体取决于所使用的SNI。当客户端想要建立安全连接时,它用它想要连接的网站的主机名填充SNI。

不幸的是,SNI在网络上以明文传输,尽管已经有实验努力绕过这一技术限制。因此,网络运营商可以使用深度包检测来跟踪用户正在访问的网站,并根据SNI过滤流量。2019年,中国和韩国记录了SNI过滤的使用情况;Ooni报道了委内瑞拉和中国基于SNI的维基百科过滤,以及约旦的Facebook直播;独联体早些时候记录了印度最受欢迎的ISP Reliance Jio使用这一技术的情况。

因此,互联网自由界的研究人员已经开始提出并实施技术来测量基于SNI的屏蔽。作为印度互联网服务提供商屏蔽实践研究的一部分,独联体提出了一种检测SNI屏蔽的方法。大约在同一时间,Jigsaw的研究人员提出了检测域阻塞的改进方案,其中还包括SNI阻塞测量。OONI后来根据Jigsaw的方法在现场实施并成功测试了SNI阻塞测量。

这些方法的核心是通过连接到未被阻止的无关主机(例如example.com)并检查是否可能成功完成TLShandShake(即使SNI中填有可能被阻止的主机名(例如印度的pornhub.com))来检测基于SNI的阻止。该技术的基本原理是测量在给定SNI的网络阻塞中是否存在特定的过滤规则。

然而,MAGMA项目最近发布的一份报告显示,还有其他方法可以阻止TLS,这些方法是这种测量方法无法检测到的。特别是,他们显示TLS到www.Women enonweb.org的连接被阻止,但SNI阻塞测量方法没有检测到它。事实上,只有当SNI等于www.Women enonweb.org并且IP地址是www.Women enonweb.org时,才会发生TLS阻塞。

因此,Ooni基于执行两个实验的新GoEngine编写了一个实验实现。第一个实验使用www.Women enonweb.org SNI连接到www.example.org。第二个实验直接连接到www.Women enonweb.org使用的IP地址。研究结果证实了岩浆项目博客文章的发现,并引发了人们对在其他情况下(例如印度)使用同样的方法是否会发现更多形式的阻塞的额外好奇。在我们研究这份报告时,Ooni开展的一项测量活动记录了仅根据伊朗TLS连接上的DNS使用的端点来阻止TLS的案例。具体地说,Ooni发现TLShandShake 1.1.1.1:853被阻止的情况下,无论SNI如何。

印度有一种分散的网络审查模式,国家当局命令互联网服务提供商(ISP)为他们的用户屏蔽某些网站。国家当局从第69A条和信息技术(IT)法第79条获得这些权力,由于政府没有给出技术规范,每个ISP都可以自由地采用自己的方法来屏蔽网站。最近使用OONI数据对印度曼尼普尔邦的审查制度进行的一项研究得出结论,在这方面,“国内的网站屏蔽主要因ISP而异,而不是因地区而异”。此外,根据第69A条通知的法规要求ISP对某些网站屏蔽命令保密。

互联网与社会中心(CIS)最近的研究揭示了印度互联网服务提供商是如何使用各种技术的,包括基于DNS的拦截、HTTP主机标头检测和基于SNI的过滤。在没有公开可用的官方屏蔽主机名列表的情况下,印度独联体从(I)公开可用的政府命令、(Ii)法院命令和(Iii)来自各种来源的用户报告中汇编了一份可能被屏蔽的网站列表。他们设计了网络测试,以确定不同的ISP正在使用的方法,并记录了印度最受欢迎的ISP Reliance Jio(为印度50%的互联网用户提供服务)是如何使用SNI检查来屏蔽网站的。在作者测试的4379个网站中,他们发现Jio通过SNI检查审查了2951个网站。

除了被屏蔽的网站名单不透明外,独联体印度公司还发现被每个ISP屏蔽的网站名单不一致。此外,只有一些互联网服务提供商明确向其用户传达了审查通知。简而言之,印度互联网用户可能会有截然不同的网络审查体验,这取决于他们的ISP。

Aladdin是使用新的Ooni探测引擎编写的Ingo的abash脚本。在给定一个输入域(例如block ked.com)的情况下,Aladdin在Jigsaw提出的域阻塞测量方法的启发下进行了一系列实验。Ooni编写这个脚本是为了收集数据,这些数据可能有助于更好地理解如何发展其WebConnectivitynettest。

在本节中,我们只描述与本报告相关的实验。本文描述了在功能水平上进行的实验;通常出于效率的原因,实际实施可能不同。欲了解更多信息,我们鼓励您阅读脚本源代码,并在Ooni的Slack Channel上提出问题和反馈。

因为Aladdin基于OONIEngine,所以所有实验结果都提交给OONI收集器,并作为OONI S3存储桶的一部分自动发布。

我们讨论的第一个实验称为sni_check。它类似于名为sni_block的OONI实验,不同之处在于sni_check不检查正在使用的助手网站(example.org)是否实际可访问。这不是问题,因为我们知道在我们运行这些手动实验时它是可以访问的。下图显示了在以block ked.com作为输入执行此实验时发生的交互。

我们使用example.org作为测试助手。第一步是使用Google的DNS overHTTPS(DoH)解析器,将example.org映射到其IP地址。一旦我们知道了IP地址,我们就在端口443上连接到该地址,然后启动TLShandShake,并将block ked.com作为SNI。接下来发生的事决定了实验的结果。

如果出现阻塞,我们预计连接只会关闭(EOF_ERROR)或中断(CONNECTION_RESET)。超时(GENERIC_TIMEOUT_ERROR)通常也意味着存在干扰。通过重复这个实验,我们获得了更多的信心,即这样的错误不仅仅是暂时的干扰。

如果没有干扰,则握手完成。因为example.org的Web服务器不处理block ked.com,所以客户端代码应该发出SSL_INVALID_HOSTNAME错误,指示服务器返回的证书对于请求的SNI无效。在这种情况下,我们可以检查返回的证书,以进一步确信我们确实在与处理example.org域的合法服务器对话。

第二个实验称为dns_check。它在概念上类似于DNS_Consistency OONI实验。下图说明了DNS_CHECK实验。

我们基本上使用系统解析器(即,在运行Ooni的系统上配置的解析器)以及我们信任的DNS overHTTPS(DoH)解析器来解析相同的域(例如block ked.com)。在这组实验中,我们使用了Google的DoH解析器,目的是通过将系统解析器的结果与DoH解析器的结果进行比较,来了解我们是否可以信任系统解析器的答案。

当DNS解析程序声明域名不存在时,相应的错误为DNS_nxdomain_error。当解析程序返回特定地址(例如10.0.0.1)时,相应的错误为DNS_BOGON_ERROR。如果没有错误,我们预计此实验将返回两个列表:使用系统解析器获得的域的IP地址列表和使用改进的DoH解析器获得的类似列表。正如我们将在以下部分中看到的,然后我们将使用这两个列表中的IP地址来执行进一步的检查。

要了解更多关于Psiphon的信息,我们鼓励您观看2020年版“互联网测量村”关于Psiphon的演示。

我们从印度三家不同的ISP运行了Aladdin脚本:ACTFibernet(AS24309)、BhartiAirtel(AS45609)和Reliance Jio(AS55836)。我们试图测量TLS屏蔽的四个域名:facebook.com和google.com(在印度都可以通过所有ISP访问);coligehumor.com和pornhub.com(通常都被印度ISP屏蔽)。我们在2020年5月11日、12日、14日和19日使用github.com/bassosimone/aladdin@5471390对实验进行了排名。我们还在2020年6月22日和23日进行了后续实验。

根据印度电信管理局的最新报告(表1.30),我们共同测试的三家ISP占印度互联网用户的74.5%。所有的测量都是在班加卢市进行的,以排除任何潜在的地区差异。Reliance Jio和Bharti Airtel的测试是通过移动互联网连接运行的。由于ACT Fibernet不提供零售移动连接,因此我们使用固定互联网连接来运行他们的网络测试。就这份报告而言,我们假设互联网服务提供商不会根据连接类型(移动或固定)改变他们的行为。

本节描述了我们执行的所有实验的结果。我们从Ooni的S3获取测量结果。为简单起见,我们将只包括coligehumor.com和pornhub.com的结果,因为facebook.com和google.com在我们运行的任何实验中都没有被屏蔽。

下表显示了sni_check实验结果。在此实验中,我们使用表中所示的SNI与为example.org服务的Web服务器执行了TLS握手,以检测此SNI的存在足以触发阻止的情况。生成表的脚本作为GitHubgist发布。

如上所述,eof_error结果指示连接在TLS握手期间关闭,很可能是因为某些中间盒拒绝了提供的SNI。以下JSON代码片段显示了Bharti Airtel对coligehumor.com的测量:

{";TEST_KEYS";:{";NETWORK_EVENTS";:[{";FAILURE";:NULL,";OPERATION";:";CONNECT";,";Address";:";93.184.216.34:443";,//(1)";t";:0.3199562,";PROTO";;:";tcp";},{";失败";:NULL,";操作";:";tls_HANKSHARK_START";,//(2)";t";:0.3199999},{";失败";:NULL,";操作";:";写入";,//(3)";Num_Bytes";:286,";t";:0.3213545},{";失败";:";eof_error";,//(4)";操作";:";读取";,";t";:0.382416},{";失败";:";eof_error";,";操作";:";tls_HANDSHARK_DONE";,";t";:0.383602}]},";RESOVER_ASN";:";AS9498";,";PROBE_cc";:";IN";,";PROBE_NETWORK_NAME";:";BHARTI Airtel Ltd.对于GPRS服务";,";输入";:";tlshandShake://93.184.216.34:443";,";探测_ASN";:";AS45609";,";批注";:{";步骤";:";SNI_BLOCKING";,";会话";:";38c221ed-5fc6-4897-984d-b612bc43dd24";},";RESOLVER_NETWORK_NAME";:";Bharti Airtel Ltd.";,";MEASURATION_START_TIME";:";2020-05-19 08:05:07";}。

在这里,我们基本上(1)连接到example.org的IP地址,(2)开始TLS握手,(3)写入ClientHello,(4)观察连接是否关闭。

有趣的是,在一个特定的案例中,我们可以用pornhub.com SNI来完成与example.org的IP地址的TLS握手。我们还观察到coligehumor.com(参见#1、#2、#3、#4、#5和#6)和pornhub.com(参见#1、#2、#3、#4和#5)在2020年6月22日和23日进行的跟踪测量中也出现了相同的模式。通常是阻塞,但是我们成功地完成了三次TLS握手。

相反,SSL_INVALID_HOSTNAME结果提示没有阻塞。为了确定这一点,我们从测量中获取返回的证书,确保它是唯一的,并计算其指纹。在所有情况下,我们都收到以下X.509证书:

证书:数据:版本:3(0x2)序列号:0f:d0:78:dd:48:f1:a2:bd:4d:0f:2b:a9:6b:60:38:fe签名算法:Sha256 WithRSAEncryption颁发者:C=US,O=DigiCert Inc,CN=DigiCert SHA2安全服务器CA有效期不早于:2018年11月28 00:00:00 GMT不晚于:12:00:00 2020 GMT主题:C=US,ST=加利福尼亚,[...]。Cn=www.example.org[...]sha1指纹=7B:B6:98:38:69:70:36:3D:29:19:CC:57:72:84:69:84:FF:D4:A8:89。

此证书确实是example.org使用的证书。因此,我们可以得出结论,在所有这些情况下,我们都能够在不受干扰的情况下与测试人员交谈。

在接下来的部分中,我们将评论。

.