麻省理工学院的课程“计算机系统安全”。 第19讲:“匿名网络”,第2部分(Tor网络创建者的讲演)

麻省理工学院。 讲座课程#6.858。 “计算机系统的安全性。” Nikolai Zeldovich,James Mickens。 2014年


计算机系统安全是一门有关开发和实施安全计算机系统的课程。 讲座涵盖了威胁模型,危害安全性的攻击以及基于最新科学研究的安全技术。 主题包括操作系统(OS)安全性,功能,信息流管理,语言安全性,网络协议,硬件安全性和Web应用程序安全性。

第1课:“简介:威胁模型” 第1 部分 / 第2 部分 / 第3部分
第2课:“控制黑客攻击”, 第1 部分 / 第2 部分 / 第3部分
第3讲:“缓冲区溢出:漏洞利用和保护” 第1 部分 / 第2 部分 / 第3部分
讲座4:“特权分离”, 第1 部分 / 第2 部分 / 第3部分
讲座5:“安全系统从何而来?” 第1 部分 / 第2部分
讲座6:“机会” 第1 部分 / 第2 部分 / 第3部分
讲座7:“本地客户端沙箱” 第1 部分 / 第2 部分 / 第3部分
讲座8:“网络安全模型” 第1 部分 / 第2 部分 / 第3部分
讲座9:“ Web应用程序安全性” 第1 部分 / 第2 部分 / 第3部分
讲座10:“符号执行” 第1 部分 / 第2 部分 / 第3部分
第11课:“ Ur / Web编程语言” 第1 部分 / 第2 部分 / 第3部分
讲座12:网络安全性第1 部分 / 第2 部分 / 第3部分
讲座13:“网络协议” 第1 部分 / 第2 部分 / 第3部分
第14课:“ SSL和HTTPS” 第1 部分 / 第2 部分 / 第3部分
第15课:“医疗软件” 第1 部分 / 第2 部分 / 第3部分
第16课:“侧面通道攻击” 第1 部分 / 第2 部分 / 第3部分
讲座17:“用户身份验证” 第1 部分 / 第2 部分 / 第3部分
第18课:“私人浏览Internet” 第1 部分 / 第2 部分 / 第3部分
讲座19:“匿名网络” 第1 部分 / 第2 部分 / 第3部分

让我们仔细看看该协议如何工作。 因为阅读演讲文章而不谈论引起读者注意的事情是可耻的。 我要为在黑板上画画的技巧再次道歉,毕竟,大部分时间我都是在桌子上度过的,在电脑上打字。

这是外星技术。 这是中继器。 这是爱丽丝。 这是另一个中继器,这是鲍勃。 爱丽丝现在想与鲍勃交谈,所以她要做的第一件事是通过这些中继器建立到鲍勃的链。 假设她选择了这两个中继器R1和R2。 爱丽丝首先建立到R1的TLS链接,假设她已经有到R2的TLS链接。 然后,首先,爱丽丝执行单向身份验证,匿名密钥的单向匹配。



旧的Tor协议称为TAP-Tor身份验证协议,新的协议称为NTor。 他们俩都有安全的证据。 这是正确的证据,尽管描述中有错误。

认证后,爱丽丝选择信道ID电路ID(例如3),指示中继器创建信道“ 3”-创建“ 3”,然后告诉她该信道已创建-已创建。 爱丽丝和中继现在共享秘密对称密钥S1。 并且它们都以索引“ 3”存储该索引,该索引是此通道的链接。



爱丽丝现在可以使用此密钥发送R1消息。 她说,在“三驾马车”上,这是频道标识符,在讲座文章中进行了讨论,带有内容的扩展单元将发送到中继。



扩展的单元格基本上包含握手握手的前半部分。 但是这一次它不是用公钥R1加密,而是用公钥R2加密。 这表明该消息正在发送到R2。 因此,R1知道有必要打开一个通向R2的新通道,并使用create(....)消息将其报告给R2中继,其中来自Alice的握手的一半都放在了括号中。 这样做时,R1创建了自己的电路ID,因为通道标识符在此第二TLS连接中定义了其他通道。 而且,爱丽丝不知道这里仍然使用哪些频道标识符,因为这是R1和R2的“个人事务”。



