Қорғау сақиналары – компьютер жүйелеріндегі деректерді қателер мен зиянды бағдарламалардан қорғайтын, құпиялылық деңгейлерін ұйымдастыратын маңызды механизм.💻🛡️
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Компьютерлік жүйелердегі қорғаныс қабаты
Layer of protection in computer systems
Компьютерлік ғылымда иерархиялық қорғаныс домендері, көбінесе қорғаныс сақиналары деп аталады, деректер мен функционалдылықты ақаулардан (қатеге төзімділікті арттыру арқылы) және қасақана зиянды әрекеттерден (компьютерлік қауіпсіздікті қамтамасыз ету арқылы) қорғау механизмі болып табылады. Компьютерлік операциялық жүйелер ресурстарға әртүрлі деңгейде қол жеткізуді қамтамасыз етеді. Қорғаныс сақинасы – компьютерлік жүйенің архитектурасындағы екі немесе одан көп иерархиялық деңгейлердің немесе артықшылықтардың бірі. Бұл әдетте, CPU архитектураларының кейбіреулерімен қамтамасыз етілетін, аппараттық немесе микрокод деңгейіндегі аппараттық қолдау арқылы іске асырылады, олар CPU-ның әртүрлі режимдерін ұсынады. Сақиналар иерархия бойынша орналасқан, ең жоғары артықшылықты (ең сенімді, әдетте нөл нөмірімен) ең төмен артықшылықтыдан (ең аз сенімді, әдетте ең жоғары сақина нөмірімен) бастап. Көптеген операциялық жүйелерде 0-шы сақина ең көп артықшылыққа ие деңгей болып табылады және физикалық жабдықпен, мысалы, белгілі бір CPU функционалдығымен (басқару тізілімдері сияқты) және I/O контроллерлерімен тікелей өзара әрекеттеседі. Виртуализацияның кеңінен таралуымен көптеген CPU гипервизор үшін тағы бір деңгейді (концептуалды түрде 1-ші сақина) қосты. Сыртқы сақинаның ішкі сақинаның ресурстарын белгіленген тәртіппен пайдалануына мүмкіндік беретін арнайы механизмдер қарастырылған, кездейсоқ пайдалануға жол берілмейді. Сақиналар арасындағы қол жеткізуді дұрыс шектеу, бір сақинадағы немесе артықшылық деңгейіндегі бағдарламалардың басқа сақинаға арналған ресурстарды дұрыс пайдаланбауының алдын алып, қауіпсіздікті арттыруға көмектеседі. Мысалы, 3-ші сақинадағы пайдаланушы бағдарламасы ретінде жұмыс істейтін шпиондық бағдарлама пайдаланушыны хабарламастан веб-камераны қосуына жол берілмеуі керек, өйткені аппараттық қол жеткізілім 1-ші сақинадағы құрылғы драйверлеріне арналған функция болуы тиіс. Жоғары нөмірленген сақиналарда жұмыс істейтін веб-браузерлер сияқты бағдарламалар желіге қол жеткізуді сұрауы керек, бұл ресурс төмен нөмірленген сақинамен шектелген.
In computer science, hierarchical protection domains, often called protection rings, are mechanisms to protect data and functionality from faults (by improving fault tolerance) and malicious behavior (by providing computer security). Computer operating systems provide different levels of access to resources. A protection ring is one of two or more hierarchical levels or layers of privilege within the architecture of a computer system. This is generally hardware enforced by some CPU architectures that provide different CPU modes at the hardware or microcode level. Rings are arranged in a hierarchy from most privileged (most trusted, usually numbered zero) to least privileged (least trusted, usually with the highest ring number). On most operating systems, Ring 0 is the level with the most privileges and interacts most directly with the physical hardware such as certain CPU functionality (e. g. the control registers) and I/O controllers. With the increasing prevalence of virtualization, many CPUs have added another level (conceptually ring 1) for the hypervisor. Special mechanisms are provided to allow an outer ring to access an inner ring's resources in a predefined manner, as opposed to allowing arbitrary usage. Correctly gating access between rings can improve security by preventing programs from one ring or privilege level from misusing resources intended for programs in another. For example, spyware running as a user program in Ring 3 should be prevented from turning on a web camera without informing the user, since hardware access should be a Ring 1 function reserved for device drivers. Programs such as web browsers running in higher numbered rings must request access to the network, a resource restricted to a lower numbered ring.
Гипервизор режімі
Intel және AMD компанияларының соңғы процессорлары гипервизорға Ring 0 аппараттық кіруін басқару үшін x86 виртуализациялық нұсқауларын ұсынады. Олар өзара үйлесімсіз болғанымен, Intel VT-x (кодтық атауы "Vanderpool") және AMD-V (кодтық атауы "Pacifica") жаңа "Ring −1" деңгейін құрайды, соның арқасында қонақ опералық жүйе басқа қонақтарға немесе хост жүйеге әсер етпей, Ring 0 операцияларын түпкілікті түрде орындай алады. Виртуализация процесіне көмектесу үшін VT-x және SVM 0 деңгейінің астына жаңа артықшылық деңгейін қосады. Екеуі де гипервизор пайдалануына арналған, "Ring −1" деңгейінде ғана жұмыс істейтін тоғыз жаңа машиналық код нұсқауларын қосады.
Recent CPUs from Intel and AMD offer x86 virtualization instructions for a hypervisor to control Ring 0 hardware access. Although they are mutually incompatible, both Intel VT x (codenamed "Vanderpool") and AMD V (codenamed "Pacifica") create a new "Ring −1" so that a guest operating system can run Ring 0 operations natively without affecting other guests or the host OS. To assist virtualization, VT x and SVM insert a new privilege level beneath Ring 0. Both add nine new machine code instructions that only work at "Ring −1", intended to be used by the hypervisor.
Арнайылық деңгейі
x86 нұсқаулар жиынтығындағы артықшылық деңгейі процессорда қазіргі уақытта орындалып жатқан бағдарламаның жад аймақтары, I/O порттары және арнайы нұсқаулар сияқты ресурстарға қол жеткізуін басқарады. 4 артықшылық деңгейі бар, 0-ден бастап, ең жоғары артықшылықты, 3-ке дейін, ең төменгі артықшылықты. Көптеген қазіргі заманғы операциялық жүйелер ядро/атқарушы үшін 0 деңгейін, ал қолданбалық бағдарламалар үшін 3 деңгейін пайдаланады. n деңгейіне қол жетімді кез келген ресурс 0-ден n-ге дейінгі деңгейлерге де қол жетімді, сондықтан артықшылық деңгейлері сақиналар деп аталады. Төмен артықшылықты процесс жоғары артықшылықты процеске қол жеткізуге тырысқанда, жалпы қорғаныс қатесі туралы операциялық жүйеге хабарлама жіберіледі. Барлық төрт артықшылық деңгейін пайдалану міндетті емес. Microsoft Windows, macOS, Linux, iOS және Android сияқты кең таралған операциялық жүйелер көбінесе пагинация механизмін пайдаланады, онда артықшылық деңгейін анықтау үшін тек бір бит қолданылады – қадағалаушы немесе пайдаланушы (U/S биті). Windows NT екі деңгейлі жүйені қолданады. 8086-дағы нақты режимдегі бағдарламалар 0 деңгейінде (ең жоғары артықшылық деңгейі), ал 8086-дағы виртуалды режимдегі барлық бағдарламалар 3 деңгейінде орындалады. x86 ISA отбасы қолдайтын көптеген артықшылық деңгейлерін болашақта контейнерлеу және виртуалды машиналар үшін пайдалануға болады. Хост операциялық жүйенің ядросы толық артықшылықпен нұсқауларды қолдана алады (ядролық режим), ал виртуалды машинадағы немесе контейнердегі қонақ операциялық жүйеде жұмыс істейтін қолданбалар пайдаланушы режимінде артықшылықтың ең төменгі деңгейін пайдалана алады. Виртуалды машина мен қонақ операциялық жүйенің ядросы өздері аралық деңгейдегі нұсқау артықшылықтарын пайдалана алады, яғни қонақ операциялық жүйенің көзқарасы бойынша жүйелік шақырулар сияқты ядролық режимдегі операцияларды шақыру және виртуалды ету үшін.
A privilege level in the x86 instruction set controls the access of the program currently running on the processor to resources such as memory regions, I/O ports, and special instructions. There are 4 privilege levels ranging from 0 which is the most privileged, to 3 which is least privileged. Most modern operating systems use level 0 for the kernel/executive, and use level 3 for application programs. Any resource available to level n is also available to levels 0 to n, so the privilege levels are rings. When a lesser privileged process tries to access a higher privileged process, a general protection fault exception is reported to the OS. It is not necessary to use all four privilege levels. Current operating systems with wide market share including Microsoft Windows, macOS, Linux, iOS and Android mostly use a paging mechanism with only one bit to specify the privilege level as either Supervisor or User (U/S Bit). Windows NT uses the two level system. The real mode programs in 8086 are executed at level 0 (highest privilege level) whereas virtual mode in 8086 executes all programs at level 3. Potential future uses for the multiple privilege levels supported by the x86 ISA family include containerization and virtual machines. A host operating system kernel could use instructions with full privilege access (kernel mode), whereas applications running on the guest OS in a virtual machine or container could use the lowest level of privileges in user mode. The virtual machine and guest OS kernel could themselves use an intermediate level of instruction privilege to invoke and virtualize kernel mode operations such as system calls from the point of view of the guest operating system.
ЖОЖК
IOPL (I/O Privilege level) туы - барлық IA 32 үйлесімді x86 процессорларында кездесетін ту. Ол FLAGS тіркеліміндегі 12 және 13 биттерді иеленеді. Қорғалған режимде және ұзақ режимде ол ағымдағы бағдарламаның немесе міндеттің I/O артықшылық деңгейін көрсетеді. Міндеттің немесе бағдарламаның ағымдағы артықшылық деңгейі (CPL) (CPL0, CPL1, CPL2, CPL3) I/O порттарына қол жеткізу үшін IOPL-ден кем немесе тең болуы керек. IOPL-ді POPF(D) және IRET(D) арқылы тек қана ағымдағы артықшылық деңгейі Ring 0 болғанда ғана өзгертуге болады. IOPL-ден өзге, TSS-дегі I/O порттарына рұқсаттар да міндеттің I/O портына қол жеткізу мүмкіндігін анықтауға қатысады.
The IOPL (I/O Privilege level) flag is a flag found on all IA 32 compatible x86 CPUs. It occupies bits 12 and 13 in the FLAGS register. In protected mode and long mode, it shows the I/O privilege level of the current program or task. The Current Privilege Level (CPL) (CPL0, CPL1, CPL2, CPL3) of the task or program must be less than or equal to the IOPL in order for the task or program to access I/O ports. The IOPL can be changed using POPF(D) and IRET(D) only when the current privilege level is Ring 0. Besides IOPL, the I/O Port Permissions in the TSS also take part in determining the ability of a task to access an I/O port.
Әр түрлі
x86 жүйелерінде x86 аппараттық виртуализациясы (VT-x және SVM) «сақина −1» деп, жүйелік басқару режимі «сақина −2» деп, ал Intel басқару тетігі мен AMD платформалық қауіпсіздік процессоры кейде «сақина −3» деп аталады.
In x86 systems, the x86 hardware virtualization (VT x and SVM) is referred as "ring −1", the System Management Mode is referred as "ring −2", the Intel Management Engine and AMD Platform Security Processor are sometimes referred as "ring −3".
Жабдықтардың ерекшеліктерін пайдалану
Көптеген CPU аппараттық архитектуралары олар әдетте жұмыс істейтін операциялық жүйелерден әлдеқайда көп икемділікті ұсынады. Күрделі CPU режимдерін тиімді пайдалану операциялық жүйе мен CPU арасындағы тығыз ынтымақтастықты қажет етеді, сондықтан OS-ті CPU архитектурасына тәуелді етеді. Егер OS және CPU бір-біріне арнайы жасалған болса, бұл мәселе емес (бірақ кейбір аппараттық мүмкіндіктер толыққанды пайдаланылмауы мүмкін), бірақ егер OS бірнеше түрлі CPU архитектураларымен үйлесімді болуға арналған болса, CPU режимдерінің көп бөлігі OS тарапынан назардан тыс қалуы мүмкін. Мысалы, Windows тек екі деңгейді (сақина 0 және сақина 3) пайдалануының себебі – бұрын қолдау көрсетілген кейбір аппараттық архитектуралар (мысалы, PowerPC немесе MIPS) тек екі артықшылық деңгейін іске асырған. Multics – нақты CPU архитектурасы үшін арнайы жасалған операциялық жүйе (ал ол өз кезегінде Multics үшін арнайы жасалған), және ол өзіне қол жетімді CPU режимдерін толыққанды пайдаланды. Дегенмен, бұл ережеден туындаған ерекшелік еді. Бүгінгі таңда OS пен аппараттық құралдар арасындағы осындай жоғары деңгейдегі өзара әрекеттесу, қауіпсіздік пен тұрақтылықтың әлеуетті артықшылықтарына қарамастан, көбінесе экономикалық тұрғыдан тиімді емес. Соңында, CPU-дың ерекше жұмыс режимдерінің мақсаты – бағдарламалық жасақтама арқылы жүйелік ортаның кездейсоқ немесе қасақана зақымдануына (және жүйелік қауіпсіздіктің тиісті бұзушылықтарына) қарсы аппараттық қорғаныспен қамтамасыз ету болып табылады. Жүйелік бағдарламалық жасақтаманың тек "сенімді" бөліктері ғана ядролық режимнің шектеусіз ортасында орындалуға рұқсат етіледі, және парадигмалық жобаларда тек қажет болған жағдайларда ғана. Барлық басқа бағдарламалық жасақтама бір немесе бірнеше пайдаланушы режимінде орындалады. Егер процессор пайдаланушы режимінде қателік немесе ерекше жағдай тудырса, көп жағдайда жүйелік тұрақтылыққа әсер етпейді; егер процессор ядролық режимде қателік немесе ерекше жағдай тудырса, көптеген операциялық жүйелер жүйені қалпына келтірілмейтін қатемен тоқтатады. Егер режимдердің иерархиясы болса (сақиналық қауіпсіздік), бір артықшылық деңгейіндегі қателіктер мен ерекше жағдайлар жоғарырақ нөмірленген артықшылық деңгейлерін ғана тұрақсыздандыруы мүмкін. Осылайша, 0 сақинадағы (ең жоғары артықшылыққа ие ядролық режимдегі) қателік бүкіл жүйені құлатады, бірақ 2 сақинадағы қателік тек 3 сақинаны және одан жоғары деңгейлерді, сондай-ақ ең көп дегенде 2 сақинаны әсер етеді. Режимдер арасындағы ауысулар, орындалу тізбегі жоғары артықшылық деңгейінен төмен артықшылық деңгейіне (мысалы, ядроден пайдаланушы режимдеріне) ауысқанда тізбектің қалауынша жүзеге асырылады, бірақ төмен артықшылық деңгейінен жоғары деңгейге ауысу тек арнайы нұсқауларды орындау немесе сыртқы үзілістерді қабылдау арқылы жүзеге асырылатын қауіпсіз, аппараттық бақыланатын "қақпалар" арқылы ғана мүмкін. Микроядролық операциялық жүйелер қауіпсіздік пен эстетикалық тұрғыдан артықшылықты режимде жұмыс істейтін кодтың мөлшерін азайтуға тырысады, бірақ соңында өнімділікті құрбан етеді.
Many CPU hardware architectures provide far more flexibility than is exploited by the operating systems that they normally run. Proper use of complex CPU modes requires very close cooperation between the operating system and the CPU, and thus tends to tie the OS to the CPU architecture. When the OS and the CPU are specifically designed for each other, this is not a problem (although some hardware features may still be left unexploited), but when the OS is designed to be compatible with multiple, different CPU architectures, a large part of the CPU mode features may be ignored by the OS. For example, the reason Windows uses only two levels (ring 0 and ring 3) is that some hardware architectures that were supported in the past (such as PowerPC or MIPS) implemented only two privilege levels. Multics was an operating system designed specifically for a special CPU architecture (which in turn was designed specifically for Multics), and it took full advantage of the CPU modes available to it. However, it was an exception to the rule. Today, this high degree of interoperation between the OS and the hardware is not often cost effective, despite the potential advantages for security and stability. Ultimately, the purpose of distinct operating modes for the CPU is to provide hardware protection against accidental or deliberate corruption of the system environment (and corresponding breaches of system security) by software. Only "trusted" portions of system software are allowed to execute in the unrestricted environment of kernel mode, and then, in paradigmatic designs, only when absolutely necessary. All other software executes in one or more user modes. If a processor generates a fault or exception condition in a user mode, in most cases system stability is unaffected; if a processor generates a fault or exception condition in kernel mode, most operating systems will halt the system with an unrecoverable error. When a hierarchy of modes exists (ring based security), faults and exceptions at one privilege level may destabilize only the higher numbered privilege levels. Thus, a fault in Ring 0 (the kernel mode with the highest privilege) will crash the entire system, but a fault in Ring 2 will only affect Rings 3 and beyond and Ring 2 itself, at most. Transitions between modes are at the discretion of the executing thread when the transition is from a level of high privilege to one of low privilege (as from kernel to user modes), but transitions from lower to higher levels of privilege can take place only through secure, hardware controlled "gates" that are traversed by executing special instructions or when external interrupts are received. Microkernel operating systems attempt to minimize the amount of code running in privileged mode, for purposes of security and elegance, but ultimately sacrificing performance.