دستورالعمل‌های RISC تقویت‌شده با سخت‌افزار قابلیت‌محور

**دستورالعمل‌های ریسک بهبودیافته با سخت‌افزار قابلیت محور** (به انگلیسی: **Capability Hardware Enhanced RISC Instructions** یا به اختصار **CHERI**) یک فناوری است که برای بهبود امنیت در پردازنده‌های ریسک (RISC) طراحی شده است. هدف CHERI رفع علت ریشه‌ای مشکلات ناشی از نبود ایمنی حافظه در پیاده‌سازی‌های رایج زبان‌های برنامه‌نویسی مانند C و سی++ است که مسئول حدود ۷۰٪ از آسیب‌پذیری‌های امنیتی در سیستم‌های مدرن هستند.

این سخت‌افزار با اختصاص دادن قواعد دسترسی مجزا به هر ارجاع به هر قطعه از داده یا منابع سیستمی کار می‌کند. این کار مانع از دسترسی یا تغییر چیزهایی می‌شود که برنامه‌ها نباید به آن‌ها دسترسی داشته باشند. همچنین، این فناوری فریب دادن بخشی از یک برنامه برای دسترسی یا تغییر چیزی که باید به آن دسترسی داشته باشد، اما در زمانی متفاوت، را دشوار می‌سازد. از همین سازوکار برای پیاده‌سازی جداسازی امتیازی استفاده می‌شود که فرآیندها را به بخش‌های مجزا (compartments) تقسیم می‌کند تا آسیب ناشی از یک باگ (امنیتی یا غیر آن) را محدود کند.

CHERI را می‌توان به بسیاری از معماری‌های مجموعه دستورالعمل مختلف از جمله MIPS، AArch64 و RISC-V اضافه کرد، که این امر آن را در طیف گسترده‌ای از پلتفرم‌ها قابل استفاده می‌سازد.

برای بهره‌مندی از مزایای ایمنی حافظه دقیق CHERI، نرم‌افزار باید دوباره کامپایل شود، اما اکثر نرم‌افزارها به تغییرات کمی در کد منبع (یا هیچ تغییری) نیاز دارند. اهمیت CHERI توسط دولت‌ها به عنوان راهی برای بهبود امنیت سایبری و حفاظت از سیستم‌های حیاتی به رسمیت شناخته شده است. این فناوری تحت توسعه فعال توسط سازمان‌های تجاری و دانشگاهی مختلفی قرار دارد.

## پس‌زمینه
CHERI یک معماری مبتنی بر قابلیت است. معماری‌های مبتنی بر قابلیت اولیه، مانند رایانه CAP و اینتل آی‌ای‌پی‌اکس ۴۳۲، مدیریت حافظه امنی را به نمایش گذاشتند، اما به دلیل سربارهای عملکردی و پیچیدگی با مشکل مواجه شدند. با سریع‌تر و پیچیده‌تر شدن سیستم‌ها، آسیب‌پذیری‌هایی مانند سرریز بافر و خطاهای استفاده پس از آزادسازی گسترده شدند. CHERI با طراحی‌ای که برای محیط‌های محاسباتی مدرن در نظر گرفته شده، به این چالش‌ها پاسخ می‌دهد. این فناوری ایمنی حافظه را اعمال می‌کند و اشتراک‌گذاری و جداسازی امن را برای مدیریت پیچیدگی روزافزون نرم‌افزار و مقابله با حملات سایبری فراهم می‌آورد.

در دهه‌های ۱۹۷۰ و ۱۹۸۰، معماری‌های مبتنی بر قابلیت اولیه مانند رایانه CAP (توسعه‌یافته در دانشگاه کمبریج) و اینتل آی‌ای‌پی‌اکس ۴۳۲ ویژگی‌های امنیتی قدرتمندی را به نمایش گذاشتند. این سیستم‌ها برای مدیریت قابلیت‌ها به جداول غیرمستقیم متکی بودند که با نیاز به چندین جستجو برای دسترسی به حافظه، گلوگاه‌های عملکردی ایجاد می‌کردند. در حالی که این رویکرد زمانی که پردازنده‌ها کند و حافظه سریع بود کارآمد بود، در اواسط دهه ۱۹۸۰ با سریع‌تر شدن پردازنده‌ها و عقب ماندن زمان دسترسی به حافظه، غیرعملی شد.

