8 Ochrana údajov v databázových systémoch
Databázové systémy v súčasnosti využívame v mnohých oblastiach bežného života. Tieto systémy sa využívame takmer vo všetkých väčších spoločnostiach ako sú banky, poisťovne, telekomunikácie, v školstve a takto by sme mohli pokračovať. Ako už dobre vieme, v týchto systémoch sa často uchovávajú osobné či iné dôverné informácie, respektíve údaje, ktoré je potrebné chrániť pred nepovolanými osobami. Veď si len predstavme, že by sa nepovolenej osobe podarilo preniknúť do informačného systému napríklad banky, pričom by takto získala možnosť manipulovať s finančnými prostriedkami klientov tejto banky. Problémy, ktoré by mohli týmto vzniknúť pre banku a klientov by mohli byť obrovské. Požiadavka bezpečnosti databázových systémov preto vznikla z potreby ochrániť údaje, pred stratou, poškodením a pred nepovolanými osobami, ktoré by ich mohli zneužiť.
V nasledujúcej kapitole preto vysvetlíme základné pojmy, z oblasti bezpečnosti databázových systémov a poskytneme ucelený pohľad ohľadne tejto problematiky. V ďalšej časti sa zameriame na problematiku šifrovania.
Bezpečnostnými požiadavkami ako napríklad ochrana dôvernosti, zaistenie integrity či nepopretie autorstva, ale aj aplikačnými oblasťami bezpečnosti (protokoly na autentifikáciu, digitálne podpisy, a iné) sa zaoberá samostatná vedná oblasť – kryptológia. Kryptológia sa delí na dve časti – kryptografiu a kryptoanalýzu. Kryptografia sa zaoberá návrhom konštrukcií napĺňajúcich konkrétne bezpečnostné požiadavky. Úlohou kryptoanalýzy je skúmať možnosti útokov na tieto konštrukcie [4].
Na zabezpečenie informácií existujú vo všeobecnosti nasledujúce bezpečnostné mechanizmy:
Kryptografické hešovanie (cryptografic hashing) – kryptografické hešovacie funkcie zobrazujú elektronický dokument na správu alebo „odtlačok,“ obvykle podstatne kratší ako pôvodný dokument. Tieto hešovacie funkcie sa používajú v schémach digitálnych podpisov, pri kontrole integrity, v kryptografických protokoloch a v ďalších konštrukciách. V súvislosti s hešovacími funkciami sa môžeme stretnúť s pojmom soľ (salt). Soľ je reťazec náhodných bitov. V databázových aplikáciach a v DBMS sa hešovanie často používa napríklad na hešovanie hesiel. Soľ v tomto prípade môžeme použiť tak, že ňou rozšírime heslo predtým ako naň aplikujeme hešovaciu funkciu. Týmto krokom je možné výrazne sťažiť slovníkové útoky [5].
Šifrovanie (encryption) – si kladie za cieľ transformovať vstupné údaje do podoby, v ktorej sú pre potenciálneho útočníka nezrozumiteľné a nie je schopný rekonštruovať ich pôvodný tvar. Zároveň požadujeme, aby oprávnené entity mohli pôvodné údaje rekonštruovať. Vstupné údaje v ich pôvodnej podobe budeme nazývať otvorený text, prípadne správa. Proces ich transformácie sa nazýva šifrovanie a je realizované šifrovacím algoritmom (funkciou). Výsledok šifrovania je šifrový text (správa). Proces inverznej transformácie, keď zo šifrového textu dostaneme opäť pôvodný otvorený text, sa nazýva dešifrovanie (decryption) a je realizovaný dešifrovacím algoritmom (funkciou). Šifrovací algoritmus je parametrizovaný ďalším vstupom – kľúčom, ktorý nezávisí na otvorenom texte. Dešifrovací algoritmus je tiež parametrizovaný kľúčom. Poznáme tri typy šifrovania:
1. symetrické – na šifrovanie a dešifrovanie sa použije ten istý utajený šifrovací kľúč. V DBMS sa najčastejšie využívajú blokové šifry. Blokové šifry sú triedou symetrických šifrovacích systémov, ktoré spracúvajú otvorený aj šifrový text po blokoch pevnej dĺžky. Ak dĺžka otvoreného textu nie je deliteľná veľkosťou bloku, tak musíme použiť vypchávku (padding), s pomocou ktorej doplníme otvorený text na požadovanú dĺžku. Vypchávkou môže byť (napríklad) konštantný alebo náhodný reťazec. Požiadavky na vypchávku definuje štandard PKCS #5 [19].
V blokových algoritmoch môže byť základná šifrovacia transformácia jedného bloku kombinovaná vo viacerých módoch (najznámejšie sú CBC, CFB, ECB, OFB) [4, 8].
2. asymetrické – na šifrovanie a dešifrovanie sa použijú dva rôzne kľúče a to „verejný“ a „súkromný.“ Obidva kľúče sú skonštruované používateľom, pričom verejný kľúč používateľ zverejní a súkromný kľúč ponechá v tajnosti. Súkromný kľúč sa používa (majiteľom) na dešifrovanie prijatých správ a podpisovanie odosielaných správ. Verejný kľúč sa používa (ostatnými) na šifrovanie odosielaných správ a overenie autentickosti (podpisu) prijatých správ [20]. Pri asymetrickom šifrovaní, musí mať šifrovací systém nasledujúce vlastnosti:
- korektnosť – dešifrovanie šifrovaného textu vedie k pôvodného textu,
- realizovateľnosť – šifrovanie, dešifrovanie a vytváranie kľúčov je efektívne (obvykle polynomiálna časová zložitosť),
- bezpečnosť – zo znalosti verejného kľúča je „prakticky nemožné“ určiť súkromný kľúč. Význam slovného spojenia „prakticky nemožné“ záleží od našich požiadaviek [6].
3. hybridné – symetrické šifrovanie je rýchlejšie v porovnaní s asymetrickým šifrovaním. Väčšinou sa asymetrické šifrovanie využíva na „dohodnutie“ kľúča symetrickej šifry (vygenerovaný kľúč na symetrické šifrovanie je zašifrovaný verejným kľúčom adresáta) pri nadviazaní komunikácie medzi komunikujúcimi stranami. Takéto šifrovanie sa nazýva hybridné šifrovanie. Na zníženie možnosti prelomenia zabezpečenej komunikácie sa odporúča pri každej komunikácii využívať iný symetrický kľúč [6].
Digitálny podpis (digital signature) – je kryptografická konštrukcia, ktorej cieľom je zabezpečiť autentickosť a integritu (prípadne aj nepopretie autorstva) správ a dokumentov v elektronickom prostredí [6].
Certifikát (certificate) – je údajová štruktúra, ktorá obsahuje verejný kľúč žiadateľa, respektíve držiteľa certifikátu, časový údaj, ktorý sa vzťahuje k obdobiu platnosti certifikátu a iné údaje vytvorené certifikačnou autoritou. Táto údajová štruktúra je podpísaná súkromným kľúčom certifikačnej autority, pričom akákoľvek entita môže verifikovať obsah certifikátu s pomocou verejného kľúča certifikačnej autority. Certifikačná autorita (certification authority) je dôverná tretia strana, ktorá na základe žiadosti vydáva a aktualizuje certifikáty [6].
Identifikácia (identification) a autentifikácia (authentication) – je proces na rozpoznanie a overenie entity, ktorá chce pristupovať k určitej informácii. Takáto entita sa nazýva autentifikovanou identitou, ak je dokázané napríklad podľa mena a hesla, že je to presne ona. Príkladom môže byť autentifikácia používateľa do DBMS s pomocou používateľského mena a hesla [6].
- Používateľ poskytne pre DBMS svoju identitu zadaním svojho používateľského mena.
- Používateľ preukáže, že identita, ktorú poskytol je validná v DBMS tým, že zadá správne heslo.
- Ak používateľ preukázal v druhom kroku validitu svojej identity, DBMS pridelí používateľovi jemu prislúchajúce oprávnenia [6].
Prvý krok v tejto sekvencii je identifikácia, druhý krok je autentifikácia. Svoju identitu môže používateľ poskytnúť napríklad aj s pomocou certifikátu alebo biometrie. Autentifikácia sa delí na silnú (autentifikácia s pomocou digitálnych certifikátov, tokenov, biometrie) a slabú (napríklad autentifikácia s pomocou hesla) [6].
Autorizácia (authorization) – proces identifikujúci, ktorá identita má právo pristupovať ku ktorej informácii a akým spôsobom. Príkladom je pridelenie práv databázovému používateľovi na vkladanie záznamov do nejakej databázovej tabuľky [6].
Zhrnutie 8. kapitoly
Na zabezpečenie informácií existujú nasledujúce základné bezpečnostné mechanizmy: kryptografické hešovanie, šifrovanie (symetrické, asymetrické, hybridné), digitálny podpis, certifikát, identifikácia, autentifikácia a autorizácia.
Otázky na zopakovanie
- Opíšte hlavné dôvody ochrany údajov v databázových systémoch.
- Opíšte ako funguje šifrovanie údajov.
- Vymenujte a v krátkosti opíšte základné bezpečnostné mechanizmy ochrany údajov v DBS.
Doplňujúci materiál ku štúdiu
- Stanek, Martin. Základy kryptológie (skriptá). Bratislava : FMFI UK, 2004. [Cit. 2020‑14‑05]. Dostupné na internete: ⟨https://fmfi‑uk.hq.sk/Informatika/Kryptologia/prednasky/krypto.pdf 897,06 kB (876,03 KiB), 21. 2. 2005⟩.
- Menezes, Alfred J. – Van Oorschot, Paul C. – Vanstone, Scott A. Handbook of Applied Cryptography. CRC Press, 2001. (Last updated January 22, 2014.) ISBN 0‑8493‑8523‑7. [Cit. 2020‑14‑05]. Dostupné na internete: ⟨http://cacr.uwaterloo.ca/hac/ ⟩.
- Golian, Radoslav. Bezpečnosť v databázových systémoch. Bratislava : Katedra informatiky, Fakulta matematiky, fyziky a informatiky, Univerzita Komenského v Bratislave, 2007. [Cit. 2020‑14‑05]. Dostupné na internete: ⟨http:/www.dcs.fmph.uniba.skdiplomovkyobhajenegetfile.phprgolianBezpecnostv_DBMS.pdf?{id=130&fid=217&type=application%2Fpdf}⟩.