NUSH | |
---|---|
Tvůrce | Anatolij Lebeděv , Alexej Volčkov |
Vytvořeno | 1999 _ |
zveřejněno | 2000 _ |
Velikost klíče | 128, 192, 256 bitů |
Velikost bloku | 64, 128, 256 bitů |
Počet kol | 36, 68, 132 |
NUSH ("Náš") je blokově symetrický šifrovací algoritmus vyvinutý Anatolijem Lebeděvem a Alexejem Volčkovem pro ruskou společnost LAN Crypto.
NUSH má několik různých variant, které mají různé velikosti bloků (64, 128, 256 bitů), různý počet kol (36, 128 nebo 132 kol v závislosti na velikosti bloku) a používají délku klíče 128, 192 nebo 256 bitů. Algoritmus nepoužívá S-boxy, ale pouze operace jako AND, OR, XOR, modulo sčítání a cyklické posuny. Před prvním a po posledním kole se provede „vybělení“ klíče.
Tento algoritmus byl navržen v projektu NESSIE , ale nebyl vybrán, protože se ukázalo, že lineární kryptoanalýza může být účinnější než útok hrubou silou.
Na základě šifrovacího algoritmu lze sestavit další algoritmy. Několik z nich je uvedeno v tomto článku.
Zavedeme notaci. Dovolit je délka zašifrovaného bloku otevřeného textu . (spouštěcí klíč) - vybráno podle nějakého plánu založeného na klíči K. Bitově přidáno do zdrojového textu: Poté dojde k r-1 kol, daných následujícími rovnicemi, ve kterých (Round subKey) - round subkeys, # - bitová konjunkce nebo disjunkce , je vybrána podle plánu, , jsou známé konstanty, >>>j je cyklický posun doprava o j bitů:
pro i=1…(r-1)
Poslední iterace se od hlavních liší pouze absencí permutace po vyhodnocení výrazů na pravé straně rovnosti:
Výstup: zašifrovaný blok
Podle obecného vzorce pro invertování součinu operátorů je také konstruována dešifrovací procedura.
Provede se jedna iterace dešifrování:
( - délka , můžete provést cyklický posun doleva o )
Poté se hlavní dešifrovací cyklus, sestávající z iterací, také výrazně neliší od předchozího:
pro i=r-1…1
Některé zdroje se domnívají, že postup šifrování sestává ze 4krát méně kol, sestávajících ze 4 iterací výše uvedeného typu (bez počátečního a konečného přidání modulo 2). Sami autoři šifry tedy napsali svůj algoritmus takto:
kde - odpovídající konstanta je přidána do iteračního klíče
Algoritmy jsou podobné, protože operace „+“ je definována autory odděleně od hlavního popisu metody šifrování. Je třeba poznamenat, že plán operací „+“ lze změnit výběrem vratných binárních operací s vektory délky . Nelineární operace běžného sčítání s ignorováním přetečení má zkomplikovat lineární kryptoanalýzu. A operace XOR pomáhá vyhnout se diferenciální kryptoanalýze . V následujícím se budeme zabývat prvním popisem algoritmu uvedeným v článku čínských matematiků, kteří provedli lineární kryptoanalýzu algoritmu.
Volba operací "+" byla provedena na základě výsledků výzkumu paralelizace výpočtů na procesorech typu Pentium. Volba změny pořadí registrů a, b, c, d z kola na kolo urychluje výskyt difúze a zmatku. Základní operace (XOR, modulo add , OR, AND) a jejich pořadí urychlují provádění algoritmu implementovaného v C na většině platforem a implementace algoritmu v assembleru je poměrně krátká.
Z výše uvedeného popisu je zřejmé, že pro implementaci algoritmu je nutné:
Současně neexistují žádné substituční tabulky, které jsou přítomny například v GOST, a kolo se skládá ze 6 operací. Skutečnost, že posun je prováděn o předem známou hodnotu, která nezávisí ani na otevřeném textu, ani na klíči, značně zjednodušuje implementaci algoritmu na mikroobvody. Jednoduchost algoritmu umožňuje snadno zkontrolovat, že v konkrétní implementaci neexistují žádná takzvaná "zadní vrátka".
Hraje se 36 kol
i | i | i | i | ||||
---|---|---|---|---|---|---|---|
0 | ac25 | 9 | 6a29 | osmnáct | 96 da | 27 | d25e |
jeden | 8a93 | deset | 6d84 | 19 | 905f | 28 | a926 |
2 | 243d | jedenáct | 34bd | dvacet | d631 | 29 | 1c7b |
3 | 262e | 12 | a267 | 21 | aa62 | třicet | 5f12 |
čtyři | f887 | 13 | cc15 | 22 | 4d15 | 31 | 4 ecc |
5 | c4f2 | čtrnáct | 04fe | 23 | 70 cb | 32 | 3c86 |
6 | 8e36 | patnáct | b94a | 24 | 7533 | 33 | 28 dB |
7 | 9fa1 | 16 | df24 | 25 | 45fc | 34 | fc01 |
osm | 7dc0 | 17 | 40ef | 26 | 5337 | 35 | 7cb1 |
i | i | i | i | ||||
---|---|---|---|---|---|---|---|
0 | čtyři | 9 | 2 | osmnáct | 5 | 27 | 13 |
jeden | 7 | deset | 9 | 19 | jeden | 28 | 12 |
2 | jedenáct | jedenáct | čtyři | dvacet | 2 | 29 | 3 |
3 | osm | 12 | 13 | 21 | čtyři | třicet | 6 |
čtyři | 7 | 13 | jeden | 22 | 12 | 31 | jedenáct |
5 | čtrnáct | čtrnáct | čtrnáct | 23 | 3 | 32 | 7 |
6 | 5 | patnáct | 6 | 24 | 9 | 33 | patnáct |
7 | čtyři | 16 | 7 | 25 | 2 | 34 | čtyři |
osm | osm | 17 | 12 | 26 | jedenáct | 35 | čtrnáct |
Při délce bloku 128 bitů se hraje 68 kol. Proto 68 32bitových konstant a 68 .
Délka bloku 256 bitůPři délce bloku 256 bitů se hraje 132 kol. Proto 132 64bitové konstanty a 132 .
Klíč je reprezentován jako zřetězení N/4bitových slov. KS a KF jsou nastaveny libovolně a všechny
128bitový klíč Blok v 64 bitechKlíč K je rozdělen do 8 slov
Bloky ve 128 bitech a 256 bitechKlávesa K je rozdělena na 4 a 2 slova, takže kulaté klávesy se opakují s tečkou 4 nebo 2. V druhém případě jsou mezi KS a KF stejné.
192bitový klíčV závislosti na délce bloku je klávesa rozdělena na 12, 6 a 3 n-bitové části, což určuje periodu opakování kulatých kláves.
256bitový klíčZde je klíčem sjednocení 16, 8 nebo 4 binárních slov.
já | # | i | # | i | # | i | # |
---|---|---|---|---|---|---|---|
0 | A | 16 | NEBO | 32 | NEBO | 48 | A |
jeden | NEBO | 17 | NEBO | 33 | NEBO | 49 | A |
2 | A | osmnáct | A | 34 | A | padesáti | A |
3 | NEBO | 19 | A | 35 | NEBO | 51 | A |
čtyři | NEBO | dvacet | A | 36 | NEBO | 52 | A |
5 | NEBO | 21 | A | 37 | A | 53 | A |
6 | NEBO | 22 | A | 38 | NEBO | 54 | NEBO |
7 | NEBO | 23 | NEBO | 39 | A | 55 | A |
osm | A | 24 | A | 40 | NEBO | 56 | NEBO |
9 | NEBO | 25 | NEBO | 41 | A | 57 | NEBO |
deset | NEBO | 26 | NEBO | 42 | A | 58 | NEBO |
jedenáct | A | 27 | NEBO | 43 | NEBO | 59 | A |
12 | NEBO | 28 | A | 44 | NEBO | 60 | A |
13 | A | 29 | NEBO | 45 | A | 61 | A |
čtrnáct | NEBO | třicet | A | 46 | A | 62 | NEBO |
patnáct | NEBO | 31 | A | 47 | A | 63 | NEBO |
Pro další iterace se vše opakuje:
Algoritmus neobsahuje operace s bitovou složitostí vyšší než , kde je bitová délka modulu nebo operandů (například součin modulo, nalezení inverzního (násobením) prvku nebo největšího společného dělitele má bitovou složitost a umocňování má bit složitost ). Proto je přirozené očekávat vysokou rychlost algoritmu. Autoři poskytují následující údaje:
Velikost bloku, bit | C program | Montážní program | ||
---|---|---|---|---|
Hodiny na blok | Hodiny na byte | Hodiny na blok | Hodiny na byte | |
64 | 180 | 23 | 130 | 17 |
128 | 340 | 22 | 250 | 16 |
Hlavním důvodem eliminace algoritmu NUSH v soutěži NESSIE byla zranitelnost algoritmu vůči lineární kryptoanalýze, kterou zjistili Wu Wenling a Feng Dengo.
Ve svém článku „Lineární kryptoanalýza blokové šifry NUSH“ používají koncept složitosti útoku , kde charakterizuje potřebu paměti a - množství výpočtů.
Pro N=64 a N=128 bitů jsou navrženy 3 typy útoků a pro N=256 - dva. Složitost odpovídajících útoků:
Délka bloku, bit | Délka klíče, bit | |
---|---|---|
64 | 128 | |
192 | ||
256 | ||
128 | 128 | |
192 | ||
256 | ||
256 | 128 | |
192 | ||
256 |
V některých případech je verze se 192bitovým klíčem výrazně bezpečnější než verze s delším klíčem. Můžete si také všimnout, že existují případy, kdy je složitost útoků šifry s nejmenší délkou klíče a největšího klíče téměř stejná. Navíc zvětšení délky klíče neovlivňuje složitost útoku tak, jak bychom si přáli.
Existují tedy útoky na šifru NUSH, které jsou účinnější než hrubá síla. Existuje tedy možnost, že se tyto útoky zlepší nebo že počítačová technika dosáhne úrovně dostatečné k prolomení šifry v rozumném čase.
Jako příklad uvažujme druhý útok na šifru s délkou bloku N=64 bitů. Kryptoanalýza je založena na konstrukci závislostí mezi bity klíče, originálu a šifrového textu, platných s pravděpodobností odlišnou od 1/2. Tyto vztahy jsou postaveny na základě rovnice, která platí s pravděpodobností 3/4
,
Tuto rovnici lze zkontrolovat pomocí popisu algoritmu as přihlédnutím k tomu, že pro poslední (nejnižší) bit se operace „+“ a shodují. Opravdu, máme vztah . Přičtením obou částí rovnice poměr dostaneme požadovaný.
Vzhledem ke konkrétním hodnotám lze dále ukázat, že nezávisí na všech bitech klíče a otevřeného textu, konkrétně:
S ohledem na první 4 kola dešifrování lze konstatovat, že .
Použití lemmatu Piling-up s pravděpodobností . Získali jsme spojení mezi klíčovými bity a prostými a šifrovými texty.
Z plánu klíčů lze získat, že pokud je délka klíče 128 nebo 256 bitů, pak , pokud se klíč skládá ze 192 bitů, pak . Z těchto dat odhadneme časovou složitost útoku danou následujícím algoritmem:
Složitost z hlediska množství uložených informací se odhaduje jako . Tolik párů otevřeného šifrovaného textu by měl mít kryptoanalytik. Texty přitom nejsou v žádném případě libovolné. Z výše uvedených vztahů je vidět, že nejsou závislé na všech bitech vstupních a výstupních bloků. Podle toho mezi vzorky bloků otevřeného textu a šifrovaného textu musí být bloky s různými odpovídajícími bity. Operace algoritmu s menším počtem známých textů je možná, ale pak je méně pravděpodobné, že „maximální“ počet nalezený ve druhé fázi bude skutečně odpovídat skutečnému klíči s ohledem na nepřekročení kořene rozptylu. počtu událostí „rovnice je splněna“ na podložce. očekávání rozdílu v číslech této události a jejího opaku (můžete uvažovat Bernoulliho schéma, kde pravděpodobnost „úspěchu“ se rovná pravděpodobnosti naplnění poměru).
Jiné útoky navrhované ve stejném článku se liší v analýze v poslední fázi vztahů pro další kola a nejsou nezávislé.
Na základě NUSH lze sestavit další algoritmy. Zejména:
Před zahájením hašování se text prodlouží:
Funkce používá následující proměnné:
Počáteční hodnoty: , , kde jsou konstanty, které se přidávají ke klíči KR během šifrování, KS=KF=KR=0
Pro i = 0 až l-1
{
Pro j=0 až L/2-1 //L je počet kol pro odpovídající typ NUSH { } H = NUSH(V) //Operace šifrování Pro j=15 až 4 Pro j=15 až 4}
Pro i= 0 až 3
{
Pro j=0 až L/2-1 H = NUSH( ) Pro j=15 až 4}
Hodnota hash délky t*n (t<16) bitů — prvních t n-bitových slov registru T
Na základě hashovací funkce lze sestavit proceduru ověřování zpráv. Od předchozího algoritmu se liší pouze použitím nenulového klíče.
Nechť SYNC je známý binární vektor délky LENGTH. Existují dvě verze této šifry.
Možnost 1Nechť N = LENGTH je délka bloku použitého v šifrování NUSH (DÉLKA = 64, 128, 256) Nechť je vektor COUNT N-bitových slov, která budou přidána k otevřenému textu a šifrovanému textu pro šifrování a dešifrování.
Pro i =0 až COUNT −1
{
SYNC=(SYNC+65257)mod}
Možnost 2Zde N=DÉLKA / 2, kde DÉLKA = 128, 256, 512. Nechť je vektor délky N, SYNC=[SYNC_0SYNC_1] je vektor délky 2N T je dočasný registr délky N=4n, , , , jsou odpovídající konstanty algoritmu NUSH.
Provedené výpočty:
SYNC[0] = SYNC[0] ^ NUSH(SYNC[0])
SYNC[1] = SYNC[1] ^ NUSH(SYNC[1]) T=SYNC[1]
Pro i =0 až COUNT −1
{
T = (T + 127)mod}
Je představena specifická skupina G s operací definovanou autory algoritmu založeného na Montgomeryho násobení.
Násobení Montgomery . Zvolíme prvočíslo P o délce n bitů, číslo Pro dvě celá čísla A a B bude Montgomeryho součin číslo: , kde . Dělení pomocí znamená ignorování nižších N bitů čísla. Skupinový provoz:
vypočteno s N=n. A a B jsou považovány za stejné, pokud se liší buď o P nebo o 0. Získá se Abelova multiplikativní grupa G. Mezi G a redukovaným systémem zbytků modulo P lze sestavit izomorfismus:
Skupina je konstruována pomocí prvočísla P, které je také prvočíslo.
Kryptografická síla algoritmu je zajištěna složitostí problému diskrétního logaritmu. Složitost hackování se odhaduje jako . V této skupině je vybrán generátor a. Soukromý klíč: náhodné celé číslo x rovnoměrně rozložené na segmentu [0, P-2]. Veřejný klíč: prvek skupiny G .
ŠifrováníVýstup: c||e
DešifrováníTento algoritmus je založen na dříve popsané hashovací funkci. Nechť Q je prvočíslo o délce 2m bitů, které je dělitelem čísla P-1. Operací budeme rozumět již dříve představenou operaci , kde je Q použito jako prvočíslo.
Veřejný klíčJakékoli číslo . V ideálním případě se volí s rovnoměrným rozložením.
PodepisováníPodpis je považován za správný, pokud předložím důkaz o správnosti schématu. Je zřejmé, že správnost algoritmu je ekvivalentní správnosti rovnosti .
Výslednou rovnost lze přepsat jako mocniny generátoru g podgrupy H takto: . z definice. kde . Operace je lineární ve druhém argumentu až do převzetí rovnosti modulo Q. Opravdu, . Proto, . Z toho plyne dokazovaná rovnost, protože řád prvku g je roven Q.
Proces ověřování je podobný schématu digitálního podpisu. Veřejný a soukromý klíč se volí úplně stejným způsobem. Soukromý klíč si ponechá ten, kdo chce prokázat svou "totožnost" (ať je to strana A). Proces ověřování má čtyři fáze:
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |