Citlivé údaje sú údaje, ktoré by sa nemali stať verejnými. Existujú databázy bez citlivých údajov (napríklad knižničná databáza), databázy, v ktorých sú všetky údaje citlivé (napríklad databáza ministerstva obrany) a nakoniec databázy, kde tvoria citlivé údaje iba časť celku. Riadenie prístupu v prvých dvoch spomenutých prípadoch nie je problém. Problém vznika, pokiaľ sú údajom v databáze pridelené stupňe citlivosti.

Spôsoby prezradenia citlivých údajov

späť na zoznam


Konkrétne údaje

späť na zoznam


Najvážnejším spôsobom prezradenia citlivých údajov je uverejnenie ich konkrétnych hodnôt. Používateľ môže vedieť, že požaduje citlivé údaje, alebo môže požadovať všeobecné údaje bez toho aby vedel že obsahujú aj údaje citlivé. Chyba v DBMS môže dokonca spôsobiť zobrazenie citlivých údajov bez toho, aby o nich používateľ žiadal. Vo všetkých týchto prípadoch je výsledok rovnaký - citlivé údaje sú prezradené.

Ohraničenia

späť na zoznam


Ďalším spôsobom odhalenia je zistenie ohraničení citlivých údajov, tzn. zistenie, že citlivá hodnota y leží medzi hodnotami L a H. Niekedy sa spôsobom podobným binárnemu vyhľadávaniu dá najprv určiť či L <= y <= H a následne či L <= y <= H/2 atď., kým sa nezistí hodnota y s požadovanou presnosťou. Niekedy aj zistenie, že určitá hodnota presahuje nejakú hranicu, môže predstavovať bezpečnostné narušenie.
Niekedy naopak môžu byť ohraničenia užitočným spôsobom ako prezentovať citlivé údaje. Je bežné poskytovať horné a dolné ohraničenia údajov bez určenia konkrétnych záznamov. Príkladom môže byť napríklad vyhlásenie firmy, že jej zamestnanci majú platy od 1000 do 3000 eur.

Negatívny výsledok

späť na zoznam


V niektorých prípadoch je možné formulovať dotaz na získanie negatívneho výsledku. To znamená že môžeme zistiť, že Z nie je hodnota záznamu Y. Príkladom môže byť zistenie počtu trestných činov. V tomto prípade nie je rozdiel, či osoba má 5 alebo 6 tresných činov, podstatný je rozdiel medzi 0 a 1. Zistením, že daná hodnota nie je 0 vznika vážne bezpečnostné narušenie.

Existencia

späť na zoznam


Samotná existencia niektorých záznamov môže predstavovať citlivý údaj, bezohľadu na hodnotu daného záznamu. Príkladom môže byť existencia stĺpca "medzinárodné hovory" v tabuľke zamestnancov, čo indikuje skutočnosť, že firma monitoruje medzinárodné hovory jej zamestnancov.

Pravdepodobná hodnota

späť na zoznam


Je možné určiť pravdepodobnosť, že určitý prvok má určitú hodnotu.

Problém inferencie

späť na zoznam


Inferencia je spôsob zistenia citlivých údajov z necitlivých údajov.

Pomocou vzorovej databázy budeme ilustrovať problém inferencie. Stĺpec Štipendium vyjadruje sumu peňazí, ktoré študent dostal ako sociálne štipendium, stĺpec Pokuty vyjadruje počet pokút za parkovanie, ktoré študent ešte nezaplatil, stĺpec Drogy zobrazuje výsledok drogového prieskumu: 0 znamená nikdy neužil, 3 znamená pravidelný užívateľ. Všetky tieto stĺpce patria medzi citlivé údaje. Ukážeme si, ako sa dá určiť hodnota citlivého údaja z databázy.



Priamy útok

späť na zoznam


Pri priamom útoku sa používateľ snaží zistiť hodnoty citlivých údajov priamo pomocou dotazov.
Príklad: LIST Meno WHERE Pohlavie=M AND Drogy=1
Výsledkom tohto dotazu je iba jediný záznam, a to Adamovič. Jedná sa však o očividný útok, pretože vyberá ľudí, ktorí majú Drogy=1, DBMS môže takéto dotazy odmietnuť, pretože vyberajú špecifickú hodnotu citlivého údaja Drogy.
Menej zrejmý útok je takýto:
LIST Meno WHERE (Pohlavie=M AND Drogy=1) OR (Pohlavie!=M AND Pohlavie!=Ž) OR (Interát=Átriáky).
Navonok sa zdá, že daný dotaz zakryje užívanie drog zobrazením záznamov platných pre ďalšie kritériá, avšak aj takýto dotaz zobrazí iba jeden výsledok. V tomto prípade potrebuje DBMS vedieť, že Pohlavie má len 2 rôzne hodnoty, a že druhé kritérium v dotaze nevyberie žiadny záznam. DBMS taktiež potrebuje vedieť, že v databáze sa nenachádza žiadny internát s názvom Átriáky.
Ochranou v tomto prípade môže byť podmienka, že DBMS odmietne zobraziť výsledky dotazov, v ktorých počet záznamov vyjadrujúcich jednu položku presahuje X %. V našom prípade je hodnota X rovná 100, pretože je zobrazená iba jedna položka.

Nepriamy útok

späť na zoznam


