مایکروسافت در حال بازنویسی کتابخانه رمزنگاری متنباز خود، SymCrypt، به زبان برنامهنویسی راست (Rust) است تا با بهبود ایمنی حافظه، آسیبپذیریهای موجود در کدهای نوشته شده با زبانهایی مانند C را برطرف کند. این اقدام پاسخی به خطراتی است که شیوههای کدنویسی قدیمی و زبانهای ناایمن از نظر حافظه، از جمله C، برای نرمافزارها و به ویژه کتابخانههای رمزنگاری ایجاد میکنند. هدف اصلی این پروژه، ارتقاء امنیت و جلوگیری از مشکلاتی نظیر از کار افتادن (Crashes)، خرابی دادهها (Data Corruption)، پیادهسازیهای معیوب (Flawed Implementation) و حملات کانال جانبی (Side-channel Attacks) است. SymCrypt به طور گسترده در پلتفرمهایی مانند ویندوز (Windows)، آژور لینوکس (Azure Linux)، ایکسباکس (Xbox) و سایر محصولات مایکروسافت به کار گرفته میشود.
چالشهای موجود و راهکار راست
کتابخانههای رمزنگاری به دلیل ماهیت حساس عملیات خود، نیازمند بالاترین سطح امنیت هستند. زبان C، در کنار مزایای عملکردی خود، به دلیل عدم ارائه تضمینهای ایمنی حافظه، میتواند منجر به آسیبپذیریهایی شود که توسط مهاجمان قابل بهرهبرداری هستند. در پاسخ به این چالش، زبانهای برنامهنویسی ایمن از نظر حافظه مانند راست، به همراه ابزارهای راستیآزمایی صوری (Formal Verification Tools)، به بلوغ کافی رسیدهاند که امکان استفاده در مقیاس وسیع را فراهم میکنند. راست به دلیل سیستم نوع (Type System) قدرتمند خود، به طور ذاتی تضمینهایی در خصوص مالکیت (Ownership) و عدم تداخل ارجاعات (Aliasing XOR Mutability) ارائه میدهد که این امر فرآیند راستیآزمایی برنامه را به طور قابل توجهی تسهیل میکند. در مقابل، راستیآزمایی کدهای C اغلب مستلزم اثبات خواصی است که میتواند به کدهای مشتری خارجی وابسته باشد و پیچیدگی را افزایش دهد.
چشمانداز بلندمدت
SymCrypt در حال حاضر عمدتاً در C cross-platform نوشته شده و از حداقل استفاده از بهینهسازیهای خاص سختافزار از طریق ذاتیها (Intrinsics) و زبان اسمبلی (Assembly Language) بهره میبرد. این کتابخانه طیف وسیعی از الگوریتمها از جمله AES-GCM، SHA، ECDSA و الگوریتمهای جدیدتر پساکوانتومی (Post-quantum Algorithms) مانند ML-KEM و ML-DSA را ارائه میدهد. در بلندمدت، مایکروسافت امیدوار است که کاربران را به سمت استفاده از باینریهای (Binaries) SymCrypt از پیش کامپایل شده (از طریق APIهای C یا راست) یا کامپایل از کد منبع در راست، سوق دهد. در آن مرحله، مسیر کامپایل راست به C دیگر مورد نیاز نخواهد بود، زیرا کاربران به طور مستقیم از قابلیتهای راست بهرهمند خواهند شد.
مشاهده مطلب اصلی