گوگل از کشف پیشرفت های مرتبط با پروژه KataOS با هدف ایجاد یک سیستم عامل امن برای سخت افزارهای جاسازی شده خبر داده است. اجزای سیستم KataOS به زبان Rust نوشته شده اند و در بالای میکروکرنل seL4 اجرا می شوند، که برای آن یک اثبات ریاضی از قابلیت اطمینان در سیستم های RISC-V ارائه شده است که نشان می دهد کد کاملاً با مشخصات مشخص شده در زبان رسمی مطابقت دارد. کد پروژه تحت مجوز Apache 2.0 باز است.
این سیستم از پلتفرم های مبتنی بر معماری RISC-V و ARM64 پشتیبانی می کند. برای شبیه سازی عملکرد seL4 و محیط KataOS در بالای سخت افزار، چارچوب Renode در طول فرآیند توسعه استفاده می شود. به عنوان یک پیاده سازی مرجع، مجموعه نرم افزاری و سخت افزاری Sparrow پیشنهاد شده است که KataOS را با تراشه های امن مبتنی بر پلت فرم OpenTitan ترکیب می کند. راه حل پیشنهادی به شما امکان می دهد یک هسته سیستم عامل تایید شده منطقی را با اجزای سخت افزاری قابل اعتماد (RoT، Root of Trust)، که با استفاده از پلت فرم OpenTitan و معماری RISC-V ساخته شده اند، ترکیب کنید. علاوه بر کد KataOS، قرار است در آینده تمامی اجزای دیگر Sparrow از جمله بخش سخت افزاری باز شود.
این پلتفرم با توجه به کاربرد در تراشه های تخصصی طراحی شده برای اجرای برنامه های کاربردی برای یادگیری ماشین و پردازش اطلاعات محرمانه، که نیاز به سطح ویژه ای از حفاظت و تأیید عدم وجود خرابی دارد، توسعه می یابد. نمونه هایی از این برنامه ها شامل سیستم هایی است که تصاویر افراد و ضبط صدا را دستکاری می کنند. استفاده KataOS از تأیید قابلیت اطمینان تضمین می کند که اگر یکی از قسمت های سیستم از کار بیفتد، خرابی به بقیه سیستم و به ویژه به هسته و بخش های حیاتی سرایت نمی کند.
معماری seL4 برای قطعات متحرک برای مدیریت منابع هسته در فضای کاربر و استفاده از ابزارهای کنترل دسترسی مشابه برای منابع کاربر قابل توجه است. میکروکرنل انتزاعات سطح بالا آماده ای را برای مدیریت فایل ها، فرآیندها، اتصالات شبکه و موارد مشابه ارائه نمی دهد؛ در عوض، تنها مکانیزم های حداقلی را برای کنترل دسترسی به فضای آدرس فیزیکی، وقفه ها و منابع پردازنده ارائه می دهد. انتزاعات و درایورهای سطح بالا برای تعامل با سخت افزار به صورت جداگانه در بالای میکروکرنل در قالب وظایف سطح کاربر پیاده سازی می شوند. دسترسی به چنین وظایفی به منابع موجود برای میکروکرنل از طریق تعریف قوانین سازماندهی می شود.
برای حفاظت بیشتر، همه اجزا به جز میکروکرنل به طور بومی در Rust با استفاده از تکنیکهای برنامهنویسی ایمن توسعه داده شدهاند که خطاهای حافظه را که منجر به مشکلاتی مانند دسترسی به حافظه پس از آزادسازی، عدم ارجاع اشارهگر تهی و بیش از حد بافر میشود، به حداقل میرساند. یک برنامه بارگذار در محیط seL4، سرویس های سیستم، چارچوبی برای توسعه اپلیکیشن، API برای دسترسی به تماس های سیستمی، مدیر فرآیند، مکانیزمی برای تخصیص حافظه پویا و غیره در Rust نوشته شد. مونتاژ تایید شده از جعبه ابزار CAmkES استفاده می کند که توسط پروژه seL4 توسعه یافته است. اجزای CAmkES را نیز می توان در Rust ایجاد کرد.
Rust ایمنی حافظه را در زمان کامپایل از طریق بررسی مرجع، مالکیت شی و ردیابی طول عمر شی (محدودهها) و با ارزیابی صحت دسترسیهای حافظه در زمان اجرا تقویت میکند. Rust همچنین محافظت در برابر سرریز اعداد صحیح را فراهم می کند، نیاز به مقداردهی متغیر قبل از استفاده دارد، به طور پیش فرض از مفهوم ارجاعات و متغیرهای تغییرناپذیر استفاده می کند و تایپ استاتیک قوی برای به حداقل رساندن خطاهای منطقی ارائه می دهد.
منبع: opennet.ru