NUSH

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 10. juni 2016; checks kræver 12 redigeringer .
NUSH
Skaber Anatoly Lebedev , Alexey Volchkov
Oprettet 1999 _
offentliggjort 2000 _
Nøglestørrelse 128, 192, 256 bit
Blokstørrelse 64, 128, 256 bit
Antal runder 36, 68, 132

NUSH ("Vores") er en bloksymmetrisk krypteringsalgoritme udviklet af Anatoly Lebedev og Alexei Volchkov for det russiske firma LAN Crypto.

NUSH har flere forskellige varianter, der har forskellige blokstørrelser (64, 128, 256 bit), forskelligt antal runder (36, 128 eller 132 runder afhængig af blokstørrelsen) og bruger en nøglelængde på 128, 192 eller 256 bit. Algoritmen bruger ikke S-bokse, men kun operationer som AND, OR, XOR, modulo addition og cykliske skift. Før første og efter sidste runde udføres en "blegning" af nøglen.

Denne algoritme blev fremsat i NESSIE-projektet , men blev ikke valgt, fordi det blev vist, at lineær kryptoanalyse kan være mere effektiv end et brute-force-angreb.

Andre algoritmer kan bygges på basis af krypteringsalgoritmen. Flere af dem præsenteres i denne artikel.

Beskrivelse af algoritmen

Kryptering

Lad os introducere notation. Lad være  længden af ​​den krypterede klartekstblok . (startnøgle) - valgt efter et eller andet skema baseret på nøglen K. Bitvis tilføjet til kildeteksten: Derefter opstår r-1 runder, givet ved følgende ligninger, hvori (Rund undernøgle) - runde undernøgler, # - bitvise konjunktion eller disjunktion , vælges i henhold til skemaet, ,  er kendte konstanter, >>>j er et cyklisk skift til højre med j bit:

for i=1…(r-1)

Den sidste iteration adskiller sig kun fra de vigtigste ved fraværet af en permutation efter evaluering af udtrykkene på højre side af lighederne:

Output: krypteret blok

Dekryptering

Ifølge den generelle formel for invertering af produktet af operatører er der også konstrueret en dekrypteringsprocedure.

Én dekrypteringsiteration udføres:

(  -længde , du kan udføre et cyklisk skift til venstre ved at )

Derefter er den vigtigste dekrypteringscyklus, bestående af iterationer, heller ikke væsentlig forskellig fra den forrige:

for i=r-1…1

Kommentarer

Nogle kilder mener, at krypteringsproceduren består af 4 gange færre runder, bestående af 4 iterationer af ovennævnte type (uden indledende og sidste addition modulo 2). Så forfatterne af chifferen skrev selv deres algoritme som følger:

hvor - den tilsvarende konstant tilføjes  til iterationsnøglen

Algoritmerne ligner hinanden, da "+"-operationen er defineret af forfatterne separat fra hovedbeskrivelsen af ​​krypteringsmetoden. Det skal bemærkes, at skemaet for "+" operationer kan ændres ved at vælge reversible binære operationer på vektorer med længde . Den ikke-lineære operation af almindelig addition med ignorering af overløb er beregnet til at komplicere lineær kryptoanalyse. Og XOR-operationen hjælper med at undgå differentiel kryptoanalyse . I det følgende vil vi overveje den første beskrivelse af algoritmen givet i en artikel af kinesiske matematikere, der udførte en lineær kryptoanalyse af algoritmen.

Valget af "+" operationer blev foretaget på baggrund af resultaterne af forskning om parallelisering af beregninger på Pentium-type processorer. Valget af at ændre rækkefølgen af ​​registre a, b, c, d fra rund til rund fremskynder forekomsten af ​​diffusion og forvirring. Grundlæggende operationer (XOR, modulo addition , OR, AND) og deres rækkefølge fremskynder udførelsen af ​​algoritmen implementeret i C på de fleste platforme, og implementeringen af ​​algoritmen i assembler er ret kort.

Nem implementering

Fra ovenstående beskrivelse er det klart, at for implementeringen af ​​algoritmen er det nødvendigt:

Samtidig er der ingen substitutionstabeller, der er til stede, for eksempel i GOST, og runden består af 6 operationer. Det faktum, at skiftet udføres af en tidligere kendt værdi, som ikke afhænger af hverken klartekst eller nøgle, forenkler i høj grad implementeringen af ​​algoritmen på mikrokredsløb. Algoritmens enkelhed gør det nemt at kontrollere, at der ikke er en såkaldt "bagdør" i en bestemt implementering.

Indstillinger

Konstanter og

N bloklængden er 64 bit

Der spilles 36 runder

