3. diel - Heslá a biometrická ochrana
V minulej lekcii, Symetrická a asymetrická kryptografia , sme si uviedli rozdiely symetrickej a asymetrickej kryptografie a jej využitie v praxi.
V dnešnej lekcii 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 dnes už tradičnou a doposiaľ neprekonanou 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.
Využitie hesla na overenie
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í 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 samotný vstup 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 najčastejšie stretneme s hashovacou funkciou MD5, ktorá generuje 128-bitový hash av nových aplikáciách sa už z bezpečnostných dôvodov neodporúča používať. Ďalej potom s SHA-512, tá generuje 512- bitový hash av dnešnej dobe je považovaná za úplne bezpečnú. Medzi najnovšie patrí napríklad Argon2.
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é hasha 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 bitov, 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. Stále je táto metóda mnohonásobne rýchlejšia, než skúšať heslo treba po sieti prostredníctvom skriptu či dokonca ručne. A ak na výpočet hasha použije útočník veľké množstvo zreťazených grafických kariet alebo špecializovaný hardvér, ako napríklad ASIC minery používané na ťažbu kryptomien, môže dosiahnuť lúštiaci výkon až stoviek miliárd hashov za sekundu. Tomuto by síce správne zvolené heslo malo odolať, avšak nie je dobré sa na toto spoliehať za predpokladu, že heslo vytváral človek:) 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é, a to napríklad u videa. Počet iterácií potrebných na dešifrovanie sa tiež 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 ktorej sa môže skladať, umocnená na počet tvoriaci ich skupinu. Ak 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.Ako teda dlhé heslo musí byť, aby bolo neprelomiteľné metódou BFA? Trochu to síce závisí od toho, ako veľmi veľkí sme paranoici, ale za prakticky neprelomiteľné sa považuje 20-miestne heslo, a to pokiaľ použijeme znakovú množinu čí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.
Ď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. Pokiaľ 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.
Možno teraz niekoho napadne, ako je možné, že PIN pre platobnú kartu môže mať iba 4 číslice a stačí to. Takto krátke heslá stačí iba v prípade, že je fyzicky znemožnený akýkoľvek prístup k uloženým heslám a možnosť opakovaného zadávania hesla. Typické riešenie je dnes pomocou špeciálneho hardvéru. Existujú čipy, ktoré sa sami zničia pokiaľ sa poškodí ich obal. Ďalšou možnosťou je s istou stratou počítať v nákladoch daného riešenia. To sa týkalo skôr napríklad niektorých platobných kariet s magnetickými prúžkami.
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 druhú stranu by sme si mali uvedomiť nasledujúce bezpečnostné riziká:
- Naša tvár či odtlačky prstov sú verejne známe, nechávame ich doslova všade. Ich zneužitie k útoku 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.
- Pri väčšine 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.
Z týchto dôvodov možno biometrickú ochranu ako samostatnú metódu odporučiť nanajvýš do bezpečnostnej úrovne C1. V praxi sa jej však často s výhodou využíva v kombinácii s ďalšími metódami ochrany.
V budúcej lekcii, Bezpečnosť hesla - Správcovia hesiel , sa začneme zaoberať praktickým využitím doteraz získaných poznatkov. Asi už tušíš, že základom všetkého bude tvorba a správa hesiel.