您可能已经听说过,在过去的几年中,某些洋葱服务一直遇到拒绝服务(DoS)攻击的问题。
这些攻击利用了洋葱服务集合协议固有的不对称特性,这使其难以防御。在集合协议期间,恶意客户端可以向服务发送一条小消息,而服务必须对此进行大量昂贵的工作。这种不对称性使该协议容易受到DoS攻击,并且我们网络的匿名性质使将好客户与坏客户过滤开来极具挑战性。
在过去的两年中,我们一直为洋葱服务运营商提供更多扩展选项,支持更敏捷的电路管理,并保护网络和服务主机免受CPU耗尽的困扰。尽管这些方法不能解决根本问题,但它们为洋葱服务运营商提供了一个框架,以构建自己的DoS检测和处理基础结构。
尽管为洋葱服务运营商提供的可用防御工具箱已经增长,但DoS攻击的威胁仍然隐约可见。虽然仍然有一堆的smaller- 规模 的改进是可以做到,我们认为,这是不是那种问题,一个参数的调整或小的代码变化将使其消失。问题的固有性质使我们相信,我们需要做出根本性的改变来解决它。
在本文中,我们向您介绍两个选项,我们认为它们可以长期解决该问题,同时保持洋葱服务的可用性和安全性。
考虑这些设计时要记住的直觉是,我们需要能够提供不同的公平概念。在当今的洋葱服务中,每个连接请求都与所有其他请求是无法区分的(毕竟这是一个匿名系统),因此唯一可用的公平策略是对每个请求进行同等对待-这意味着提出更多请求的人会固有地受到更多关注。我们在这里描述的替代方案使用两个原则来改变余额:(1)客户应该可以选择在其请求中包含一些新信息,洋葱服务可以使用这些新信息来更智能地确定其响应的优先级;(2)而不是一直存在静态需求,我们应该让洋葱服务根据当前负载扩展防御能力,默认是回答所有问题。
基于匿名令牌的防御 匿名令牌最近很热,它们像手套一样适合Tor。您可以将匿名令牌视为票证或奖励给好客户的通行证。在这种特定情况下,当发生拒绝服务攻击时,我们可以使用匿名令牌作为优先顺序,将好客户端优先于恶意客户端。
这里的一个主要问题是好的客户如何获得这种代币。通常,令牌分发是使用DoS攻击者没有的稀缺资源进行的:验证码,资金,电话号码,IP地址,商誉。当然,我们网络的匿名性质限制了我们在这里的选择。同样,在DoS问题的背景下,如果恶意客户端获取一些令牌并不是什么大问题,但是重要的是,他们不能获取足够的令牌来承受DoS攻击。
引导令牌系统的一种合理方法是设置一个CAPTCHA服务器(也许使用hCaptcha),该服务器用盲令牌奖励用户。或者,洋葱服务本身可以用令牌奖励可信任的用户,这些令牌以后可以用来重新获得访问权限。我们还可以向Tor项目的每次捐赠都向用户提供令牌。我们可以使用许多不同类型的令牌,并且可以支持不同的用户工作流程。关于这些令牌如何相互交互,它们可以提供哪些额外的好处以及“钱包”的外观(包括Tor浏览器集成),我们有很多想法。
基于令牌的方法的另一个好处是,它将在未来为Tor提供更多的用例。例如,将来可以使用令牌通过垃圾邮件和自动化工具来限制对Tor出口节点的恶意使用,从而通过集中式服务来减少出口节点的审查。令牌也可以用于为洋葱服务注册让人难忘的名称。它们还可以用于获取专用网桥和出口节点,以提高安全性。许多细节需要解决,但是匿名令牌似乎非常适合我们的未来工作。
在加密方面,基本形式的匿名令牌是一种匿名证书,并使用与PrivacyPass类似的技术和UX 。但是,我们不能按原样使用PrivacyPass,因为我们希望能够让一方签发令牌,而另一方对令牌进行验证-PrivacyPass当前不支持该功能。例如,我们希望能够在一些单独或独立的网站上设置令牌发行服务器,并且仍然具有洋葱服务(或它们的引入点)能够验证该服务器发行的令牌。
当然,当大多数技术人员在2020年听到“令牌”一词时,他们的想法就直接跳到了区块链上。尽管我们非常感兴趣地监视着区块链空间,但我们在选择区块链解决方案时也保持谨慎。尤其是,鉴于Tor的私有性质,很难找到满足我们的隐私要求并仍为我们提供实现所有未来目标所需的灵活性的区块链。我们仍然充满希望。
基于工作量证明的防御 解决DoS问题的另一种方法是使用工作量证明系统来减少服务与攻击者之间的计算不对称性差距。
特别是,洋葱服务可以要求客户在允许进入之前解决工作量证明难题。有了正确的工作量证明算法和难题难度,这可以使攻击者无法淹没该服务,同时仍然使普通客户端仅需很小的延迟就可以访问该服务。还针对TLS 提出了类似的设计。
我们已经开始在该系统上编写提案(在朋友和志愿者的大力帮助下),并且我们有足够的信心相信现有的工作量证明算法可以满足我们的用例,同时提供适当的保护级别。考虑到系统的复杂性,仍然需要在参数调整以及Tor引入调度程序的调整上进行工作,但是初步分析似乎很有成果。
这种方法的最大好处是,所提出的PoW系统是动态的,并会根据攻击该服务的恶意活动的数量自动调整其难度。因此,当攻击波很大时,难度会增加,但是当攻击波通过时,难度也会自动降低。此外,如果我们选择工作量证明系统,在其中进行更多的工作可以提供更好的证据,那么有动力的客户可以通过花时间创建额外的证据来“吸引”注意力,这将使洋葱服务优先于洋葱服务。其他要求。这种方法将不对称性转化为我们的优势:好的客户建立了少量连接,他们需要一种在冒充很多客户的攻击者中脱颖而出的方法。
结论 我们认为,以上两个方案提供了一个具体的框架,将从根本上增强洋葱服务的弹性。
这两个建议可以一起应用,并且彼此互补。值得指出的是,这两个建议在技术和密码上都很繁重,并且都有各自的缺点和局限性。没有人想要一个充满验证码或禁止移动PoW拼图的Tor网络。参数调整和精心设计在这里至关重要。毕竟,DoS抵御能力是一场经济博弈:目标不是完美无缺;目的是提高标准,以使攻击者维持攻击的财务成本高于所获得的收益。换句话说,我们想要达到的稳定状态是您通常不需要出示验证码或令牌就可以访问洋葱服务,原因是没有人在攻击他们,因为攻击没有用。
希望我们的帖子激发您思考我们的想法,并提出您自己的攻击和改进措施。这不是我们一天可以解决的问题,我们感谢所有研究和获得的帮助。请保持联系!
从今天(2020年7月2日)开始,互联网大约有16个月的时间从洋葱服务v2一次迁移到v3。 怀旧
15年前,洋葱服务(当时称为“隐藏服务”)日渐成熟。最初是一个实验,目的是了解更多有关Tor网络可以提供的内容。该协议在部署后不久便达到了其版本2。
多年以来,洋葱服务不断发展,第2版已发展成为一款功能强大且稳定的产品,至今已使用了十多年。在所有这些年中,洋葱服务的采用量急剧增加。从ICANN认可的.onion tld到颁发给.onion地址的SSL证书。如今,洋葱服务支持整个客户端应用程序生态系统:从Web浏览到文件共享和私人消息传递。
随着人类对数学和密码学的理解的发展,版本2的基础变得脆弱,并且在此时不安全。如果您想了解有关版本2面临的技术问题的更多信息,请阅读这篇文章,不要犹豫问任何问题。
这导致我们进入2015年:历时3年的大规模开发工作产生了版本3。2018年1月9日,Tor版本0.3.2.9发布,这是第一个支持洋葱服务版本3的Tor。我敢打赌,您遇到了它们有56个字符,并以.onion;)结尾。
现在,Tor网络上的每个中继都支持版本3。在创建洋葱服务时,它也是今天的默认版本。
随着洋葱v3的稳固发展,我们处于淘汰第2版的良好位置:第2版已经完成。顺其自然,它为全球无数人提供了安全和隐私。但更重要的是,它创造并推动了私人和安全通信的新时代。
退休
这是我们计划的弃用时间表:
2020年9月15日
0.4.4.x:Tor将开始警告洋葱服务运营商和客户v2已过时,并且在0.4.6版本中已过时。2021年7月15日
0.4.6.x:Tor将不再支持v2,并且支持将从代码库中删除。2021年10月15日,
我们将为所有受支持的系列发布新的Tor客户端稳定版本,这些版本将禁用v2。 这实际上意味着,从今天(2020年7月2日)开始,互联网将有大约16个月的时间从v2永久迁移到v3。
我们在这里可能会遇到一些困难。无论我们认为自己有多准备,我们都会发现总是有更多的惊喜。尽管如此,我们会尽力解决出现的问题,并尝试使此过程尽可能顺利。
从v2过渡到v3
本节详细介绍如何从现有v2服务设置v3服务。不幸的是,没有机制可以交叉验证这两个地址。
在torrc中,要创建第3版地址,您只需要添加这两行。现在,默认版本设置为3,因此您无需显式设置它。
HiddenServiceDir /full/path/to/your/hs/v3/directory/ HiddenServicePort <virtual port> <target-address>:<target-port>
最后,如果您希望一直运行版本2服务,直到不建议使用它来为用户提供过渡路径,请将此行添加到版本2服务的配置块中:
HiddenServiceVersion 2
这将允许您在配置文件中标识哪个版本。
祝您迁移顺利。
从设计上来说,SSH是一种相当安全的方式,可以获得远程机器的shell访问权限。然而,总有一些方法可以从这些连接中获得更多的安全和隐私。
这样的方法之一就是借助于Tor的帮助。使用Tor,你可以增加一个匿名性,甚至可以隐藏你的服务,避免被窥探/黑客的眼睛。
我将会告诉你通过Tor进行SSH连接的过程。这个过程并不难,所以任何管理SSH的人都应该能够做到这一点。
您需要做的是 将在两台Ubuntu服务器上进行演示,但这个过程可以在任何Linux发行版上使用。你还需要一个具有sudo权限的用户。
如何安装Tor 您必须做的第一件事就是安装Tor。你需要在客户端和服务器上都要安装,所以要登录并分别运行以下命令。
sudo apt-get install tor -y
一旦安装完成,你就可以配置Tor了。
如何配置Tor 我们需要向默认的Tor配置文件中添加几个配置选项。登录到要连接的服务器,然后发出以下命令:
sudo nano /etc/tor/torrc
在该文件的底部,添加以下内容。
HiddenServiceDir /var/lib/tor/other_hidden_service/
隐藏服务端口 22
保存并关闭文件。
用命令重启Tor。
sudo systemctl restart tor
重启Tor会在/var/lib/tor/other_hidden_service中生成所有必要的文件。在这个目录中,你需要使用主机名从远程客户端连接到服务器。要找到这个主机名,请执行以下命令。
sudo cat /var/lib/tor/other_hidden_service/hostname
你应该看到的东西是这样的。
riludi2kstjwmlzn.onion
如何连接到服务器 转到你的客户端,你也在那里安装了Tor。为了连接到服务器,你将使用上面的cat命令提供的主机名。因此,要建立连接,你会发出以下命令。
torify ssh USER@HOSTNAME
其中USER是远程用户,HOSTNAME是Tor提供的主机名。
比如说
torify ssh [email protected]
你会被提示你的远程用户密码(或SSH密钥密码),然后被允许进入服务器。
以这种方式使用Tor的唯一注意事项是,它的连接速度要比直接的SSH连接稍慢。这几秒钟的牺牲是非常值得的,因为你可以获得匿名性。
当您必须使用请求而不透露IP地址时,Tor非常有用,尤其是在进行网络抓取时。本教程将在python中使用包装器,以帮助您解决此问题。
什么是TOR? TOR是“洋葱计划”的缩写,“洋葱计划”是美国海军使用的全球服务器网络。TOR在使人们能够匿名浏览Internet的同时,还充当着非盈利组织的角色,致力于研究和开发在线隐私工具。
TOR可能意味着两件事
您安装在计算机上以运行TOR的软件管理TOR连接的计算机网络 简而言之,TOR允许您通过其他几台计算机路由Web流量,以使第三方无法将流量追溯到用户。任何尝试查找流量的人都会在TOR网络上看到随机的不可追踪节点。
安装TOR TorRequest将TOR作为依赖项。首先安装TOR。
这些说明适用于Ubuntu / Debian用户。要在Windows或Mac上安装,请在此处检查。
sudo apt-get更新 sudo apt-get安装 重新启动TOR服务
sudo /etc/init.d/tor重新启动 配置TOR 让我们对新密码进行哈希处理,以防止外部代理随机访问端口。
tor --hash-password <在此处输入密码> 您将获得字母和数字的长组合作为新的哈希密码。现在,我们转到TOR配置文件(torrc)并进行必要的更改。
放置torrc文件的位置取决于您使用的操作系统以及从中接收tor的位置。我的位置在./etc/tor/torrc。您可以参考此以了解更多信息。
我们有三件事要做
为TOR启用“ ControlPort”侦听器以侦听端口9051,因为这是TOR侦听来自与Tor控制器进行通信的应用程序的任何通信的端口。更新哈希密码实施Cookie身份验证 您可以通过取消注释和编辑位置隐藏服务部分上方的以下行来实现此目的。
SOCKSPort 9050 HashedControlPassword <您在此处较早获得的哈希密码> CookieAuthentication 1 ###本部分仅用于位置隐藏的服务### 保存并退出并重新启动TOR。
sudo /etc/init.d/tor重新启动 现在,TOR已全部设置好!荣誉!
什么是TorRequest? TorRequest是围绕请求和主干库的封装库,允许通过TOR发出请求。在此处查看项目。
您可以通过PyPI安装torrequest:
pip安装torrequest 让我们尝试TorRequest。打开您的python终端。
从torrequest导入TorRequest 将密码传递给Tor
tr = TorRequest(密码='这里您的未使用密码') 让我们检查一下当前的IP地址 导入请求 response = request.get(' http://ipecho.net/plain') 打印(“我的原始IP地址:”,response.text) 我的回应是
我的原始IP地址:45.55.117.170 让我们通过TorRequest尝试相同的方法
tr.reset_identity()#重置Tor 响应= tr.get(' http://ipecho.net/plain') 打印(“新IP地址”,response.text) 您现在将获得另一个IP地址。再次重置Tor,以再次获得新的IP地址。
现在,您可以使用Torrequests在python中轻松屏蔽IP地址。
祝一切顺利!
Scallion允许你使用OpenCL创建虚构的GPG密钥和.onion地址(用于Tor的 隐藏服务)。它可以在Mono(在Arch Linux上测试)和.NET 3.5+(在Windows 7和Server 2008上测试)上运行。
它目前处于测试阶段,并且正在积极开发中。尽管如此,我们认为它已经可以使用了。预期主要在性能,用户界面和安装简便性方面有所改进,而不是在用于生成密钥的整体算法方面有所改进。
常问问题
以下是一些常见问题及其解答:
为什么要生成GPG密钥?Scallion用于在Web of Trust的强大集中查找每个32位密钥ID的冲突,这表明32位密钥ID的不安全程度。在DEFCON上有一个演讲(视频),可以在https://evil32.com/上找到更多信息。什么是有效字符?Tor .onion地址使用Base32,由所有字母和2到7(包括2和7)组成。它们不区分大小写。GPG指纹使用十六进制,由数字0-9和字母AF组成。您可以使用比特币ASIC(例如Jalapeno,KnC)来加速此过程吗?可悲的是没有。尽管Scallion使用的过程在概念上是相似的(增加随机数并检查哈希),但细节有所不同(SHA-1与比特币的双SHA-256)。此外,比特币ASIC之所以能如此之快,是因为它们非常适合比特币挖矿应用。例如,这是数据表对于CoinCraft A-1,这是一种从未问世的ASIC,但可能表示通用方法。微控制器以比特币块的最后128位,前几位的哈希中间状态,目标难度以及要尝试的最大随机数的形式发送工作。ASIC选择插入随机数的位置,然后选择满足散列的块。Scallion必须在其他位置插入随机数,并且它检查模式匹配,而不仅仅是“低于XXXX”。如何使用多个设备?运行多个Scallion实例。?葱的搜索是概率性的,因此您不会重复使用第二个设备。真正的多设备支持不是很困难,但也不会增加太多。我已经在tmux或screen中运行了多个葱实例,并取得了巨大的成功。您只要找到一个模式就可以手动中止所有作业(或编写一个shell脚本来监视输出文件,并在看到结果时将其全部杀死)。 依存关系
OpenCL和相关的驱动程序已安装和配置。请参阅您的发行版文档。OpenSSL。对于Windows,包含预构建的x86 DLL仅在Windows上,VC ++ Redistributable 2008 编译Linux
先决条件
为您的Linux发行版获取最新的Mono:http : //www.mono-project.com/download/安装通用依赖项: sudo apt-get update sudo apt-get install libssl-dev mono-develAMD /开源构建 sudo apt-get install ocl-icd-opencl-devNvidia构建 sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd最后 msbuild scallion.sln Docker Linux(仅限nvidia GPU)
具有nvidia-docker容器运行时构建容器: docker build -t scallion -f Dockerfile.nvidia .运行:docker run --runtime=nvidia -ti --rm scallion -l 预期输出的屏幕截图 建立视窗
在VS Express中为Desktop 2012打开’scallion.sln’构建解决方案后,我在调试模式下进行了所有操作。 多模式散列
Scallion支持通过原始正则表达式语法查找多个模式中的一个或多个。仅支持字符类(例如[abcd])。该.字符代表任意字符。洋葱地址始终为16个字符,GPG指纹始终为40个字符。您可以通过$在比赛的末尾放置一个后缀(例如DEAD$)。最后,管道语法(例如pattern1|pattern2)可用于查找多个模式。搜索多重模式(在合理的范围内)不会显着降低速度。许多正则表达式将在GPU上产生单个模式,并且不会降低速度。
Tor出口节点是加密的Tor流量到达Internet的网关。这意味着出口节点可能被滥用来监视Tor流量(离开洋葱网络后)。
在Tor网络的设计中,应该很难确定通过网络的流量来源。但是,如果出口流量未加密且包含标识信息,则可能会滥用出口节点。
TOR项目, 因此,依赖于一个多元化和广泛出口节点。与任何技术一样,通过对信息的工作原理有基本的了解,您将获得最大的利益并确保信息安全。通过了解,您将可以更好地评估风险。大多数出口节点可能不会受到监控,并且是“安全的”。他们由相信Tor项目目标的优秀互联网公民管理。但是,当您使用Tor网络时,出口节点也会定期更改,因此即使是少数不良节点也是一个威胁。
了解技术,了解风险 活动家和人权捍卫者对Tor项目的使用可以成为避免监视的宝贵工具。但是,由于这些出口节点中的任何一个都可能在监视您的流量,因此您应该始终对风险有充分的了解,并端对端地对流量进行加密。
在最基本的级别上,除非您使用加密协议(HTTPS / SSH / TLS),否则可以监控 Tor流量。这是两个简单的示例:
使用不使用HTTPS的论坛,您的登录名,密码,会话cookie和帖子都可以被捕获。如果您使用SMTP(无TLS)发送电子邮件,则该电子邮件可能会被拦截。 要了解技术,Tor Project网站是最好的起点。
Tor出口节点的地理位置定位和映射 地图和图表每天更新 出口节点列表以csv格式从Tor项目下载。使用MaxMind GeoLite2数据库(https://maxmind.com)对IP地址执行地理定位。
从地图上可以清楚地看到欧洲境内Tor出口节点的高度集中,一旦开始放大并看到欧洲节点,就可以清楚地看到Tor节点的运行位置相当分散。
图表中的Internet服务提供商和国家/地区是Tor出口节点集中度最高的前20名。
结论 在这篇文章中,我谈到了Tor网络的一些安全威胁和好处。我鼓励任何打算使用Tor网络的人围绕操作安全性进行可靠的研究。如果您使用Tor绕过代理,则需要了解流量的风险。如果您是使用Tor来避免通过压迫性手段进行监视的激进主义者,则需要对这项技术有深入的了解。在不知道威胁的情况下,您正在使自己以及其他人处于危险之中。
Scallion Scallion可以帮助我们使用OpenCL来创建GPG密钥以及针对Tor隐藏服务的.onion地址。Scallion基于Mono软件平台开发和运行,并已在Arch Linux平台上成功测试,工具的运行依赖.NET 3.5+(已在Windows 7和Windows Server 2008平台上测试)。
Scallion当前仍处于测试阶段,正在积极开发中,但是它目前已经可以正常使用了。我们的开发当前主要集中在性能、用户界面和安装难度方面的改进上,而不是在生成密钥以及相关算法方面。
工具依赖 1、安装并配置好OpenCL以及相关驱动器。
2、OpenSSL,在Windows环境下,已包含有预内置的x64 DLL。
3、尽在Windows平台下,需要VC++ Redistributable 2008。
工具下载 最新版本源码压缩包:【点我下载】
Linux环境下构建 依赖组件 针对自己的Linux发行版,获取最新版本的Mono:【传送门】
使用下列命令安装常用依赖组件:
sudo apt-get update
sudo apt-get install libssl-dev mono-devel
AMD/OpenSource构建命令:
sudo apt-get install ocl-icd-opencl-dev Nvidia构建命令:
sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd 最后,运行下列命令:
msbuild scallion.sln Docker Linux配置(Nvidia GPU) 1、获取nvidia-docker容器运行时环境:【点我获取】。
2、运行下列命令构建容器:
docker build -t scallion -f Dockerfile.nvidia 3、运行下列命令:
docker run --runtime=nvidia -ti --rm scallion -l Windows环境下构建 1、在VS中打开“scallion.sln”
2、构建解决方案
工具使用 枚举设备: $ mono scallion/bin/Debug/scallion.
为什么要运行 Tor 中继? 运行 Tor 中继,您可以帮助 Tor 网络:
变得更快(因此变的更好用)更难以被攻击变得更健壮使用户更安全(监视更多的中继更难) —— 洋葱路由网络官方指南
(实际上 Tor 因为越来越多的中继变快了不少。(确信)
系统需求 根据你要跑的 Tor 中继类型不同,节点硬件需求也不同。
带宽与连接 Tor 中继最重要的就是带宽需求了。
一个非出口中继需要至少可以处理 7000 个并发连接,消费级路由器在这么多连接的情况下可能会直接狗带,所以不要在自家跑。IDC 肯定是没问题的,快速出口中继(100Mbp+)一般需要处理多得多的连接(100K+)。
建议中继至少为 Tor 提供 16Mbps 的对等带宽, 多多益善。中继的最低要求是 10Mbps。
每月流量 Tor 中继每月至少使用 100GByte 的出站流量(和相同数量的传入流量),换算到每天平均也就是 10Mbps。 推荐月流量大于 2TB。 最好的情况当然是不限量的跑啦。
IP 每个中继都需要一个公共 IPv4 地址,最好是直接在主机上的,或者通过 NAT 和端口转发也可以。
不需要是静态 IPv4 地址,但是最好是静态地址。
如果你是个动态 IP, 至少应保持 3 个小时不变。因为如果经常换 IP,则在这机器上运行中继或桥接没有多大意义,因为中继IP列表每小时只分发一次。
建议有额外的 IPv6 连接,但不是必需的。
注意:每个公共 IPv4 地址只能运行最多两个 Tor 中继。如果要运行两个以上的中继,则将需要更多的IPv4地址。
内存 一个 40Mbps 的非出口中继至少需要 512M。
说是暴力一点都不奇怪,.onion的域名生成是私钥>(rsa)>公钥>(sha1)>杂凑值>(base32编码)>得到很丑的地址.onion。这道理跟比特币生成特定地址是同样的,但是因为计算量太大所以大家都会折衷,只要地址前几位有个人特色就好。
所以原理是,使用高性能运算机器,不停的一值尝试不同的私钥输入,看看有没有满意的结果,例如Facebook的洋葱地址“ facebookcorewwwi.onion ”。相当的漂亮,相当的好看,要爆破这么多位,大概也只有Facebook等拥有超大规模服务器集群的厂商可以做得到,因为在密码学上的评估要暴力解出这样的结果以1.5Ghz处理器要260万年,惊为天人Facebook展现出庞大运算的惊人实力。这是暗网目前最漂亮的域名了。
项目地址:
https://github.com/katmagic/Shallot
https://github.com/lachesis/scallion
https://github.com/cathugger/mkp224o
如果运行过程中缺了什么套件沒有办法运行
可以输入以下命令:
sudo apt-get install libssl-dev
Tor 是可以帮助你网上冲浪时保持隐私的免费开源软件系统。当你使用 Tor 浏览器冲浪时,你的流量会在到达最终目的地之前通过服务器网络随机定向,以保护你的位置安全和身份信息。
Tor 是「洋葱路由器The Onion Router」的缩写,形容 Tor 通过将数据包装在多个加密层中(如洋葱一般)来保护其数据的方式。
Tor 本质是匿名工具,代理非其所长,不加可插拔传输的直球 Tor 连接流量特征明显。
但是 Tor 是如何在让你匿名冲浪的呢?在本系列废话中,我们将深入研究 Tor 网络使用的结构和协议,以便第一手了解 Tor 的工作方式。
Tor 101 在一个非常抽象的层次上,Tor 是通过一系列服务器(称为节点或中继Relay)进行路由转发流量的。
目前 Tor 全网大约有 6300+ 个中继和 1000+ 网桥通过 Tor 网络路由流量。这些中继遍布世界各地,完全由愿意为 Tor 网络贡献带宽的志愿者,非营利机构,科研院校和图书馆和开蜜罐的 FBI、国安局等运行。中继越多越好!这是有道理的,因为每个中继只能提供一定的带宽。Tor 的节点越多,网络的性能、冗余性和安全性就越好。
Types of Relays 默认情况下,Tor 客户端通过 3 个中继建立连接,每个中继都有特定的作用。RT
中继种类有:
入口中继Guard Relay —— Tor 链路的第一个中继。当使用网桥时,网桥会取代入口中继。稳定高带宽的一般通过中继经过一段时间的使用会被挂上入口中继 Flag。中间中继Middle Relay —— 中间中继就像名字说的一样是将流量从入口中继传输到出口中继的,这样可以防止入口中继和出口中继互通有无。出口中继Exit Relay —— 出口中继是 Tor 网络边缘的出口点,将流量发送到客户端预期的最终目的地。所谓蜜罐也都是在出口中继上的。出口中继的流量如果没过 TLS,那么从出口到目标服务的连接就是明文流量,会暴露非 Onion 地址的 DNS 查询记录(因为 DNS 查询也是出口处理的)。网桥Bridge —— 不出现在公共 Directory 里的入口中继,可部署可插拔传输插件,是非公开的节点们。 要注意除了配置了现代可插拔传输插件的网桥,其他的节点是必墙的,方式是很 Old School 的路由黑洞。