jeg jeg jeg jeg
0 ac25 9 6a29 atten 96 da 27 d25e
en 8a93 ti 6d84 19 905f 28 a926
2 243d elleve 34 bd tyve d631 29 1c7b
3 262e 12 a267 21 aa62 tredive 5f12
fire f887 13 cc15 22 4d15 31 4ecc
5 c4f2 fjorten 04fe 23 70 cb 32 3c86
6 8e36 femten b94a 24 7533 33 28db
7 9fa1 16 df24 25 45fc 34 fc01
otte 7dc0 17 40ef 26 5337 35 7cb1
jeg jeg jeg jeg
0 fire 9 2 atten 5 27 13
en 7 ti 9 19 en 28 12
2 elleve elleve fire tyve 2 29 3
3 otte 12 13 21 fire tredive 6
fire 7 13 en 22 12 31 elleve
5 fjorten fjorten fjorten 23 3 32 7
6 5 femten 6 24 9 33 femten
7 fire 16 7 25 2 34 fire
otte otte 17 12 26 elleve 35 fjorten
Blokke er 128 bit lange

Med en bloklængde på 128 bit spilles 68 runder. Derfor 68 32-bit konstanter og 68 .

Bloklængde 256 bit

Med en bloklængde på 256 bit spilles der 132 runder. Derfor 132 64-bit konstanter og 132 .

Nøgleskema

Nøglen er repræsenteret som en sammenkædning af N/4-bit ord. KS og KF er sat vilkårligt, og det hele

128-bit nøgle Bloker i 64 bit

Nøgle K er opdelt i 8 ord

Blokkere i 128 bit og 256 bit

K-tasten er opdelt i henholdsvis 4 og 2 ord, så de runde tangenter gentages med en periode på 4 eller 2. I sidstnævnte tilfælde er der det samme blandt KS og KF.

192-bit nøgle

Afhængigt af blokkens længde er nøglen opdelt i 12, 6 og 3 n-bit dele, som bestemmer gentagelsesperioden for de runde tangenter.

256-bit nøgle

Her er nøglen foreningen af ​​16, 8 eller 4 binære ord.

Driftsplan #

jeg # jeg # jeg # jeg #
0 OG 16 ELLER 32 ELLER 48 OG
en ELLER 17 ELLER 33 ELLER 49 OG
2 OG atten OG 34 OG halvtreds OG
3 ELLER 19 OG 35 ELLER 51 OG
fire ELLER tyve OG 36 ELLER 52 OG
5 ELLER 21 OG 37 OG 53 OG
6 ELLER 22 OG 38 ELLER 54 ELLER
7 ELLER 23 ELLER 39 OG 55 OG
otte OG 24 OG 40 ELLER 56 ELLER
9 ELLER 25 ELLER 41 OG 57 ELLER
ti ELLER 26 ELLER 42 OG 58 ELLER
elleve OG 27 ELLER 43 ELLER 59 OG
12 ELLER 28 OG 44 ELLER 60 OG
13 OG 29 ELLER 45 OG 61 OG
fjorten ELLER tredive OG 46 OG 62 ELLER
femten ELLER 31 OG 47 OG 63 ELLER

For yderligere iterationer gentages alt:

Ydeevne

Algoritmen indeholder ikke operationer med bitkompleksitet højere end , hvor  er bitlængden af ​​modulet eller operanderne (f.eks. moduloprodukt, at finde det inverse (ved multiplikation) element eller den største fælles divisor har bitkompleksitet , og eksponentiering har bit kompleksitet ). Derfor er det naturligt at forvente en høj hastighed på algoritmen. Forfatterne giver følgende data:

Blokstørrelse, bit C program Samlingsprogram
Ure pr. blok Ure pr. byte Ure pr. blok Ure pr. byte
64 180 23 130 17
128 340 22 250 16

Sikkerhed

Hovedårsagen til elimineringen af ​​NUSH-algoritmen i NESSIE-konkurrencen var algoritmens sårbarhed over for lineær kryptoanalyse fundet af Wu Wenling og Feng Dengo.

I deres artikel "Linear cryptanalysis of the NUSH block cipher" bruger de begrebet angrebskompleksitet , hvor det karakteriserer behovet for hukommelse og  - for mængden af ​​beregning.

For N=64 og N=128 bit foreslås 3 typer angreb, og for N=256 - to. Kompleksiteten af ​​de tilsvarende angreb:

Blok længde, bit Nøglenængde, bit
64 128
192
256
128 128
192
256
256 128
192
256

I nogle tilfælde er versionen med 192-bit nøglen væsentligt mere sikker end versionen med den længere nøgle. Du kan også bemærke, at der er tilfælde, hvor kompleksiteten af ​​angrebene af chifferen med den mindste nøglelængde og den største er næsten den samme. Derudover påvirker en forøgelse af nøglelængden ikke kompleksiteten af ​​angrebet så meget, som vi ønsker.

