GOST 28147-89 | |
---|---|
Skaber |
KGB , 8. direktorat (en gruppe kryptografer) - Zabotin Ivan Alexandrovich (leder), Lopatin Vyacheslav Alexandrovich, Lopatkin Alexei Vasilievich, Afanasiev Alexander Alexandrovich, Fedyukin Mikhail Vladimirovich |
Oprettet | 1978 |
offentliggjort | 1989 |
Standarder | GOST 34.12-2018 , GOST R 34.12-2015 , GOST 28147-89, RFC 5830 , RFC 8891 |
Nøglestørrelse | 256 bit |
Blokstørrelse | 64 bit |
Antal runder | 32\16 |
Type | Feistel netværk |
GOST 28147-89 “ Informationsbehandlingssystemer. Kryptografisk beskyttelse. Kryptografisk konverteringsalgoritme "- forældet (se brugskronologi ) statsstandard for USSR (og senere mellemstatsstandarden for CIS ), der beskriver den symmetriske blokkrypteringsalgoritme og dens funktionsmåder .
Det er et eksempel på DES - lignende kryptosystemer skabt efter det klassiske Feistel iterative skema .
Historien om oprettelsen af chifferen og kriterierne for udviklerne blev først præsenteret offentligt i 2014 af lederen af gruppen af udviklere af algoritmen Zabotin Ivan Alexandrovich ved et foredrag dedikeret til 25-årsdagen for vedtagelsen af den russiske standard for symmetrisk kryptering [1] [2] .
Arbejdet med algoritmen, som senere dannede grundlaget for standarden, begyndte som en del af Magma-temaet (beskyttelse af information ved kryptografiske metoder i computere i Unified System-serien ) på vegne af det videnskabelige og tekniske råd i det ottende hoveddirektorat for USSR's KGB (nu i FSB 's struktur ), i marts 1978 efter en længere foreløbig undersøgelse af DES- standarden offentliggjort i 1976 . Faktisk begyndte arbejdet med at skabe en algoritme (eller gruppe af algoritmer), der ligner DES -algoritmen , allerede i 1976 .
Oprindeligt blev værkerne mærket " Top Secret ". Så blev de nedgraderet til det " hemmelige " frimærke. I 1983 blev algoritmen nedgraderet til " Restricted ". Det var med det sidste mærke, at algoritmen blev klargjort til offentliggørelse i 1989 . Den 9. marts 1987 modtog en gruppe kryptografer (ansøger - militær enhed 43753) et ophavsretscertifikat med prioritet nr. 333297 for en opfindelse til en krypteringsenhed, der anvender Magma-2 algoritmen [3] .
Godkendt ved dekret af USSRs statsstandard nr. 1409 af 2. juni 1989 , sat i kraft den 1. juli 1990 [4] .
Den 31. marts 1996 blev den genudgivet og sat i kraft som en mellemstatslig standard for CIS [5] .
Ved dekretet fra Republikken Belarus' statsstandard nr. 3 af 17. december 1992 blev det sat i kraft som statens standard for Republikken Belarus . Genudgivet i marts 2011 [6] .
Efter ordre fra Ukraines statsforbrugerstandarder nr. 495 af 22. januar 2008 blev GOST genudstedt på Ukraines territorium og trådte i kraft den 1. februar 2009 under navnet DSTU GOST 28147:2009 [ 7] . DSTU GOST 28147:2009 vil ifølge gældende påbud være gældende indtil 1. januar 2022 [8] . Der sker en gradvis udskiftning med DSTU 7624:2014 ( kode "Kalina").
Standarden er blevet annulleret på Ruslands og SNG -området siden 31. maj 2019 på grund af vedtagelsen af nye mellemstatslige standarder , der fuldstændig erstatter den GOST 34.12-2018 ( beskriver Magma- og Grasshopper - cifrene ) og GOST 34.13-2018 (beskriver driftstilstande for blokcifre ).
Ifølge FSB - meddelelsen om proceduren for brug af GOST 28147-89 blokkrypteringsalgoritmen, bør kryptografiske informationsbeskyttelsesværktøjer designet til at beskytte information , der ikke indeholder oplysninger, der udgør en statshemmelighed , herunder dem, der implementerer GOST 28147-89- algoritmen , ikke udviklet efter 1. juni 2019 , undtagen når GOST 28147-89-algoritmen i sådanne værktøjer er designet til at sikre kompatibilitet med eksisterende værktøjer, der implementerer denne algoritme [9] .
I 2015, sammen med den nye " Grasshopper " -algoritme, blev en variant af GOST 28147-89-algoritmen offentliggjort under navnet " Magma " som en del af GOST R 34.12-2015-standarden og senere som en del af GOST 34.12-2018 standard . I 2020 blev Magma- algoritmen udgivet som RFC 8891 .
Ejendommeligheder:
GOST 28147-89 er en blokchiffer med en 256- bit nøgle og 32 runder (kaldet runder) af transformation, der opererer på 64-bit blokke. Grundlaget for chifferalgoritmen er Feistel -netværket .
Der er fire driftsformer GOST 28147-89:
For at kryptere i denne tilstand opdeles en 64-bit klartekstblok først i to halvdele: To = ( A 0 , B 0 ) [10 ] . I den i -te cyklus bruges undernøglen X i :
( = binær " eksklusiv eller "),For at generere undernøgler er den originale 256-bit nøgle opdelt i otte 32-bit tal: K 0 ... K 7 .
Undertasterne X 0 ... X 23 er den cykliske gentagelse af K 0 ... K 7 . Stik X 24 ... X 31 er K 7 ... K 0 .
Resultatet af alle 32 runder af algoritmen er en 64-bit chiffertekstblok : Tw = ( A 32 , B 32 ) .
Dekryptering udføres efter samme algoritme som kryptering, med den ændring at rækkefølgen af undernøgler inverteres: X 0 ... X 7 er K 7 ... K 0 , og X 8 ... X 31 er cyklisk gentagelse af K 7 ... K 0 .
I input- og outputdataene er 32-bit tal repræsenteret i rækkefølge fra den mindst signifikante bit til den mest signifikante ( lille endian ).
Funktionen beregnes således:
A i og X i tilføjes modulo 2 32 .
Resultatet er opdelt i otte 4-bit undersekvenser, som hver føres til input fra dens substitutionstabelnode (i stigende rækkefølge efter bitprioritet), kaldet S-boks nedenfor . Det samlede antal S-bokse i standarden er otte, hvilket er det samme som antallet af delsekvenser. Hver S-boks er en permutation af tal fra 0 til 15 (den specifikke form for S-bokse er ikke defineret i standarden). Den første 4-bit undersekvens er input fra den første S-boks, den anden er input fra den anden, og så videre.
Hvis S-box noden ser sådan ud:
1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12
og S-boksens input er 0, så vil outputtet være 1; hvis input er 4, så vil output være 5; hvis input er 12, så er output 6 osv.
Udgangene fra alle otte S-bokse kombineres til et 32-bit ord, hvorefter hele ordet roteres til venstre (høj orden) med 11 bit.
Enkel udskiftningstilstand har følgende ulemper:
Således er brugen af GOST 28147-89 i den simple udskiftningstilstand kun ønskelig til kryptering af nøgledata [11] .
Når GOST 28147-89 fungerer i gamma-tilstand , dannes en kryptografisk gamma på den ovenfor beskrevne måde, som derefter tilføjes bit for bit modulo 2 med den originale klartekst for at opnå en chiffertekst . Kryptering i gammatilstand er blottet for de ulemper, der er forbundet med den simple udskiftningstilstand [11] . Så selv identiske blokke af kildeteksten giver en anden chiffertekst, og for tekster med en længde, der ikke er et multiplum af 64 bit, kasseres de "ekstra" gammabits. Derudover kan gamma genereres på forhånd, hvilket svarer til funktionen af chifferen i en streaming-tilstand.
Gamma genereres baseret på nøglen og den såkaldte synkroniseringsmeddelelse, som sætter generatorens begyndelsestilstand. Genereringsalgoritmen er som følger:
For at dekryptere det, skal du regne ud den samme gamma, og derefter tilføje den bit for bit modulo 2 med chifferteksten. Til dette skal du naturligvis bruge den samme synkroniseringsmeddelelse som til kryptering. I dette tilfælde, baseret på kravene til gammaens unikke karakter, er det umuligt at bruge en synkroniseringsmeddelelse til at kryptere flere dataarrays. Som regel sendes synkroniseringsmeddelelsen på den ene eller anden måde sammen med chifferteksten.
Et træk ved GOST 28147-89 i gamma-tilstand er, at når en bit af chifferteksten ændres, ændres kun en bit af den dekrypterede tekst. På den ene side kan dette have en positiv effekt på støjimmunitet; på den anden side kan en angriber foretage nogle ændringer i teksten uden selv at dechifrere den [11] .
Krypteringsalgoritmen ligner gammatilstanden, men gammaen er baseret på den tidligere blok af krypterede data, så krypteringsresultatet af den aktuelle blok afhænger også af de tidligere blokke. Af denne grund omtales denne funktionsmåde også som sammenlåsende skalering.
Krypteringsalgoritmen er følgende:
Når man ændrer én bit af chifferteksten opnået ved hjælp af feedback gamma-algoritmen, ændres kun én bit i den tilsvarende blok af dekrypteret tekst, og den efterfølgende blok af almindelig tekst påvirkes også. I dette tilfælde forbliver alle andre blokke uændrede [11] .
Når du bruger denne tilstand, skal du huske på, at synkroniseringsmeddelelsen ikke kan genbruges (for eksempel ved kryptering af logisk adskilte informationsblokke - netværkspakker, harddisksektorer osv.). Dette skyldes det faktum, at den første blok af chifferteksten opnås ved kun modulo to-addition med den krypterede synkroniseringsmeddelelse; kendskab til kun de første 8 bytes af originalen og chifferteksten tillader således, at man kan læse de første 8 bytes af enhver anden chiffertekst efter genbrug af synkroniseringsmeddelelsen.
Denne tilstand er ikke en krypteringstilstand i konventionel forstand. Når du arbejder i indsættelsessimuleringstilstand, oprettes en ekstra blok, der afhænger af hele teksten og nøgledata. Denne blok bruges til at kontrollere, at chifferteksten ikke er blevet manipuleret ved et uheld eller med vilje. Dette er især vigtigt for gamma-mode kryptering, hvor en angriber kan ændre specifikke bits uden selv at kende nøglen; men når der arbejdes i andre tilstande, kan sandsynlige forvrængninger ikke detekteres, hvis der ikke er redundant information i de transmitterede data.
Imitation genereres for M ≥ 2 klartekstblokke på 64 bit. Algoritmen er følgende:
Til verifikation udfører den modtagende part en procedure svarende til den beskrevne. Hvis resultatet ikke stemmer overens med den beståede simuleringsindsættelse, betragtes alle tilsvarende M-blokke som falske.
Genereringen af en indsættelsesimitation kan udføres parallelt med kryptering ved brug af en af de ovenfor beskrevne driftsformer [11] .
Alle otte S-bokse kan være forskellige. Nogle mener, at de kan være yderligere nøglemateriale, der øger nøglens effektive længde; dog er der praktiske angreb, der gør det muligt at bestemme dem [12] . Der er dog ingen grund til at øge nøglelængden, 256 bit er på nuværende tidspunkt ganske nok [13] . Typisk er erstatningstabeller en langsigtet skemaindstilling, der er fælles for en bestemt gruppe af brugere.
Teksten til GOST 28147-89-standarden angiver, at leveringen af påfyldningserstatningsenheder (S-blokke) udføres på den foreskrevne måde, det vil sige af algoritmeudvikleren.
OID: 1.2.643.2.2.31.1
S-blok nummer | Betyder | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | EN | B | C | D | E | F | |
en | 9 | 6 | 3 | 2 | otte | B | en | 7 | EN | fire | E | F | C | 0 | D | 5 |
2 | 3 | 7 | E | 9 | otte | EN | F | 0 | 5 | 2 | 6 | C | B | fire | D | en |
3 | E | fire | 6 | 2 | B | 3 | D | otte | C | F | 5 | EN | 0 | 7 | en | 9 |
fire | E | 7 | EN | C | D | en | 3 | 9 | 0 | 2 | B | fire | F | otte | 5 | 6 |
5 | B | 5 | en | 9 | otte | D | F | 0 | E | fire | 2 | 3 | C | 7 | EN | 6 |
6 | 3 | EN | D | C | en | 2 | 0 | B | 7 | 5 | 9 | fire | otte | F | E | 6 |
7 | en | D | 2 | 9 | 7 | EN | 6 | 0 | otte | C | fire | 5 | F | 3 | B | E |
otte | B | EN | F | 5 | 0 | C | E | otte | 6 | 2 | 3 | 9 | en | 7 | D | fire |
Denne erstatningsknude bruges som standard af CryptoPRO CSP. Også denne substitutionsknude bruges i Verba-O-softwaren [14] .
ID: id-Gost28147-89-CryptoPro-B-ParamSetOID: 1.2.643.2.2.31.2
S-blok nummer | Betyder | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | EN | B | C | D | E | F | |
en | otte | fire | B | en | 3 | 5 | 0 | 9 | 2 | E | EN | C | D | 6 | 7 | F |
2 | 0 | en | 2 | EN | fire | D | 5 | C | 9 | 7 | 3 | F | B | otte | 6 | E |
3 | E | C | 0 | EN | 9 | 2 | D | B | 7 | 5 | otte | F | 3 | 6 | en | fire |
fire | 7 | 5 | 0 | D | B | 6 | en | 2 | 3 | EN | C | F | fire | E | 9 | otte |
5 | 2 | 7 | C | F | 9 | 5 | EN | B | en | fire | 0 | D | 6 | otte | E | 3 |
6 | otte | 3 | 2 | 6 | fire | D | E | B | C | en | 7 | F | EN | 0 | 9 | 5 |
7 | 5 | 2 | EN | B | 9 | en | C | 3 | 7 | fire | D | 0 | 6 | F | otte | E |
otte | 0 | fire | B | E | otte | 3 | 7 | en | EN | 2 | 9 | 6 | F | D | 5 | C |
Denne erstatningsknude bruges af CryptoPRO CSP.
Identifikator: id-Gost28147-89-CryptoPro-C-ParamSetOID: 1.2.643.2.2.31.3
S-blok nummer | Betyder | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | EN | B | C | D | E | F | |
en | en | B | C | 2 | 9 | D | 0 | F | fire | 5 | otte | E | EN | 7 | 6 | 3 |
2 | 0 | en | 7 | D | B | fire | 5 | 2 | otte | E | F | C | 9 | EN | 6 | 3 |
3 | otte | 2 | 5 | 0 | fire | 9 | F | EN | 3 | 7 | C | D | 6 | E | en | B |
fire | 3 | 6 | 0 | en | 5 | D | EN | otte | B | 2 | 9 | 7 | E | F | C | fire |
5 | otte | D | B | 0 | fire | 5 | en | 2 | 9 | 3 | C | E | 6 | F | EN | 7 |
6 | C | 9 | B | en | otte | E | 2 | fire | 7 | 3 | 6 | 5 | EN | 0 | F | D |
7 | EN | 9 | 6 | otte | D | E | 2 | 0 | F | 3 | 5 | B | fire | en | C | 7 |
otte | 7 | fire | 0 | 5 | EN | 2 | F | E | C | 6 | en | B | D | 9 | 3 | otte |
Denne erstatningsknude bruges af CryptoPRO CSP.
ID: id-Gost28147-89-CryptoPro-D-ParamSetOID: 1.2.643.2.2.31.4
S-blok nummer | Betyder | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | EN | B | C | D | E | F | |
en | F | C | 2 | EN | 6 | fire | 5 | 0 | 7 | 9 | E | D | en | B | otte | 3 |
2 | B | 6 | 3 | fire | C | F | E | 2 | 7 | D | otte | 0 | 5 | EN | 9 | en |
3 | en | C | B | 0 | F | E | 6 | 5 | EN | D | fire | otte | 9 | 3 | 7 | 2 |
fire | en | 5 | E | C | EN | 7 | 0 | D | 6 | 2 | B | fire | 9 | 3 | F | otte |
5 | 0 | C | otte | 9 | D | 2 | EN | B | 7 | 3 | 6 | 5 | fire | E | F | en |
6 | otte | 0 | F | 3 | 2 | 5 | E | B | en | EN | fire | 7 | C | 9 | D | 6 |
7 | 3 | 0 | 6 | F | en | E | 9 | 2 | D | otte | C | fire | B | EN | 5 | 7 |
otte | en | EN | 6 | otte | F | B | 0 | fire | C | 3 | 5 | 9 | 7 | D | 2 | E |
Denne erstatningsknude bruges af CryptoPRO CSP.
Udskiftningsknude, defineret af den tekniske komité for standardisering "Cryptographic Information Protection" (forkortet TC 26) fra Rosstandart [15] .
Identifikator: id-tc26-gost-28147-param-ZOID: 1.2.643.7.1.2.5.1.1
S-blok nummer | Betyder | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | EN | B | C | D | E | F | |
en | C | fire | 6 | 2 | EN | 5 | B | 9 | E | otte | D | 7 | 0 | 3 | F | en |
2 | 6 | otte | 2 | 3 | 9 | EN | 5 | C | en | E | fire | 7 | B | D | 0 | F |
3 | B | 3 | 5 | otte | 2 | F | EN | D | E | en | 7 | fire | C | 9 | 6 | 0 |
fire | C | otte | 2 | en | D | fire | F | 6 | 7 | 0 | EN | 5 | 3 | E | 9 | B |
5 | 7 | F | 5 | EN | otte | en | 6 | D | 0 | 9 | 3 | E | B | fire | 2 | C |
6 | 5 | D | F | 6 | 9 | 2 | C | EN | B | 7 | otte | en | fire | 3 | E | 0 |
7 | otte | E | 2 | 5 | 6 | 9 | en | C | F | fire | B | 0 | D | EN | 3 | 7 |
otte | en | 7 | E | D | 0 | 5 | otte | 3 | fire | F | EN | 6 | 9 | C | B | 2 |
Denne node er fastsat som anbefalet i TK26-retningslinjerne [16] , og som den eneste i den nye revision af GOST R 34.12-2015 [17] og GOST 34.12-2018 [18] standarderne samt RFC 7836 og RFC 8891 .
Erstatningsknude nr. 1 ( DKE nr. 1 - ukrainsk dobbeltstrenget nøgleelement ) , defineret i "Instruktioner om proceduren for levering og brug af nøgler til kryptografiske informationsbeskyttelsesværktøjer " [19] .
S-blok nummer | Betyder | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | EN | B | C | D | E | F | |
en | EN | 9 | D | 6 | E | B | fire | 5 | F | en | 3 | C | 7 | 0 | otte | 2 |
2 | otte | 0 | C | fire | 9 | 6 | 7 | B | 2 | 3 | en | F | 5 | E | EN | D |
3 | F | 6 | 5 | otte | E | B | EN | fire | C | 0 | 3 | 7 | 2 | 9 | en | D |
fire | 3 | otte | D | 9 | 6 | B | F | 0 | 2 | 5 | C | EN | fire | E | en | 7 |
5 | F | otte | E | 9 | 7 | 2 | 0 | D | C | 6 | en | 5 | B | fire | 3 | EN |
6 | 2 | otte | 9 | 7 | 5 | F | 0 | B | C | en | D | E | EN | 3 | 6 | fire |
7 | 3 | otte | B | 5 | 6 | fire | E | EN | 2 | C | en | 7 | 9 | F | D | 0 |
otte | en | 2 | 3 | E | 6 | D | B | otte | F | EN | C | 5 | 7 | 9 | 0 | fire |
I henhold til ordre fra Ukraines statstjeneste for særlig kommunikation nr. 1273/35556 dateret den 21. december 2020 "Tekniske specifikationer for RFC 5652 ", bruges denne erstatningsknude som standard og er indeholdt i pakket form (64 bytes) i parametre for det offentlige nøglecertifikat , genereret i henhold til DSTU 4145-2002 [20] .
Det menes [21] at GOST er modstandsdygtig over for så vidt brugte metoder som lineær og differentiel kryptoanalyse. Den omvendte rækkefølge af nøgler brugt i de sidste otte runder giver beskyttelse mod slide-angreb og refleksionsangreb. Rostovtsev A. G., Makhovenko E. B., Filippov A. S., Chechulin A. A. beskrev i deres arbejde [22] typen af kryptoanalyse, som er reduceret til konstruktionen af en algebraisk objektiv funktion og at finde dens ekstremum. Klasser af svage nøgler blev identificeret, især blev det vist, at sparsomme nøgler (med en signifikant overvægt på 0 eller 1) er svage. Ifølge forfatterne er deres metode under alle omstændigheder bedre end udtømmende opregning, men uden numeriske skøn.
I maj 2011 beviste den velkendte kryptoanalytiker Nicolas Courtois eksistensen af et angreb på denne chiffer, som har en kompleksitet på 2 8 (256) gange mindre end kompleksiteten af direkte opregning af nøgler, forudsat at der er 2 64 "klartekst/lukket" tekstpar [23] [24] . Dette angreb kan ikke udføres i praksis på grund af for høj beregningsmæssig kompleksitet. Desuden giver kendskab til 264 klartekst/privattekst-par naturligvis mulighed for at læse chiffertekster uden selv at beregne nøglen . De fleste andre værker beskriver også angreb, der kun er anvendelige under visse forudsætninger, såsom en bestemt slags nøgler eller substitutionstabeller, en ændring af den originale algoritme, eller som stadig kræver uopnåelige mængder hukommelse eller beregning. Spørgsmålet om, hvorvidt der er praktiske angreb uden at udnytte svagheden ved individuelle nøgler eller erstatningstabeller, forbliver åbent [12] .
Standardens hovedproblemer er relateret til standardens ufuldstændighed med hensyn til generering af nøgler og substitutionstabeller. Det menes, at standarden har "svage" nøgler og substitutionstabeller [22] [25] , men standarden beskriver ikke kriterierne for at vælge og droppe "svage".
I oktober 2010, på et møde i den 1. fælles tekniske komité i Den Internationale Standardiseringsorganisation (ISO / IEC JTC 1 / SC 27), blev GOST nomineret til optagelse i den internationale blokchifferstandard ISO / IEC 18033-3. I denne henseende blev der i januar 2011 dannet faste sæt erstatningsknuder, og deres kryptografiske egenskaber blev analyseret. GOST blev dog ikke accepteret som standard, og de tilsvarende substitutionstabeller blev ikke offentliggjort [26] .
Den eksisterende standard specificerer således ikke en algoritme til generering af substitutionstabeller (S-bokse). På den ene side kan dette være yderligere hemmelige oplysninger (udover nøglen), og på den anden side rejser det en række problemer:
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |