Jak jsou uložená hesla na serverech?
ahoj,
rad bych se zeptal na to, jak jsou ulozena hesla na serverech, kam pristupuji uzivatele. rika se, jak jsou dobra hesla bezpecna, ale me by zajimalo, jak jsou obecne hesla resena, aby je nikdo neodhalil a presto jsou v nejake podobe nekde ulozena, aby vubec mohlo dojit k overeni. ptam se proto, ze nekde je moznost si heslo zobrazit, kdyz ho zadam. predpokladam, ze to je vlastnost dane webove stranky. ale, jak je to teda u hesel zabezpeceno, aby si je nemohl precist nekdo, kdo k nim ma fyzicky pristup? resp. treba k disku, kde jsou ulozena.
diky
Změna předmětu, původně: hesla (host)
Viz. hash
https://www.digitalnipevnost.cz/viki/hash
a ted blba otazka. muze mit nekdo pristup k hashovacimu procesu? prece, nekdo tohle vsechno programuje
To samozřejmě má, není to nic tajného. Jenže síla hashe je v tom, že je to prakticky jednosměrná funkce. Je relativně snadné získat z hesla hash, ale je velice obtížné až skoro nemožné získat z hashe heslo. A to i když znáš použitý algoritmus.
Příklad že života:
heslo = jahoda
hash = marmeláda
hashovaci proces = recept na výrobu marmelády
programátor = kuchař
Z jahod kuchař podle receptu uvaří marmeládu, ale opačně že by z marmelády vyrobil jahody, těžko. I když zná recept.
Pokud si ve webovem prohlizeci muzes heslo zobrazit, je to vetsinou proto, ze ty sam jsi ho lokalne na tvem pocitaci do toho prohlizece ulozil. To heslo je teda stale u tebe a ne nikde na serveru.
Co se tyka overeni hesla na serveru:
Zadas nekam sve uzivatelske jmeno a heslo, server si vyhleda v databazi tve uzivatelske jmeno a proti nemu overi heslo, kdyz je shodne, pusti te dal.
Heslo muze byt v plaintextu: napriklad "HESLO", server ma ulozeno "HESLO" a oboji se shoduje, tak je to ok. Problem to je z toho duvodu, ze kdyz nekdo odcizi serveru databazi, okamzite zna uzivatelska jmena i hesla uzivatelu.
Pouziva se to teda jinak. Ty zadas "HESLO" a server tam prida nejake znaky, vysledek je "HE123SL456O". Potom spocita kontrolni hash soucet, vysledek pro zadane je "3696b35884ee6c675c7fbf5897e1f6d7" napriklad v algoritmu md5. Tento vysledek priradi ke tvemu uzivatelskemu jmenu do databaze. Kdykoli se chces prihlasit, tak to udela znovu a zkontroluje ten kontrolni hash soucet, jestli se nezmenil. Kdyz nekdo tu databazi ukradne, zna uzivatelske jmeno a kontrolni hash soucet, ale nezna heslo, takze se nikam probourat nemuze, zpetne to rozsifrovat nelze. (Musel bys mit tak vykonny pocitac, ktery by prekontroloval vsechny mozne kombinace a takovy neexistuje.)
jeste me tak napada, a jak je zaruceno, ze server uklada v hashi a ze jen nezjistuje hesla? je najaky standard nebo jak je osetreno tohle?
Zaručené to není a jako uživatel to nemáš možnost nijak zjistit. Snad jedině v případě, že zapomeneš heslo a oni ti ho pošlou na email. Tak v takovém případě od té služby ruce pryč.
Provozovatel každého serveru má samozřejmě možnost si přečíst tvoje heslo, které zadáváš např. při registraci. Teď se zeptám já tebe: k čemž mu bude? Snad jedině že by uživatel byl tak hloupý a používal jedno společné heslo pro více služeb...
dobra, ted ale popiras to s hashem, jak tu o tom pisi ostatni. takze muze nebo nemuze nekdo precist zadane heslo?
Teď se zeptám já tebe: k čemž mu bude? Snad jedině že by uživatel byl tak hloupý a používal jedno společné heslo pro více služeb...
no, prece pak by ho mohli zadat pro pristup ti provozovatele. ja vim, ze se do uctu dostanou dejme tomu s pravy admina serveru, ale pokud ho nekdo zjisti treba pri registraci, pak si poprel to s hashem
Ale nic nepopírám, jen jsi to špatně pochopil resp. mícháš dvě věci. Zjištění hesla a uložení hesla.
Když heslo vyplníš v nějakém formuláři, tak logicky provozovatel v tu chvíli tvoje skutečně heslo zná. Ale seriózní provozovatel jej okamžitě uloží do databáze ve formě hashe, a v tu chvíli ho už nikdo dešifrovat nemůže.
ok, diky vsem vam za vas cas!!
Já bych ani neměl strach o hesla na serveru. Tam jsou dvě možnosti, buď ho zjistit umí, nebo neumí, podle toho, jestli mají uložené heslo, nebo jeho hash. Ve druhém případě posílají mail na zresetování hesla (ono v prním případě to tak také může být, ale pokud je možnost poslat emailem heslo, pak je to jasně první případ).
Já bych spíš měl strach z toho, co se děje po cestě. Jestli třeba to, že stránka je https opravdu znemožňuje, aby si někdo heslo přečetl, vlastně ani nevím, v čem spočívá, jestli je to jenom ověření, že mluvím s tím, s kým chci (a ne s podvrženým serverem) nebo jestli je ta komunikace opravdu šifrovaná. Něco jiného je http, tam si to může přečíst kdokoliv, kdo dokáže odchytit komunikaci, ale to snad už žádný takový server nepoužívá.
A také to ukládání hesel v prohlížeči. Tak jasně heslo na email neni problém, maximálně někdo mým jménem rozešle statisíce spamů, než schránku zablokují (je to poměrně běžné a je potom radost promazávat třeba 15 tisíc zpráv), ale co třeba heslo bo banky. Já dám neukládat (nikdy pro tento server), ale nikde nemám zaručeno, že si ho prohlížeč potají neuloží, očividně k němu přístup má. Nebo že nemá nějaká zadní vrátka, přes které se k tomu dostane někdo, kdo má od nich klíč. Ostatně tohle nebezpečí je i na straně serveru, proto se právě hesla neukládají jako plain text ale v podobě nějakého hashe, takového, aby se současným výpočetním výkonem nikdo nedokázal spočítat heslo, které takovému hashi vyhovuje (teoreticky by ani nemuselo být stejné jako původní).
Obojí.
A od toho je tu MFA.