Der er således angreb på NUSH-chifferet, der er mere effektive end brute force. Derfor er der en mulighed for, at disse angreb forbedres, eller at computerteknologien når et niveau, der er tilstrækkeligt til at bryde chifferen inden for rimelig tid.

Krypteringsalgoritme

Som et eksempel kan du overveje det andet angreb på en chiffer med en bloklængde på N=64 bit. Krypteringsanalyse er baseret på konstruktionen af ​​afhængigheder mellem bits af nøglen, originalen og chifferteksten, gyldige med en sandsynlighed forskellig fra 1/2. Disse relationer er bygget på basis af en ligning, der er gyldig med en sandsynlighed på 3/4

,

Denne ligning kan kontrolleres ved hjælp af beskrivelsen af ​​algoritmen, og under hensyntagen til, at for den sidste (laveste) bit, er operationerne "+" og sammenfaldende. Faktisk har vi forholdet . Tilføjer vi forholdet til begge dele af ligningen, får vi det påkrævede.

Yderligere, givet specifikke værdier , kan det vises, at det ikke afhænger af alle bits af nøglen og klarteksten, nemlig:

I betragtning af de første 4 runder af dekryptering, kan det fastslås, at .

Brug af Piling-up-lemmaet, med sandsynlighed . Vi fik forbindelsen mellem de centrale bits og de almindelige tekster og chiffertekster.

Fra nøgleskemaet kan det fås, at hvis nøglelængden er 128 eller 256 bit, så , hvis nøglen består af 192 bit, så . Ud fra disse data estimerer vi tidskompleksiteten af ​​angrebet givet af følgende algoritme:

  • for hver "nøgle" tæller vi antallet af åbne tekster, der opfylder det fundne forhold;
  • find det maksimale af dem;
  • vi finder de resterende bits af nøglen: enten på lignende måde, ved at finde forhold eller ved opregning.

Kompleksiteten i forhold til mængden af ​​lagret information er estimeret til . Det er, hvor mange åben-chiffertekst-par en kryptoanalytiker skal have. Samtidig er teksterne på ingen måde vilkårlige. Det kan ses af ovenstående relationer, at de ikke afhænger af alle bits af input- og outputblokkene. Følgelig skal der blandt prøven af ​​klartekst- og chiffertekstblokke være blokke med forskellige tilsvarende bits. Driften af ​​algoritmen med et mindre antal kendte tekster er mulig, men så er det mindre sandsynligt, at det "maksimale" antal fundet i andet trin faktisk svarer til den reelle nøgle i lyset af den ikke-overskridelse af roden af ​​spredningen af antallet af begivenheder "ligningen er opfyldt" over måtten. forventning om forskellen i antallet af denne begivenhed og dens modsætning (du kan overveje Bernoulli-ordningen, hvor sandsynligheden for "succes" er lig med sandsynligheden for at opfylde forholdet).

Andre angreb, der foreslås i samme artikel, adskiller sig i analysen på det sidste trin af forholdet for andre runder og har ingen uafhængig interesse.

Andre NUSH-baserede algoritmer

Andre algoritmer kan bygges på basis af NUSH. I særdeleshed:

Hash-funktion

Inden hashing starter, forlænges teksten:

  • Tilføj 1 bit til tekst
  • Tilføj så mange nuller for at lave tekst med en længde, der er et multiplum af N (disse to trin kan udelades, hvis den oprindelige tekstlængde allerede er et multiplum af N)
  • Tildel en N-bit repræsentation af den indledende LEN-længde (i bits) af teksten
  • Tildel resultatet af en bitvis XOR mellem alle N-bit blokke af teksten opnået i det foregående trin

Funktionen bruger følgende variable:

  •  — udvidet tekst, præsenteret som blokke med længde N.
  • , -registre af længde N, bestående af 4 n-bit ord
  • b - registre med længden 4N, bestående af 15 n-bit ord /

Startværdier: , , hvor  er konstanter, der tilføjes til KR-nøglen under kryptering, KS=KF=KR=0

For i = 0 til l-1

{

For j=0 til L/2-1 er //L antallet af runder for den tilsvarende type NUSH { } H = NUSH(V) //Krypteringsoperation For j=15 til 4 For j=15 til 4

}

For i= 0 til 3

{

For j=0 til L/2-1 H = NUSH( ) For j=15 til 4

}

Hashværdi af længde t*n (t<16) bits — første t n-bit ord i register T

Beskedgodkendelseskode

