موضوع مقاله: حلقه حفاظتی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # حلقه حفاظتی | مقدمه: حلقه‌های حفاظتی یا دامنه‌های حفاظتی سلسله‌مراتبی در علوم رایانه، سازوکارهایی برای حفاظت از داده و عملکرد از خطا (با افزایش عیب‌تابی) و رفتارهای بدخواهانه (با ایجاد امنیت رایانه‌ای) است. | ## بخش 1: حلقه حفاظتی | یک حلقه حفاظتی یکی از دو یا بیشتر مرحله یا لایه سلسله‌مراتبی از مجوزدهی (حق‌ویژه) در معماری یک سیستم رایانه‌ای است. این موضوع معمولاً به صورت سخت‌افزاری، توسط بعضی از معماری‌های CPU اعمال می‌شود، این معماری‌ها :حالت واحد پردازنده مرکزی مختلفی را در لایه سخت‌افزار یا به‌صورت میکروکد تهیه می‌بینند. این حلقه‌ها به صورت سلسله‌مراتبی، یعنی از مجوزدارترین (مورد اعتمادترین، که معمولاً شماره صفر دارد) تا کم مجوزترین (کم‌اعتمادترین، معمولاً با بالاترین شماره حلقه) مرتب می‌شوند. در بیشتر سیستم‌عامل‌ها، «حلقه ۰» مرحلهٔ با بیشترین مجوز (حق‌ویژه) است و به صورت مستقیم با سخت‌افزار فیزیکی مثل CPU و حافظه سروکار دارد. برای مثال، جاسوس‌افزاری که به صورت یک برنامه‌کاربری در حلقه ۳ اجرا می‌شود، باید از روشن‌کردن دوربین وب، بدون اطلاع‌دادن به کاربر، منع شود، زیرا دسترسی به سخت‌افزار باید یک تابع حلقه ۱ باشد، که این حلقه به افزاره‌ران دستگاه اختصاص داده‌شده‌است. برنامه‌هایی مثل مرورگر وب که در حلقه‌های سطح بالاتر اجرا می‌شوند، باید دسترسی به شبکه را «درخواست» بدهند، که شبکه یک منبع است که به آن شماره حلقه پایین‌تری اختصاص داده‌شده‌است. پیاده‌سازی حلقه‌های چندگانه حفاظت در میان مفاهیم انقلابی معرفی شده توسط سیستم عامل Multics بود، یک پیشگام بسیار امن از خانواده سیستم عامل‌های یونیکس امروزی است. رایانه GE 645 دارای کنترل دسترسی سخت‌افزاری بود، اما برای پشتیبانی کامل از حلقه‌ها در سخت‌افزار کافی نبود، به همین دلیل Multics آنها را با گیر انداختن درخواست‌های انتقال حلقه‌ها در نرم‌افزار کامل کرد. با این حال، اکثر سیستم‌ها از دو حلقه استفاده می‌کنند، حتی اگر سخت‌افزارهایی که در آنها اجرا می‌شوند، حالت‌های CPU بیشتری را از آن ارائه می‌دهند. به عنوان مثال، ویندوز ۷ و ویندوز سرور ۲۰۰۸ (و پیشینیان آنها) تنها از دو حلقه استفاده می‌کنند، حلقه ۰ مربوط به حالت هسته و حلقه ۳ به حالت کاربر زیرا نسخه‌های قبلی ویندوز در پردازنده‌هایی که فقط دو سطح حفاظت را پشتیبانی می‌کردند اجرا می‌شد. بسیاری از معماری‌های مدرن CPU (از قبیل معماری معماری محبوب اینتل x86) شامل نوعی حفاظت از نوع حلقه‌های محافظتی هستند، گرچه سیستم عامل ویندوز NT، مانند یونیکس، به‌طور کامل از این ویژگی استفاده نمی‌کند. OS / 2 تا حدودی از سه حلقه استفاده می‌کرد: معرفی مرجع درایور دستگاه برای OS / 2 - 5. معرفی سیستم عامل / 2 رانندگان ارائه حلقه ۰ برای کد کرنل و درایورها، حلقه ۲ برای کدهای با دسترسی (برنامه‌های کاربر با مجوزهای دسترسی I / O) و حلقه ۳ برای کد غیرمجاز (تقریباً تمام برنامه‌ها). | ## بخش 2: حلقه حفاظتی | در DOS، تمام برنامه‌ها (کرنل و درایورها و برنامه‌های سطح کاربر) در حلقه ۳ اجرا می‌شوند (با این حال، این منحصر به مواردی است که در آن درایورهای حالت محافظت شده یا افزونه‌های DOS استفاده می‌شود؛ به عنوان یک سیستم عامل که از آدرس دهی real mode استفاده می‌کرد، سیستم حفاظت نشده‌ای بود)، در حالی که ۳۸۶ مموری منیجرهایی مانند EMM386 در حلقه ۰ کار می‌کنند. سیستم Multics اصلی دارای هشت حلقه بود، اما بسیاری از سیستم‌های مدرن تعداد حلقه‌های کمتری دارند. سخت‌افزار به کمک ثبات‌ها از حلقه ای که یک رشته پردازش باید در ان اجرا شود آگاه است. در بعضی از سیستم‌ها، قسمت‌هایی از حافظه مجازی به حلقه‌های مختلف اختصاص داده شده‌اند. به عنوان مثال، برنامه ای که رجیستر PC ان مقدار 0xE200000 را دارد، به صورت خودکار در حلقه ۷ قرار می‌گیرد و فراخوانی یک تابع در بخش‌های مختلف حافظه به‌طور خودکار باعث انتقال حلقه می‌شود. سخت‌افزار به شدت راه‌هایی که موجب انتقال کنترل از حلقه ای به حلقه دیگر می‌شود را محدود می‌کند و همچنین محدودیت‌هایی را برای نوع دسترسی به حافظه ای که می‌توانند در حلقه‌ها انجام شوند، ایجاد می‌کند. به عنوان مثال، در x86، یک خاصیت وجود دارد که توسط دستورالعمل call کنترل را به شیوه ای امن از حلقه ای به حلقه دیگر انتقال می‌دهد ؛ این عمل به عنوان یک سرپرست در بسیاری از سیستم عامل‌های که از حلقه‌های حفاظت استفاده می‌کنند پیاده‌سازی شده‌است. علاوه بر این، حلقه‌های ممنوعه ممکن است دارای قابلیت‌های خاصی باشند (مانند استفاده از آدرس دهی real mode که حافظه مجازی را دور می‌زند). که برخلاف معمول، سطح 0 (PL0) حداقل سطح امتیاز، در حالی که سطح 2 (PL2) بالاترین سطح امتیاز است. سیستم عامل‌ها در حال اجرا بر روی سخت‌افزاری که از هر دو حالت پشتیبانی می‌کنند می‌توانند از هر دو نوع حفاظت یا تنها یک استفاده کنند. استفاده مؤثر از معماری حلقه‌ها نیاز به همکاری نزدیک بین سخت‌افزار و سیستم عامل دارد. سیستم عامل‌های طراحی شده برای کار بر روی چندین سخت‌افزار ممکن است استفاده محدودی از حلقه‌ها داشته باشند، اگر آنها در همه پلتفرم (سخت‌افزارها) پشتیبانی نمی‌شوند. اغلب مدل امنیتی حلقه‌ها به «هسته» و «کاربر» ساده شده‌است، حتی اگر سخت‌افزار حلقه‌های بیشتری را پشتیبانی کند. | ## بخش 3: حلقه حفاظتی | حالت‌ها در زمینه کامپیوتر، حالت سرپرست یک flag سختافزاری است که می‌تواند توسط کدهایی که در سطح سیستم اجرا می‌شوند تغییر کند. برنامه‌های در حال اجرا در سطح سیستم از این flag استفاده می‌کنند، در حالی که برنامه‌های سطح کاربر (مرورگر وب) توانایی استفاده از این flag را ندارند. ایده داشتن دو حالت مختلف برای اجرا برنامه‌ها از جمله " کنترل بیشتر مسئولیت بیشتر می‌آورد " یک برنامه که درsupervisor mode اجرا می‌شود هرگز نباید اشتباه کند، زیرا یک اشتباه می‌تواند موجب سقوط کل سیستم شود. " حالت سرپرست FOLDOC در یک کرنل یکپارچه، سیستم عامل در حالت سرپرست اجرا می‌شود و برنامه‌ها در حالت کاربر اجرا می‌شوند. انواع دیگر از سیستم عامل‌ها، مانند سیستم عامل‌هایی که از کرنل نوع exokernel یا میکروکرنل استفاده می‌کنند، لزوماً این رفتار را به اشتراک نمی‌گزارند. لینوکس، macOS و ویندوز سه سیستم عامل هستند که از حالت سرپرست / کاربر استفاده می‌کنند. می‌توان با استفاده از ماژول‌های کرنل کد به کرنل اضافه کرد، اما این کار فقط توسط کاربری که دسترسی‌های لازم را دارد قابل انجام است، زیرا این کار می‌تواند امنیت کل سیستم عامل را تحدید کند. DOS (تا زمانی که هیچ سیستم مدریت حافظه ای نظیر EMM386 بارگزاری نشده باشد)، و همچنین سایر سیستم عامل‌های ساده و بسیاری از سیستم‌ها نهفته به‌طور دائمی در حالت supervisor mode اجرا می‌شوند، به این معنی که درایورها را می‌توان به صورت مستقیم به عنوان برنامه‌های سطح کاربر نوشت. برنامه‌هایی که در حلقه ۰ اجرا می‌شوند می‌توانند با سیستم هر کاری انجام دهند و برنامه ای که در حلقه ۳ اجرا می‌شود باید بتواند در هر زمان بدون تأثیر بر بقیه سیستم کامپیوتر کرش کند. حلقه ۱ و حلقه ۲ به ندرت استفاده می‌شود، اما می‌توانند با سطوح مختلف دسترسی پیکربندی شود. موریس ویلکس نوشت: … در نهایت مشخص شد که حفاظت سلسله مراتبی که ارائه شده حلقه‌ها را با شرایط برنامهنویسی سیستم مقایسه نمی‌کند و تنها در سیستم ساده ای که تنها دو حالت دارد بهبودی پیدا کرده یا بهبودی نداشته‌است. حلقه‌های حفاظتی خود را به اجرای سخت‌افزاری سخت‌افزاری سپردند، اما برای آنها چیزی کم نیاورده بود. | ## جمع‌بندی | .] جذابیت محافظت از ریزه‌ها حتی پس از اینکه متوجه شد که حلقه‌های محافظت جواب نمی‌دهد، باقی مانده‌است.