Pod pojmom nepriamy útok sa vo väčšine prípadov rozumie štatistický útok na hodnoty ako sú suma, počet, priemer alebo stredná hodnota.

Suma
Pri útoku pomocou sumy sa útočník pokúša zistiť určitú hodnotu zo zobrazenej sumy. V našej vzorovej databáze sa môže zdať bezpečné zobraziť súčet štipendií podľa pohlavia a internátu. Takýto záznam môžeme vidieť v nasledujúcej tabuľke:



Tento zdanlivo nevinne vyzerajúci záznam odhaľuje, že na internáte Mladá garda nie je žiadna osoba ženského pohlavia poberajúca sociálne štipendium. Môžeme teda predpokladať, že akákoľvek žena z internátu Mladá garda (ako napríklad slečna Matejová) nepoberá sociálne štipendium. Týmto spôsobom sa dá často dopracovať k negatívnym výsledkom.

Počet
Nasledujúca tabuľka zobrazuje počet záznamov študentov podľa internátov a pohlavia. Tabuľka sama o sebe je neškodná. V kombinácií s tabuľkou súm však táto tabuľka demonštruje, že dve osoby mužského pohlavia na internáte Mladosť a Horský park poberajú sociálne štipendium vo výške 500 resp. 400 eur. Mená môžeme získať výberom mena a internátu, tieto údaje totiž nie sú citlivé.



Priemer
Aritmetický priemer umožňuje presné zistenie hodnoty v prípade, že útočník môže meniť rozsah záznamov, na ktorom sa daný priemer počíta. Ako jednoduchý príklad môžeme uviesť plat s ohľadom na zamestnancov. Po zistení počtu zamestnancov je jednoduché z priemerného platu pre celú firmu a priemerného platu pre všetkých zamestnancov okrem riaditeľa vypočítať plat riaditeľa.

Stredná hodnota
Trochu zložitejším spôsobom sa dajú určiť individuálne hodnoty aj zo stredných hodnôt. Útok vyžaduje nájdenie výberov, ktoré majú jeden spoločný priesečník, ktorý sa nachádza presne v strede.
Napríklad vo vzorovej databáze sú dvaja muži a tri osoby, ktorých hodnota Drogy má hodnotu 2. Zoradené podľa hodnoty Štipendium, uvádzame tieto zoznamy v tabuľke.



Všimnite si, že Novák je jediné meno ktoré sa nachádza v oboch zoznamoch, a vhodne sa nachádza uprostred každého z nich. Pokiaľ niekto zistí, že Nováková hodnota údaja Drogy je 2, dokáže tiež zo strednej hodnoty zistiť aj výšku sociálneho štipendia. V našom prípade na to stačí vykonať dotazy
q = median(Štipendium WHERE Pohlavie=M) p = median(Štipendium WHERE Drogy=2)

Tracker útoky

Ako sme už spomínali, DBMS môže zakázať zobrazenie hodnôt, ktoré pokrývajú iba malé množstvo záznamov. Tracker útok dokáže oklamať DBMS tak, aby zobrazil požadované hodnoty použitím viacerých dotazov, ktoré zobrazujú iba malé hodnoty. V jednoduchosti ide o to, že namiesto jednej hodnoty požiadame o zobrazenie n-1 hodnôt a n hodnôt, z čoho sa štatisticky dá vypočítať hodnota jedného prvku.

Viacúrovňové databázy

späť na zoznam


Doteraz sme uvažovali o údajoch iba v dvoch kategóriách: citlivé a necitlivé. Citlivosť závisela na stĺpci, v ktorom sa daný údaj nachádzal. V skutočnosti však citlivosť údajov nezávisí len na tom, ale aj na ďalších oblastiach, ktoré popíšeme v nasledujúcej kapitole.

Diferenciovaná bezpečnosť

späť na zoznam


Predstavte si databázu obsahujúcu údaje o vládnych výdavkoch. Niektoré z týchto výdavkov sú kancelárske spinky, ktoré nepredstavujú citlivé údaje. Na druhú stranu výdavky na platy majú určitý stupeň citlivosti. Individuálne platy sú citlivé údaje, ale celkové výdavky na platy citlivé nie sú. Výdavky na určité vojenské operácie sú citlivejšie, napríklad už fakt že daná operácie prebiehala môže byť vysoko citlivý údaj.
Existujú tri charakteristiky bezpečnosti v viacvrstvových databázach:
Tieto tri princípy smerujú k modelu bezpečnosti, v ktorom je citlivosť objektu definovaná ako jeden z N úrovní, a je ďalej rozdelená do oddelení podľa kategórie.

Granularita

späť na zoznam


Definovanie citlivosti pre každú hodnotu v databáze je podobné aplikovaniu úrovne citlivosti pre každé slovo v dokumente. Najviac je tiež nutné sledovať kombinácie hodnôt, pretože hodnota samotná môže mať inú úroveň citlivosti ako kombinácia viacerých hodnôt.
Na priradenie citlivostnej úrovne pre každú hodnotu v databáze sú nevyhnutné dve požiadavky. Prvou je kontrola prístupu, na určenie ktorý používatelia môžu pristupovať ku ktorým údajom. Pri implementácií sa každému prvku priradia prístupové obmedzenia. Za druhé potrebujeme vedieť garantovať, že daná hodnota nebola zmenená neautorizovanou osobou. Tieto dve požiadavky adresujú integritu a dôvernosť.