因此,转发器可以选择ID95。实际上,这不太可能,因为通道号是从4个字节的空间中随机选择的,但是我今天不想写出所有32位号。

之后,R2回答第一个“创建的”中继,R1将用S1密钥加密的扩展单元返回给Alice。 现在,爱丽丝和R2中继共享S2,爱丽丝可以发送消息,首先使用S2加密,然后使用S1加密。 她发送了这样的消息,R1删除S1的加密并将其进一步转发。



第一个转发器知道应该将通道3消息发送到通道95上的第二个转发器。在收到此消息之后,第二个转发器看到通道S2对应于S2密钥,并在其帮助下解密此消息:“哦,它说与Bob的开放连接”! 阅读此内容后,R2中继将打开与Bob的TCP连接,并使用相同的反向消息传递过程将此报告给Alice。

毕竟,爱丽丝说:“太好了,然后告诉鲍勃类似http:1.0get /index.html的东西”,然后生活就继续了。

让我们看看我在演讲文章中错过了什么...那么……这个……这个。 好吧,那么我们实际上在中继什么呢? 该领域的一些解决方案声称必须来回传输IP数据包,也就是说,该方案应该只是传输IP数据包的一种方式。 问题之一是我们想要支持尽可能多的用户,这意味着我们必须在各种操作系统上工作。

但是不同操作系统的TCP堆栈的行为有所不同。 如果您曾经使用过Nmap或某种网络流量分析工具,则可以轻松地区分Windows TCP与FreeBSD TCP或TCP Linux。 您甚至可以区分不同的版本。 此外,如果您可以将原始IP数据包发送到选定的主机,则可以部分基于主机的操作来引起响应。



因此,如果来回转发IP数据包,则需要IP规范化。 由于任何小于完整IP堆栈的内容都无法正常使用,因此您就不要这样做了。

取而代之的是,我们选择最简单的方法-假设它是可靠的并且一切正常,我们就简单地接受TCP流中的所有内容。 该程序分析了Alice传输的所有数据,同意接受来自其应用程序的TCP连接,并且仅中继内容,而无需在网络级别进行任何复杂的操作。

您可以尝试使用讲义中介绍的其他方法来提高生产率。 但是我描述了一个可以实际实现的方案,因为在创建Tor时,我们对安全类和编译器的关注比对网络类的关注要多得多。 现在我们有了网络专家,但是在2003-2004年,我们遇到了短缺的专家。

TCP协议似乎是一个非常合适的正确级别。 在某些原始项目中讨论的高级协议在Alice端使用单独的代理用于HTTP,FTP,这似乎是一个坏主意。 这是因为任何协议都必须在整个Alice-Bob连接中从头到尾进行加密,如果幸运的话,Alice将能够在R2和Bob之间创建具有完整性和安全性功能的TLS连接。

但是,如果是这种情况,那么要完全创建TLS连接之前,要应用于加密数据的任何匿名转换都必须在Alice使用的应用程序中进行。 但是使用代理服务器是不可能的,因此TCP更适合我们。

有人问我,我们的安全证据在哪里? 对于我们使用的许多加密方法,我们都有安全性证明,它们是文档的标准版本。 通常,对于该协议,有证据表明洋葱路由的某些方面是安全的。 但是他们必须用来证明提供匿名性的模型应该基于宇宙的奇异特性,网络特性或攻击者的能力,以使它们只能满足某些理论会议上的编程要求。
简而言之,这些匿名属性必须证明能够在Alice-R1部分中看到数据量和时间的攻击者将无法识别它们,而仅观察R2-Bob部分中的输出字节。 但这不是令人满意的结果。 只是说一遍,您希望从不知道如何构建的系统中获得哪些安全保证? 好吧,我必须谨慎对待此类声明。回想一下,有些系统具有强烈的匿名性保证,并且您知道如何创建此类系统,但您永远都不想使用它们。 例如,经典的DC-Net网络提供了保证的匿名性,除了任何参与者都可以简单地通过停止参与来关闭整个网络。 此外,该系统无法扩展。

