توسعه دهندگان شبکه Tor ناشناس پروژه Arti را ارائه کردند که در آن کار برای ایجاد پیاده سازی پروتکل Tor به زبان Rust در حال انجام است. برخلاف پیادهسازی C که ابتدا بهعنوان یک پروکسی SOCKS طراحی شد و سپس برای سایر نیازها طراحی شد، Arti در ابتدا به شکل یک کتابخانه قابل جاسازی مدولار توسعه داده شد که میتواند توسط برنامههای مختلف استفاده شود. این کار برای بیش از یک سال با کمک مالی از برنامه کمک های مالی اصلی Zcash Open Major (ZOMG) در حال انجام است. کد تحت مجوز Apache 2.0 و MIT توزیع می شود.
دلایل بازنویسی Tor در Rust تمایل به دستیابی به سطح بالاتری از امنیت کد با استفاده از زبانی است که عملکرد ایمن با حافظه را تضمین می کند. به گفته توسعه دهندگان Tor، حداقل نیمی از آسیب پذیری های نظارت شده توسط پروژه در پیاده سازی Rust حذف خواهند شد اگر کد از بلوک های "ناامن" استفاده نکند. Rust همچنین به دلیل رسا بودن زبان و تضمین های دقیق که به شما امکان می دهد از اتلاف وقت برای بررسی مضاعف و نوشتن کدهای غیر ضروری جلوگیری کنید، به سرعت توسعه سریعتر نسبت به استفاده از C دست پیدا می کند. علاوه بر این، هنگام توسعه یک پروژه جدید، تمام تجربیات توسعه Tor در گذشته در نظر گرفته می شود، که از مشکلات معماری شناخته شده جلوگیری می کند و پروژه را ماژولارتر و کارآمدتر می کند.
در وضعیت فعلی، Arti میتواند از قبل به شبکه Tor متصل شود، با سرورهای دایرکتوری ارتباط برقرار کند و با یک پروکسی مبتنی بر SOCKS، اتصالات ناشناس در بالای Tor ایجاد کند. این توسعه هنوز برای استفاده در سیستمهای تولید توصیه نمیشود، زیرا همه ویژگیهای حریم خصوصی پیادهسازی نشدهاند و سازگاری با عقب در سطح API تضمین نمیشود. اولین نسخه سازگار با امنیت مشتری، پشتیبانی از گرههای محافظ و جداسازی نخ، قرار است در ماه اکتبر منتشر شود.
اولین نسخه بتا در مارس 2022 با اجرای آزمایشی کتابخانه تعبیه شده و بهینه سازی عملکرد انتظار می رود. اولین نسخه پایدار، با API، CLI و فرمت پیکربندی پایدار، و همچنین ممیزی، برای اواسط سپتامبر 2022 برنامه ریزی شده است. این نسخه برای استفاده اولیه توسط کاربران عمومی مناسب خواهد بود. به روز رسانی 2022 در پایان اکتبر 1.1 با پشتیبانی از حمل و نقل پلاگین و پل هایی برای دور زدن مسدود شدن انتظار می رود. پشتیبانی از سرویسهای onion برای انتشار 1.2 برنامهریزی شده است، و دستیابی به برابری با مشتری C در نسخه 2.0 انتظار میرود که زمان آن هنوز مشخص نشده است.
در آینده، توسعه دهندگان کاهش تدریجی فعالیت مربوط به توسعه کد C و افزایش زمان اختصاص داده شده به ویرایش در Rust را پیش بینی می کنند. وقتی پیادهسازی Rust به سطحی رسید که بتواند جایگزین نسخه C شود، توسعهدهندگان اضافه کردن ویژگیهای جدید به پیادهسازی C را متوقف میکنند و پس از مدتی، پشتیبانی کامل از آن را متوقف میکنند. اما این اتفاق به زودی نمی افتد و تا زمانی که پیاده سازی در Rust به سطح جایگزینی کامل برسد، توسعه کلاینت و رله Tor در C ادامه خواهد داشت.
منبع: opennet.ru