Arti 的第一个稳定版本,Tor 在 Rust 中的官方实现

匿名 Tor 网络的开发人员创建了 Arti 项目的第一个稳定版本 (1.0.0),该项目开发了一个用 Rust 编写的 Tor 客户端。 1.0 版本被标记为适合一般用户使用,并提供与主要 C 实现相同级别的隐私性、可用性和稳定性。 在其他应用程序中使用 Arti 功能所提供的 API 也已稳定。 该代码根据 Apache 2.0 和 MIT 许可证分发。

与最初被设计为 SOCKS 代理然后根据其他需求进行定制的 C 实现不同,Arti 最初以模块化可嵌入库的形式开发,可供各种应用程序使用。 此外,在开发新项目时,会考虑到所有过去的 Tor 开发经验,这避免了已知的架构问题,并使项目更加模块化和高效。

用 Rust 重写 Tor 的原因是希望通过使用内存安全的语言来实现更高级别的代码安全性。 据 Tor 开发人员称,如果代码不使用“不安全”块,则该项目监控的所有漏洞中至少有一半将在 Rust 实现中消除。 Rust 还可以实现比使用 C 更快的开发速度,因为该语言的表达能力和严格的保证可以让您避免浪费时间进行双重检查和编写不必要的代码。

基于第一个版本的开发结果,Rust 语言的使用证明了自己的合理性。 例如,我们注意到,在每个阶段,Rust 代码中出现的错误都比 C 语言中的类似开发少——开发过程中出现的错误主要与逻辑和语义有关。 过于苛刻的 rustc 编译器被一些人认为是一个缺点,但实际上却是一件好事,因为如果代码编译并通过测试,其正确性的可能性就会显着增加。

新变体的开发也证实了开发速度的提高,这不仅是因为基于现有模板重新创建了功能,还因为 Rust 更具表现力的语义、方便的函数库以及 Rust 代码安全性的使用能力。 缺点之一是生成的程序集尺寸较大 - 由于默认情况下系统上不提供标准 Rust 库,因此必须将其包含在提供下载的包中。

1.0版本主要关注客户端角色的基础工作。 在 1.1 版本中,计划实现对插件传输和桥接的支持以绕过阻塞。 1.2版本预计将支持洋葱服务和相关功能,例如拥塞控制协议(RTT Congestion Control)和防御DDoS攻击。 2.0 分支计划实现与 C 客户端的同等功能,该分支还将提供在各种编程语言的代码中使用 Arti 的绑定。

在接下来的几年中,工作重点将是实现运行中继和目录服务器所需的功能。 当 Rust 代码达到可以完全替代 C 版本的水平时,开发人员打算让 Arti 成为 Tor 主要实现的地位,并停止维护 C 实现。 C 版本将逐步淘汰,以便顺利迁移。

来源: opennet.ru

添加评论