Baseret på hash-funktionen kan en meddelelsesgodkendelsesprocedure bygges. Den adskiller sig kun fra den tidligere algoritme ved brug af en nøgle, der ikke er nul .

Synkron stream cipher "NUSH Stream"

Lad SYNC være en kendt binær vektor med længde LENGTH. Der er to versioner af denne chiffer.

Mulighed 1

Lad N = LÆNGDE være længden af ​​den blok, der bruges i NUSH-kryptering (LÆNGDE = 64, 128, 256) Lad være  en vektor af COUNT N-bit ord, der vil blive tilføjet til almindelig tekst og chiffertekst til henholdsvis kryptering og dekryptering.

For i =0 til COUNT −1

{

SYNC=(SYNC+65257)mod

}

Mulighed 2

Her er N=LÆNGDE / 2, hvor LÆNGDE = henholdsvis 128, 256, 512. Lad være  en vektor med længden N, SYNC=[SYNC_0SYNC_1] er en vektor med længden 2N T er et midlertidigt register med længden N=4n, , , ,  er de tilsvarende konstanter for NUSH-algoritmen.

Udførte beregninger:

SYNC[0] = SYNC[0] ^ NUSH(SYNC[0])

SYNC[1] = SYNC[1] ^ NUSH(SYNC[1]) T=SYNC[1]

For i =0 til COUNT −1

{

T = (T + 127)mod

}

Asymmetrisk kryptering

Valg af muligheder

En specifik gruppe G introduceres med en operation defineret af forfatterne af algoritmen baseret på Montgomery multiplikation.

Multiplikation Montgomery . Vi vælger et primtal P med længden n bit, tallet For to heltal A og B vil Montgomery-produktet være tallet: , hvor . At dividere med betyder at ignorere de nederste N bits af tallet. Gruppedrift:

beregnet med N=n. A og B anses for at være lige store, hvis de adskiller sig enten med P eller med 0. Der opnås en abelsk multiplikativ gruppe G. En isomorfi kan konstrueres mellem G og det reducerede system af rester modulo P:

Gruppen er konstrueret ved hjælp af et primtal P, således at  det også er primtal.

Algoritmens kryptografiske styrke er sikret af kompleksiteten af ​​det diskrete logaritmeproblem. Kompleksiteten af ​​hacking anslås til . I denne gruppe er generatoren a valgt. Privat nøgle: et tilfældigt heltal x ensartet fordelt på segmentet [0, P-2]. Offentlig nøgle: et element i gruppen G .

Kryptering
  • Tilfældig
  • Beregnet
  • , hvor |x|=x hvis x<P og |x|=xP ellers
  • , M er den oprindelige besked

Output: c||e

Dekryptering

Elektronisk digital signatur

Denne algoritme er baseret på den tidligere beskrevne hash-funktion. Lad Q være et primtal af længde 2m bit, som er en divisor af tallet P-1. Under operationen vil vi forstå den operation, der allerede er introduceret tidligere , hvor Q bruges som et primtal.

Offentlig nøgle
  • numrene P og Q
  • g er generatoren af ​​en undergruppe af orden Q
  • , hvor x er den private nøgle.
Privat nøgle

Ethvert nummer . Ideelt valgt med en ensartet fordeling.

Underskriver
  • Til en tilfældig beregning
  •  - en streng med længde m bit (om nødvendigt kasserer vi de nederste bits af hashværdien) (husk på, at m er halvdelen af ​​længden af ​​tallet Q). Det kan ske ved et tilfælde, at d=0. I dette tilfælde skal du genvælge en tilfældig r og udføre alle beregningerne.
  • signaturen inkluderer et par m bit d og e.
Signaturbekræftelse

Underskriften anses for korrekt, hvis jeg giver bevis for skemaets rigtighed. Det er klart, at algoritmens rigtighed svarer til rigtigheden af ​​ligheden .

Den resulterende lighed kan omskrives som potenser af generatoren g af undergruppen H på følgende måde: . fra definitionen. Hvor . Operationen er lineær i det andet argument op til at tage lighed modulo Q. Faktisk, . Derfor ,. Hvorfra følger ligheden, der skal bevises, da rækkefølgen af ​​elementet g er lig med Q.

Godkendelsesskemaer

Godkendelsesprocessen ligner den digitale signaturordning. De offentlige og private nøgler vælges på nøjagtig samme måde. Den private nøgle opbevares af den person, der ønsker at bevise sin "identitet" (lad det være part A). Der er fire trin i godkendelsesprocessen:

  • A genererer et tilfældigt tal og sender til part B
  • B sender et tilfældigt tal . Jo højere t, jo højere er systemets pålidelighed.
  • A beregner og sender den til part B
  • Godkendelse anses for bestået, hvis

Noter

Links