To je sice pravda, ale v jeho návrhu šlo o odstavení zmíněných automatizovaných nástrojů, takže ani s nekonečným výpočetním výkonem by se do toho nikdo nedostal. Mě to přišlo dobré. Budu mít botnet 50 000 PC, vezmu si danou standardní knihovnu, připravím nástroj a louskám 5 000 000 hesel za vteřinu (spíš víc). No a co ? K čemu mi to je? Nevím, jak je to dál zašifrované! Nepoznám, jestli mám správné heslo nebo ne. Musím ten jeho kód rozluštit. Krásně odstranil možnost bruteforce útoku pomocí silného botnetu.
Taky není pravda, že na to potřebuješ pouze o řád schopnějšího programátora-matematika, pochopit přeložený kód je o dost náročnější než se hrabat ve zdrojácích. Zmínil jsi i překonané zesložiťování textu, ano, ale to už vyžaduje odborníka na šifry.
Kdyby to bylo šifrované nečím, na co jde udělat útok hrubou silou, tak bych to zkusil taky i zadarmo.
Vy jste pořád nepochopil princip útoku hrubou silou. Útok hrubou silou jde udělat na cokoli. Útok hrubou silou funguje tak, že vůbec nezkoumám, jak je něco zašifrováno. Prostě vezmu ten zašifrovaný text, vezmu originální program k jeho rozšifrování (třeba ten Blaův nastavovací zázrak), a tomu postupně předhazuju jedno heslo za druhým. Takhle vyzkouším potenciálně všechna hesla ze zvolené množiny. Pokud to chci vylepšit, začnu těmi, která považuju za pravděpodobnější - tedy hesla z nějakého slovníku. Na některých heslech se ten program zhroutí, protože autor nepočítal, že tam někdo zadá špatné heslo a dostane náhodný výstup (v případě dobré šifry). To nejsou ta správná hesla. Z dalších hesel vyleze nějaká změť paznaků, která ani vzdáleně nepřipomíná český text (pokud má být zašifrován článek) nebo privátní klíč bitcoinové peněženky (podle původního zadání). To také nejsou ta správná hesla. No a pak tam zbyde několik hesel v výstupem v podobě českého textu nebo privátního klíče bitcoinové peněženky. Podívám se, kolik jich je, zjistím, že jedno, a to je to hledané šifrovací heslo.
Obrana proti tomu je jediná - počet možných kombinací hesel krát čas potřebný k odšifrování a ověření výstupu musí být nad možnosti útočníka, resp. nad limitem, za kterým se nevyplatí heslo louskat hrubou silou. Počet možných kombinací hesel závisí na tom, jak silné heslo zvolí uživatel. Proto chtěl Ondřej natáhnout ten čas potřebný k dešifrování.
Jedna možnost je samozřejmě přidat do toho oficiálního dešifrovacího nástroje nějaké zdržovačky -- čekání, prázdné smyčky, nesmyslné výpočty. Jenže dostatečně motivovaný útočník by tohle uměl odstranit, proto Ondřej hledal nějaký algoritmus, který by byl pomalý z principu a útočník by tu pomalost nemohl použitelnými prostředky obejít (kvantový počítač zatím nepovažujeme za použitelný prostředek). Zabudování zdržovaček do Blaova programu by tedy byl v rámci tohoto tématu podvod.
Skutečné možnosti, jak Ondřejův problém vyřešit, jsou podle mne čtyři.
Buď použít algoritmus, který by byl záměrně navržen tak, aby dešifrování bylo pomalé. Mám pocit, že nějaké pokusy o vytvoření takových algoritmů existují, ale zatím to rozhodně není nic důvěryhodého a ověřeného. To by bylo ideální řešení.
Na druhé straně je nejčastěji používané řešení - vzít stávající rychlý algoritmus, a ten aplikovat opakovaně, třeba tisíckrát. Nebo několik algoritmů prostřídat. Já v tom vidím ten problém, že žádný z používaných algoritmů nebyl k takovému použití navržen, tudíž není jasné, zda se takhle nevytváří nějaký postranní kanál oslabující šifru.
Další možnost je použít asymetrickou kryptografii, jejíž současné algoritmy jsou pomalejší.
Poslední možnost je využít toho, co zpomaluje algoritmy asymetrické kryptografie, a vrátit se zpět k útoku hrubou silou. Vstupní text zašifrovat náhodným klíčem, tenhle klíč zašifrovat uživatelovým heslem a to celé zašifrovat náhodně zvoleným krátkým klíčem a ten zahodit. Dešifrování by pak probíhalo tak, že by se postupně vyzkoušely všechny přípustné krátké klíče (hledal by se ten, který se po zašifrování zahodil). Délkou toho zahazovaného hesla se nastavuje průměrná doba potřebná pro rozšifrování souboru se známým heslem.
Nevýhodou všech těch zdržovacích metod je, že se dají snadno obejít paralelizací. Oprávněný uživatel bude dešifrovat zpravidla na jednom počítači, motivovaný útočník jich může použít tisíce i víc. Proti tomu je jediná možná obrana - silné heslo uživatele. Protože znalost proti neznalosti hesla je to jediná výhoda, kterou má oprávněný uživatel proti útočníkovi. Ve všem ostatním má navrch útočník.