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

添加評論