Stribog | |
---|---|
Vývojáři |
FSB Ruska , OJSC "InfoTeKS" |
zveřejněno | 2012 |
Normy | GOST 34.11-2018, GOST R 34.11-2012, ISO/IEC 10118-3:2018, RFC 6986 |
Velikost hash | 256 nebo 512 bitů |
Počet kol | 12 |
Typ | hashovací funkce |
Stribog ( STREEBOG [ 1] ) je kryptografický algoritmus pro výpočet hashovací funkce s velikostí bloku vstupních dat 512 bitů a velikostí hash kódu 256 nebo 512 bitů .
Popsáno v GOST 34.11-2018 „Informační technologie. Kryptografická ochrana informací . Hašovací funkce „- aktuální mezistátní kryptografický standard .
Vyvinuto Centrem pro informační bezpečnost a speciální komunikaci Federální bezpečnostní služby Ruska za účasti JSC InfoTeKS na základě národního standardu Ruské federace GOST R 34.11-2012 a uvedeno v platnost 1. června 2019 příkazem Rosstandart č. 1060-st ze dne 4. prosince 2018 .
Norma GOST R 34.11-2012 byla vyvinuta a zavedena jako náhrada za zastaralou normu GOST R 34.11-94 :
Potřeba vývoje <...> je způsobena potřebou vytvořit hashovací funkci, která splňuje moderní požadavky na šifrovací sílu a požadavky normy GOST R 34.10-2012 pro elektronický digitální podpis .
— Text normy. Úvod.Místo oficiálního názvu standardu se často používá název hashovací funkce - " Stribog ", podle jména slovanského božstva, i když to není v jeho textu výslovně uvedeno (viz níže ).
V souladu s požadavky vyjádřenými na konferenci RusCrypto-2010 v práci na nové hashovací funkci [2] :
Ve stejné práci jsou zavedeny „univerzální“ požadavky týkající se složitosti útoků na hashovací funkci:
Úkol | Složitost |
stavba prototypu | 2n _ |
budování kolize | 2n/ 2 |
konstrukce druhého prototypu | 2 n /(délka zprávy) |
prodloužení prototypu | 2n _ |
V hashovací funkci je důležitým prvkem kompresní funkce. V GOST R 34.11-2012 je funkce komprese založena na designu Miaguchi-Prenel . Schéma Miaguchi-Prenelova návrhu: h, m - vektory vstup do kompresní funkce; g(h, m) je výsledkem kompresní funkce; E je bloková šifra s délkou bloku a klíče 512 bitů. Šifra XSPL je v hašovací funkci GOST R 34.11-2012 brána jako bloková šifra. Tato šifra se skládá z následujících transformací:
Transformace použité v nové hashovací funkci by měly být dobře pochopeny. Proto bloková šifra E používá transformace X, S, P, L, které jsou dobře prostudované.
Důležitým parametrem blokové šifry je způsob výběru klíče, který se má použít v každém kole. V blokové šifře používané v GOST R 34.11-2012 jsou klíče , , ... , pro každé ze 13 kol generovány pomocí samotné šifrovací funkce.
, , … , jsou iterační konstanty, které jsou 512 bitovými vektory. Jejich význam je uveden v příslušné části normy.
Hašovací funkce je založena na Merkle-Damgorově iterativní konstrukci využívající MD zesílení. Amplifikace MD je chápána jako přidání neúplného bloku při výpočtu hašovací funkce k úplnému přidáním vektoru (0 ... 01) takové délky, že se získá úplný blok. Mezi další prvky je třeba poznamenat následující:
Výše popsaná řešení vám umožňují čelit mnoha známým útokům.
Stručný popis hashovací funkce GOST R 34.11-2012 lze uvést následovně. Vstupem hashovací funkce je zpráva libovolné velikosti. Dále je zpráva rozdělena na bloky po 512 bitech, pokud velikost zprávy není násobkem 512, tak je doplněna o požadovaný počet bitů. Poté je iterativně použita kompresní funkce, v důsledku čehož se aktualizuje vnitřní stav hašovací funkce . Vypočítá se také kontrolní součet bloku a počet zpracovaných bitů . Po zpracování všech bloků původní zprávy se provedou další dva výpočty, které dokončí výpočet hashovací funkce:
V práci Alexandra Kazimirova a Valentiny Kazimirové [5] je uvedena grafická ilustrace výpočtu hašovací funkce.
Kryptoanalýza starého standardu odhalila některé jeho slabiny z teoretického hlediska. V jednom z článků [6] věnovaných kryptoanalýze GOST R 34.11-94 bylo tedy zjištěno, že složitost algoritmu konstrukce předobrazu se odhaduje na 2192 výpočtů kompresních funkcí, kolize 2105 , což je méně než "univerzální" odhady, které se pro GOST R 34.11-94 rovna 2256 a 2128 . Ačkoli od roku 2013 neexistuje velké množství prací věnovaných kryptografické síle nové hashovací funkce, na základě návrhu nové hashovací funkce můžeme vyvodit určité závěry o její kryptografické síle a předpokládat , že jeho kryptografická odolnost bude vyšší než u GOST R 34.11-94:
V roce 2013 publikoval web „Cryptology ePrint Archive: Listing for 2013“ dva články o kryptoanalýze nové hashovací funkce. Článek "Rebound attack on Stribog" [7] zkoumá robustnost hashovací funkce proti útoku zvanému "The Rebound attack"; tento útok je založen na „rotační kryptoanalýze“ a diferenciální kryptoanalýze . Při hledání zranitelností použili kryptoanalytici metodu zvanou „volný start“. To znamená, že při výpočtu hash kódu je zafixován určitý stav hash funkce a další výpočty mohou směřovat jak k výpočtu hash kódu, tak k výpočtu zprávy. Kryptanalytikům se podařilo dosáhnout srážky v 5 kolech a byla získána takzvaná „blízká srážka“ (to znamená, že byly nalezeny dvě zprávy, jejichž hash kódy se liší v malém počtu bitů) za použití 7,75 kol. Bylo také zjištěno, že schéma, podle kterého jsou klávesy vybírány pro každé kolo, dodává kompresní funkci stabilitu. Ukázalo se však, že srážka je možná za 7,75 ran a „skoro srážka“ za 8,75 a 9,75.
Článek "Integrální rozlišovací znaky pro Stribog s omezeným počtem kol" [8] pojednává o zabezpečení hašovací funkce (se sníženým počtem kol) proti integrální kryptoanalýze . Autorům se při studiu kompresní funkce podařilo najít diferenciál ve 4 kolech při výpočtu v dopředném směru a ve 3,5 kolech při výpočtu v opačném směru. Bylo také zjištěno, že diferenciální útok na hashovací funkci s koly 6 a 7 vyžaduje 264 a 2120 průměrných kol .
Pro studium kryptografické síly nové hashovací funkce oznámila společnost InfoTeKS v listopadu 2013 zahájení soutěže [9] ; skončila v květnu 2015 [10] . Vítězem se stal The Usage of Counter Revisited: Second-Preimage Attack on New Russian Standardized Hash Function, ve kterém autoři představili útok na nalezení druhého předobrazu pro hashovací funkci Stribog-512, který vyžaduje 2 266 volání kompresní funkce pro zprávy delší. než 2 259 bloků [11] .
Na konferenci Crypto-2015 představili Alex Biryukov , Leo Perrin a Alexey Udovenko zprávu, která uvádí, že hodnoty bloku S šifry Grasshopper a hashovací funkce Stribog nejsou (pseudo) náhodná čísla, ale jsou generovány na základě na skrytém algoritmu, který se reproduktorům podařilo obnovit pomocí metod reverzního inženýrství [12] [13] .
Dne 29. ledna 2019 byla publikována studie „Příčky v S-Boxu Streebog a Kuznyechik“ [14] , která vyvrací tvrzení autorů o náhodné volbě parametrů pro náhradní tabulky v algoritmech Stribog a Kuznyechik [15]. .
Stránka věnovaná VI mezinárodní konferenci „Parallel Computing and Control Problems“ (PACO'2012) představuje článek P. A. Lebedeva „Porovnání starých a nových ruských standardů pro kryptografickou hashovací funkci na CPU a GPU NVIDIA“, ve kterém je srovnání o výkonu rodiny kryptografických hashovacích funkcí GOST R 34.11-94 a GOST R 34.11-2012 na procesorech architektury x86_64 a grafických kartách NVIDIA podporujících technologii CUDA [16] .
Pro porovnání výkonu na procesoru x86_64 byly použity 4 různé implementace hašovacích funkcí:
Byl použit procesor Intel Core i7-920 na základní frekvenci 2,67 GHz. Výsledky výkonu:
GOST R 34.11-1994 | GOST R 34.11-2012 | |||
---|---|---|---|---|
Provedení č. | MB/s | Hodiny/bajt | MB/s | Hodiny/bajt |
jeden | osmnáct | 143 | - | - |
2 | 49 | 52 | - | - |
3 | - | - | 38 | 67 |
čtyři | 64 | 40 | 94 | 27 |
Porovnání rychlosti starého a nového standardu hashovacích funkcí na GPU bylo provedeno mezi implementacemi P. A. Lebedeva. Použita grafická karta NVIDIA GTX 580. Výsledky výkonu (8192 16 KB datových toků):
GOST R 34.11-1994 | GOST R 34.11-2012 | ||
---|---|---|---|
MB/s | Hodiny/bajt | MB/s | Hodiny/bajt |
1697 | - | 608 | - |
Na základě těchto výsledků se dochází k závěru, že hašovací funkce GOST R 34.11-2012 může být dvakrát rychlejší než hašovací funkce GOST R 34.11-94 na moderních procesorech, ale pomalejší na grafických kartách a systémech s omezenými zdroji.
Tyto výkonnostní výsledky lze vysvětlit tím, že výpočet nové hashovací funkce používá pouze modulo 2 sčítání a instrukce pro přenos dat. Stará hašovací funkce obsahuje mnoho instrukcí pro náhodné přehrávání, které se špatně mapují do instrukční sady CPU. Ale větší velikost stavů a substitučních tabulek hašovací funkce GOST R 34.11-2012 ji zpomaluje na vysoce paralelních výpočetních zařízeních, jako jsou GPU.
Také studii výkonu nové hashovací funkce provedli její vývojáři na 64bitovém procesoru Intel Xeon E5335 2 GHz. Bylo použito jedno jádro. Výkon hašovací funkce GOST R 34.11-2012 byl 51 cyklů procesoru na 1 bajt hašovaných dat (přibližně 40 MB/s). Získaný výsledek je o 20 % lepší než stará hashovací funkce GOST R 34.11-94.
Na konci textu normy jsou uvedeny příklady výpočtu hash krok za krokem pro několik počátečních hodnot. Jednou z těchto hodnot je hexadecimální číslo M2 o délce 576 bitů (72 bajtů) z příkladu 2:
fbe2e5f0eee3c820fbeafaebef20fffbf0e1e0f0f520e0ed20e8ece0ebe5f0f2f120fff0
eeec20f120faf2fee5e2202ce8e8f6f3edee20e8e8e6edee20e8e
Na počítači x86 je pořadí bajtů od nejnižší k nejvyšší a podobné číslo v paměti bude reprezentováno v „převrácené“ podobě. Pokud toto pole bajtů převedete na text v kódování Windows-1251 , získáte mírně upravený řádek z Wordu o Igorově kampani :
Tyto větry, Stribozhovi vnoučata, vanou z moře šípy na Igorova statečná trhnutí
V reakci na kritický článek „Watch your Constants: Malicious Streebog“ [18] , výbor TK26 vydal poznámku „O algoritmu pro generování konstant pro hashovací funkci Stribog“ [19] [20] , která vysvětluje, že zaokrouhlené klíčové konstanty byly vytvořeny jako transformace vstupních řetězců pomocí hashovací funkce podobné Stribog. Pokud jsou tyto vstupní řetězce převedeny na text v kódování Windows-1251 , získají se jména autorů normy:
C i = H init (M) | M (v hexadecimálním zápisu) | M cp1251 (řetězec ve Windows-1251 ) |
C1 _ | e2e5ede1e5f0c3 | Grebněv |
C2 _ | f7e8e2eef0e8ece8e4e0ebc220e9e5e3f0e5d1 | Sergej Vladimirovič |
C3 _ | f5f3ecc4 | Fuj |
C4 _ | f7e8e2eef0e4ede0f1eae5ebc020e9e5f0e4edc0 | Andrej Alexandrovič |
C5 _ | ede8e3fbc4 | Dygin |
C6 _ | f7e8e2eeebe9e0f5e8cc20f1e8ede5c4 | Denis Michajlovič |
C7 _ | ede8f5fef2e0cc | Matyukhin |
C 8 | f7e8e2eef0eef2eae8c220e9e8f0f2e8ecc4 | Dmitrij Viktorovič |
C9 _ | e9eeeaf1e4f3d0 | Rudskoy |
C 10 | f7e8e2e5f0eee3c820f0e8ece8e4e0ebc2 | Vladimír Igorevič |
C 11 | ede8eaf8e8d8 | Shishkin |
C 12 | f7e8e2e5e5f1eae5ebc020e9e8ebe8f1e0c2 | Vasilij Alekseevič |
Hashovací funkce | |
---|---|
obecný účel | |
Kryptografický | |
Funkce generování klíčů | |
Kontrolní číslo ( srovnání ) | |
Hashe |
|