3. diel - Heslá a biometrická ochrana Nové
V minulej lekcii, Symetrická a asymetrická kryptografia , sme si uviedli rozdiely symetrickej a asymetrickej kryptografie a jej využitie v praxi.
V tomto tutoriále kybernetickej bezpečnosti sa pozrieme na ďalšie uplatnenie kryptografie pri ochrane dát. Budeme sa zaoberať najmä heslami, ich bezpečnosťou a ukladaním.
Heslo
Heslo je tradičnou a stále najrozšírenejšou metódou na overenie užívateľa, respektíve toho, či má užívateľ prístup k daným dátam či systému. V zásade využívame heslá dvoma spôsobmi:
- Heslo tvorí základ pre tvorbu kľúča symetrickej šifry, ktorou sú príslušné dáta zašifrované. Výhodou tohto prístupu je, že k takýmto dátam až do zadania hesla nemá prístup nikto, dokonca ani samotný systém. Pokiaľ by teda došlo ku kompromitácii systému v dôsledku odcudzenia či straty disku, dotyčná osoba sa k takto chráneným dátam bez hesla nedostane.
- Heslo slúži iba na overenie, či ho daný užívateľ pozná. K samotným dátam už systém prístup má, napríklad heslo do Windows.
Väčšina používateľov si pravdepodobne za procesom overenia pomocou hesla predstaví, že je heslo niekde v systéme uložené a keď ho používateľ zadá, heslo sa jednoducho porovná s tým uloženým a ihneď poznáme výsledok. Je pravda, že niektoré jednoduchšie aplikácie, napríklad starší starší správcovia súborov, to týmto spôsobom do dneška naozaj robia. Avšak do väčšiny z nich už aspoň pribudlo varovné hlásenie podobné tomuto:
POZOR: Ukladanie hesiel nie je bezpečné!
Dnes už ale žiadny aspoň trochu zabezpečený systém tento spôsob nevyužíva. Pretože v prípade úniku takého súboru s heslami, napríklad v dôsledku hacknutia servera, by mal útočník k dispozícii všetky heslá v otvorenej podobe.

Získané heslá by ihneď mohol skúsiť niekde použiť a my by sme si navyše museli vždy vytvoriť a zapamätať heslá úplne nové, pretože tie pôvodné by boli kompromitované. A preto sa aj v systéme, ktorý inak k vlastným dátam prístup má, používa metóda ukladania hesiel, pri ktorej ani systém otvorenú podobu hesla nepozná. Namiesto hesla sa totiž ukladá takzvaný hash.
Hash
Hash je jednocestná kryptografická funkcia, ktorá z vloženého textu vytvorí sekvenciu bajtov. Tá je síce pre daný vstup jednoznačná, ale vstup samotný už z nej nemožno nijako odvodiť. Príkladom jednoduchej hashovacej funkcie môže byť napríklad checksum, kde dôjde k sčítaniu hodnôt všetkých bajtov zo vstupu. Je samozrejmé, že rovnaký vstup vždy vytvorí rovnaký výstup, avšak konkrétny vstup z výstupu už spätne odvodiť nemožno.
Porovnanie hesla prebieha tak, že sa spočíta hash zo zadaného hesla a porovná sa s hashom uloženým v systéme. Pokiaľ teda útočník získa súbor z hashi uložených hesiel, nikde ich nemôže zadať a ani sa nedozvie, aké heslá sme si vymysleli.
V praxi sa dnes stretávame predovšetkým s modernými hashovacími funkciami určenými na ukladanie hesiel, ako je napríklad Argon2, bcrypt alebo scrypt. Staršie funkcie ako MD5 sú z bezpečnostných dôvodov už považované za nevhodné.
Riešenie má stále drobnú vadu, a to pokiaľ dvaja používatelia použijú rovnaké heslo. V tomto prípade sú potom aj ich hasha na prvý pohľad rovnaké. Útočník si navyše môže pripraviť tabuľku hashov najbežnejších hesiel a ukradnuté hashe hesiel s ňou porovnávať. To je významne rýchlejšia a efektívnejšia metóda, než vždy každý hash počítať znova. Z tohto dôvodu sa k heslu pred jeho hashovaním pridáva ešte takzvaný salt.
Salt
Salt alebo kryptografická soľ predstavuje niekoľko náhodných bajtov, ktoré slúžia ako doplňujúci vstup do hashovacej funkcie a uložia sa spolu s hashom hesla. "Osolený" hash má potom rôznu hodnotu aj keď sú pôvodné heslá rovnaké.
Aj napriek všetkým vyššie uvedeným opatreniam však stále zostáva získanie takého zoznamu hesiel pre útočníka obrovskou výhodou. Síce mu nezostáva nič iné, než každé možné heslo rovnakým spôsobom zahashovať a výsledok porovnať s tým uloženým, ale stále je táto metóda mnohonásobne rýchlejšia, než skúšať heslo napríklad po sieti prostredníctvom skriptu či dokonca ručne.
Ak útočník využije výkonný hardvér, napríklad veľké množstvo grafických kariet (GPU), môže pri použití nevhodných alebo rýchlych hashovacích funkcií dosahovať veľmi vysoký výkon pri skúšaní hesiel. To výrazne skracuje čas potrebný na ich prelomenie.
Správne zvolené heslo by síce malo takýmto útokom odolať, v praxi sa však nemožno spoliehať na to, že si používateľ vždy zvolí dostatočne silné a skutočne náhodné heslo.
Preto najbezpečnejšiu vychytávku predstavuje ukladanie hesiel pomocou mnohonásobne opakovaného hashovania. Počet opakovaní sa obvykle volí tak, aby na pôvodnom počítači celý cyklus trval medzi 0,1 – 1 sekundou. To pri bežnom overení užívateľa nijako významne nezdržuje a zároveň extrémne sťažuje / spomaľuje možnosť opakovaného skúšania útočníkom metódou BFA.
Využitie hesla pre tvorbu kľúča
Analogické metódy sa používa pri ochrane vlastných dát symetrickou šifrou. Namiesto toho, aby sa dáta priamo šifrovali kľúčom odvodeným z užívateľom zadaného hesla, najprv sa vytvorí na tento účel náhodný a dostatočne dlhý kľúč, ktorým sa dáta skutočne a jednorazovo zašifrujú. Tento kľúč sa potom viacnásobne zašifruje pomocou užívateľského hesla ak súboru priloží.
Dešifrovanie samotného kľúča sa týmto spôsobom zámerne spomalí, čím sa stane odolnejším proti odskúšaniu útočníkom, zatiaľ čo šifrovanie či dešifrovanie vlastných dát zostane rýchle. To je veľmi dôležitá vlastnosť, pretože dáta môžu byť veľké (napríklad u videa). Počet iterácií sa obvykle nastavuje podľa požadovanej úrovne zabezpečenia a výkonu zariadenia. V niektorých nástrojoch (napríklad VeraCrypt) sa tento parameter označuje ako PIM.
Požiadavky na bezpečné heslo
Teraz už vieme, prečo je heslo také dôležité a aké vlastnosti by správne zvolené heslo malo mať. Musí existovať dostatočný počet jeho variácií, aby bolo výpočtovo nezvládnuteľné ich všetky vyskúšať. Počet variácií s opakovaním ľahko vypočítame ako množinu prvkov, z ktorých sa môže skladať, umocnená na počet tvoriaci ich skupinu.

