Staňte se programátorem: Prolomení MD5

V druhém pokračování miniseriálu o šifrování dat se podíváme na hašovací funkce, jejich význam a použití a nakonec si budete moci vyzkoušet, jak dlouho trvá prolomení MD5 haše.

V minulém díle jsme si ukázali způsob, jak zakódovat text do nečitelné podoby nebo jej přímo zašifrovat symetrickým algoritmem, jakým je například známý TripleDES či RijnDael za pomoci hesla. V dnešním pokračování našeho miniseriálu o základech kryptografie se podíváme na hašování dat a ukážeme si algoritmus pro jeho prolomení. Kód v dnešním článku slouží pouze k ukázce toho, jak jednoduše by mohl útočný algoritmus vypadat, v praxi se totiž používají složitější mechanizmy a zapojují se výkonnější počítače nebo rovnou superpočítače, které testují sílu kryptografických metod a systémů.

Jak na hašování

Hašování slouží k jednosměrnému zakódování množiny bajtů. Výsledkem tohoto procesu je relativně malé hexadecimální číslo, které je pro tuto množinu bajtů unikátní a představuje její „otisk prstu“, což je základní podmínkou všech kvalitních hašovacích algoritmů. Jako uživatel tedy mohu mít jistotu, že po transformaci sekvence X dostanu výsledek Y a neexistuje žádná jiná sekvence bajtů, se kterou bych dostal stejný výsledek Y. Tento jev se nazývá kolizí a každá hašovací funkce se s tímto problémem potýká. Hašování se používá nejčastěji při archivaci hesel v databázi. Pokud útočník získá databázi obsahující zahašovaná hesla, získá tím pouze neúčelnou změť znaků. Naopak, pokud se vlastník hesla pokusí přihlásit, je zadané heslo zahašováno a následně porovnáno s heslem z databáze. Pokud jsou stejné, znamená to, že je zadané heslo správně.

Klepněte pro větší obrázek
Výpočet MD5 otisku slova bobik v našem programu

Dalším možným použitím hašování je ověření totožnosti dvou objemných bloků dat, kde neporovnáváme jednotlivé bloky, ale pouze jejich hašový kód. K hašování slouží řada algoritmů, my se podíváme na hašování pomocí toho nejznámějšího – MD5. V prostředí Microsoft .NET Frameworku k tomu slouží třída MD5 ze jmenného prostoru System.Security.Cryptography a takto vypadá její použití pro výpočet hašového kódu ze řetězce:

public string CalculateMD5Hash(string input)
{
  // Výpočet MD5 haše ze vstupu
  MD5 md5 = System.Security.Cryptography.MD5.Create();
  byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
  byte[] hash = md5.ComputeHash(inputBytes);
  // Převod pole bajtů na hexadecimální číslo
  StringBuilder sb = new StringBuilder();
  for (int i = 0; i < hash.Length; i++)
  {
    sb.Append(hash[i].ToString("X2"));
  }
  return sb.ToString();
}

Za jak dlouho prolomíte hash

Následují algoritmus slouží k rozlousknutí zahašovaného textu.

Klepněte pro větší obrázek
Známe MD5 hash a délku původního hesla (4 znaky)
Výsledek je odhalen během minuty

public string MD5CrackAlgorithm(string[] alphabet, string md5hash, int lenght)
{
  Random rand = new Random();
  string result = "";
  while (true)
  {
    for (int x = 0; x < lenght; x++)
    {
      result += alphabet[rand.Next(0, alphabet.Length )];
    }
    if (md5hash == CalculateMD5Hash(result))
      return result;
    result = "";
 }
}

Pro zjištění, jak dlouho trvala určitá operace slouží třída systém.Diagnostics.StopWatch:

Stopwatch sw = new Stopwatch();
sw.Start();
NějakáOperace();
sw.Stop();
MessageBox(“Operace trvala: “ + sw.Elapsed.ToString());

Jelikož je hašování jednosměrné, nemělo by jít rozlousknout jinak než takzvanou. “hrubou silou”, kdy se zkouší veškeré kombinace písmen o určité délce zahašovat a porovnat s originálem. Nento úkon je však velice pomalý, což je patrné i z následujícítabulkyčasů zaznamenaných na obyčejném počítači:

Počet znakůDoba prolomení
31 s
440 s
530 minut
6den
7měsíc
82 roky

Zde je vidět, že k prolomení haše obyčejného hesla o délce sedmi znaků by bylo zapotřebí 1 měsíc výpočetního výkonu na běžném počítači, což je dostatečná doba na to, aby odradila většinu možných útočníků.

Klepněte pro větší obrázek Klepněte pro větší obrázek
LACAL Lausanne PlayStation Lab: sen každého herního pařana