در سال ۲۰۱۰، دارپا برنامه «طراحی از صفر میزبان‌های تاب‌آور، تطبیق‌پذیر و امن» (CRASH) را راه‌اندازی کرد، که شرکت‌کنندگان را موظف به بازطراحی سیستم‌های کامپیوتری برای بهبود امنیت می‌کرد. تیم اس‌آرآی اینترنشنال و دانشگاه کمبریج معماری‌های مبتنی بر قابلیت را بازبینی کردند و به دنبال رفع چالش‌های ایمنی حافظه ذاتی در طراحی‌های متداول بودند.

## سازوکار
بندانگشتی|راست|جایگزین=اشاره‌گرهایی که به قابلیت‌ها یا آدرس‌های CHERI تبدیل شده‌اند.|دسترسی به حافظه با CHERI و بدون CHERI.
یک سیستم CHERI در سطح سخت‌افزار با ارائه یک نوع داده اعمال‌شده توسط سخت‌افزار (یک *قابلیت CHERI*) عمل می‌کند که اجازه دسترسی به حافظه را صادر می‌کند. این نوع داده شامل یک آدرس و سایر *[[فراداده]]‌ها* مانند کران‌ها و مجوزها است. دستورالعمل‌هایی مانند بارگذاری (load)، ذخیره‌سازی (store) و پرش (jump) که به حافظه دسترسی دارند، از یکی از این نوع‌ها برای مجاز شمردن دسترسی استفاده می‌کنند، در حالی که در معماری‌های سنتی، آن‌ها صرفاً از یک آدرس استفاده می‌کردند.

این فراداده به صورت درون‌خطی، در کنار آدرس، در حافظه کامپیوتر ذخیره می‌شود و توسط یک بیت برچسب (tag bit) محافظت می‌شود که در صورت دستکاری قابلیت، پاک می‌شود. این بیت به کامپیوتر اطلاع می‌دهد که کدام نواحی از حافظه از طریق یک عملیات خاص قابل دسترسی هستند و یک برنامه چگونه می‌تواند از طریق آن عملیات، حافظه را تغییر دهد یا بخواند. این ویژگی به سیستم‌های CHERI اجازه می‌دهد مواردی را که در آن به حافظه‌ای خارج از کران‌های تعیین‌شده برای برنامه، خواندن یا نوشتن انجام می‌شود، شناسایی کنند. مرتبط کردن فراداده با مقداری که برای دسترسی به حافظه استفاده می‌شود (در تضاد با واحد مدیریت حافظه)، به جای مرتبط کردن آن با خود حافظه، به این معناست که سخت‌افزار می‌تواند مواردی را که یک برنامه تلاش می‌کند به بخشی از حافظه که *باید* به آن دسترسی داشته باشد دسترسی پیدا کند، در حالی که قصد دسترسی به قطعه حافظه *دیگری* را دارد، شناسایی کند.

پیاده‌سازی‌های سیستم‌های CHERI همچنین شامل تغییراتی در تخصیص‌دهنده حافظه پیش‌فرض است؛ این جزء مشخص می‌کند که یک محدوده از آدرس‌ها باید توسط یک برنامه به عنوان یک شیء در نظر گرفته شود. در یک سیستم CHERI، این جزء باید این اطلاعات را با تنظیم کران‌ها روی اشاره‌گر (که توسط یک قابلیت CHERI نمایش داده می‌شود) که بازگردانده می‌شود، به سخت‌افزار نیز منتقل کند. همچنین ممکن است *طول عمر* را نیز برای جلوگیری از باگ‌های استفاده پس از آزادسازی یا استفاده پس از استفاده مجدد، منتقل کند.

