SHA-1 | |
---|---|
Vývojáři | NSA s NIST |
Vytvořeno | 1995 |
zveřejněno | 1995 |
Předchůdce | SHA-0 |
Nástupce | SHA-2 |
Velikost hash | 160 bit |
Počet kol | 80 |
Typ | hashovací funkce |
Secure Hash Algorithm 1 je kryptografický hashovací algoritmus . Popsáno v RFC 3174 . Pro vstupní zprávu s libovolnou délkou ( bity maximum, což se rovná přibližně 2 exabajtům ) algoritmus generuje 160bitovou (20bajtovou) hodnotu hash, nazývanou také message digest , která se obvykle zobrazuje jako 40místné hexadecimální číslo. číslo. Používá se v mnoha kryptografických aplikacích a protokolech. Doporučuje se také jako primární pro vládní agentury v USA . Principy SHA-1 jsou podobné principům, které používal Ronald Rivest při navrhování MD4 .
V roce 1993 NSA spolupracovala s NIST na vývoji Secure Hash Algorithm (nyní známého jako SHA-0) (zveřejněného ve FIPS PUB 180) pro bezpečný hashovací standard. NSA však tuto verzi brzy stáhla s odvoláním na chybu, kterou objevili a která nebyla nikdy zveřejněna. A nahradil ji revidovanou verzí publikovanou v roce 1995 ve FIPS PUB 180-1. Tato verze je považována za to, co se nazývá SHA-1. Později, na konferenci CRYPTO v roce 1998 , dva francouzští výzkumníci představili útok na algoritmus SHA-0, který nefungoval na algoritmu SHA-1. To mohla být chyba objevená NSA .
SHA-1 implementuje hashovací funkci , postavenou na myšlence kompresní funkce. Vstupy do funkce komprese jsou 512bitový blok zpráv a výstup předchozího bloku zpráv. Výstupem je hodnota všech hashových bloků do tohoto bodu. Jinými slovy, hash blok je . Hodnota hash celé zprávy je výstupem posledního bloku.
Původní zpráva je rozdělena do bloků po 512 bitech. Poslední blok je vyplněn na násobek délky 512 bitů. Nejprve se přidá 1 (bity) a poté se přidají nuly, takže délka bloku bude 512 - 64 = 448 bitů. Zbývajících 64 bitů obsahuje délku původní zprávy v bitech (ve formátu big-endian ). Pokud má poslední blok délku více než 447, ale méně než 512 bitů, pak se výplň provede následovně: nejprve se přidá 1 (bit), potom se přidají nuly až na konec 512bitového bloku; poté se vytvoří další 512bitový blok, který se do 448 bitů zaplní nulami, načež se do zbývajících 64 bitů zapíše délka původní zprávy v bitech (ve formátu big-endian). Poslední blok je vždy vyplněn, i když zpráva již má požadovanou délku.
Je inicializováno pět 32bitových proměnných.
A=0x67452301 B=0xEFCDAB89 C=0x98BADCFE D=0x10325476 E=0xC3D2E1F0Jsou definovány čtyři nelineární operace a čtyři konstanty.
= 0x5A827999 | 0≤t≤19 | |
= 0x6ED9EBA1 | 20≤t≤39 | |
= 0x8F1BBCDC | 40≤t≤59 | |
= 0xCA62C1D6 | 60≤t≤79 |
Hlavní smyčka iterativně zpracovává každý 512bitový blok. Na začátku každé smyčky jsou zavedeny proměnné a, b, c, d, e, které jsou inicializovány hodnotami A, B, C, D, E. Blok zpráv se převede z 16 32bitových slov na 80 32bitových slov podle následujícího pravidla:
pro 0≤t≤15 = ( -3-8-14-16 ) << 1 pro 16≤t≤79, kde "<<" je kruhový posun doleva.
pro 0 až 79 teplota = (a<<5) + ( b,c,d) + e + e = d d = c c = b<<30 b = a, kde "+" je sčítání 32bitových celých čísel bez znaménka s přebytkem (33. bit) vyřazeným.
Poté se hodnoty a, b, c, d, e přidají k A, B, C, D, E. Začíná další iterace.
Konečná hodnota bude zřetězením pěti 32bitových slov (A, B, C, D, E) do jedné 160bitové hašovací hodnoty.
Pseudokód pro algoritmus SHA-1 je následující:
Namísto původního znění FIPS PUB 180-1 jsou uvedeny následující ekvivalentní výrazy, které lze použít na počítači fv hlavní smyčce:
(0 ≤ i ≤ 19): f = d xor (ba ( c xor d)) (alternativa 1) (0 ≤ i ≤ 19): f = ( bac ) xor (( nikoli b) a d) ( alternativa 2) (0 ≤ i ≤ 19): f = ( bac ) + (( ne b) ad ) (alternativa 3) (40 ≤ i ≤ 59): f = ( bac) nebo (da ( b nebo c)) ( alternativa 1) (40 ≤ i ≤ 59): f = ( bac) nebo ( da ( b ) xor c)) (alternativa 2) (40 ≤ i ≤ 59): f = ( bac ) + (da ( b xor c)) (alternativa 3) (40 ≤ i ≤ 59): f = ( ba c) xor ( bad ) xor (c a d ) (alternativa 4)Následují příklady hash SHA-1. Předpokládá se, že všechny zprávy používají kódování UTF-8 .
Hash pangram v ruštině:
SHA-1("Byly by v houštinách na jihu citrusy? Ano, ale falešný!") = 9e32295f 8225803b b6d5fdfc c0674616 a4413c1bHash pangram v angličtině:
SHA-1(" Rychlá hnědá liška skáče přes líného psa ") = 2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12 SHA-1("sha") = d8f45903 20e1343a 915b6394 170650a8 f35d6926Malá změna ve zdrojovém textu (jedno písmeno velké) vede k velké změně samotného hashe. Důvodem je lavinový efekt .
SHA-1("sha") = ba79baeb 9f10896a 46ae7471 5271b7f5 86e74640I pro prázdný řetězec se vypočítá netriviální hodnota hash.
SHA-1("") = da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709Kryptoanalýza hashovacích funkcí je zaměřena na studium zranitelnosti vůči různým typům útoků. Hlavní jsou:
Při řešení metodou "hrubé síly" :
Bezpečnost elektronického digitálního podpisu pomocí tohoto hašovacího algoritmu závisí na stabilitě hašovací funkce při hledání kolizí . Odolnost předobrazu závisí na bezpečnosti ukládání hash hesel pro účely ověřování .
V lednu 2005 Vincent Rayman a Elisabeth Oswald publikovali útok na zkrácenou verzi SHA-1 (53 ran místo 80 ), který umožňuje nalézt kolize v méně než 280 operacích.
V únoru 2005 Xiaoyun Wang , Yiqun Lisa Yin a Hongbo Yu představili útok na plný SHA-1, který vyžaduje méně než 269 operací.
O metodě autoři píší:
Představujeme soubor strategií a souvisejících technik, které lze použít k překonání některých důležitých překážek při hledání kolizí v SHA-1. Nejprve hledáme téměř kolizní diferenciální cesty, které mají malou „Hammingovu váhu“ v „šumovém vektoru“, kde každý bit představuje 6-krokovou lokální kolizi. Potom podle toho upravíme cestu diferenciálu z prvního stupně na jinou přijatelnou cestu diferenciálu, abychom se vyhnuli nepřijatelným sériovým a zkráceným kolizím. Nakonec převedeme dvě jednoblokové téměř kolizní diferenciální cesty na jednu dvoublokovou kolizní cestu s dvojnásobnou výpočetní náročností. [jeden]
Původní text (anglicky)[ zobrazitskrýt]Představujeme sadu strategií a odpovídajících technik, které lze použít k odstranění některých hlavních překážek při hledání kolizí pro SHA-1. Nejprve hledáme téměř srážkovou diferenciální cestu, která má nízkou Hammingovu váhu ve „vektoru narušení“, kde každý 1 bit představuje 6-krokovou lokální kolizi. Za druhé vhodně upravíme diferenciální dráhu v prvním kole na jinou možnou diferenciální dráhu, abychom se vyhnuli nemožným po sobě jdoucím lokálním kolizím a zkráceným lokálním kolizím. Zatřetí, transformujeme dvě jednoblokové diferenciální cesty blízké kolizi na dvoublokovou diferenciální kolizní cestu s dvojnásobnou složitostí vyhledávání.
Uvádějí také:
Naše analýza je založena zejména na původním diferenciálním útoku na SHA-0, "téměř kolizi" útoku na SHA-0, technice více bloků a původní technice úpravy zpráv používané při útocích na vyhledávání kolize na HAVAL - 128, MD4 , RIPEMD a MD5 .
Původní text (anglicky)[ zobrazitskrýt]Naše analýza je postavena zejména na původním diferenciálním útoku na SHA-0, útoku blízké kolizi na SHA-0, technikách víceblokových kolizí a také technikách modifikace zpráv používaných při útocích na vyhledávání kolizí na HAVAL-128. , MD4, RIPEMD a MD5.
Článek popisující algoritmus byl publikován v srpnu 2005 na konferenci CRYPTO .
Ve stejném článku autoři publikovali útok na zkrácený SHA-1 (58 ran), který umožňuje najít kolize ve 233 operacích.
V srpnu 2005 na CRYPTO 2005 titíž odborníci představili vylepšenou verzi útoku na plnohodnotný SHA-1 s výpočetní náročností 263 operací. V prosinci 2007 byly podrobnosti tohoto zlepšení přezkoumány Martinem Cochranem.
Christophe de Kanier a Christian Rechberg později představili vylepšený útok na SHA-1, za který byli na konferenci ASIACRYPT v roce 2006 oceněni jako nejlepší článek . Představili kolizi dvou bloků na 64kolovém algoritmu s výpočetní složitostí asi 2 35 operací. [2]
Na Technické univerzitě v rakouském městě Graz byl zahájen rozsáhlý výzkumný projekt , který: „... využívá počítače připojené přes internet k provádění výzkumu v oblasti kryptoanalýzy. Do projektu se můžete zapojit stažením a spuštěním bezplatného programu na vašem počítači.“ [3]
Burt Kalinske , vedoucí výzkumu v „ laboratoři RSA “, předpovídá, že první předobrazový útok bude úspěšný v příštích 5 až 10 letech.
Vzhledem k tomu, že teoretické útoky na SHA-1 byly úspěšné, NIST plánuje zcela ukončit používání SHA-1 v digitálních podpisech. [čtyři]
Vzhledem k blokové a iterativní struktuře algoritmů a také nedostatku speciálního zpracování na konci hash jsou všechny hashovací funkce rodiny SHA zranitelné vůči útokům prodlužujícím zprávu a kolizím při částečném hashování zprávy. [5] Tyto útoky umožňují falšování zpráv podepsaných pouze hashem – nebo – prodloužením zprávy a přepočítáním hashe bez znalosti hodnoty klíče. Nejjednodušší opravou ochrany proti těmto útokům je zdvojnásobení hash - ( je blok nul o stejné délce jako hash funkční blok).
2. listopadu 2007 NIST vyhlásil soutěž na vývoj nového algoritmu SHA-3 , který probíhal do roku 2012 . [6]
SHappening8. října 2015 publikovali Marc Stevens, Pierre Karpman a Thomas Peyrin útok na kompresní funkci algoritmu SHA-1, který vyžaduje pouze 257 výpočtů .
Skutečný hack: SHAttered (detekce kolize)Dne 23. února 2017 oznámili specialisté z Google a CWI praktický hack algoritmu zveřejněním 2 souborů PDF se stejným kontrolním součtem SHA-1 . To vyžadovalo hledání možností, což by pro 1 GPU trvalo 110 let [7] .
MD5 i SHA-1 jsou v podstatě vylepšená rozšíření MD4 .
podobnosti:
Rozdíly:
Bruce Schneier uzavírá: „SHA-1 je MD4 s přidáním rozšířené sádry, kroku navíc a vylepšené laviny. MD5 je MD4 s vylepšeným bit hašováním, krokem navíc a vylepšenou lavinou."
Řada charakteristických rysů GOST R 34.11-94 :
V tabulce "střední velikost hash" znamená "velikost vnitřního hash součtu" po každé iteraci.
Variace algoritmů | Výstupní velikost hash (bity) | Mezilehlá velikost hash (bity) | Velikost bloku (bity) | Maximální délka vstupní zprávy (bity) | Velikost slova (bity) | Počet kol | Použité operace | Nalezené kolize | |
---|---|---|---|---|---|---|---|---|---|
SHA-0 | 160 | 160 | 512 | 2 64 - 1 | 32 | 80 | +,and, nebo, xor, rotl | Tady je | |
SHA-1 | 160 | 160 | 512 | 2 64 - 1 | 32 | 80 | +,and, nebo, xor, rotl | 2 52 operací | |
SHA-2 | SHA-256/224 | 256/224 | 256 | 512 | 2 64 - 1 | 32 | 64 | +,and, nebo, xor, shr, rotr | Ne |
SHA-512/384 | 512/384 | 512 | 1024 | 2 128 - 1 | 64 | 80 | +,and, nebo, xor, shr, rotr | Ne |
Hashovací funkce se používají v systémech správy verzí , systémech elektronického podpisu a pro vytváření autentizačních kódů .
SHA-1 je nejběžnější z celé SHA a používá se v řadě široce používaných kryptografických aplikací a algoritmů.
SHA-1 se používá v následujících aplikacích:
SHA-1 je základem blokové šifry SHACAL .
Google již dlouho vyjadřuje nedůvěru vůči SHA-1, zejména pokud jde o použití této funkce k podepisování certifikátů TLS . V roce 2014, krátce po zveřejnění práce Marka Stevense, vývojový tým Chrome oznámil, že postupně vyřazuje SHA-1.
Od 25. dubna 2016 Yandex . Mail přestal podporovat starší mailery používající SHA-1 [8] .
Hashovací funkce | |
---|---|
obecný účel | |
Kryptografický | |
Funkce generování klíčů | |
Kontrolní číslo ( srovnání ) | |
Hashe |
|