Secure Hash Algorithm 1 neboli SHA-1 je kryptografická hashovací funkce, která je nezbytná pro integritu dat a bezpečnost informací. Je hojně využívána v mnoha aplikacích, včetně kódů pro ověřování zpráv a digitálních podpisů. Ačkoli se kdysi považovala funkce SHA-1 za bezpečnou metodu hashování, s rozvojem technologií se její nedostatky staly zjevnějšími. V tomto příspěvku se budeme zabývat fungováním metody SHA-1, důvody, proč již není bezpečná, a její kryptografickou strukturou.
Při použití algoritmu SHA-1 se ze vstupní zprávy vytvoří hodnota hash o pevné velikosti, která má obvykle 160 bitů. Mezi logické a bitové operace používané algoritmem patří modulární sčítání, logický posun, bitový XOR, AND, OR a NOT. Tyto postupy se provádějí na blocích zprávy, které jsou rozděleny na menší jednotky a poté zpracovány jedna po druhé. Vzhledem k tomu, že konečná hodnota hash je generována ze zpracovaných bloků, i malá změna původní zprávy povede ke zcela odlišnému výstupu.
Vzhledem ke značnému zlepšení výkonu počítačů a metod kryptoanalýzy však byla bezpečnost algoritmu SHA-1 ohrožena. Hlavní příčinou nedostatečné bezpečnosti algoritmu SHA-1 je to, že je náchylný ke kolizním útokům. Pokud dva různé vstupy vedou ke stejnému výstupnímu hashi, dochází ke kolizi. Přestože kolize jsou teoreticky možné u každé hashovací funkce, rostoucí výpočetní výkon současných počítačů umožnil tuto slabinu SHA-1 využít.
Výzkumníci předvedli první teoretický kolizní útok na SHA-1 v roce 2005 a demonstrovali tak zranitelnost tohoto algoritmu vůči kryptografickým chybám. Tyto útoky se postupem času staly účinnějšími a proveditelnějšími. Tým výzkumníků v roce 2017 úspěšným provedením útoku SHAttered demonstroval jeho schopnost vytvářet kolizní páry s využitím dostupných prostředků procesoru. Díky tomuto vývoji se SHA-1 stal v mnoha aplikacích, které si cení bezpečnosti, zastaralým.
Je důležité si uvědomit, že SHA-1 je jednosměrná funkce, což znamená, že odvodit původní zprávu z výsledku hashování by bylo výpočetně nemožné. Tato vlastnost zaručuje přesnost a pravost dat. Kvůli zranitelnosti vůči kolizním útokům by však hacker mohl vytvořit dvě různé zprávy se stejnou hodnotou hash, což by ohrozilo integritu a spolehlivost dat.
V důsledku náchylnosti ke kolizním útokům již není dříve oblíbená kryptografická hashovací funkce SHA-1 považována za bezpečnou. Životaschopnost zneužití těchto slabin se zvýšila s tím, jak se zlepšil výpočetní výkon a metody kryptoanalýzy. Spolehlivost a integrita dat, která jsou zabezpečena funkcí SHA-1, jsou ohroženy možností vytvářet kolizní páry. V současné technologické éře je proto zásadní přejít na bezpečnější hashovací algoritmy, jako je SHA-256 nebo SHA-3, aby byla zaručena integrita a bezpečnost digitálních informací.
Symetrický kryptografický hashovací algoritmus je známý jako SHA-1 (Secure Hash Algorithm 1).
SHA-256 je lepší než SHA-1 z několika důvodů: Bezpečnost: Kvůli závažným chybám v jeho kryptografické architektuře již není SHA-1 považován za bezpečný. Kvůli těmto chybám se mohou hodnoty hash, které vytvoří dva samostatné vstupy, shodovat při kolizních útocích. Naopak SHA-256 je nyní považován za bezpečný a nebyl podobně zneužit. 2. Délka hashe: SHA-1 vytváří hodnoty hash o délce 160 bitů, zatímco SHA-256 vytváří hodnoty hash o délce 256 bitů. Díky většímu výstupnímu prostoru, který nabízí větší délka hashe SHA-256, je odolnější vůči útokům hrubou silou a je obtížnější odhalit kolize. 3. Složitost algoritmu: SHA-1 používá méně složitý algoritmus než SHA-256. Protože SHA-256 používá složitější a bezpečnější algoritmus, je méně náchylný k chybám a útokům. Přijetí algoritmu SHA-256 pro různé aplikace, včetně digitálních podpisů, bezpečných komunikačních protokolů a ukládání hesel, se v důsledku chyb v algoritmu SHA-1 stalo průmyslovým standardem a osvědčeným postupem.
Celkově lze říci, že algoritmus SHA-256 překonává algoritmus SHA-1 z hlediska bezpečnosti, délky hashe, složitosti algoritmu a přijetí v průmyslu, což mu dává přednost jako alternativě pro kryptografické aplikace.
V mnoha různých aplikacích a protokolech se ověřování často provádí pomocí algoritmu SHA (Secure Hash Algorithm). Tím, že ze vstupních dat vytvoří hashovací hodnotu (digest) pevné velikosti, zaručuje integritu a platnost dat. Integrita dat se pak potvrzuje porovnáním této hodnoty hash s předpokládanou hodnotou hash.
SHA se při ověřování používá následujícími způsoby:
1. Ukládání hesel: Heslo je hashováno pomocí SHA a uchováváno v databázi, když si uživatel otevře účet nebo změní své heslo. Při pokusu o přihlášení se heslo uživatele hashuje a porovnává se uložená hodnota hashe. Pokud se shodují, je ověření úspěšné.
2. Integrita zpráv: Pomocí algoritmu SHA lze ověřit, že zpráva nebyla při přenosu změněna. Odesílatel použije SHA k určení hodnoty hashe zprávy a poté zprávu doručí spolu s hodnotou hashe. Přepočet hodnoty hash zprávy a její porovnání s původní hodnotou provádí příjemce. Pokud se shodují, je ověřena integrita komunikace.
3. Digitální podpisy: Pro konstrukci digitálních podpisů se SHA kombinuje s asymetrickými šifrovacími metodami. Podepisující osoba pomocí SHA určí hodnotu hash dokumentu nebo zprávy a následně ji zašifruje pomocí svého soukromého klíče. Dokument nebo sdělení a zašifrovaná hodnota hash společně tvoří digitální podpis. Použitím veřejného klíče podepisující osoby k dešifrování zašifrované hodnoty hash a jejím porovnáním s hodnotou hash určenou z přijatého dokumentu nebo zprávy může příjemce podpis potvrdit.
Je důležité poznamenat, že algoritmus SHA-1, na který se odkazuje v názvu, je pro některé aplikace považován za nezabezpečený kvůli chybám, které byly v průběhu času nalezeny. Pro zajištění vyšší bezpečnosti se nyní pro většinu účelů ověřování doporučují silnější varianty, například SHA-256 nebo SHA-3.