بسته به زمینه، سیستم‌های CHERI می‌توانند برای بهبود بررسی‌های سطح کامپایلر، ساخت انکلیوهای امن (secure enclaves)، یا حتی برای تقویت معماری‌های دستورالعمل موجود استفاده شوند. گزارشی از مایکروسافت در سال ۲۰۱۹ نشان داد که حفاظت‌های CHERI می‌توانند بیش از ۷۰٪ از مشکلات ایمنی حافظه که در آن سال در شرکت شناسایی شده بود را کاهش دهند. معماری‌های CHERI همچنین برای سازگاری با زبان‌های برنامه‌نویسی موجود مانند C و C++ طراحی شده‌اند. یک مطالعه توسط پژوهشگران دانشگاه کمبریج نشان داد که پورت کردن شش میلیون خط کد منبع C و C++ به CHERI تنها به تغییر ۰.۰۲۶٪ از خطوط کد منبع (LoC) نیاز داشت.

## محدودیت‌ها
این معماری به دلیل سازوکارهای بیت برچسب و بررسی‌های قابلیتی که برای اعمال ایمنی حافظه لازم است، پیچیدگی سخت‌افزاری را به همراه دارد. اگرچه بهینه‌سازی‌هایی برای به حداقل رساندن این تأثیرات پیاده‌سازی شده است، اما مبادلات عملکردی بسته به حجم کاری و پیاده‌سازی‌های خاص می‌تواند متفاوت باشد. علاوه بر این، CHERI به تغییراتی در اکوسیستم‌های نرم‌افزاری و سخت‌افزاری نیاز دارد. پیاده‌سازی‌هایی مانند Morello به باینری‌های اصلاح‌نشده اجازه اجرا می‌دهند، اما این باینری‌ها هیچ مزیت امنیتی اضافی دریافت نمی‌کنند. نرم‌افزار باید برای استفاده از مدل مبتنی بر قابلیت CHERI دوباره کامپایل یا تطبیق داده شود و سازندگان سخت‌افزار باید افزونه‌های CHERI را در طراحی‌های خود بگنجانند.

استانداردسازی همچنان یک تلاش در حال انجام است. در حالی که ابتکاراتی مانند اتحادیه CHERI و استانداردسازی RISC-V با هدف ایجاد پشتیبانی گسترده‌تر انجام می‌شوند، فقدان استانداردهای صنعتی پذیرفته‌شده برای ویژگی‌های CHERI، پذیرش آن را به تأخیر انداخته است. تطبیق نرم‌افزارهای قدیمی یا بازسازی سیستم‌های موجود برای کار با CHERI می‌تواند چالش‌برانگیز باشد، به ویژه برای پایگاه‌های کد بزرگ و ناهمگون. این دشواری اغلب از شیوه‌های برنامه‌نویسی استفاده شده در طول توسعه اولیه نرم‌افزار، مانند پیاده‌سازی مدیریت حافظه سفارشی، ناشی می‌شود که در آن تشخیص اشاره‌گرها از اعداد صحیح می‌تواند به ویژه مشکل‌ساز باشد.

## پیاده‌سازی‌ها
معماری CHERI در چندین پلتفرم و پروژه پیاده‌سازی شده است:

* *Morello* – که توسط Arm به عنوان بخشی از برنامه «امنیت دیجیتال از طریق طراحی» (DSbD) با بودجه UKRI توسعه یافته است، تراشه Morello یک معماری بالامجموعه (superset) است که برای ارزیابی ویژگی‌های آزمایشی CHERI برای استفاده احتمالی در محصولات بر اساس معماری AArch64 طراحی شده است. برد Morello از CheriBSD، نسخه‌های سفارشی اندروید و لینوکس پشتیبانی می‌کند. این پروژه همچنان یک نمونه اولیه تحقیقاتی است.
* *CHERIoT* – که توسط مایکروسافت در سال ۲۰۲۳ معرفی شد و اکنون توسط چندین فروشنده توسعه می‌یابد، CHERIoT یک اقتباس از CHERI برای RISC-V است که برای دستگاه‌های تعبیه‌شده کوچک بهینه‌سازی شده است. CHERIoT یک پروژه با طراحی مشترک سخت‌افزار و نرم‌افزار است و یک سیستم‌عامل بی‌درنگ (RTOS) و مدل بخشی (compartment) سفارشی را به همراه سخت‌افزار تخصصی برای ارائه تضمین‌های امنیتی قوی ایجاد می‌کند. این پروژه ویژگی‌های پیشرفته ایمنی حافظه را که از پروژه‌های ایمنی زمانی CHERI انجام شده روی Morello الهام گرفته شده، در خود جای داده است.
* *Sonata* – که توسط lowRISC توسعه یافته و توسط NewAE به عنوان بخشی از پروژه Sunburst با بودجه UKRI تولید شده است، پلتفرم Sonata یک سیستم مبتنی بر اف‌پی‌جی‌ای است که برای اجرای معماری‌های RISC-V طراحی شده است. این برد دارای طراحی متن‌باز است که به پژوهشگران و توسعه‌دهندگان اجازه می‌دهد سخت‌افزار و نرم‌افزار آن را تغییر داده و تطبیق دهند. Sonata عمدتاً به عنوان یک سیستم نمونه‌سازی برای CHERIoT طراحی شده است.
* *X730* – که توسط Codasip در سال ۲۰۲۴ منتشر شد، این IP پردازنده پیاده‌سازی‌ای از پیش‌نویس استاندارد CHERI برای RISC-V برای یک پردازنده کلاس کاربردی است.
* *ICENI* – که توسط SCI Semiconductor در سال ۲۰۲۴ معرفی شد، ICENI یک میکروکنترلر سازگار با CHERIoT است که برای سیستم‌های تعبیه‌شده امن طراحی شده است.

