علیرضا بروجردیان
علیرضا بروجردیان
خواندن ۴ دقیقه·۹ ماه پیش

امنیت ملی به زبان برنامه‌نویسی مرتبط است!

نوشته‌ای در مورد زبان Rust و جایگزین‌های ++C

مهاجرت به زبان دیگر

کاخ سفید (اگر دقیق‌تر بخوام بگم: US White House Office of the National Cyber Director (ONCD))، تأکید کرده که:

همه‌ی برنامه‌نویس‌ها، باید از زبان‌های برنامه‌نویسی memory safe استفاده کنند.

در واقع از زبان‌هایی مثل C و ++C استفاده نکنند و از زبانی مثل Rust استفاده کنند. (زبان‌هایی که اشاره کردم به طور مستقیم در گزارش اصلی، به عنوان مثال ذکر شده‌اند.) اصل گزارش رو اینجا مطالعه کنید.

بعضی از بزرگترین مشکلات امنیتی در دوره‌ی اینترنت به خاطر همین مشکلات ناشی از ایمن نبودن حافظه ایجاد شده‌اند.

(اگر در مورد memory safety نمی‌دونید در بخش پایانی (چرا memory safe؟) توضیحاتی رو نوشتم.)

و اما Rust

علاوه بر تاکید کاخ سفید، در گزارش سالیانه‌ی سال 2023 در stackoverflow به زبان Rust اینطور اشاره شده:

Rust is the most admired language, more than 80% of developers that use it want to use it again next year.

فکر می‌کنم این هشتمین سال پیاپی هست که زبان Rust به عنوان مورد تحسین‌ترین یا دوست‌داشتنی‌ترین زبان سال (طبق آمار) انتخاب می‌شه.

هر روز هم بیشتر و بیشتر در مورد این زبان می‌شنویم. خود من در ابتدای پست قبلی (جایی برای برنامه‌نویس‌ها نیست!) به زبان Rust اشاره کردم و حالا دوباره دارم از Rust می‌نویسم.

پس اگر برنامه‌نویس هستید و یا به برنامه‌نویسی علاقه‌دارید باید این زبان رو جدی بگیرید.


پیش‌داوری

این زبان (++C) برای خیلی‌ها از جمله خود من بیشتر از فقط یک زبان برنامه‌نویسیه.

من سال‌ها ++C رو درس دادم و ازش در پروژه‌ها استفاده کردم اما مدتی می‌شه که در مورد جایگزین کردن زبان ++C صحبت می‌شه. اگرچه ناراحتم ولی خب چه می‌شه کرد. این زبان کاستی‌های جدی داره و بالاخره باید ازش عبور کنیم.

تصور من این بود که دیر یا زود چیزی شبیه به آن‌چه که در ابتدای متن نوشتم منتشر می‌شه و همه به طور جدی برای مهاجرت از این زبان اقدام می‌کنند ولی پیشبینی من جایگزین شدن زبان Carbon بود.

Carbon
Carbon

از این جهت مدت زیادی برای یادگیری و تسلط به زبان Rust مقاومت کردم، چون فکر می‌کردم با اومدن Carbon همه به سمت این زبان می‌ریم.

زبان Carbon در سال 2022 در کنفرانس cppnorth به طور رسمی معرفی شد.

این پروژه که در Google شروع شده بود، از ابتدا هم قرار بود تا جایگزین ++C شود. مزیت مهم این زبان امکان همکاری دوطرفه (bi-directional interoperability) با ++C بود. این یعنی برنامه‌نویس‌ها می‌تونند تا کد‌های ++C رو داخل فایل‌های Carbon داشته باشند.

خب Rust چنین امکانی رو نداره و این یعنی هزینه‌ی عبور از ++C با زبانی مثل Rust خیلی بیشتر از Carbon می‌شه اما به نظر، برای کاخ سفید مشکلات امنیتی جدی، حالا باعث این اقدام شده.

فکر می‌کنم دیگه نباید منتظر Carbon باشیم. Carbon برای سال 2027 برنامه‌ریزیی شده بود.



چرا memory safe؟

فرض کنید یک آرایه یا لیست به نام MyCollection ساختیم و اسامی ۱۰ تا از دانش‌جوهای یک کلاس رو داخلش ریختیم.

شما در واقع درخواست می‌کنید تا حافظه‌های مورد نیاز برای اسم‌ها گرفته شود. (به گرفتن حافظه Memory Allocation می‌گوییم.) بعد اسم‌ها رو داخل این حافظه‌ها می‌نویسید. احتمالاً می‌دونید که آدرس شروع این حافظه‌ها رو هم در MyCollection نگه می‌دارید.

شما می‌تونید بعداً درخواست کنید که مثلاً نام دانشجوی دوم روی صفحه چاپ شود.

تا حالا فکر کردید که آیا ممکن است برنامه‌ی دیگری به این بخش از حافظه که شما اشغال کرده‌اید، دسترسی داشته‌باشد؟

اگر این اتفاق بیوفتد خب اطلاعات مهم ما لو رفته.

یا حتی شاید ممکن باشد کسی این اطلاعات رو بازنویسی کند مثلاً نام یکی از دانشجو‌ها رو تغییر دهد.

گاهی حتی شاید خود ما در اثر اشتباه در کار کردن با این حافظه‌ها دچار اشکال بشویم.

این بخشی از مشکلاتی است که ایمن نبودن حافظه برای ما ایجاد می‌کند.

البته زبان های دیگری مثل #C و Java هم به عنوان زبان‌های memory safe در نظر گرفته می‌شوند ولی Rust به خاطر ساختارهایی که ارائه می‌ده، در این زمینه موفق‌تر عمل کرده.


برداشت نادرست

امیدوارم این متن باعث نشه فکر کنید که باقی زبان‌های برنامه‌نویسی خوب نیستند. یا مثلاً اگر الان زبان دیگری رو بلد هستید، نگران بشید.

همه‌ی زبان‌های پر استفاده‌ی موجود، مزیت‌های قابل رقابت خود رو دارند و هر کدام مناسب کاری هستند. اگر من رو بشناسید، می‌دونید که خود من بیشتر از زبان #C استفاده می‌کنم و این زبان رو بسیار دوست دارم و قرار هم نیست پروژه‌های خودم رو به Rust منتقل کنم.


تصویر ابتدای مقاله رو با یک prompt ساده با استفاده از Microsoft Copilot ساختم و عنوان جالب داخل تصویر رو هم از مقاله‌ای که دیروز در همین رابطه در stackoverflow.blog منتشر شده‌بود برداشتم که به جمله‌ی معروف In God We Trust، اشاره داره که روی دلارهای آمریکا نوشته شده.


زبان‌های برنامه‌نویسیمشکلات امنیتیبرنامه نویسیبرنامه‌نویسیزبان
خالقِ طَمطام، از اهالی استارت‌آپ، برنامه‌نویسِ کارکُشته، مدرسِ برنامه‌نویسی. وبسایت شخصی من: https://boroujerdian.com
شاید از این پست‌ها خوشتان بیاید