v pocatcich vypocetni techniky byly pouzivany kompaktni kody primo ovladajici jednotliva zarizeni vypocetniho systemu
prvnimy predchudci dnesnich OS byly tzv. exekutivy (executives) - jednoduche linkery, loadery, ...
zlom predstavoval nastup monitoru
- prvnich multiprogramovych systemu,
sami ridi pridelovani
prostredku systemu, nastupuje problem
vzajemne ochrany uzivatel
samozrejme je mozna kombinace nekolika metod separace
metody jsou serazeny dle rostouci (implementacni)
slozitosti a zaroven dle klesajici
spolehlivosti
system muze poskytovat ruzne urovne ochrany objektu
seznam je opet serazen podle (implementacni)
slozitosti, ktere tentokrat primo
umerne odpovida kvalita poskytovane
ochrany
Granularita - kontrola
pristupu muze byt implementovana
na ruznych urovnich (byte, veta,
soubor, adresar, ...), je potrebne
volit mezi reziji kontroly a dostatecne
jemnym rozlisenim
Ochrana pameti je zakladnim pozadavkem pro zajisteni bezpecnosti, ma-li byt spolehliva, je nutna hardwarova podpora.
HW podpora navic poskytuje dostatecnou efektivitu ochrany.
stanovi se hranice, operacni pamet na jednu stranu od teto hranice pouziva OS, na druhou stranu aplikacni programy
metoda je vhodna pro jednoduche jednouzivatelske systemy, umoznuje vsak pouze chranit OS, nemuze byt pouzita pro vzajemnou ochranu uzivatelu vetsiho systemu
implementace velmi jednoducha:
programy jsou vytvoreny tak, jako by v pameti lezely od adresy 0, v ramci procesu spousteni programu je ke vsem odkazum v programu pripocten relokacni faktor
aplikace tak nemuze zasahovat do oblasti, v nichz lezi system
metoda ma stejne nevyhody, jako predchozi zpusob ochrany pameti
... preneseni myslenek predchozich metod do prostredi multiuzivatelskych systemu
k adresam generovanym programem je pripocitavana hodnota bazoveho registru, kazdy odkaz je oprovnavan s hodnotou bound registru, zda je mensi
program ma tak shora i zdola omezen prostor, v nemz muze pracovat
metoda umoznuje vzajemne oddeleni jednotlivych uzivatelu, nechrani vsak kod aplikacniho programu pred chybou
moznym rozsirenim je pouzivat dva pary registru, jeden pro vymezeni oblasti pro kod procesu, druhy pro datovou zonu
nevyhodou je nemoznost selektivniho sdileni pouze nekterych dat
s kazdou adresou (slovem) v pameti stroje je spojeno nekolik tag bitu, jejichz obsah urcuje typ zde ulozenych dat a povolene operace
obsah tag bitu je testovan pri kazdem pristupu k obsahu teto adresy, tag bity mohou byt meneny pouze privilegovanymi instrukcemi
alternativou muze byt pouzivani jednoho tagu pro cely blok slov
cely program sestava z nekolika bloku - segmentu - ktere mohou byt nezavisle ulozeny do pameti
program potom generuje odkazy ve tvaru <jmeno_segmentu><ofset>
jmeno_segmentu je pomoci systemem udrzovaneho segmentoveho adresare prevedeno na adresu pocatku segmentu, ke ktere je pricten ofset
casto je tez ofset porovnan s velikosti segmentu, aby se zajistilo, ze program nesaha "za segment"
Metoda jiz poskytuje dostatecne prostredky pro sdileni dat, navic umoznuje ochranu kodu programu a pripadne i vybranych dat. Rovnez je schopna chranit uzivatele navzajem.
metoda velmi podobna segmentaci, jen predpokladame segmenty konstantni velikosti = stranky
opet dvouslozkove adresovani <cislo_stranky><ofset> , ochrana proti adresovani za stranku je vyresena samovolne tim, ze nezle udelat vetsi ofset, nez je velikost stranky
moznost ochrany obsahu stranek je ponekud slabsi nez v pripade segmentu, nebot neni prilis jasna vzajemna souvislost obsahu stranek a rozdeleni programu a dat do stranek
s rozvojem multiprogramovani vzrusta
skala objektu, ktere je treba
chranit
na rozdil od problemu ochrany pameti,
zde nemusi existovat centralni arbitr, pres
ktereho jsou smerovany vsechny pristupy,
navic typu pristupu muze
byt cela rada
cile ochrany objektu
Kontrolovat kazdy pristup - subjekt muze pozbyt pristupova prava a tedy je nutno mu zabranit v dalsim pouzivani objektu
Povoleni co nejmensich prav - subjekt by mel mit pouze nejmensi mozna opravneni nutna ke korektnimu plneni jeho ukolu a to i v pripade, ze pripadna dalsi prava by pro nej byla bezcenna - toto usporadani snizuje moznost pruniku v pripade selhani casti ochranneho mechanismu
Overeni prijatelneho pouzivani - nekdy je daleko podstatnejsi nez prideleni ci odepreni pristupu moci kontrolovat, co subjekt s danym objektem provadi
metodu popiseme pro pripad uzivatelu systemu v roli subjektu a souboru coby objektu, lze ji vsak snadno rozsirit na libovolne objekty a subjekty
kazdy soubor ma sveho vlastnika, ktery k nemu vlastni veskera prava vcetne prava urcovat rozsah opravneni ostatnich uzivatelu k tomuto souboru
s kazdym uzivatelem je spojena specielni struktura - adresar - obsahujici odkazy na vsechny soubory, k nimz ma dany uzivatel nejake opravneni, vcetne popisu tohoto opravneni
zadny uzivatel nesmi
zapisovat do sveho adresare
Nevyhodou muze byt velky rozsah adresaru a velmi obtizna sprava a upravy takto pridelovanych opravneni. Rovnez udrzeni prehledu o tom, kdo k danemu souboru ma jaka prava muze byt problematicke.
opacny pristup k problemu
tentokrat je s kazdym objektem udrzovan seznam informaci, ktere subjekty k nemu maji jaka opravneni
metoda umoznuje snadno pridelovat implicitni prava subjektum pripadne skupinam subjektu
pri vhodnem oznaceni
subjektu a pouziti expanznich znaku
muze byt tado metoda dostatecne
pruzna
Pr: Pepek_Group1_Troja
*_Group1_*
seznamy zpravidla byvaji udrzovany
setridene tak, ze zaznamy
s expanznimi znaky jsou na konci - tak staci
hledat prvni shodu s identifikaci subjektu a pouzit
timto zaznamem specifikovane opravneni
radky matice odpovidaji jednotlivym subjektum, sloupce objektum
v policku danem radkem a sloupcem je zaznam o urovni opravneni odpovidajiciho subjektu k prislusnemu objektu
pristupova matice je zpravidla velmi velka zalezitost, zhusta ridka
Zpusobilost budeme
chapat jako nefalsovatelny token, jehoz
vlastnictvi dava vlastnikovi specificka
prava k danemu objektu. Lze chapat jako listek
do kina.
jednou z metod zajsteni nefalsovatelnosti
je, ze tokeny se nepredavaji primo
subjektum, ale jsou udrzovany v chranene
oblasti pameti, pristupne pouze systemu
pri pristupu k objektu tak system zkontroluje existenci prislusneho tokenu, tento postup lze urychlit tim, ze zvlast udrzujeme seznam Zpusobilosti prave beziciho procesu
vyhodou metody je, ze dovoluje definovat nove dosu nezname zpusoby pouzivani objektu a pridelovat odpovidajici opravneni
nevyhodou opet ponekud obtizna sprava techto tokenu, zejmena odebrani Zpusobilosti je netrivialni operace
namisto pridelovani obecneho pristupu k subjektu (cteni, zapis, ...) muzeme pridelovat pravo pouzivat nekterych funkci z rozhrani, prostrednictvim ktereho je objekt zpristupnovan
metoda podporuje koncept skryvani a zapouzdrovani informaci popsany v minule lekci
nevyhodou je jista ztrata efektivity a rychlosti pristupu
kazdy multiuzivatelsky system musi poskytovat mechanismus na ochranu souboru
puvodni IBM OS poskytoval nasledujici zpusob ochrany
uzivatele jsou v zasade duveryhodni a protoze nechteji, aby jim nekdo neco udelal s jejich soubory, nedelaji to ostatnim
pristup ke specifickym souborum muze administrator vazat na zadani hesla
uzivatele jsou podle sveho zamereni, pracovniho zarazeni, ..., vhodne rozdeleny do skupin
pro ucely ochrany souboru je svet rozdelen na vlastnika souboru, skupinu, do ktere vlastnik patri a ostatni uzivatele
predpokada se, ze uzivatele v ramci skupiny potrebuji sdilet data
pri vytvoreni souboru vlastnik specifikuje, jaka prava prideluje sobe, uzivatelum ve stejne skupine, ostatnim
metoda je jednoducha, snadno implementovatelna lec neposkytujici dostatecne jemne rozliseni, navic je vetsinou nutne, aby kazdy uzivatel byl prave v jedne skupine, jinak nastavaji problemy s pridelovanim prav skupinam
pri vytvoreni souboru vlastnik specifikuje hesla, potrebna pro jiste mody pristupu k souboru, heslo zasle uzivatelum, kteri maji mit pristup
system splni zadost o pristup k souboru pouze tomu, kdo se prokaze odpovidajicim heslem
nevyhodou je, ze v pripade zapomenuti neni mozno zjistit, jak heslo vypadalo, v pripade, ze dojde k vyzrazeni hesla je slozite nastavit nove, stejne obtizne je odejmout pravo pristupu
mechanismus znamy ze systemu UNIX.
stejne pridelovani prav jako v pripade ochrany po skupinach, navic je mozno stanovit, ze (spustitelny) soubor smi byt provaden s opravnenim vlastnika
prostrednictvim rutin bezicich
s opravnenim vlastnika lze rizene
pristupovat k souborum, ke kterym uzivatel
primy pristup nema
problemem popsanych schemat je jista tezkopadnost, uzivatel nemuze selektivne pridelovat prava jistym uzivatelum k jistym skupinam souboru
kontrolni matice a podobne metody jsou zase prilis rozsahle a obtizne spravovatelne
ke kazdemu souboru muze uzivatel vytvorit Seznam opravneni udavajici kdo ma jaka prava
kazdy uzivatel je clenem jedne skupiny, navic administrator muze vytvorit skupinu typu obecny identifikator , a tuto skupinu mohou uzivatele uvadet v Seznamech opravneni
Seznamy opravneni
mohou byt tez pouzity pro pridelovani
pristupu k ostatnim systemovym
zdrojum
shora popsane bezpecnostni mechanismy odvijeji svoji cinnost od informace, kdo zada jaky pristup
je tedy nutne mit mechanismus pro autentizaci
subjektu
jednoduche myslenkove i implementacne,
overuje se platnost paru
<identifikace:heslo>
mechanismus prijeti teto dvojice by nemel poskytovat utocnikovi zbytecne informace o systemu
prihlasovani do systemu
lze navic omezit na urcity cas ci
misto, jisty omezeny pocet soucasnych
prihlaseni daneho uzivatele
do systemu
System musi mit moznost kontrolovat korektnost zadaneho hesla, tedy je nutne aby udrzoval informace o vsech heslech
soubor obsahuje v textove podobe dvojice <identifikace:heslo>
velmi nevhodne, hesla lze zjistit z odcizenych zaloh, z dumpu pameti pri padech systemu, dojde-li chybou nektere komponenty systemu v vyzrazeni souboru hesel
pro sifrovani je mozne pouzit konvencnich sifer, nebo lepe kryptografickych hasovacich funkci
soubory zasifrovanych hesel mohou byt volne pristupne
protoze by v pripade dvou uzivatelu se stejnym heslem vysla stejna sifra, je vhodne pred sifrovanim k heslu pridat nahodny retezec (salt), salt je uchovavan zaroven se zasifrovanym heslem a pri verifikaci vzdy pridan k zadanemu heslu
resi problemy uschovy hesel
namisto konstantni fraze ma uzivatel prirazenu konstantni funkci (vhodny matematicky vypocet, desifrovani soukromym k.licem, ...)
v procesu autentizace obdrzi od systemu nahodne zvolene vstupni parametry a odpovi vysledkem
metoda obzvlaste vhodna pro vzajemnou autentizaci stroju
na kvalite operacniho systemu zavisi bezpecnost celeho mechanismu ochrany dat
OS kontroluje chovani uzivatelu a programu a v konecnem dusledku zpristupnuje utajovane informace
proces vyvoje bezpecneho OS lze rozdelit do nekolika fazi
prvni fazi tvorby bezpecneho OS je volba vhodneho bezpecnostniho modelu
pripomenme dodrzeni zakladnich pozadavku bezpecnosti:
dale budeme predpokladat, ze umime rozhodnout, zda danemu subjektu poskytnout pristup k pozadovanemu objektu, modely poskytuji pouze mechanismus pro rozhodovani
jsou vhodne pouze pro pripady, kdy staci jednoduche ano/ne rozhodovani, zda danemu subjektu poskytnout pristup k pozadovanemu objektu
tez reference monitor
vyhodou jednoduchost a snadna implementovatelnost
nevyhodou je, ze proces poskytujici sluzby monitoruje volan pri kazdem pristupu k libovolnemu objektu, coz system velmi zatezuje
dalsi nevyhodou je, ze tento model je schopen kontrolovat pouze prime pristupy k datum, ale neni schopen zachytit napr. nasledujici pripad
if profit <= 0 then delete file F else write file F, "_zprava_" endif
subjekt majici legitimni pristup k souboru F muze ziskavat informace o promenne profit, k niz by pristup mit nemel
odstranuje posledne jmenovanou nevyhodu predchoziho modelu
autori si vsimli, ze uzivatel muze ziskavat i jine informace, nez na ktere se explicitne pta
jiz ve fazi vyvoje je provadeno testovani vsech modulu, zda jejich vystupy zavisi na interakcich se senzitivnimi daty a pripadne jakym zpusobem
z techto dilcich vysledku je sestavovan celkovy graf zavilosti
veskere pozadavky na system prochazeji inteligentnim filtrem, ktery zjistuje, zda nedochazi k nezadouci kompromitaci informaci
v predchozich modelech jsme meli jednoduche vztahy objekt je/neni senzitivni, subjekt ma/nema pristup k danemu objektu
obecne vsak muze byt nekolik stupnu senzitivity a "opravnenosti"
u zelenych mozku je kazda informace zarazena do nektere z kategorii utajeni (napr. unclassified, confidental, secret, top secret), ktere jsou disjunktni
silne uplatneni zde ma princip nejmensich privilegii - kazdy subjekt ma mit pouze takova opravneni, aby mohl konat svoji praci
vsechny chranene informace jsou rozdeleny podle obsahu do oblasti (compartments), informace muze byt i nekolika oblastech zaroven
klasifikaci informace potom rozumime dvojici <stupen_utajeni, oblasti>
aby subjekt mohl pouzivat pozadovanou informaci, musi mit dostatecne opravneni.
opravneni ma stejny tvar jako klasifikace - <stupen_utajeni, oblasti>, tedy dany subjekt smi pouzivat informace az do stupen_utajeni v techto oblastech.
Relace odpovida opravneni subjektu S k danemu objektu O.
Pozadavky na stupen utajeni byvaji oznacovany jako hierarchicke, rozdeleni na oblasti jako nehierarchicke omezeni.
predchozi military model je specielnim pripadem tohoto modelu
relace je castecnym usporadanim, mnozina klasifikaci vsech informaci v systemu tvori svaz, stejne tak mnozina opravneni vsech subjektu
v runych oblastech se pouziva ruznych svazu, napr. v komercni oblasti jsou obvykle stupne utajeni public, company confidental, high security, rovnez rozdeleni do oblasti se lisi pripad od pripadu ...
svazovy model je casto pouzivanym
modelem v mnoha prostredich
dale popiseme dva modely, zabyvajici se tokem informaci uvnitr systemu
model popisuje povolene presuny informaci, takove, aby bylo zajisteno jejich utajeni
pro kazdy subjekt S resp. objekt O v systemu necht je definovana bezpecnostni trida C(S) resp. C(O)
bezpecne presuny informaci maji nasledujici vlastnoti:
Vlastnost jednoduche bezpecnosti (Simple Security Property):
Subjekt S muze cist
objekt O prave kdyz
*-vlastnost (*-Property):
Subjekt S majici pravo
cteni k objektu O muze zapisovat
do objektu P prave kdyz
Obycejne nepotrebujeme tak silna omezeni, ktera klade *-vlastnost. Casto je tato vlastnost ponekud oslabena v tom smyslu, ze system povoli zapis do objektu nizsi bezpecnostni tridy, pokud zapisovana data nezavisi na ctenych udajich.
Model byl je pouzivan v systemech, ktere paralelne zpracovavaji informace ruzneho stupne utajeni.
predchozi model se vsak vubec nezabyva integritou dat, Biba model je dualnim modelem k Bell-LaPadula modelu
Necht pro kazdy subjekt S resp. objekt O v systemu je definovana integritni bezpecnostni trida I(S) resp. I(O). Obdobne jako v predchozim pripade definujeme:
Vlastnost jednoduche integrity (Simple Integrity Property):
Subjekt S muze modifikovat objekt
O prave kdyz
Integritni *-vlastnost (Integrity *-Property):
Subjekt S majici pravo
cteni k objektu O muze zapisovat
do objektu P prave kdyz
Biba model se zabyva zajistenim integrity a tedy i duveryhodnosti dat. Bepecnostni trida entity vpodstate popisuje miru jeji duveryhodnosti pro ostatni.
Tento model vubec neresi
utajeni dat.
Prestoze byla ucinena rada pokusu o nalezeni kompromisu mezi zajistenim integrity a utajeni, dosud neexistuje obecne prijaty model, ktery by resil oba problemy. Nasledujici modely se zabyvaji teoretickymi limity abstraktnich bezpecnostnich systemu.
model pracuje s mnozinou subjektu S, mnozinou objektu O, mnozinou prav R a pristupovou matici A.
Kazdy objekt ma prirazen jeden subjekt nazyvany vlastnik, kazdy subjekt ma prirazen jiny subjekt nazyvany kontroler.
Model definuje nasledujici prava:
Nasledujici tabulka uvadi
podminky nutne pro vykonani operaci
s pristupovymi pravy.
vytvorit objekt o | |
vytvorit subjekt s | |
zrusit objekt o | vlastnik je v A[x,o] |
zrusit subjekt s | vlastnik je v A[x,s] |
cist pristupova prava s k o | kontroler je v A[x,s], nebo vlastnik v A[x,o] |
zrusit pristupove pravo r subjektu s k o | kontroler je v A[x,s], nebo vlastnik v A[x,o] |
pridelit s pravo r k objektu o | vlastnik je v A[x,o] |
predat pristupove pravo r nebo r* k objektu o subjektu s | r* je v A[x,o] |
r* oznacuje predatelne pravo
model pracuje s ctyrmi zakladnimi primitivami: create, revoke, take, grant.
predpokladame, ze systemu obsahuje mnozinu subjektu S, mnozinu objektu O, objekty delime na aktivni (zaroven i subjekty) a pasivni (nejsou subjekty) a mnozinu prav R
Pro popis operaci pouzijeme nasledujici notaci:
Subjekt s ma k objektu o opravneni r.
create(o,r) - vytvoreni
objektu
revoke(o,r) - odebrani
opravneni
grant(o,p,r) - predani
opravneni
take(o,p,r) - prevzeti
opravneni
Vyhodou popsaneho systemu je,
ze umoznuje v subpolynomialnim
case resit dotazy na dostupnost jisteho
objektu pro dany subjekt.
implementace bezpecnostnich mechanismu je v primem rozporu s efektivitou systemu
OS vykonava nekolik s bezpecnostni uzce souvisejicich cinnosti:
Bezpecnost musi byt brana v potaz ve vsech aspektech navrhu systemu a musi byt zapracovana jiz v prvotnim navrhu. Je velmi obtizne ji "pridat" do hotoveho navrhu.
Nasledujici principy je vhodne mit na pameti:
Nejmensi prava - kazdy subjekt by mel mit pouze nezbytna prava
Ekonomicky navrh - bezpecnosni system ma byt maly a jednoduchy, pak je testovatelny a verohodny
Otevreny navrh - bezpecnostni mechanismus by mel byt verejne znamy (a oponovany) a mel by zaviset na bezpecnosti co nejmene objektu
Uplne zprostredkovani - veskere pristupy k objektum zprostredkovava a testuje OS
Povolovani operace - co neni vyslovne povoleno, je zakazano
Rozdelene opravneni - pristup k objektum by mel zaviset na vice podminkach (napr. spravna autentizace a vlastnictvi klice)
Nejmensi sdilene prostredky - sdilene moduly jsou potencialnim kanalem pro unik informaci, melo by jich byt co nejmene
Snadna pouzitelnost - mechanismus neni
obchazen, kdyz se neplete
IBM MVS provadi logicke oddeleni uzivatelu, ktere poskytuje dojem fyzicke separace
pomoci mechanismu strankovani jsou cela oddeleny adresni prostory jednotlivych uzivatelu, kazdy uzivatel vidi pouze svuj prostor, do kazdeho z uzivatelskych prostoru je mappvana oblast pameti obsahujici vlastni system, cimz vznika dojem, ze uzivatel ma cely system sam pro sebe
operacni system IBM VM poskytuje nejen virtualni pamet, ale provadi virtualizaci celeho pocitace - I/O zarizeni, file-systemu a dalsich zdroju
simulovany stroj muze mit naprosto odlisne vlastnosti od vlastnosti pocitace, na kterem OS VM bezi
poskytovana ochrana je tedy daleko silnejsi
VM byl navrhovan jako system, umoznujici na jednom fyzickem pocitaci provozovat zaroven nekolik ruznych operacnich systemu
tak predstavuje dalsi vrstvu ochrany, nebot pokud se uzivateli podari proniknout ochrannymi mechanismy operacniho systemu, ktery pouziva, ziska pristup pouze k teto jedine domene, nebot VM mu zabrani v pristupu k celemu pocitaci
... cast OS provadejici nejzakladnejsi funkce - standardne synchronizace, meziprocesova komunikace, zasilani zprav a obsluha preruseni
tzv. security kernel poskytuje zaklad pro vybudovani bezpecnostniho mechanismu, casto byva implementovan uvnitr kernelu
uzavrit bezpecnostni funkce systemu do security kernelu ma nekolik duvodu:
kernel hlida zejmena:
jiz operacni systemy s kernelem obsahuji nekolik vrstev - hardware, kernel, zbytek OS, uziv. procesy
tyto vrstvy lze dale delit - napr. na uzivatelske urovni muzeme oddelit semi-sytemove programy jako ruzne databazove systemy, shelly apod.
vrstvy le chapat jako soustredne kruhy, cim blize je vrstva stredu, tim je duveryhodejsi a bezpecnejsi
ne vsechny bepecnostni funkce (napr. autentizace uzivatele) jsou implementovany uvnitr bezpecnostniho jadra
bezpecnostni jadro spolupracuje s okolnimi spolehlivymi vrstvami, ktere by meli byt formalne overeny a prinejmensim dobre otestovany
kazda vrstva pouziva sluzby nizsich vrstev a sama vyssim vrstvam poskytuje sluzby jiste urovne bepecnosti, stjna funkce muze byt implementovana v nekolika vrstvach zaroven
kruhy cislovany od 0 (kernel), cim duveryhodnejsi proces, tim nizsi cislo kruhu, do ktereho patri
kruhy jsou soustredne a prekryvajici se - proces patri do kruhu k a vsech dalsich, ve stredu je HW pocitace
kazda procedura, nebo oblast obsahujici data se nazyva segment
ochrana segmentu zalozena na trojici , nazyvane zavora kruhu (ring bracket), (b1, b2) nazyvame pristupova zavora (access bracket), (b2, b3) potom zavora volani (gate extension, call bracket)
necht programova rutina patri do kruhu k, pokud k = b1, muze pracovat primo s daty tohoto segmentu, pokud , muze pracovat primo s kopii dat a pokud , muze k datum pristupovat pouze prostrednictvim definovaneho rozhrani (gate)
tento zakladni mechanismus, nazyvany tez nondiscretionary nebo mandatory control muze byt dale doplnen o dalsi doplnkove (discretionary) mechanismy -
napr. k danym datum smeji pristupovat pouze jmenovite procesy, procesy patrici do okruhu pristupove zavory mohou volne cist, ale zapisovat pouze za specifickych podminek apod.