Lavinový efekt je koncept v kryptografii , obvykle se používá pro blokové šifry a kryptografické hashovací funkce . Důležitá kryptografická vlastnost pro šifrování, což znamená, že změna hodnoty malého počtu bitů ve vstupním textu nebo v klíči vede k „lavinové“ změně hodnot výstupních bitů šifrovaného textu. Jinými slovy, je to závislost všech výstupních bitů na každém vstupním bitu.
Termín „lavinový efekt“ poprvé představil Feistel v článku Cryptography and Computer Privacy , publikovaném v Scientific American v květnu 1973 [1] , ačkoli tento koncept byl používán již v Shannonovi .
V algoritmech s více průchody je lavinový efekt obvykle dosažen díky skutečnosti, že při každém průchodu změna jednoho vstupního bitu vede ke změně několika výstupních bitů [2] .
Pokud kryptografický algoritmus nemá dostatečný lavinový efekt, může kryptoanalytik odhadnout vstupní informace na základě výstupních informací. Dosažení lavinového efektu je tedy důležitým cílem při vývoji kryptografického algoritmu [3] .
Aby bylo možné ověřit dobrý lavinový efekt v konkrétním algoritmu, používá se několik kritérií [4] :
Kryptografický algoritmus splňuje lavinové kritérium, pokud změna jednoho bitu vstupní sekvence změní v průměru polovinu výstupních bitů.
Formálně lze funkci definovat takto:
Funkce splňuje lavinové kritérium, pokud změna jednoho vstupního bitu způsobí průměrnou změnu poloviny výstupních bitů [4] .
Definici kritéria Severe Avalanche (SLC) poprvé uvedli C. Tavares a A. Webster ve své výzkumné a designové práci S-boxu .
Booleovskou funkci lze považovat za součást struktury S-boxu. Design S-boxů založených na booleovských funkcích vyhovujících SLK studovali Adams a C. Tavares, Kwangio Kim . Od roku 1990 je SLC studována v kontextu booleovských funkcí [5] .
DefiniceBooleovská funkce , kde je vektor proměnných, splňuje SLC, pokud při změně jednoho ze vstupních bitů se výstupní bit změní s pravděpodobností přesně .
PříkladPříklad booleovské funkce tří proměnných, která splňuje SLC [5] :
Vstupní bity | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
---|---|---|---|---|---|---|---|---|
výstupní bit | jeden | jeden | jeden | 0 | 0 | jeden | jeden | jeden |
Říká se, že kryptografický algoritmus splňuje přísné lavinové kritérium [6] , pokud se při změně jednoho bitu vstupní sekvence změní každý bit výstupní sekvence s pravděpodobností jedné sekundy.
C. Tavares a A. Webster ve své práci na studiu a popisu S-boxů definovali další kritérium pro booleovskou funkci , nazvané kritérium bitové nezávislosti , podle kterého, když se změní jeden vstupní bit, jakýkoli dva výstupní bity se mění nezávisle na sobě od přítele.
DefiniceFunkce splňuje kritérium nezávislosti bitů , pokud pro any , kde převrácení bitu na vstupu způsobí změny bitu a , a tyto změny jsou nezávislé. Pro měření nezávislosti dvou výstupních bitů je zaveden korelační koeficient mezi -tou a -tou složkou výstupního vektoru pro upravený výstupní vektor, který se nazývá lavinový vektor a je označen jako .
.Parametr bitové nezávislosti pro funkci se nachází takto:
.Tento parametr ukazuje, jak dobře funkce splňuje kritérium bitové nezávislosti . Nabývá hodnot v intervalu a v lepším případě je roven 0 a můžeme mluvit o nezávislosti, v horším případě 1, když existuje závislost [4] .
Říká se, že kryptografický algoritmus splňuje kritérium bitové nezávislosti , pokud se při změně kteréhokoli vstupního bitu změní nezávisle jakékoli dva výstupní bity.
Nechybí ani zaručený lavinový efekt objednávky .
Garantované lavinové kritérium ( GAC ) řádu je splněno , pokud změna jednoho bitu na vstupu substitučního uzlu změní alespoň výstupní bity na výstupu. Implementace řádu GAC v rozsahu od 2 do 5 pro substituční uzly poskytuje jakékoli šifře velmi vysoký lavinový efekt díky šíření změn v bitech při průchodu dat šifrovacími koly ve schématu Feistel [7] .
Shannon představil koncepty zmatku a šíření jako metody, které komplikují statistickou kryptoanalýzu . Podle Shannona:
Difúze je metoda, při které je redundance ve statistice vstupních dat „distribuována“ ve struktuře výstupních dat. Zároveň jsou pro statistickou analýzu potřeba velké objemy výstupních dat, struktura zdrojového textu je skrytá. Implementováno pomocí P-boxů , jinými slovy, každý bit otevřeného textu musí ovlivnit každý bit šifrovaného textu. Rozložení jednoho nezašifrovaného bitu na velký počet zašifrovaných bitů zatemňuje statistickou strukturu prostého textu. Určení, jak statistické charakteristiky šifrovaného textu závisí na statistických charakteristikách otevřeného textu, by nemělo být snadné.
Zmatek je metoda, při které je závislost klíče a výstupních dat co nejkomplexnější, zejména nelineární. V tomto případě je obtížnější dělat závěry o klíči z výstupních dat, stejně jako o původních datech, pokud je část klíče známa. Implementováno pomocí S-bloků .
Lavinový efekt je důsledkem dobrého zmatení a difúze [8] .
V DES má lavinový efekt charakter přísného lavinového efektu a projevuje se již ve čtvrtém nebo pátém kole [3] , odhadem pro každou operaci (za předpokladu, že do začátku kola se rozšířil vliv jednoho původně zvoleného bitu na bity na pravé a levé straně):
Po rozšíření:
Za předpokladu náhodných zásahů v 8 S-boxech podle alokačního problému budou bity spadat do: S-boxů.
Jedním z požadavků NSA na S-boxy bylo, že změna každého bitu na vstupu změní 2 bity na výstupu. Budeme předpokládat, že každý vstupní bit S-boxu ovlivňuje všechny 4 výstupní bity. Stane se závislým: bits.
Po bitovém přidání levé a pravé části :
Tabulka vlivu 1 bitové levé strany v DESKolo | ||||
---|---|---|---|---|
Rozšíření |
S-bloky |
|||
0 | jeden | 0 | 0 | 0 |
jeden | 0 | 0 | 0 | (0, 1) 1 |
2 | jeden | 1 → 1.5 | 1.5 → 5.5 | (5,5, 0) → 5,5 |
3 | 5.5 | 5.5 → 8.3 | 8.2 → 20.5 | (20.5, 1) → 20.9 |
čtyři | 20.9 | 20.9 → 31.3 | 31,3 → 32 | (32, 20.9) → 32 |
5 | 32 | 32 | 32 | 32 |
Abyste dosáhli maximálního lavinového efektu, musíte pečlivě vybrat rozšíření, S-boxy a také permutaci ve funkci .
Tabulka, kolik bitů se změní za koloNásledující tabulka ukazuje počet výstupních bitů změněných v každém kole za předpokladu, že se změnil jeden bit zdrojového textu a jeden bit klíče. [9]
Změny zadávání textu | Klíčové změny | ||
---|---|---|---|
Kolo | Počet bitů se změnil |
Kolo | Počet bitů se změnil |
0 | jeden | 0 | 0 |
jeden | 6 | jeden | 2 |
2 | 21 | 2 | čtrnáct |
3 | 35 | 3 | 28 |
čtyři | 39 | čtyři | 32 |
5 | 34 | 5 | třicet |
6 | 32 | 6 | 32 |
7 | 31 | 7 | 35 |
osm | 29 | osm | 34 |
9 | 42 | 9 | 40 |
deset | 44 | deset | 38 |
jedenáct | 32 | jedenáct | 31 |
12 | třicet | 12 | 33 |
13 | třicet | 13 | 28 |
čtrnáct | 26 | čtrnáct | 26 |
patnáct | 29 | patnáct | 34 |
16 | 34 | 16 | 35 |
V AES se lavinový efekt projevuje následovně: v prvním kole operace MixColumns() rozšíří změny v jednom bajtu do všech 4 bajtů sloupce, načež ve druhém kole použije ShiftRows() a MixColumns() operace šíří změny do celé tabulky. Úplné difúze je tedy dosaženo již ve druhém kole. Operace SubBytes() způsobuje zmatek.
Tabulka ukazuje číselné hodnoty lavinového efektu pro S-boxy v AES. V prvním případě se bajt "11" (v hexadecimálním zápisu) změní na "10", ve druhém případě se bajt "11" změní na "12", ve třetím - "00" na "10". V souladu s tím byl pro každý případ vypočítán koeficient lavinového účinku. Z těchto údajů jasně vidíme, že zašifrovaný výstupní text není vůbec jednoduchý, s poměrně jednoduchým vstupním textem [10] . A koeficient lavinového efektu se blíží 0,5, což znamená, že lavinové kritérium je dobře splněno.
Vstupní text | Šifrovaný text [ specifikovat ] | Lavinový efekt |
---|---|---|
11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 | 79 F8 CC 24 01 82 DD 7F 2D 89 F7 E7 78 B7 EE 30 | 0,4375 (56) |
11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 10 | 9D 4C 1D B4 6A 93 27 B5 20 64 37 D1 3D 9D 2A | |
11 22 33 66 55 44 55 44 77 88 99 66 44 45 36 12 | 4A A9 16 11 E2 8A 9F 67 35 30 1F 80 16 C5 B7 CD | 0,5153 (66) |
11 22 33 66 55 44 55 44 77 88 99 66 44 45 36 11 | D7 00 43 2D 51 78 F7 65 50 03 03 75 B1 E4 2D A0 | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | C6 A1 3B 37 87 8F 5B 82 6F 4F 81 62 A1 C8 79 | 0,4453 (57) |
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0D 19 33 06 27 42 FE 01 9C FE 06 E1 A8 1A A0 01 |
Lavinový efekt na vstupu zajišťují (4 x 4) S-boxy a cyklický posun doleva o
Tabulka šíření vlivu 1 bitu levé strany v GOST 28147-89Kolo | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
jeden | 2 | 3 | čtyři | 5 | 6 | 7 | osm | jeden | 2 | 3 | čtyři | 5 | 6 | 7 | osm | |
0 | jeden | |||||||||||||||
jeden | jeden | |||||||||||||||
2 | jeden | 3 | jeden | |||||||||||||
čtyři | 3 | čtyři | jeden | jeden | čtyři | jeden | 3 | jeden | 3 | čtyři | ||||||
5 | čtyři | jeden | 3 | jeden | 3 | čtyři | 3 | čtyři | čtyři | čtyři | čtyři | čtyři | jeden | |||
6 | 3 | čtyři | čtyři | čtyři | čtyři | čtyři | jeden | čtyři | čtyři | čtyři | čtyři | čtyři | 3 | 3 | čtyři | |
7 | čtyři | čtyři | čtyři | čtyři | čtyři | 3 | 3 | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři |
osm | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři | čtyři |
Tabulka ukazuje, že v každém kole se počet nezávislých bitů v důsledku posunu a pádu výstupu S-boxu předchozího kola na 2 S-boxy kola dalšího zvýší v průměru 4krát. Distribuce závislých bitů ve skupinách po 4 bitech na levé a pravé straně je zobrazena bez zohlednění sčítání pomocí kulatého klíče. Předpokládá se, že každý bit na vstupu S-boxu ovlivňuje všechny bity na výstupu. Počet nábojů pro dosažení plného lavinového efektu bez zohlednění sčítání pomocí klíče je 8. Experimentální ověření pro S-boxy používané Centrální bankou Ruské federace ukazuje, že je potřeba 8 nábojů .
Hodnota lavinového efektu v GOST 28147-89Pro šifrovací sílu jsou klíčovými požadavky na operace bitové konverze v šifrovacím kole nelinearita, to znamená nemožnost zvolit lineární funkci, která se tomuto převodu dobře přibližuje, a lavinový efekt – splnění těchto požadavků ztěžuje provádění lineárních a diferenciální kryptoanalýza šifry, resp. Pokud z těchto pozic vezmeme v úvahu transformační operace v šifrovacím kole podle GOST 28147-89 , pak je snadné se ujistit, že šifrovací síla je zajištěna pouze operacemi sčítání s klíčem a prováděním substituce bitů v tabulce, protože operace bitového posunu a součtu modulo 2 jsou lineární a nemají lavinový efekt. Z toho můžeme usoudit, že určujícím faktorem spolehlivosti šifrování v souladu s GOST 28147-89 je správně zvolená klíčová informace (klíč a substituční tabulka). V případě šifrování dat s nulovým klíčem a triviální substituční tabulkou, jejíž všechny uzly obsahují čísla od 0 do 15 ve vzestupném pořadí, je nalezení otevřeného textu ze známého šifrovaného textu poměrně jednoduché pomocí lineární i diferenciální kryptoanalýzy.
Jak je ukázáno v [11] , operace přidání dat s podklíčem nemůže poskytnout dostatečný lavinový efekt, protože při změně jednoho bitu na vstupu této procedury se změní pouze jeden bit na výstupu s pravděpodobností 0,5, zbývající bity měnit s mnohem menší pravděpodobností. To naznačuje, že k zajištění kryptografické síly šifrování nestačí zajistit dostatečnou kvalitu klíče – je také nutné použít silné náhradní tabulky s vysokou nelinearitou a lavinovým efektem [12] .
Příklady ukazují, jak se změní hash, když se změní jeden bit ve vstupní sekvenci.
SHA-1 :
SHA-1(0110 0001 0110 00 0 1 0110 0001 0110 00 0 1) = '70c881d4a26984ddce795f6f71817c9cf4480e79' SHA-1(0110 0001 0110 00 1 1 0110 0001 0110 00 0 1) = 'c6fdc1a445881de1f33e09cf00420a57b493b96d' SHA-1(0110 0001 0110 00 0 1 0110 0001 0110 00 1 1) = '00b25f15212ed225d3389b5f75369c82084b3a76'MD5 :
MD5(0110 0001 0110 00 0 1 0110 0001 0110 00 0 1) = '74b87337454200d4d33f80c4663dc5e5' MD5(0110 0001 0110 00 1 1 0110 0001 0110 00 0 1) = 'ca7de9e17429612452a717a44c36e688' MD5(0110 0001 0110 00 0 1 0110 0001 0110 00 1 1) = '3963a2ba65ac8eb1c6e2140460031925'Příklady ukazují, jak se změní šifrovaná zpráva, když se změní jeden bit [13] ve vstupní sekvenci nebo v klíči.
AES :
AES(klíč = "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa") = '5188c6474b228cbdd242e9125ebe1d53' AES(klíč = "aaaaaaaaaaaaaaa", "aa c aaaaaaaaaaaaa") = 'f7e5c1118f5cb86198e37ff7a29974bc' AES(klíč = "aa c aaaaaaaaaaaa", "aaaaaaaaaaaaaaaa") = '2c50b5cac9c755d67aa61b87c26248eb' AES(klíč = "aa c aaaaaaaaaaaa", "aa c aaaaaaaaaaaaa") = '87c09128de852b990b3dfbd65c7d9094'RC4 :
RC4(key = "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa") = '71ddf97f23b8e42a4f0ccc463d7da4aa' RC4(key = "aaaaaaaaaaaaaaaa", "aa c aaaaaaaaaaaaa") = '3d0feab630a32d1d0654c5481bd9ddd9' RC4(klíč = "aa c aaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa") = '476266d77453695b6cee682f23b0c51d' RC4(key = "aa c aaaaaaaaaaaaa", "aa c aaaaaaaaaaaaa") = '3139d4506185d48e9b9e3dbbd4b57ec2'Caesarova šifra neimplementuje lavinový efekt:
E(k = 3, "aaaaaaaaaaaaaaaa") = 'dddddddddddddddd' E(k = 3, "a c aaaaaaaaaaaaaaa") = 'dfdddddddddddddd'Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |
Hashovací funkce | |
---|---|
obecný účel | |
Kryptografický | |
Funkce generování klíčů | |
Kontrolní číslo ( srovnání ) | |
Hashe |
|