پیاده‌سازی‌های CHERI که سیستم‌عامل‌های اصلی را هدف قرار می‌دهند، برای سازگاری با نرم‌افزارهای قدیمی و نرم‌افزارهای مبتنی بر قابلیت خالص طراحی شده‌اند تا امکان تطبیق تدریجی برای برنامه‌های موجود فراهم شود. CHERI همچنین در محیط‌های تحقیقاتی بر روی معماری‌های سخت‌افزاری مختلفی از جمله MIPS، AArch64 (از طریق پلتفرم Morello) و RISC-V پیاده‌سازی شده است.

## تاریخچه
تا سال ۲۰۱۲، نمونه‌های اولیه CHERI ارائه شدند. این نمونه‌ها یک ریزهسته را با اسمبلی دست‌نویس برای دستکاری قابلیت‌ها اجرا می‌کردند. CHERI به گونه‌ای طراحی شده بود که به راحتی بر روی معماری‌های مدرن پایپ‌لاین سوپراسکالر پیاده‌سازی شود. برخلاف سیستم‌های مبتنی بر قابلیت قدیمی‌تر، CHERI نیاز به جداول غیرمستقیم را از بین برد و از مشکلات عملکردی مرتبط با آن جلوگیری کرد و ثابت نمود که معماری‌های مدرن مبتنی بر قابلیت می‌توانند به طور کارآمد پیاده‌سازی شوند.

در سال ۲۰۱۴، سخت‌افزار CHERI توانایی خود را در اجرای یک سیستم‌عامل کامل شبه‌یونیکس، یعنی فری‌بی‌اس‌دی، به نمایش گذاشت. این نمایش نشان داد که مدل مبتنی بر قابلیت CHERI می‌تواند با اکوسیستم‌های نرم‌افزاری موجود ادغام شود. CHERI در ابتدا به عنوان افزونه‌ای برای MIPS-64 نمونه‌سازی شد. این پیاده‌سازی از قابلیت‌های ۲۵۶ بیتی استفاده می‌کرد که شامل فیلدهایی برای یک پایه ۶۴ بیتی، طول، نوع شیء و مجوزها بود و برخی بیت‌ها برای اهداف آزمایشی رزرو شده بودند.

در سال ۲۰۱۵، CHERI یک مدل جدید برای کدگذاری قابلیت معرفی کرد که آدرس (که به آن *مکان‌نما* گفته می‌شود) را از کران‌ها و مجوزها جدا می‌کرد. این اصلاح باعث شد قابلیت‌ها بتوانند به عنوان اشاره‌گر در کد C کامپایل‌شده عمل کنند و قابلیت استفاده را بهبود بخشیدند. در همان سال، Arm به پروژه پیوست و بازخورد حیاتی ارائه داد و تأکید کرد که اگرچه دو برابر کردن اندازه اشاره‌گرها ممکن است قابل قبول باشد، اما چهار برابر کردن آن‌ها قابل قبول نخواهد بود. این بازخورد منجر به توسعه CHERI Concentrate شد، یک مدل کدگذاری فشرده که با حذف افزونگی بین پایه، آدرس و سقف، اندازه قابلیت را به ۱۲۸ بیت کاهش داد.