Pokiaľ by sme napríklad uvažovali bežný štvorznakový PIN, ktorý sa môže skladať z desiatich číslic (0-9), potom je počet ich možných variácií 10 4, teda 10 000. Dôležitá je ako množina znakov, ktoré môžu tvoriť heslo, tak aj jeho dĺžka. Avšak dĺžka hesla je výrazne dôležitejšia, pretože počet variácií s dĺžkou hesla rastie exponenciálne.
Dĺžka hesla
Za prakticky neprelomiteľné sa považuje 20-miestne heslo, a to ak použijeme množinu znakov: číslice, malé a veľké písmená (62 možných znakov anglickej abecedy) alebo 18-miestne heslo, ak navyše použijeme bežné špeciálne znaky (množina približne 90 možných znakov celkom). Oboje dáva priestor pre variácie rádovo 10 35. Heslá pre bezpečnostnú úroveň C2 by mali mať dĺžku aspoň 13 znakov.
Profil osoby
Ďalšou základnou bezpečnostnou požiadavkou na heslo je jeho
neodhadnuteľnosť útočníkom na základe psychologického
profilu osoby, ktorá heslo vytvárala. Ak sa osoba volá
Alena Nováková a je narodená 25.12.1974, tak heslo
typu AlenkaNovakov&25.12.1974 prelomíme počas prvej hodiny
bez ohľadu na to, že má 24 znakov, veľké aj malé písmená a dokonca dva
špeciálne znaky.
PIN a bezpečnosť krátkych hesiel
Výnimku z vyššie uvedeného predstavuje PIN k platobnej karte, ktorý má iba 4 číslice, napriek tomu môže byť v praxi dostatočne bezpečný. Je to preto, že jeho použitie je obmedzené špeciálnymi podmienkami.
Po prvé, nie je možné sa ľahko dostať k uloženým dátam v čipe karty. Po druhé je výrazne obmedzený počet pokusov o zadanie PINu – po niekoľkých chybných pokusoch dôjde k zablokovaniu.
Táto ochrana je zaistená pomocou špeciálneho hardvéru, ktorý bráni ako opakovanému skúšaniu PINu, tak pokusom o fyzické narušenie čipu. V niektorých prípadoch sa navyše počíta aj s určitým rizikom zneužitia ako súčasťou celkového návrhu systému.
Biometrická ochrana
Biometrická ochrana je založená na overovaní fyzických vlastností človeka, ktorými sa jednotlivé osoby líšia. Najčastejšie sa jedná o odtlačok prstov alebo sken tváre. Na rozdiel od hesiel či fyzických kľúčov má dve obrovské výhody:
- Užívateľ ich nemôže zabudnúť alebo stratiť.
- Overenie je rýchlejšie a pre užívateľov častokrát pohodlnejšie ako písať heslo alebo hľadať po vreckách kľúče.
- Naša tvár či odtlačky prstov sú verejne známe, nechávame ich doslova všade. Ich zneužitie na útok síce nie je úplne triviálne, ale pre profesionála s príslušným vybavením to nepredstavuje vážnejšiu prekážku.
- Je oveľa jednoduchšie na skener pritlačiť náš prst alebo na nás zariadenie namieriť, než z nás získať prístupové heslo.
- U väčšiny zariadení je možné pri fyzickom prístupe k hardvéru túto ochranu obísť, hoci ani toto nebýva úplne jednoduché av praxi sa skôr využívajú prvé dve metódy.
V nasledujúcom kvíze, Kvíz - Základy kyberbezpečnosti, kryptografia a heslá, si vyskúšame nadobudnuté skúsenosti z predchádzajúcich lekcií.
