مشکل اساسی ایزولاسیون سخت‌افزاری زمانی پدیدار می‌شود که دو ناحیهٔ جدا باید داده یا وظیفه را با هم به اشتراک بگذارند. دیوید چیسنال این موضوع را خلاصه کرده است: «ایزولاسیون ساده است؛ سختی در مدل برنامه‌نویسیِ اشتراک‌گذاری است.»

CHERI چیست؟

CHERI مجموعه‌ای از مفاهیم است که اشاره‌گرها را از یک مقدار آدرس صرف به‌موجودیت‌هایی حاوی متادیتا، حدود (bounds) و امتیازات دسترسی تبدیل می‌کند. به‌جای اشاره‌گرِ صرف که می‌توان آن را جعل یا اشتباه تنظیم کرد، هر capability شامل اطلاعاتی دربارهٔ محدودهٔ معتبر و مجوزهای دسترسی است و سخت‌افزار آن را بررسی می‌کند. برای مروری فنی می‌توان به صفحهٔ ویکی‌پدیا دربارهٔ CHERI مراجعه کرد.

ریشه‌های فکری CHERI

  • سیستم‌های مبتنی بر capability: مفهومِ نشانهٔ اختیارِ غیرقابل جعل که می‌توان آن را منتقل یا تفویض کرد و خودش سطحی از مجوز را تضمین می‌کند.
  • اشاره‌گرهای حجیم (fat pointer): ایدهٔ افزودن متادیتا مانند حدود یا نوع به اشاره‌گرها تا هنگام انتقال یا قرارگیری در ساختارها همراهِ داده بمانند.

چگونه کار می‌کند و چرا اهمیت دارد

در معماری‌های مرسوم، قواعد مربوط به اشاره‌گرها عمدتاً در سطح زبان برنامه‌نویسی تعریف می‌شوند؛ هر زبان مجموعه‌ای از ضمانت‌ها دارد. CHERI همان ضمانت‌ها را به سطح سخت‌افزار می‌آورد: پردازنده تواناییِ نگهداری و اعتبارسنجی متادیتا را پیدا می‌کند و دستورالعمل‌ها تنها در محدودهٔ مجاز قادر به دسترسی یا تغییر حافظه خواهند بود. این رویکرد به‌طور مؤثری کلاس‌های متداولی از اشکالات حافظه مانند بافر اورفلو و استفاده پس از آزادسازی را کاهش می‌دهد و امکان بخش‌بندی ریزدانه برای کاهش دامنهٔ نفوذ یک رخنه را فراهم می‌کند.

برد توسعه یا نمونه سخت‌افزاری مرتبط با CHERI و Morello

پیاده‌سازی روی ISAهای مختلف

CHERI خود یک ISA مستقل نیست؛ همان‌طور که SIMD روی ISAهای مختلف پیاده‌سازی می‌شود، CHERI نیز می‌تواند به‌صورت محلی‌سازی شده روی ISAهای موجود اجرا شود. نمونه‌ها:

  • گسترش‌های پژوهشی اولیه روی MIPS.
  • پروژهٔ Morello از ARM برای AArch64، پیاده‌سازی CHERI در اکوسیستم ARM (اطلاعات Morello در وب‌سایت ARM).
  • CHERIoT برای میکروکنترلرها که نشان‌دهندهٔ قابلیت مقیاس‌دهی ایده‌ها به سیستم‌های محدود است.
  • تلاش‌های استانداردسازی و محلی‌سازی روی RISC-V با نام RVY.

پذیرش تدریجی و سازگاری نرم‌افزاری

یکی از اصول طراحی CHERI، امکان پذیرش تدریجی است. پژوهش‌ها ابتدا در CheriBSD (شاخه‌ای از FreeBSD) پیاده‌سازی و آزمایش شدند و سپس بسیاری از ایده‌ها به سمت لینوکس منتقل شدند تا اجرای باینری‌های موجود همچنان ممکن بماند. این رویکرد به سازمان‌هایی که نمی‌توانند همهٔ نرم‌افزار را دوباره بنویسند، مسیر مهاجرت قابل‌اطمینانی می‌دهد. از سوی دیگر، طراحی کل پشتهٔ سخت‌افزار و نرم‌افزار با فرض پشتیبانی CHERI (مثلاً در CHERIoT) امکان بهره‌گیری از لایه‌های محافظتی بیشتر و کارآمدتر را فراهم می‌کند.

مزایا و محدودیت‌ها

مزایا

  • ایمنی حافظه قوی‌تر و کاهش چشمگیر برخی کلاس‌های باگ‌های حافظه.
  • امکان بخش‌بندی ریزدانه برای کاهش دامنهٔ نفوذ یک رخنه و تحکیم امنیت سیستم.
  • پشتیبانی از سازگاری در سطح سورس و مسیرهای مهاجرت که هزینهٔ تغییر را کاهش می‌دهد.

محدودیت‌ها و چالش‌ها

  • تعریف مدل برنامه‌نویسیِ کارآمد برای اشتراک‌گذاری بین حوزه‌های اعتماد هنوز چالش‌برانگیز است و تلاش پژوهشگران روی آن متمرکز است.
  • پیاده‌سازی سخت‌افزاری، تغییر toolchain و به‌روزرسانی runtimeها زمان و هزینه می‌طلبد.
  • پذیرش در مقیاس گسترده نیازمند اکوسیستم کامل از ابزارها، کتابخانه‌ها و پشتیبانی صنعتی است.

آیندهٔ CHERI

CHERI می‌تواند شیوهٔ طراحی مدل‌های امنیتی را از سطح نرم‌افزار به سطح سخت‌افزار تغییر دهد و بخش‌بندی دقیق‌تر و کارآمدتری ارائه کند. تلاش‌ها برای استانداردسازی روی RISC-V و پروژه‌هایی مانند Morello نشان می‌دهد بازیگران بزرگ معماری را جدی می‌گیرند؛ اما موفقیت عملی وابسته به ارائهٔ مدل‌های برنامه‌نویسی واضح، ابزارهای مهاجرت و پشتیبانی صنعتی است.

برای مطالعهٔ بیشتر

برای حرکت به معماری‌هایی که اشاره‌گرها را به شهروندان نخستِ سخت‌افزار تبدیل می‌کنند، علاوه بر طراحی معماری، باید مدل‌های اشتراک‌گذاری عملی، ابزارهای توسعه و پذیرش صنعتی فراهم شود. مسیر به‌دست آوردن این مجموعهٔ کامل، هنوز در آغاز راه است.