NUSH

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 10. června 2016; kontroly vyžadují 12 úprav .
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.

Popis algoritmu

Šifrování

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

Dešifrování

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

Komentáře

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á.

Snadná implementace

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".

Možnosti

Konstanty a

Délka N bloku je 64 bitů

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
Bloky jsou dlouhé 128 bitů

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íčový plán

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 bitech

Klíč K je rozdělen do 8 slov

Bloky ve 128 bitech a 256 bitech

Klá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.

Operační plán #

# 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:

Výkon

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

Zabezpečení

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.

Algoritmus kryptoanalýzy

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:

  • pro každý „klíč“ spočítáme počet otevřených textů, které vyhovují nalezenému poměru;
  • najít maximum z nich;
  • najdeme zbývající bity klíče: buď podobným způsobem, nalezením poměrů, nebo výčtem.

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é.

Další algoritmy založené na NUSH

Na základě NUSH lze sestavit další algoritmy. Zejména:

Hashovací funkce

Před zahájením hašování se text prodlouží:

  • Přidejte 1 bit k textu
  • Přidejte tolik nul, abyste vytvořili text s délkou, která je násobkem N (tyto dva kroky lze vynechat, pokud je původní délka textu již násobkem N)
  • Přiřaďte N-bitovou reprezentaci počáteční délky LEN (v bitech) textu
  • Přiřaďte výsledek bitového XOR mezi všechny N-bitové bloky textu získaného v předchozím kroku

Funkce používá následující proměnné:

  •  — rozšířený text prezentovaný jako bloky délky N.
  • , -registry délky N, skládající se ze 4 n-bitových slov
  • b - registry délky 4N, skládající se z 15 n-bitových slov /

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

Ověřovací kód zprávy

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.

Synchronní proudová šifra "NUSH Stream"

Nechť SYNC je známý binární vektor délky LENGTH. Existují dvě verze této šifry.

Možnost 1

Nechť 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 2

Zde 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

}

Asymetrické šifrování

Výběr možností

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í
  • Náhodný
  • Vypočteno
  • , kde |x|=x, pokud x<P a |x|=xP jinak
  • , M je původní zpráva

Výstup: c||e

Dešifrování

Elektronický digitální podpis

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íč
  • čísla P a Q
  • g je generátor podskupiny řádu Q
  • , kde x je soukromý klíč.
Soukromý klíč

Jakékoli číslo . V ideálním případě se volí s rovnoměrným rozložením.

Podepisování
  • Pro náhodný výpočet
  •  - řetězec o délce m bitů (v případě potřeby zahodíme spodní bity hash hodnoty) (připomeňme, že m je polovina délky čísla Q). Náhodou se může stát, že d=0. V tomto případě musíte znovu vybrat náhodné r a provést všechny výpočty.
  • podpis obsahuje pár m bitů dae.
Ověření podpisu

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.

Autentizační schémata

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:

  • A vygeneruje náhodné číslo a odešle ho straně B
  • B odešle náhodné číslo . Čím vyšší t, tím vyšší spolehlivost systému.
  • A to vypočítá a odešle straně B
  • Ověření se považuje za úspěšné, pokud

Poznámky

Odkazy