Hash

V IT priestore sa často stretávame s pojmom hash. Čo to je, na čo slúži a aké využitie má vo svete IT, to si povieme v tomto článku.  Hash je výstupom, čiže výsledkom, hashovacej funkcie. Je to krátky reťazec na prvý pohľad nič nehovoriacich znakov. V podstate teda ide o známe šifrovanie a týmto štýlom sa šifrujú hocijaké citlivé údaje, s ktorými potrebujeme pracovať tak, aby ich nik nepovolaný nedokázal jednoducho prečítať.  Hlavným znakom hashovania je fakt, že ide o jednosmernú funkciu. Teda musí byť veľmi jednoduché nejaké dáta zahashovať (zašifrovať), ale zároveň ich musí byť veľmi ťažké rozlúštiť. Uvediem príklad. Je veľmi jednoduché vynásobiť dva prvočísla, napr. 41 a 83. Výsledok by bol 3403. Ale je veľmi ťažké z čísla 8051 zistiť, ktoré dva prvočísla boli vynásobené, aby vyšiel takýto výsledok (v tomto prípade som použil 97 a 83). Samozrejme, v číselnom jazyku to človeku až také zložité nepríde, ale my sa vo svete IT bavíme o hashovaní na úrovni bitov. Z toho dôvodu je možné šifrovať nielen čísla, ale prakticky všetky dáta (obrázky, texty, ba aj zvuk).  Základné požiadavky Aby sme hashovanie mohli používať v IT, musíme zabezpečiť, aby hashované stringy (reťazce) spĺňali určité požiadavky Jednosmernosť: O tom som písal vyššie. Musí byť jednoduché reťazec zašifrovať, ale veľmi zložité ho rozšifrovať. Nemennosť: Z rovnakého vstupného stringu musí vzniknúť vždy rovnaký hash, inak by nám takéto šifrovanie bolo na nič, ak by zakaždým vznikol iný výsledok. Lavínovitosť: To v preklade pre našinca znamená, že aj maličká zmena vo vstupnom reťazci vytvorí radikálnu zmenu vo výsledku.  Kolíznosť: Ak pre dva rozličné vstupy vznikne rovnaký hash, hovoríme, že došlo ku kolízií. Čím nižšia je bezkolíznosť, tým lepšie. Hashovacie algoritmy Hashovací algoritmus je algoritmus, na základe ktorého vznikne hash. Väčšinou ide o veľmi zložitú matematiku, prostredníctvom ktorej sa vypočíta výsledok. To nám zabezpečí nemennosť, nakoľko čísla sú stále a použitím rovnakej matematiky vzniká vždy rovnaký výsledok. Teda 1+1 sa vždy bude rovnať 2 a nikdy nie 3, ani 1,999999. V súčasnosti existuje niekoľko algoritmov, ktoré možno použiť na hashovanie dát. Medzi najznámejšie patria MD5, SHA-1 a SHA-256 a tiež nový bcrypt. WordPress používa hashovanie prostredníctvom funkcie MD5. Zahashovanie reťazca Ako vyzerá zahashovaný jednoduchý reťazec 123456? MD5: e10adc3949ba59abbe56e057f20f883e SHA-1: 7c4a8d09ca3762af61e59520943dc26494f8941b SHA-256: 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 bcrypt: $2a$10$tRF/o/QR/xy17xhgE3xjn.QpWWsOHvEerlsFapwZVRB8gQJao9Gfi Teraz si pre ilustračné účely ukážeme lavínovitosť. Použijeme na to vyššie uvedený príklad s algoritmom MD5. String 123456 v MD5 vytvorí tento hash:e10adc3949ba59abbe56e057f20f883e Ak teraz zmeníme vo vstupnom reťazci jeden jediný znak, napr 123457, dostaneme radikálne odlišný výsledok: f1887d3f9e6ee7a32fe5e76f4ab80d63. Vidíme, že tieto dva reťazce, hoci na vstupe vykazujú len miernu zmenu, vo výsledku sú úplne iné a prípadný hacker teda nemá možnosť na základe podobného výsledku vedieť, že už je blízko k rozšifrovaniu kódu.  A čo praktický život? Teraz si povieš, že je to všetko síce veľmi pekné, ale čo z toho? Aký to má význam? Kde sa reálne používa hashovanie? HesláAsi najpodstatnejšie využitie nájdu hashe pri ukladaní a šifrovaní hesiel. Heslá do e-shopov, internet bankingu, e-mailovej stránky. Všetky heslá by sa v IT svete mali ukladať ako hashe. To znamená, že príslušná webová stránka musí byť vytvorená tak, aby s tvojim reálnym heslom do styku skoro vôbec ani neprišla. Ty zadáš heslo do príslušného formulára a ono sa ďalej zahashuje a spracováva sa ako hash. Dokonca aj v databáze musia byť všetky heslá uložené ako hash, nikdy nie ako raw string! Pokiaľ niekto programuje tak, že ukladá do databázy string (teda tvoje heslo tak ako je), ruky mu polámať! To znamená, že aj pri zadaní hesla pri prihlásení sa do databázy na kontrolu neposiela tvoje heslo, ale len jeho hash. Tuto na obrázku vidíte, ako má WordPress uložené heslá užívateľov. Prvé je moje, môžete dešifrovať. Čiže preto, ak zabudneš heslo, po správnosti si ho nemôžeš nechať znovu preposlať, môžeš si ho len obnoviť, teda nastaviť nové. Stránka tvoje heslo nepozná, pozná len jeho hash. A ten ti je na nič (nezmienil som sa, že výsledkom hashu je iný hash). Preto ak ti nejaká stránka prepošle tvoje heslo, môžeš si byť istý, že ho má uložené ako raw string v databáze a od takej stránky ruky preč. Ešte ideálne, ak používaš všade rovnaké heslo, takým štýlom daná stránka môže získať tvoj prístup kade-tade Citlivé dátaĎalšie využitie hashu je pri citlivých dátach, napr. pri platobných transakciách cez platobné brány. Do banky posielaš na overenie číslo svojej karty, jej platnosť a CCV2 kód. Bolo by veľmi blbé, ak by tieto údaje niekto získal, lebo by si na tvoj účet mohol nakupovať. Preto sa nepoužívajú priamo tieto čísla, ale ich hashe. A tie sa aj medzi sebou porovnávajú. SessionsAj sessions používajú hashovanie. V článku o Cookies som sa o nich krátko zmienil. Uložené sú na serveri a na základe hashu vie server priradiť konkrétne dáta konkrétnym užívateľom. Indexácia, vyhľadávanie a overovanieHashovanie sa používa aj na indexovanie, vyhľadávanie a overovanie veľkého množstva dát (tzv. big data). Overovanie dát je charakteristický tzv. kontrolným súčtom, tzn. vypočíta sa hash z väčšieho množstva dát a ten sa porovnáva. Pokiaľ nastane nezhoda, vieme s určitosťou, že pôvodné dáta sú zmenené, či poškodené. Tieto operácie sa však týkajú väčších IT systémov, vo WordPresse takmer nemajú využitie, len pri naozaj špecifických projektoch. Brutal force attack Existuje niekoľko spôsobov, ako sa pokúsiť o rozšifrovanie hashov, resp. o prelomenie hesiel. Jeden z najpoužívanejších je tzv. Brutal force attack (útok brutálnou silou).  V praxi ide o nejaký jednoduchý skript, ktorému môžeme zadať parametre a on následne automatizovane vkladá rozličné heslá do políčka pre heslo, čím sa ho snaží uhádnuť.  Ak by som mal heslo jozef59 a zabudol by som ho, mohol by som použiť brutal force attack script na to, aby sa pokúsil heslo uhádnuť. Ako vstupný parameter by som mu zadal Jozef. Po spustení by skript skúšal asi tieto heslá: Jozef jozef JOZEF JozeF jozef0 jozef1 jozef2 jozef59 Až by sa napokon dostal k môjmu reálnemu heslu. Tento útok by bol teda úspešný a heslo by bolo prelomené. V skutočnom svete je však úspešnosť BFA mizivá, takmer nulová. Skripty môžu bežať aj niekoľko dni a vyskúšať za tú dobu miliardu kombinácií, ale trafiť sa nemusia. Dôvodov je najmä obrovská variabilita, nakoľko pri heslách sú podstatné aj veľké/malé písmená, heslá, medzery a špeciálne znaky.  Navyše, vývojári IT systémov sa s týmto problémom vysporiadali relatívne rýchlo a to zavedením tzv. Throttlingu. Throttle (z ang. škrtiaca klapka) spôsobuje, že je možné zadať chybné heslo len niekoľkokrát, následne dôjde k zablokovaniu účtu, čiže aj keď by si zadal správne heslo, systém ťa neprihlási. Až po určitom čase, resp. po odblokovaní účtu sa dá znova skúsiť zadať heslo.  Tento throttling poznáš určite zo SIM karty (3 krát zlý PIN a dosť), alebo aj z Androidu locked screen, keď zadáš niekoľkokrát zlé heslo, musíš nejakú časovú dobu počkať, kým sa bude dať znova skúšať heslo.    Takže toto je hashovanie. Veľmi potrebný a využívaný systém vo svete IT systémov. Príspevok Hash je zobrazený ako prvý na LavaDESIGN.

