YouTube nezná vaše hesloTom Scott
5
YouTube ani jiné stránky neznají vaše heslo. Jak tedy mohou vědět, jestli jste ho zadali správně?
Přepis titulků
YouTube nezná vaše heslo. Ani Facebook, Twitter ani jakákoliv slušná webová stránka. Vaše heslo opravdu není uloženo v jejich databázi. Je to tak bezpečnější. Hacker ani nepoctivý zaměstnanec vaše heslo nezjistí. Ale jak můžou vědět, že jste zadali správné heslo? Existují matematické operace, které jsou jedním směrem velmi snadné, ale opačným směrem velmi složité.
Násobení dvou prvočísel je snadné. 17 krát 11 je 187. Jednoduše můžete 17 vynásobit 10 a přičíst ještě jednou to číslo. Protože jsou to prvočísla, jsou to jediná dvě čísla, jejichž násobením získáte 187. Zkusme se na to zeptat opačně. Násobením jakých dvou prvočísel vznikne dvojité prvočíslo, třeba 299?
Nemůže to být dva krát něco, protože to nekončí sudým číslem. Nemůže to být tři krát něco, protože součet číslic není dělitelný třemi. Nemůže to být pět krát něco, protože to nekončí pětkou nebo nulou. Může to být sedm? Nevím, musím na to jít delším způsobem. Může to být spousta čísel. Existuje pár triků, které mohou počítače nebo dobří matematici použít, aby to urychlili, ale obecně pro velká čísla neexistuje efektivní způsob obráceného výpočtu.
Je to matematika, která se jedním směrem dělá snadno, ale opačným ne. Pro vás je heslo řetězcem písmen, symbolů nebo čísel. Ale pro počítač je to stejné jako vše ostatní. Binární řetězec. Jedničky a nuly. S těmito jedničkami a nulami dokáže počítač pracovat. Ne vždy jsou to prvočísla, i když někdy ano.
Tento proces se nazývá hašování. Používá se i funkce nazvaná sůl, ale to je složitější. Avšak výsledkem je, že při registraci napíšete své heslo, třeba abc, projde to zpracováním a získáte náhodný řetězec znaků. Ten uchovávají v databázi. Když při přihlašování znovu napíšete své heslo, projde opět stejnou jednosměrnou matematickou operací.
Pokud se výsledný haš shoduje s tím v databázi, vědí, že jste zadali správné heslo, ačkoliv nevědí, co přesně jste zadali. Pokud to mají správně ošetřené, nedokážete převést haš zpět na heslo, pokud nemáte k dispozici staletí výpočetního času nebo miliardy dolarů. To proto vám Google, Facebook, Yahoo a další stránky nezašlou zapomenuté heslo e-mailem.
Požádají vás o nové. Nemůžou vám ho poslat, protože ho neznají. Když najdete nějakou stránku, která vám zašle zapomenuté heslo e-mailem, utíkejte, protože kašlou na bezpečnost. Pokud vás to zaujalo, na Computerphile jsem natočil pár delších videí o hašování a bezpečnosti. A pokud ne...
Kaskadérský kousek zde předvedou trénovaní řidiči. Doma to nezkoušejte! Překlad: Mithril www.videacesky.cz
Násobení dvou prvočísel je snadné. 17 krát 11 je 187. Jednoduše můžete 17 vynásobit 10 a přičíst ještě jednou to číslo. Protože jsou to prvočísla, jsou to jediná dvě čísla, jejichž násobením získáte 187. Zkusme se na to zeptat opačně. Násobením jakých dvou prvočísel vznikne dvojité prvočíslo, třeba 299?
Nemůže to být dva krát něco, protože to nekončí sudým číslem. Nemůže to být tři krát něco, protože součet číslic není dělitelný třemi. Nemůže to být pět krát něco, protože to nekončí pětkou nebo nulou. Může to být sedm? Nevím, musím na to jít delším způsobem. Může to být spousta čísel. Existuje pár triků, které mohou počítače nebo dobří matematici použít, aby to urychlili, ale obecně pro velká čísla neexistuje efektivní způsob obráceného výpočtu.
Je to matematika, která se jedním směrem dělá snadno, ale opačným ne. Pro vás je heslo řetězcem písmen, symbolů nebo čísel. Ale pro počítač je to stejné jako vše ostatní. Binární řetězec. Jedničky a nuly. S těmito jedničkami a nulami dokáže počítač pracovat. Ne vždy jsou to prvočísla, i když někdy ano.
Tento proces se nazývá hašování. Používá se i funkce nazvaná sůl, ale to je složitější. Avšak výsledkem je, že při registraci napíšete své heslo, třeba abc, projde to zpracováním a získáte náhodný řetězec znaků. Ten uchovávají v databázi. Když při přihlašování znovu napíšete své heslo, projde opět stejnou jednosměrnou matematickou operací.
Pokud se výsledný haš shoduje s tím v databázi, vědí, že jste zadali správné heslo, ačkoliv nevědí, co přesně jste zadali. Pokud to mají správně ošetřené, nedokážete převést haš zpět na heslo, pokud nemáte k dispozici staletí výpočetního času nebo miliardy dolarů. To proto vám Google, Facebook, Yahoo a další stránky nezašlou zapomenuté heslo e-mailem.
Požádají vás o nové. Nemůžou vám ho poslat, protože ho neznají. Když najdete nějakou stránku, která vám zašle zapomenuté heslo e-mailem, utíkejte, protože kašlou na bezpečnost. Pokud vás to zaujalo, na Computerphile jsem natočil pár delších videí o hašování a bezpečnosti. A pokud ne...
Kaskadérský kousek zde předvedou trénovaní řidiči. Doma to nezkoušejte! Překlad: Mithril www.videacesky.cz
Komentáře (63)
RhaegarOdpovědět
25.08.2014 14:49:29
Super chci víc podobných.
ShadowhackerOdpovědět
25.08.2014 02:33:27
Asi to tolik lidí neví, ale to, co říkal, už vím hodně, opravdu hodně dávno.. Já jsem zkoušel databáze už dávno a tudíž vím, že je to tzv. zahashované, většinou se hesla získávají tzv. phishingem nebo ještě lépe - prostě to stačí zkusit náhodně.. Plno lidí má jednoduchá hesla. Tohle video je trošku pro mne.. Takové - není to ono, ale i tak dobré video.
fisikOdpovědět
27.08.2014 12:32:49
Jsme rádi, že ses tak krásně vychválil.
ShadowhackerOdpovědět
21.09.2014 00:15:34
+fisikJá se ale nevychvaloval, ach. Špatně se to pochopilo, nebo jsem to špatně napsal spíše. Omlouvám se.
skywallOdpovědět
27.08.2014 22:03:59
Phishing rozhodně není nejčastější typ útoku na databázové systémy. Tou je nepochybně Brute Force Attack jak dále uvádíš, ale ten zase není vůbec efektivní. Zaprvé trvá dlouho a zadruhé tě po pár pokusech na většině seriózních serverů odstřihnou.
mglaedrOdpovědět
25.08.2014 00:21:40
Info z tohoto videa sice znám, ale má i jiné zajímavé videa, třeba tohle :)
https://www.youtube.com/watch?v=wCQSIub_g7M
hulkaOdpovědět
24.08.2014 13:26:48
Koho reálně zajímá zda je heslo uloženo v databázi poskytovatele služby zahashované či nikoliv? Proč stejně většina lidí používá pro přístup ke všem svým službám stejné heslo? Myslím že přínosnější než bulikovat lidem že jejich heslo facebook nezná je jim spíš vysvětlit že by měli používat pro každou jinou službu i jiné heslo. Je to téměř absurdní představa že? Je to ale jediný způsob jak si chránit jiné své účty a přitom se nespoléhat na všechny provozovatele služeb. A vlastně ten chlap si sám protiřečí. Na začátku řekne NE, tyhle služby neznají Vaše heslo a na konci videa lidi varuje před službami které jim zašlou zapomenuté heslo. Přitom samotné hashování se většinou provádí na straně serveru od chvíle co sem heslo dorazí v čisté podobě.Tak jaký že NEZNAJ!? Tím nechci říct, že webové služby vždy znají vašeho heslo. Ani tím nechci říct, že hashování hesel se nepoužívá. Záleží vždy na důvěryhodnosti dané služby. Tu mi však nebude podsouvat nějakej mediální pablb co v úvodu videa udělá reklamu službám, které se tak důsledně starají o mé zabezpečení účtu.
TwoROdpovědět
23.08.2014 22:47:36
A proto nejjednodušší a nejefektivnější cesta jak získat heslo je lidská blbost. Falešné emaily, osobní detaily o cílové osobě atd. Kde jsou časy kdy kdosi přišel na to že lízátko, co bylo zároveň píšťalka má stejnou frekvenci jako telefonní budka a díky tomu šlo volat zadarmo kamkoliv :)
GranisOdpovědět
24.08.2014 21:05:13
Huh? A to fungovalo ako, prosím ťa?
fireOdpovědět
25.08.2014 14:04:04
+GranisV době analogu stačilo zapískat do sluchátka a poslal jsi tím signál o určité frekvenci. Asi jako by ses dneska napíchl na digitální linku a posílal tam svoje packety. No a když jsi dokázal zapískat ten správný tón, na druhém konci drátu nebylo jak poznat, jestli ten signál poslala opravdu ta budka...
SmaggyOdpovědět
23.08.2014 16:09:23
K videu: Zajímavé a určitě velmi poučné. K překladu: Nechci aby to vypadalo jako, že jsem nevděčný parchant, ale myslím si, že přeci jen jsou slova (především názvy), které by se asi doslovně překládat neměli. Kupříkladu slovo Hash, které je ve videu přeloženo jako "haš" mi bije do očí. Facebook taky nepřekládáte v titulcích jako "Fejsbůk" a navíc, jestli na video kouká člověk s nulovou znalostí Angličtiny, pak je pro něj slovo Haš spíše matoucí, kdyby si chtěl pojem později "vygůglit", tak pod pojmem haš najde stránky chorvatské autoškoly, nikoli zmíněný topic.
krteqkOdpovědět
23.08.2014 16:35:00
Pro vytvoření tohoto komentáře byly použity dvě encyklopedie, pravidla českého pravopisu a vyhledávač Google.
(zdroje)
DreadnoughtOdpovědět
23.08.2014 17:01:53
Haš není matoucí :-) Haš je legrační, if you know what i mean -.-
vladar808Odpovědět
25.08.2014 11:06:57
Na škole sme bežne používali výraz hašovacie funkcie.. Podľa mňa je to správne.
joukiOdpovědět
23.08.2014 14:30:57
Někteří se ptali ohledně prolomení těchto hashů. Ano Existuje hned několik "způsobů" jak "prolomit" ochranu. První a nejméně efektivní je Bruteforce - jedná se o násilné vnikání kdy se jedná čistě kombinatoriku znaků. Tahle metoda má pár optimalizací aby nebyla tak neefektivní - Slovníky. tyto slovníky obsahují předem nadefinované výrazy ( jako třeba "1234" "ahoj" "heslo123" atp) proto je lepší mít heslo originální, se kterým jste můžete být jistí, že nebude v těchto slovnících.
Další neefektivní metoda je slovníková databáze. funguje na podobném principu (taky se víc přibližuje k tomuto tématu). Jedná se o obrovskou indexovanou databázi ve které jsou uložené dvojice: "řetezec(heslo)" >> "hash". Pokud stránka používá sůl je tahle metoda naprosto nulově efektivní.
V prvé řadě musí útočník znát proces hashování. Typů těchto hashů je spousta a ano mají i svůj reverzní algoritmus. akorát je tak náročný ho najít že to nějakou dobu trvá. poslední hashovací funkce co byla prolomena a ještě před pár lety se používala je MD5. jakmile někdo objevil reverzní algoritmus všichni slušní programátoři co používali čistě hash bez soli museli změnit onu hashovací funkci.
Nicméně! tyto funkce se dají kombinovat, opakovat, solit, a tak pořád dokola. Pokud v takovém případě někdo odcizí hashe nemáte se téměř čeho bát, dokud útočník nezjistí i proces hashování. Poté přichází na řadu bruteforce a slovníky :)
Je možné že jsem něco ve spěchu opomněl, předem se za nedostatky omlouvám :)
krteqkOdpovědět
23.08.2014 15:15:46
BFU 4 BFU... :-D
Creatives90Odpovědět
23.08.2014 16:46:59
Díval ses na to video? Né nadarmo tam zmiňoval ty prvočísla....neexistuje software který dokáže určit, zda li je číslo prvočíslo (myslím tím hodně velké číslo)...
Ná základě prvočísel fungují téměř všechny krypotvací programy, hashovací znaky a bůh ví co ještě...Jestli vymyslíš alogritmus na zjištění, že číslo 95545445876596561233235887 je provčíslo, budeš miliardář...
CornelOdpovědět
23.08.2014 17:48:26
+Creatives90Vypadá to tak, že skôr ty si sa nedíval na to video, aspoň nie dôkladne. :D On hovoril o faktorizácií čísel. K tomuto problému zatiaľ neexistuje efektívny algoritmus, tj. algoritmus, ktorý by dal spolahlivú odpoveď v čase polynomiálne ohraničenom vzhľadom k veľkosti vstupu. K problému prvočíselnosti, ktorý si ty spomínal, však existuje viacero polynomiálnych deterministických algoritmov. Najrýchlejší známy má časovú zložitosť O(log(n)^6), viď. http://en.wikipedia.org/wiki/Primality_test
Takže nie, nebudeš miliardár ak niečo také vymyslíš. :)
FraserOdpovědět
19.09.2014 16:36:40
+Creatives90K faktorizaci existuje algoritmus běžící v polynominálním čase...Shroův faktorizační algoritmus, problém je, že potřebuje kvantový počítač..
harwenOdpovědět
23.08.2014 19:49:43
JE otázka nakolik byl tenhle komentář potřeba. Zbytečně složité vysvětlování. K bezpečnosti: největší slabinou hashe stejně vždycky zůstane kolize proti které přehashování, solení atd. v podstatě nepomůže.
Z toho důvodu je mnohem zajímavějším použitím hashe ověření pravosti což je škoda, že nebylo ve videu zmíněno. Jakoukoliv zprávu stačí zahashovat. Máme řetězec o omezené délce a stačí ho příjemci zprávy poslat jiným kanálem. Příjemce pak snadno zahashováním přijaté zprávy a ověřením oproti přijatému zjistí zda dostal stejnou zprávu která byla odeslána nebo ne.
JohnnycOdpovědět
23.08.2014 04:00:42
2:00 určitě ne náhodně
a netrvalo by to staletí, ale buď pár hodin stahováním rainbow tabulek (kde je seznam "heslo" -> "hash"), nebo pokud znám hash funkci, tak stylem pokus/omyl taky ne moc dlouho...(ale v 99% případů najdu změť nezobrazitelných znaků, a taky třeba háčky a čárky , které nemůžu zadat do anglického webu)
...a přijde mi že na začátku mluví o počátcích asymetrického šifrování a pak do toho natvrdo hodí hashovací funkce s tím že je to to samé....
phantomOdpovědět
23.08.2014 13:24:00
Pokud člověk používá kombinaci speciálních znaků, čísel, malých/velkých písmen, tak ti budou nějaké tabulky, případně weby typu - http://www.md5decrypt.org/, úplně k prdu ;-)
Jinak jedna věc je hesla zahashovat v db webu, ale taky v PC, kde se donedávna hesla ukládala téměř nezašifrovaná (např. když si dáte v Chromu volbu "pamatovat si heslo") :-)
LigerOdpovědět
23.08.2014 00:42:25
No, a pak se stane, že i tak velké firmě jako Adobe ukradnou hesla 150 milionů uživatelů. I když tam v plaintextu měli "jen" nápovědy pro heslo a samotná hesla byla zašifrovaná, ale špatně. Viz http://xkcd.com/1286/ :D
Maerlyn0Odpovědět
22.08.2014 22:04:49
Takže chápu to dobře, že kdyby někdo přišel na to, jak obrátit ten proces násobení prvočísel (což je mi jasný, že nebude hned), tak by tenhle systém dokázal prolomit?
stejkoOdpovědět
22.08.2014 23:08:02
to je len na ukazku. to sifrovanie funguje uplne inac - teda dufam :D
reddiOdpovědět
22.08.2014 23:17:34
víceméně ano, ale efektivní faktorizace (proces rozkladu na menší činitele) zatím není možná v reálném čase, doposud nejefektivnější metoda se nazývá Shorův algoritmus, ale ta rovněž není schopna v "lidském čase" toto provést (používaá se např. v RSA šifře), ale zde se spíše baví o jednocestné hašovací funkci (MD5, SHA-1, apod.), která podléhá úplně jiným pravidlům
harwenOdpovědět
23.08.2014 06:48:11
Nedokázal. Hash je jednosměrná funkce. Ale prolomil by tím asymetrické šifrování na jehož bezpečnosti stojí například platební karty apod. Takže by to byl průser mnohem větší
krteqkOdpovědět
23.08.2014 15:13:49
:D :D rly
yaraOdpovědět
22.08.2014 20:54:29
I watched the full video because he's hot
vojtondOdpovědět
22.08.2014 20:16:44
Nemůže potom čistě teoreticky dojít k tomu, že dva rozdílné řetezce vygenerují stejný řetězec? Asi záleží na složitosti hashovací operace..kdyby to bylo jen násobení, tak ta šance je celkem reálná
AegnorOdpovědět
22.08.2014 20:34:54
Ano, čistě teoreticky k tomu dojít může. Ovšem, algoritmy jsou stavěny tak, že když se dva řetězce liší například v jednom znaku ("auto" a "Auto"), tak jejich hash řetězce jsou výrazně odlišné.
harwenOdpovědět
22.08.2014 21:30:25
S tím souvisí to "solení" o kterém mluvil. Pokud se použije chytře tak se sníží pravděpodobnost kolize (shody) hashe dvou různých řetězců.
Sir_EmentalOdpovědět
22.08.2014 19:37:02
Nestačí ale pak jen znát algoritmus který ta stránka používá k převádění hesla na znaky?
BaconOdpovědět
22.08.2014 19:43:55
I kdybys ten algoritmus znal, tak jsou jednosměrné. Jediná šance by bylo vygenerování obřího slovníku, a pokud má někdo heslo h3sl1cZq0, tak by ti to mohlo trvat hooodně dlouho. Nemluvě o speciálních znacích, diakritice,...
Sir_EmentalOdpovědět
22.08.2014 19:56:36
+BaconPravda, to už by asi bylo jednodušší zkoušet hádat rovnou to heslo...
TStancekOdpovědět
22.08.2014 20:17:47
+BaconJeště není vyloučena možnost použít rychlý reverzní algoritmus, jenže nikdo ho zatím neobjevil, ale také nikdo nevyvrátil jeho existenci. Jestli máte zájem o Turingovu cenu nebo Fieldsovu medaili, odpověď na tuhle otázku vám ji asi zaručí.
harwenOdpovědět
22.08.2014 21:34:08
+BaconNo pro použití rainbow talbes jak se těm slovníkům říká je jedno jestli je heslo heslo nebo ashgf6as+d5h4+8 - složitější hesla v podstatě chrání jen před okoukáním hesla, počítači to je jedno.
Jinak zpětně to z principu nejde - jelikož hashovací funkce převede libovolný řetězec na řetězec stejné délky tak nutně musí docházet k tomu, že výstupy více vstupů shodné a proto není možné rekonstruovat který byl ten původní.
BaconOdpovědět
23.08.2014 09:14:46
+BaconNo, když bude programátor solit, tak je ti rainbow table k prdu.
harwenOdpovědět
23.08.2014 09:50:28
+BaconZáleží jak to udělá. Hodně systémů používá sůl špatně a heslo není při úniku nejvyšších kategorií (tedy hash+login nebo dokonce hash+login+algoritmus) chráněno víc než bez solení.
AegnorOdpovědět
22.08.2014 20:32:44
Nestačí.
Uvedu podrobně, jak to funguje (neznám žádný přesný algoritmus, takže tohle bude jenom něco vycucanýho z prstu, ale jde tu pouze o princip).
napíšu heslo "abc"...v počítači je uloženo jako soustava jedniček a nul, konkrétně:
0110 0001 0110 0010 0110 0011.
Tahle posloupnost jedniček a nul může zároveň znázorňovat dvě čísla za sebou, tzn. 1558 a 601...ty dvě čísla spolu vynásobíme (936358) a binární kód výsledku (1110 0100 1001 1010 0110) se přečte jako symboly...ty už tady vypisovat nebudu, nehodlám hledat, kde se všechny ty divní symboly (==extended ascii) píšou.
Teď, když znáš algoritmus, bych prosil o převedení řetězce symbolů "af5!8C" zpátky na heslo:-)
matko17Odpovědět
23.08.2014 14:10:56
+Aegnornech sa paci: "Š;G", z tohoto retazca dostanes podla tvojho algoritmu hash "af5!8C", nemusi to by sice skutocne heslo, ale kedze ma rovnaky hash, vies sa s tym prihlasit.
matko17Odpovědět
23.08.2014 14:12:08
+AegnorŠ;G - toto je ono, v predoslom komentari sa to upravilo na nieco ine
Batrachus (Překladatel)Odpovědět
26.08.2014 20:22:25
+Aegnoraf5!8C má 6 prvočinitelů: 3×17×137×829×3361×5501. Z toho se dá poskládat 20 původních hesel, které mají stejný otisk af5!8C. To je mizerná hašovací funkce.
DegenOdpovědět
22.08.2014 19:03:41
#hash
(I see what you did there)
SygiOdpovědět
22.08.2014 18:47:26
Doufám, že si toho chlápka nenajal google, facebook a youtube aby naoko uklidnil lidi. :D :D (Joke).