Do výpočtu se tak často zapojují superpočítače, na kterých se testuje například síla nejrůznějších šifrovacích metod, u kterých se používá hašování. O takovém pokusu jsme ostatně psali již na začátku letošního roku, kdy jistá mezinárodní skupina použila několik desítek do sítě zapojených PlayStationů, aby zkonstruovala alternativní obsah, který měl stejný MD5 hash – otisk prstů. Podařilo se jim tedy vypočítat kolizi, o které jsme psali v úvodu. Jelikož byl v tomto případě MD5 otisk součástí elektronického podpisu, respektive důvěryhodného SSL certifikátu, inženýrům se podařilo vyrobit alternativní a platný SSL certifikát, který ovšem daná autorita nikdy nevydala. Prolomení haše a jeho kolize je tak poměrně závažný bezpečnostní systém i s ohledem na skutečnost, že superpočítačový výkon je stále dostupnější především ve formě velmi výkonných cloud-computingových webových hostingů.

A to je vše. Nakonec si hašování a jeho prolomování můžete sami vyzkoušet, ke stažení totiž opět nabízíme zdrojové kódy včetně projektu pro Visual Studio 2008 (Express Edition) a spustitelný program.


Mareš, Amadeo: 1001 tipů a triků pro C#

Klepněte pro větší obrázekNestačí vám náš seriál? Pořiďte si knihu jeho autora, ve které vás seznámí s tisícovkou programovacích tipů a technik.Díky velkému počtu tipů, návodů, triků a rad kniha poslouží při každé příležitosti. Kdykoli si nevíte rady, stačí nalistovat příslušnou stranu a problém okamžitě vyřešit. Tipy a triky míří především na začínající programátory; užitečné rady tu ovšem najdou i pokročilejší vývojáři a ostřílení znalci. SOučástí publikace je i přiložené DVD, na kterém najdete bezplatné vývojové prostředí Visual C#, databázový server a především všechny zdrojové kódy z knihy, takže je budete moci okamžitě použít.Webové stránky knihy.

Diskuze (22) Další článek: Na Aukru opět řádil podvodník

Témata článku: Programování, MD5, Dnešní pokračování, 1001, Random, Rand, Bobik, Alphabet, Stejná metoda, Lausanne, Trik, Počet znaků, Prolomení, Amadeo, Programátor, Spustitelný exe, Stejný výsledek



Přehled zařízení, která dostanou Android 12. Aktualizace se týká topmodelů i levnějších telefonů

Přehled zařízení, která dostanou Android 12. Aktualizace se týká topmodelů i levnějších telefonů

** Pixely už jej mají, postupně se přidávají další mobilní výrobci ** Android 12 přináší spoustu softwarových novinek a vylepšení ** V našem seznamu se dozvíte, kdy aktualizace dorazí i na váš telefon

Martin Chroust
Android 12Aktualizace softwaruSmartphony
Nejvíc sexy holky ve filmech: 60 nejslavnějších erotických symbolů

Nejvíc sexy holky ve filmech: 60 nejslavnějších erotických symbolů

Krásné ženy jsou pro mnohé erotické a sex symboly. Vybrali jsme ty nejslavnější z několika desetiletí filmové a seriálové tvorby. Najdete zde nejen fotografie, ale také název díla, které herečku proslavilo.

Marek Čech
Filmy a seriály
Lék proti depresi za stokorunu snižuje riziko těžkého průběhu i úmrtí na onemocnění covid-19

Lék proti depresi za stokorunu snižuje riziko těžkého průběhu i úmrtí na onemocnění covid-19

** Klinická studie zkoumala vliv antidepresiva fluvoxamin na covid-19 ** Počet úmrtí souvisejících s covidem-19 klesl zhruba o 90 % ** Potřeba intenzivní lékařské péče se snížila zhruba o 65 %

Karel Kilián
COVID-19LékyDepreseMedicína
Rusko obviňuje astronautku NASA ze sabotáže Mezinárodní vesmírné stanice
Jiří Černý
Mezinárodní vesmírná staniceNASARusko
Pozor na AliExpress. Aby byl pořád levný, musíte zvolit správný způsob dopravy

Pozor na AliExpress. Aby byl pořád levný, musíte zvolit správný způsob dopravy

** Už několik měsíců platí nová daňová pravidla pro zásilky nejen z Asie ** Tkaničky z AliExpressu mohou být stále laciné ** Musíte ale zvolit správného dopravce, jinak poště zaplatíte 150 Kč

Jakub Čížek
E-shopyAliExpress
Recenze Windows 11. Microsoft nás opíjí rohlíkem a omezuje použitelnost

Recenze Windows 11. Microsoft nás opíjí rohlíkem a omezuje použitelnost

** Oproti Desítkám významně stouply hardwarové požadavky ** Windows 11 mají nový vzhled, ale výrazně narušují workflow. ** Potěší vyhledávání, multitasking i rychlejší aktualizace

Petr Urban
Windows 11Testy
Nová volitelná aktualizace systému Windows 10 opravuje 38 problémů
Karel Kilián
Windows UpdateAktualizaceWindows 10