prejsť na článok

Phishing

Keďže v minulom článku o hashovaní sme si povedali, že hash sa nedá len tak ľahko rozlúštiť, internetoví zločinci, ktorí túžia po tvojich heslách, musia použiť iné spôsoby. Jedným z takýchto spôsobov je tzv. phishing. Čo to je? Phishing je spôsob, akým sa

prejsť na článok

Výhody používania blockchainu vo firemných priestoroch

Pre softvérových inžinierov je vývoj cloud computingu zásadnou zmenou. Predovšetkým odstránil limity úložiska a nákladové obmedzenia a zároveň pridal väčšiu flexibilitu. Tiež ohlásil novú éru vývoja softvéru, ktorá umožnila úplne nové a efektívnejšie clou

prejsť na článok

Lisabon je viac, ako len žltá električka

Čo spravíte, keď uvidíte letenky do Portugalska za 40 EUR? No predsa kupujete! No a keď to stihnete ešte kým je Portugalsko zelené a môžete sa vrátiť bez karantény, o to lepšie. A tak sme v polovici júna absolvovali 5 dňový intenzívny výlet do Lisabonu a

prejsť na článok

Čo zaznelo na konferencii digiSAPIENS? 1. časť

Témy súvisiace s digitálnym občianstvom a bezpečnosťou na internete rečou mladých. Taká bola naša základná predstava, keď sme začali pracovať na prvom ročníku konferencie digiSAPIENS o živote mladých ľudí v online svete. Prvý ročník konferencie #SID23:

prejsť na článok