bezpecnostni problemy, se kterymi se potykaji databazove systemy jsou obdobne, jako problemy operacnich systemu
system musi obsahovat prostredky prekonavajici nedostupnost polozky nebo dokonce cele baze
z hlediska OS a spravce systemu jde o ochranu relevantnich souboru a programu, zalohy, kontroly zarizeni atp.
z pohledu SRBD pristupuje system transakci a logu, umoznujici rekonstruovat stav databaze
autorizovani uzivatele mohou vkladat data, ale cini chyby - ty musi SRBD zachycovat a vyzadat si opravu
metody:
field checks - test vhodnosti vkladanych dat: zda je to cislo, zda jde o jmeno, ...
kontrola pristupu - mechanismus resici kdo co muze menit, jak nalozit s koliznimi pripady, naslednost uprav
log zmen - zaznam o vsech provedenych zmenach, obsahuje puvodni a novou hodnotu
je treba vest zaznamy o tom, kdo co delal s kterymi polozkami - nejen pro to, abychom byli schopni sledovat pristupy a zmeny, ale i pro dlouhodobe sledovani uzivatelu a nasledne rozhodovani, zda vyhovet zadosti
je nutne zvolit vhodnou granularitu - bloky, zaznamy, polozky
zde pristupuje tzv. pass through problem - uzivatel smi pristupovat k objektu ale tento mu nesmi byt predan (napr. pri vyhledavani)
uzivatel muze zjistit hodnotu polozky i bez primeho dotazu - nestaci log zadosti o pristup k odhadu toho, co vi
SRBD potrebuje presne vedet, komu odpovida
protoze vsak zpravidla bezi jako uzivatelsky proces, nema spolehlive spojeni s jadrem OS a tedy musi provadet vlastni autentizaci
SRBD ma vlastnosti systemu a aplikacniho programu zaroven - bezi jako program a pouziva sluzeb systemu, pro mnoho uzivatelu je vsak jedinym pracovnim prostredim
musi rozhodovat soucasne zadosti vice uzivatelu
musi byt schopen odeprit poskytnuti i nechranenych dat aby nedoslo ke kompromitaci utajovanych informaci
v prostredi databazi jsou tyto pojmy jeste dulezitejsi, nez obvykle
jde nam o zachovani techto tri vlastnosti:
Dale se budeme zabyvat mechanismy pro udrzovani techto vlastnosti.
- tyto nejsou absolutni, napr. nemohou zabranit opravnenym entitam vkladat nespravna, lec typem a ostatnimi atributy akceptovatelna data
DBS jsou soubory a programy - tedy spadaji pod standardni obranne mechanismy OS:
ochrana souboru, kontrola pristupu, zalohy, testy integrity na urovni systemu, ...
problemem je selhani vypocetniho systemu behem provadeni modifikace dat
proces modifikace rozdelime na dve faze:
Pokud nektera z fazi nedobehne, muze byt snadno opakovana, po ukonceni faze je system konzistentni.
databaze casto obsahuji ruzne redundantni informace za ucelem odhaleni chyb, zvyseni spolehlivosti, nebo docileni potrebne rychlosti
jde o vhodne zpusoby zakodovani informaci pridanim vhodne redundance tak, aby bylo s co mozna nejvetsi pravdepodobnosti detekovat nahodne zmeny
samoopravne kody maji navic schopnost lokalizovat a vycislit jiste mnozstvi chyb, takze mohou byt opraveny
vzdy pri ukladani je zaznam zakodovan, pri nacitani je kontrolovana jeho spravnost
k dispozici je cela reda kodu pro ruzne ucely
vybrane atributy nebo vety jsou ulozeny v nekolika kopiich
v pripade nedostupnosti nebo chyby v originalu je pouzita kopie
metoda ucinna lec narocna na prostor
SRBD musi vest log o vsech akcich, zejmena o zmenach
v pripade havarie potom na zaklade techto zaznamu a vhodne zalozni kopie znovu vygeneruje aktualni stav
SRBD musi zajistit soucasny pristup vice uzivatelu, vyresit konflikty plynouci z situaci, kdy dochazi k soucasnemu zapisu vice hodnot do stejne polozky, nebo zapisu zavisejicim po predchozim cteni polozky
jednotky SRBD zajistujici strukturalni integritu databaze - testuji, zda vkladana data typove odpovidaji, zda jsou konzistentni s ostatnimy daty v systemu atd.
vkladana hodnota je testovana na prislusnost do jisteho intervalu, meze intervalu mohou byt urceny i dosti komplikovanou funkci zavisici na jinych hodnotach v databazi
tento test muze byt rovnez pouzit pokud je podezreni, ze ulozena data jsou poskozena
popisuji podminky, ktere musi cela databaze splnovat
nejsou-li stavova omezeni splnena, jsou data v databazi vadna
napr. ve skladu nelze mit -5,1 rohliku
jsou omezeni, ktere musi splnovat obsah databaze pred provedenim urcite operace
napr. pred prodejem 1 rohliku nesmi byt sklad rohliku prazdny
... data, ktera by nemela byt verejne znama
data se stavaji senzitivnimi z mnoha ruznych duvodu:
nejvetsi problemy nastavaji v pripade, kdy pouze nektere informace v databazi jsou senzitivni
zavedeme nasledujici znaceni:
spravce SRBD je program zajistujici dodrzovani rozhodnuti ucinenych administratorem o tom, kdo z uzivatelu ma mit jaka pristupova prava
pro jednoduchost budeme uvadet tez spravce rozhodne ...
krome obvyklych problemu s dostupnosi informaci, zde pristupuje mechanismus zamykani zaznamu, ktery brani nacteni nekonzistentnich dat
uvazme pripad, kdy dojde k poruse stanice, ktera prave provedla uzamceni zaznamu (t.j. provedene zamky neuvolni)
SRBD musi mit stale na zreteli, ktere zaznamy jsou senzitivni a nepristupne uzivateli, musi zajistit, aby nedoslo k jejich vyzrazeni
problem rozhodovani o poskytnuti pristupu je slozity, system nesmi vydat informace, ze kterych by uzivatel mohl dovodit utajovane skutecnosti
presto v nekterych pripadech by mel vydat vysledek, zavisici na senzitivnich informacich - napr. ruze statisticke hodnoty z udaju v databazi
krome spravne identifikace lze opet omezit pristup uzivatele casem, mistem apod.
navic, rozhodnuti o poskytnuti pristupu by melo zaviset tez na predchozich dotazech, ktere uzivatel kladl
uzivatel se zamerne nebo omylem dotaze na tajna data, vlivem spatneho mechanismu rozhodovani nebo nestability v systemu je dotaz zodpovezen
vydani mezi intervalu, ve kterem se utajovane hodnoty nachazeji muze byt rovnez vaznym nedostatkem - zvlaste pokud system tuto informaci vyda o libovolne podmnozine zaznamu
na druhou stranu nekdy muze byt vhodne moci podat informace o spodnim a hornim odhadu pro specifickou mnozinu zaznamu
uzivatel muze pokladat dotazy smerujici k overeni zaporne skutecnosti - hodnota specificke polozky neni rovna hodnote x, caste zejmena pri overovani, zehodnota je nenulova
zatimco informace, ze hodnota je ruzna od 42 je temer bezcenna, informace, ze hodnota je nenulova sama o sobe jiz muze znamenat vazne poruseni utajeni
stejne jako v pripade obecnych dat vramci OS, sama existence nejake informace muze byt senzitivni informace
uzivatel napr. vubec nesmi zjistit existenci urciteho atributu - ani v projekcich, ani dotazy na strukturu databaze
opsany priklad:
dotaz - Kolik lidi
bydli na Pennsylvania Avenue 1600?
odpoved - 4
dotaz - Kolik obyvatel
Pennsylvania Avenue 1600 je registrovanymi komunisty?
odpoved - 1
->
S pravdepodobnosti 25% je prezident USA komunista.
System by se mel snazit udrzet
bezpecnost senzitivnich dat, a to i proti
neprimym dotazum - coz vede ke
"konzervativni" strategii v poskytovani
dat, ktera zpusobi odmitnuti
mnoha neskodnych dotazu.
Z pohledu uzivatele je naopak vhodne
poskytovat co nejuplnejsi a nejpresnejsi
odpovedi - tedy udrzet bezpecnost, ale vydat
co nejvice nesenzitivnich informaci.
Idealni stav by byl umet vydat
prave vsechny ne-senzitivni informace.
jde o moznost odvodit senzitivni informace
ze znalosti (velkeho mnozstvi) ne-senzitivnich
Mejme nasledujici DB:
utocnik se snazi
ziskat informace primymi dotazy, jejichz
odpoved zavisi na velmi malem
poctu vet, ktere vyhovely podminkam
dotazu
list Jmeno where
Pohlavi = M & Drogy = 1
takovy dotaz muze obsahovat velke
mnozstvi umele vlozenych nesplnitelych
podminek
list Jmeno where
(Pohlavi = M & Drogy = 1) or
(Pohlavi M &
Pohlavi Z) or
(Kolej = Grey)
neb kazdy vi, ze na koleji
Grey o drogy nikdo ani nezavadi
casto je z databaze obsahujici
napr. senzitivni osobni udaje povoleno
zverejnovat statisticke udaje, ktere
neni treba povazovat za tajne
z techto udaju lze ovsem
za vhodnych okolnosti ziskat puvodni
utajovane informace
Na prvni pohled nevinny dotaz na soucet
financni podpory studentu dle pohlavi
a koleje na ktere bydli vede k vyzrazeni
tajne informace o vysi financni
podpory studentky Liu
dotaz na pocet muze byt
kombinovan s dotazem na soucet
kombinujeme-li predchozi dotaz s dotazem
na pocet studentu toho ktereho pohlavi
bydlicich na jednotlivych kolejich,
zjistime, ze na koleji Holmes bydli kdosi,
kdo dostava 5000 financni podpory
pokud se jeste zeptame na seznam
obyvatel teto koleje (coz pravdepodobne
neni tajne) opet jsme ziskali senzitivni
informace
utajovane hodnoty lze ziskat z dotazu
na median:
sekvence dotazu
q = median( Podpora where Pohlavi = M)
p = median( Podpora where Drogy = 2)
vede k vyzrazeni presne hodnoty
financni podpory studenta Majorse
ucinnou obranou je, pokud spravce
databaze odepre odpoved na dotazy, jejichz
vysledek zavisi na malem mnozstvi
zaznamu
utocnik vsak muze
ziskat informace porovnanim vysledku
nekolika dotazu:
namisto dotazu
count ((pohlavi = Z) &
(Hodnoceni = C) &
(Kolej = Holmes))
utocnik polozi nasledujici
dotazy
count (pohlavi = Z)
count ((pohlavi = Z) &
(Hodnoceni C) &
(Kolej Holmes))
Odectenim vysledku ziskame
vysledek prvniho dotazu, ktery spravce
nevydal
system nevyda odpoved,
pokud vysledna hodnota neprekracuje
stanoveny limit
je treba zajistit, aby potlacena
hodnota nebyla snadno odvoditelna ze zbylych hodnot
napr. je-li vysledkem tabulka se soucty
sloupcu a radku, je treba vypustit
v kazdem radku a sloupci alespon
dve hodnoty
system nevydava vysledky
tykajici se jednotlivych hodnot z
dane domeny ale pouze souhrne vysledky
pro intervaly techto hodnot
dalsi moznosti je zaokrouhlovani
vysledku, navraceni prumeru
vysledku pro interval hodnot z dane domeny
apod.
system neodpovida na zaklade
vsech hodnot v databazi ale pouze na zaklade
provedeneho nahodneho vyberu
ze vsech relevantnich polozek
aby nebylo mozne pocitanim
prumernych hodnot vysledku
opakovanych dotazu ziskat presne
hodnoty, mel by se pro ekvivalentni dotazy pouzivat
stale stejny vyber
ke kazde polozce v databazi
pricteme nahodnou chybu e
pokud je chyba z okoli nuly, je vliv teto
upravy na statisticke vysledky typu soucet,
prumer, ... maly
metoda je vhodnejsi nez predchozi,
nebot lze snaze zajistit stejne vysledky
ekvivalentnich dotazu.
opet se budeme zabyvat pripady,
kdy je nutno uvazovat nekolik urovni
duvernosti ci utajeni zpracovavanych
informaci
je velmi dulezita granilarita,
s jakou je ochrana provadena - je jasne,
ze hodnoty jednotlivych atributu mohou mit
rozdilnou citlivost, rovnez citlivost tak radku
se muze lisit
v pripade databazi
je dale treba brat v uvahu
SRBD musi zachovavat integritu
a utajeni dat, ale sam se nemuze ridit
napr. *vlastnosti popsanou v Bell-LaPadulove
modelu (musi byt schopen cist a zapisovat
vsechny polozky)
utajovani dat ma i druhou stranku
- pokud pracovnik zjisti, ze udaje poskytovane
databazi nejsou z jeho pohledu uplne
(byly vypusteny utajene zaznamy) muze
provest doplneni techto "chybehicich"
zaznamu
databaze je rozdelena dle stupne
citlivosti informaci na nekolik subdatabazi
senzitivni data jsou chranena
sifrovanim pred nahodnym
vyzrazenim
zna-li utocnik domenu
daneho atributu, muze snadno provest
chosen plaintext attack (zasifrovanim vsech
hodnot z domeny)
resenim je pouzivat
jiny klic pro kazdy zaznam,
coz je vsak pomerne narocne
v kazdem pripade
nutnost neustaleho desifrovani
snizuje vykon systemu
kazda polozka v databazi
se sklada ze tri casti:
<vlastni
data : klasifikace : checksum>
- vlastni data jsou ulozena v otevrene
forme
- klasifikace musi byt nepadelatelna,
neprenositelna a skryta, tak aby utocnik
nemohl vytvorit, okopirovat ani zjistit klasifikaci
daneho objektu
- checksum zajistuje svazani
klasifikace s daty a integritu vlatnich dat
model byl navrzen jako doplnek (access
controller) komercniho SRBD, ktery
mel zajistit bezpecnost celeho systemu
seda oblast vyznacuje bezpecnostni
perimetr systemu
system je opet zamyslen
jako doplnek komercnich SRBD, ktere
nemaji implementovan u bezpecnost
uzivatel se autentizuje spolehlivemu
front-endu, ktery od neho prebira
dotazy, provadi kontrolu autorizace uzivatela
pro pozadovana data, predava
dotazy k vyrizeni SRBD a na zaver
provadi testy integrity a klasifikace vysledku
pred predanim uzivateli
SRBD pristupuje k datum prostrednictvim
spolehliveho access kontroleru
jde o proces, ktery prebira
ulohu rozhrani mezi uzivatelem a SRBD
filter je mozno pouzit k ochrane
na urovni zaznamu, atributu a jednotlivych
polozek
v ramci preformulovani
dotazu muze napr. vkladat dalsi
podminky do dotazu, ktere zajisti, ze
vysledek dotazu zavisi jen na informacich.
ke kterym ma uzivatel pristup
pohled je cast databaze, obsahujici
pouze data, ke kterym ma dany uzivatel
pristup
pohled muze obsahovat i zaznamy
nebo atributy, ktere se v puvodni databazi
nevyskytuji a vznikly nejakou funkci z informaci
puvodni databaze
pohled je generovan dynamicky, promitaji
se tedy do neho zmeny puvodni DB
uzivatel klade dotazy pouze proti svemu
pohledu - nemuze dojit ke kompromitaci informaci,
ke kterym nema pristup
zaznam / atribut puvodni databaze
je soucasti pohledu pokud alespon
jedna polozka z tohoto zaznamu / atributu je pro uzivatele
viditelna, ostatni polozky v tomto jsou oznaceny
za nedefinovane
uzivatel pri formulovani
dotazu muze pouzivat pouze omezenou sadu
povolenych funkci
tato metoda je jiz navrhem smerujicim
k vytvoreni bezpecneho SRBD
Bezpecnost versus presnost
Problem odvoditelnosti
Primy utok
Neprimy utok
Soucet
Pocet
Median
Tracker attack
Ochrana proti odvoditelnosti
Potlaceni malych vysledku
(limited response suppression)
Kombinovani vysledku
Nahodny vyber (random
sample)
Nahodne zmateni (random
data perturbation)
Viceurovnove databaze (multilevel
db)
Metody ochrany ve viceurovnovych
databazich
Parcelizace (partitioning)
ifrovani
Integrity lock
Spolehlivy front-end (guard)
Komutativni filtr (Commutative Filter)
Pohled (View)
© Tonda Benes,
KSI MFF UK Praha, 1996
Toto je revision 1.1, 24.5.1996
Tuto stranku shledlo jiz
zvedavcu ...