但是对于我们这个时代创造的事物,匿名属性具有更高的概率,并且不能得到绝对保证。 因此,与其问这个系统是否能保证Alice的安全,不如问一下Alice是否希望有99%的机会将该网络活动与她的活动相关联可以安全地发送多少流量?

当我们开始创建Tor时,我们问自己的第一个问题是,谁来管理所有这些事情? 我们不知道我们的系统是否真的“站起来”,所以唯一的选择就是尝试看看它带来了什么。



我们有足够的志愿者。 相当数量的非营利组织只是想捐赠并使用它们购买带宽并启动Tor网站。 一些大学和几家私人公司参与了该项目,其安全服务部门决定启动自己的Tor服务器很有趣。
在这种情况下,出现了法律问题,但是我又不是律师,也无法对这些事情进行法律评估。 但是,五个人向我询问了我们系统的合法性。 据我所知,至少在美国,启动Tor服务器没有法律障碍。 在我看来,大多数欧洲国家都发生了类似的情况。 在互联网自由较少的国家,Tor的限制更大。

问题不在于使用Tor系统的合法性或非法性,而是有人可以用我的Tor服务器做非法或不受欢迎的事情。 例如,如果我将计算机作为Tor节点提供,我的提供商将断开我与网络的连接,执法机构会认为我只是使用Tor服务器,否则他们会来接我的计算机来确保这一点。

对于这种情况,我建议您不要从宿舍启动Tor服务器,或者,假设允许网络策略,不要使用计算机广播大量输出流量。 老实说,我不知道现在的这项政策是什么,因为自从我读书以来,它已经发生了很大变化。 但是在任何情况下,宿舍中计算机的大量传出流量都可能导致麻烦。 但是,在不向Internet发出流量的情况下启动转发器将不会有太大问题。 但是,如果您的提供者允许您以这种方式采取行动,那么这是很合理的事情。

有人问我,如果用户不信任特定站点该怎么办? 这将我们带入下一个主题。 网络的客户可以自行决定是否使用该软件,并且您不能禁止他们使用某些程序并强迫他们使用其他程序。 但是请记住,匿名者喜欢陪伴。 如果我使用三个节点,您使用其他三个节点,而您又是其他三个节点,那么我们的流量完全不会混合。



只要我们分开使用的网络部分,我们就很容易彼此区分。 现在,如果我简单地排除一个或两个节点,而又简单地排除一个或两个节点,则不会将网络分成如此庞大的部分,这会使我们的识别复杂化。 但是,对于每个人来说,尽可能多地使用相同的节点是最佳选择。 我们如何实现这一目标?

因此,在Tor的第一个版本中,我们只是向用户删除了所有节点的列表,其中大约有6个,其中三个在Tech Square计算机科学实验室的一台计算机上工作。 但这不是一个好主意,因为节点数会增加和减少,节点本身也会发生变化,并且您不希望每次有人加入网络时都发布该软件的新版本。

但是,您可以确保每个节点都包含与其连接的所有其他节点的列表,并且它们都将彼此“通告”。 然后,当客户端连接到网络时,他只需要知道一个节点,然后说:“嘿,网络上有谁”?

实际上,许多人都有基于此原理的项目。 许多早期的对等匿名项目都以这种方式工作。 但这是一个可怕的想法。 因为如果您连接到一个节点并询问谁在线,并且您信任应答方,那么我可以回答您:“我在线,我的朋友在线,我的朋友也在线,等等。没有人在线!” 也就是说,我可以告诉您我管理的任何数量的假节点,它们会拦截您的所有流量。 这就是所谓的rw捕获攻击或对源节点的拦截攻击。

因此,如果我们仅由受信任方管理一个目录,那么情况可能就不太好,因此,我们仍然假设我们有多个受信任方。 客户端转到这些受信方,从每个受信方接收所有节点的列表,并将其合并为一个公共的网络节点列表。

