Кіріспе
Компьютерлік қауіпсіздік тұжырымдамасы
Қуаттылыққа негізделген қауіпсіздік – қауіпсіз есептеу жүйелерін жобалаудағы тұжырымдама, қолданыстағы қауіпсіздік модельдерінің бірі. Қуаттылық (кейбір жүйелерде кілт деп аталады) – бұл өкілеттіліктің хабарланатын, жалғандауға келмейтін белгісі. Ол қатынас құқықтарының жиынтығымен бірге нысанға сілтеме жасайтын мәнді білдіреді. Қуаттылыққа негізделген операциялық жүйедегі пайдаланушы бағдарламасы нысанға қол жеткізу үшін қуаттылықты пайдалануы тиіс. Қуаттылыққа негізделген қауіпсіздік – пайдаланушы бағдарламаларын олар бір-бірімен ең аз құқықтар принципі бойынша қуаттылықтарды тікелей бөлісетін етіп жобалау қағидаты, сондай-ақ мұндай амалдарды тиімді және қауіпсіз ету үшін қажетті операциялық жүйе инфрақұрылымы. Қуаттылыққа негізделген қауіпсіздікті дәстүрлі UNIX рұқсаттары мен кіруді басқару тізімдерін пайдаланатын тәсілмен салыстыру керек. Көптеген операциялық жүйелер қуаттылықтарға ұқсас мүмкіндікті іске асырғанмен, олар жүйе бойынша қолжетімділік құқықтарын беру мен таратудың негізгі құралы болуы мүмкін, өзара сенімсіз тараптар арасында қуаттылықтарды алмасуға мүмкіндік беретін жеткілікті қолдауды қамтамасыз етпейді. Ал қуаттылыққа негізделген жүйе осы мақсатты көздеп жасалған.
Capability based security is a concept in the design of secure computing systems, one of the existing security models. A capability (known in some systems as a key) is a communicable, unforgeable token of authority. It refers to a value that references an object along with an associated set of access rights. A user program on a capability based operating system must use a capability to access an object. Capability based security refers to the principle of designing user programs such that they directly share capabilities with each other according to the principle of least privilege, and to the operating system infrastructure necessary to make such transactions efficient and secure. Capability based security is to be contrasted with an approach that uses traditional UNIX permissions and Access Control Lists. Although most operating systems implement a facility which resembles capabilities, they typically do not provide enough support to allow for the exchange of capabilities among possibly mutually untrusting entities to be the primary means of granting and distributing access rights throughout the system. A capability based system, in contrast, is designed with that goal in mind.
Кіріспе
Қабілеттер жүйе қауіпсіздігін жақсарту мақсатына жетеді, жалған сілтемелердің орнына қолданыла отырып. Жалған сілтеме (мысалы, жол атауы) объектіні анықтайды, бірақ осы объектіге және осы сілтемені ұстап тұрған пайдаланушы бағдарламасына қандай қол жеткізу құқықтары тиесілі екенін көрсетпейді. Осылайша, сілтемеленген объектіге қол жеткізудің кез келген әрекеті операциялық жүйемен, әдетте кіруді бақылау тізімі (ACL) арқылы, сұрау салушы бағдарламаның ағымдағы өкілеттігіне сүйене отырып тексерілуі керек. Ал қабілеттерге негізделген жүйеде пайдаланушы бағдарламасының қабілетке ие болуы оған осы қабілетпен көрсетілген құқықтарға сәйкес сілтемеленген объектіні пайдалануға рұқсат береді. Теория бойынша, қабілеттерге негізделген жүйе барлық субъектілерге қажетті қабілеттерді ғана беріп, кез келген кіруді бақылау тізіміне немесе ұқсас механизмге қажеттілікті жояды. Қабілет әдетте артықшылықты дерек құрылымы ретінде іске асырылады, ол қол жеткізу құқықтарын анықтайтын бөлімнен және қол жеткізуді қажет ететін объектіні бірегей түрде анықтайтын бөлімнен тұрады. Пайдаланушы дерек құрылымына немесе объектіге тікелей кірмейді, керісінше, тұтқа арқылы кіреді. Іс жүзінде, ол дәстүрлі операциялық жүйедегі файл дескрипторына ұқсас қолданылады (дәстүрлі тұтқа), бірақ жүйедегі барлық объектілерге қол жеткізу үшін. Қабілеттер әдетте операциялық жүйеде тізімде сақталады, бағдарламаның қабілеттің мазмұнын тікелей өзгертуіне кедергі жасайтын механизмдермен (осылайша қол жеткізу құқықтарын жалғандау немесе ол көрсеткен объектіні өзгерту үшін). Кейбір жүйелер де қабілеттерге негізделген адрестеуге (аппараттық деңгейде қабілеттерді қолдау) негізделген, мысалы, Plessey System 250. Қабілеттерге ие бағдарламалар оларды басқа бағдарламаларға беру, құқықтары шектеулі нұсқаға айналдыру немесе оларды жою сияқты операцияларды орындай алады. Операциялық жүйе қауіпсіздік саясатының тұтастығын сақтау үшін жүйедегі қабілеттерге тек белгілі операцияларды ғана орындауға рұқсат беруі керек. Осы мақалада талқыланған қабілеттерді Портативті операциялық жүйе интерфейсі (POSIX) 1e/2c "Қабілеттерімен" шатастырмау керек. Соңғылары процестер арасында берілмейтін, ірі грануляциялы артықшылықтар.
Процестер арасында бөлісу
Дәстүрлі операциялық жүйелерде бағдарламалар бір-бірімен және жадпен алғашқы екі мысалдағыдай сілтемелер арқылы жиі байланысады. Файл жолдары көбінесе командалық жол параметрлері ретінде жіберіледі, сокеттер арқылы тасымалданады және дискіде сақталады. Бұл сілтемелер мүмкіндіктер емес және қолдану алдында олардың жарамдылығы тексерілуі керек. Мұндай жүйелерде маңызды сұрақ: «берілген сілтемені бағалауға кімнің құқығы бар?». Бұл, әсіресе екі түрлі құқық иесінің атынан әрекет етуге тиіс процестер үшін өте маңызды мәселе. Олар «шатасқан орынбасар» деп аталатын бағдарламалық қатеге ұшырауы мүмкін, бұл көбінесе қауіпсіздікке қауіп тудырады. Мүмкіндіктерге негізделген жүйеде, мүмкіндіктердің өзі процестер мен жад арасында операциялық жүйеге белгілі, олардың тұтастығын сақтайтын механизм арқылы жіберіледі. Бұл мәселені шешудің бір жаңа тәсілі – ортогональды тұрақты операциялық жүйені пайдалану. Мұндай жүйеде, объектілерді жою және олардың мүмкіндіктерін жарамсыз ету қажеттілігі болмайды, сондықтан оларды кейін қалпына келтіру үшін ACL сияқты механизм қажет емес. Операциялық жүйе барлық жадтағы мүмкіндіктердің тұтастығы мен қауіпсіздігін үнемі сақтайды, оның ішінде тұрақты және уақытша жадты, және барлық деректерді тізбектеу жұмыстарын өзі орындайды, көптеген операциялық жүйелердегідей пайдаланушы бағдарламаларына сеніп тапсырма бермейді. Пайдаланушы бағдарламалары осы жауапкершіліктен босатылғандықтан, оларға тек заңды мүмкіндіктерді қайта өндіруге немесе кіруді бақылау механизмін пайдаланып, кіру сұрауларын растауға сенудің қажеті жоқ. Мысал ретінде 1980-ші жылдардың басындағы Flex машинасы келтірілуі мүмкін.
POSIX мүмкіндіктері
Портативті операциялық жүйе интерфейсі (POSIX) 1003.1e нұсқасы "қабілеттер" деп аталатын рұқсаттар ұғымын анықтайды. Дегенмен, POSIX қабілеттері осы мақалада сипатталған қабілеттерден ерекшеленеді. POSIX қабілеті ешқандай нысанмен байланысты емес; CAP NET BIND SERVICE қабілетіне ие процесс 1024-тен төмен кез келген TCP портында тыңдай алады. Бұл жүйе Linux-та қолданылады. Ал Capsicum Unix нақты қабілеттер жүйесінің моделін Unix дизайнымен және POSIX API-мен біріктіреді. Capsicum қабілеттері – бұл файл дескрипторының жетілдірілген түрі, процестер арасындағы берілетін құқық, және классикалық POSIX-тен асып түсетін процестер сияқты қосымша нысан түрлері қабілеттер арқылы сілтемелене алады. Capsicum қабілеттер режимінде процестер нысандарды іздеу үшін жаһандық атау кеңістіктерін (мысалы, файлдық жүйенің атау кеңістігін) пайдалана алмайды, олар мұраға алуы немесе оларға берілуі тиіс. Бұл жүйе FreeBSD-де түпкілікті қолданылады, бірақ басқа жүйелерге де түзетулер бар.