در سال ۲۰۱۹، CheriABI یک پیاده‌سازی کاملاً ایمن از نظر حافظه از پازیکس را به نمایش گذاشت که به نرم‌افزارهای دسکتاپ موجود اجازه می‌داد با یک بار کامپایل مجدد، ایمن شوند.

تا سال ۲۰۲۰، مشخص شد که فروشندگان نرم‌افزار تمایلی به پورت کردن نرم‌افزار خود بدون پشتیبانی فروشندگان سخت‌افزار ندارند، در حالی که فروشندگان سخت‌افزار نیز تمایلی به تولید تراشه بدون تقاضای کافی مشتری نداشتند. پژوهش و نوآوری بریتانیا (UKRI) برنامه «امنیت دیجیتال از طریق طراحی» (DSbD) را برای رفع موانع پذیرش CHERI راه‌اندازی کرد. این برنامه ۷۰ میلیون پوند اختصاص داد که با ۱۰۰ میلیون پوند سرمایه‌گذاری صنعتی برای ساخت اکوسیستم نرم‌افزاری CHERI تکمیل شد.

این ابتکار، بودجه تراشه Morello شرکت Arm را تأمین کرد؛ یک *معماری بالامجموعه* که برای ارزیابی ویژگی‌های آزمایشی CHERI برای استفاده احتمالی در محصولات بر اساس AArch64 طراحی شده بود. برد Morello برای اجرای CheriBSD و نسخه‌های سفارشی اندروید و لینوکس طراحی شد. همزمان، پروژه Cornucopia نشان داد که CHERI می‌تواند ایمنی حافظه فضایی و زمانی را اعمال کند و حفاظت قطعی در برابر هم‌نامی زمانی اشیاء هیپ (تقریباً، "استفاده پس از آزادسازی") ارائه دهد. پروژه تکمیلی آن، Cornucopia Reloaded، ایمنی زمانی کارآمد را با استفاده از ویژگی‌های جدول صفحه در Morello، به ویژه زمان‌های توقف تقریباً ناچیز برای برنامه‌هایی که از ابطال (revocation) استفاده می‌کنند، به نمایش گذاشت.

در سال ۲۰۲۳، مایکروسافت CHERIoT را معرفی کرد، یک اقتباس از CHERI برای RISC-V که برای دستگاه‌های تعبیه‌شده کوچک بهینه‌سازی شده بود. CHERIoT ایده‌هایی از Cornucopia و تکنیک‌های رنگ‌آمیزی حافظه مانند ADI در اسپارک و MTE در Arm را برای بهبود امنیت در خود جای داد. به عنوان بخشی از پروژه Sunburst با بودجه UKRI، شرکت lowRISC پلتفرم Sonata را برای پیشبرد توسعه CHERI مبتنی بر RISC-V و حمایت از تلاش‌های استانداردسازی راه‌اندازی کرد. هم کارهای تحقیقاتی CHERI برای RISC-V و هم CHERIoT در فرآیند استانداردسازی برای یک خانواده رسمی از افزونه‌های CHERI برای RISC-V تأثیرگذار بودند. Codasip اعلام کرد که هسته‌های IP پردازنده RISC-V با افزونه‌های CHERI را برای صدور مجوز در دسترس دارد.

تا سال ۲۰۲۴، SCI Semiconductors تراشه ICENI را معرفی کرد، یک تراشه سازگار با CHERIoT که به طور خاص برای سیستم‌های تعبیه‌شده امن طراحی شده است. Codasip به طور فعال در حال توسعه یک پیاده‌سازی از هسته لینوکس برای معماری RISC-V است. اتحادیه CHERI، یک سازمان غیرانتفاعی مستقر در کمبریج، انگلستان، برای ترویج پذیرش فناوری CHERI و ادغام آن در محصولات و سیستم‌های دیجیتال امن تأسیس شد و گوگل یکی از اعضای بنیان‌گذار آن است.

## منابع

رده:سامانه‌های قابلیتی
رده:معماری رایانه
رده:حافظه رایانه
رده:مدیریت حافظه
رده:امنیت سیستم‌عامل