这是不好的,因为我们又被分为可识别的网络群集。 如果我选择了这三个节点,而又选择了其他三个节点,那么我们将使用不同的节点集,这是不好的。 此外,如果我使用传递给我的节点列表,则任何受信任方都可以阻止我使用她不喜欢的节点,只需不在列表中指定即可。 如果使用组合列表,则有人可以向我充斥2万个伪造的服务器,并在列表中指明它们。 我可以为他们的排除投票,并以某种方式解决最后两个问题,但是我仍然会与使用不同信任方的每个人分开。



我们可以创建一个魔术DHT或分布式哈希表,一种遍及所有节点的魔术分布式结构。 我说“魔术”是因为,尽管在这一领域有一些项目,有些项目比其他项目要好,但目前没有一个有力的安全证据。 如此努力,以至于我可以自信地说它确实安全。

因此,这就是我们得出的解决方案。 我们的网络有几个受信任的机构,由受信任的各方管理,这些机构收集每小时投票的节点列表,这些节点可以在网络上工作,并且可以投票排除可疑节点。 它们都在同一个/ 16上工作,这会对流量产生奇怪的影响,并形成基于投票结果计算的共识。
如果未由足够数量的受信任方“投票”签署该节点,则客户端不会使用该节点。

这不是项目的最终版本,但这是迄今为止我们能提出的最好的版本。 顺便说一句,您需要在客户端之间分发的是所有授权公共密钥的列表以及一些用于接收目录的位置的列表。 您希望所有节点都缓存这些目录,因为如果不这样做,则网络负载将变得危险,并且网络带宽将急剧下降。

我打算跳过下一个问题,直接讨论客户应如何选择应通过网络路由的路径。 我想谈谈使用和创建不会背叛自己的应用程序的问题。 我想谈谈网络滥用,隐藏服务及其工作方式,谈论对审查制度的抵制,我也想谈谈攻击和保护。 但是我们只剩35分钟了,所以我无法谈论我想要的一切。 我请您对您认为最重要的讨论主题进行投票。

如果您认为最重要的主题之一是路径和节点的选择,请举手。 如果最重要的主题之一是应用程序问题以及如何确保应用程序不违反您的匿名性,请举手。 如果滥用是最重要的问题之一,以及如何预防它,请举手。 因此,我看到此主题很受欢迎,并对其进行了标记。

如果对您来说重要的是隐藏服务如何工作以及如何使它们更好地工作,请举手。 , , . , . , ? , . ?



, . , , . , , — .

, . , IP-, , . , Whole stack, -, , Tor.

«» -, , , , , , , , .
, : , , , . , -, . , . , . . , .

, . , , – , -, . , BitTorrent, Gnutella . , , , .

, , , 80 443. , 80. IRC- - IRC. -, , , , .

, , - 80 443, , , . , Tor. - , . , , .

, - IRC- IP-.

, My Little Pony, IRC-, , , , – . , IP-, , IP- . Tor .



IP- ? , IP ? . , IP, . , IP-, .
IP- , , , , , , Tor -.

. - «» ? , IP, , IP IP-. , , IP-.

, , , , . – « ». , , , , , IRC – , , , .

, . , . , , , - IP, .

- . , 2013 , « 2» , Silk Road. « 2» , Tor, , , .

, - , OPSEC – . , , . Tor , .

, , , , , « ». : «, , . , , . , , — ». , , .

54:00

麻省理工学院的课程“计算机系统安全”。 19: « », 3 ( Tor)


.

感谢您与我们在一起。 你喜欢我们的文章吗? 想看更多有趣的资料吗? 通过下订单或将其推荐给您的朋友来支持我们,为我们为您开发的入门级​​服务器的独特模拟,为Habr用户提供30%的折扣: 关于VPS(KVM)E5-2650 v4(6核)的全部真相10GB DDR4 240GB SSD 1Gbps从$ 20还是如何划分服务器? (RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps , .

戴尔R730xd便宜2倍?在荷兰和美国,我们有2台Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100电视(249美元起) 阅读有关如何构建基础架构大厦的信息。 使用价格为9000欧元的Dell R730xd E5-2650 v4服务器的上等课程?

Source: https://habr.com/ru/post/zh-CN431264/


All Articles