GOST 28147-89 | |
---|---|
Skapare |
KGB , 8:e direktionen (en grupp kryptografer) - Zabotin Ivan Alexandrovich (chef), Lopatin Vyacheslav Alexandrovich, Lopatkin Alexei Vasilievich, Afanasiev Alexander Alexandrovich, Fedyukin Mikhail Vladimirovich |
Skapad | 1978 |
publiceras | 1989 |
Standarder | GOST 34.12-2018 , GOST R 34.12-2015 , GOST 28147-89, RFC 5830 , RFC 8891 |
Nyckelstorlek | 256 bitar |
Block storlek | 64 bitar |
Antal omgångar | 32\16 |
Sorts | Feistel nätverk |
GOST 28147-89 " Informationsbehandlingssystem. Kryptografiskt skydd. Kryptografisk konverteringsalgoritm "- föråldrad (se användningskronologi ) statlig standard för Sovjetunionen (och senare mellanstatlig standard för CIS ), som beskriver den symmetriska blockkrypteringsalgoritmen och dess funktionssätt .
Det är ett exempel på DES- liknande kryptosystem skapade enligt det klassiska Feistel iterativa schemat .
Historien om skapandet av chiffret och kriterierna för utvecklarna presenterades först offentligt 2014 av chefen för gruppen av utvecklare av algoritmen Zabotin Ivan Alexandrovich vid en föreläsning tillägnad 25-årsdagen av antagandet av den ryska standarden för symmetrisk kryptering [1] [2] .
Arbetet med algoritmen, som senare utgjorde grunden för standarden, började som en del av Magma-temat (skydd av information med kryptografiska metoder i datorer i Unified System-serien ) på uppdrag av Scientific and Technical Council of the Eightth Main Directorate of KGB i USSR (nu i strukturen av FSB ), i mars 1978 efter en lång förstudie av DES- standarden publicerad 1976 . Faktum är att arbetet med att skapa en algoritm (eller grupp av algoritmer) som liknar DES- algoritmen började redan 1976 .
Till en början märktes verken " Tophemlig ". Sedan nedgraderades de till stämpeln " hemlig ". 1983 nedgraderades algoritmen till " Restricted ". Det var med sista märket som algoritmen förbereddes för publicering 1989 . Den 9 mars 1987 fick en grupp kryptografer (sökande - militär enhet 43753) ett copyrightcertifikat med prioritetsnummer 333297 för en uppfinning för en krypteringsenhet som använder Magma-2-algoritmen [3] .
Godkänd av dekretet av USSR:s statliga standard nr 1409 av den 2 juni 1989 , trädde i kraft den 1 juli 1990 [4] .
Den 31 mars 1996 återutgavs den och sattes i kraft som en mellanstatlig standard för CIS [5] .
Genom dekretet av Republiken Vitrysslands statliga standard nr 3 av den 17 december 1992 trädde den i kraft som den statliga standarden för Republiken Vitryssland . Återutgiven i mars 2011 [6] .
Genom order från Ukrainas statliga konsumentstandarder nr 495 av den 22 januari 2008, återutgavs GOST 28147-89 på Ukrainas territorium och trädde i kraft den 1 februari 2009 under namnet DSTU GOST 28147:2009 [ 7] . Enligt gällande beställningar kommer DSTU GOST 28147:2009 att gälla till 1 januari 2022 [8] . Det sker en gradvis ersättning med DSTU 7624:2014 ( kod "Kalina").
Standarden har avbrutits på Rysslands och OSS territorium sedan 31 maj 2019 på grund av antagandet av nya mellanstatliga standarder som helt ersätter den GOST 34.12-2018 (beskriver Magma och Grasshopper chiffer ) och GOST 34.13-2018 (beskriver funktionssätt för blockchiffer ).
Enligt FSB- meddelandet om förfarandet för användning av GOST 28147-89 blockkrypteringsalgoritm, bör kryptografiska informationsskyddsverktyg utformade för att skydda information som inte innehåller information som utgör en statshemlighet , inklusive de som implementerar GOST 28147-89- algoritmen , inte utvecklad efter 1 juni 2019 , förutom när GOST 28147-89-algoritmen i sådana verktyg är utformad för att säkerställa kompatibilitet med befintliga verktyg som implementerar denna algoritm [9] .
År 2015, tillsammans med den nya " Gräshoppan " -algoritmen, publicerades en variant av GOST 28147-89-algoritmen under namnet " Magma " som en del av GOST R 34.12-2015-standarden , och senare som en del av GOST 34.12-2018 standard . 2020 publicerades Magma - algoritmen som RFC 8891 .
Egenheter:
GOST 28147-89 är ett blockchiffer med en 256- bitars nyckel och 32 omgångar (kallade rundor) av transformation, som arbetar på 64-bitars block. Basen för chifferalgoritmen är Feistel -nätverket .
Det finns fyra driftlägen GOST 28147-89:
För att kryptera i detta läge delas först ett 64-bitars klartextblock i två halvor: To = ( A 0 , B 0 ) [10] . På den i :e cykeln används undernyckeln X i :
( = binär " exklusiv eller "),För att generera undernycklar delas den ursprungliga 256-bitarsnyckeln i åtta 32-bitars nummer: K 0 ... K 7 .
Undertangenterna X 0 ... X 23 är den cykliska upprepningen av K 0 ... K 7 . Pluggar X 24 ... X 31 är K 7 ... K 0 .
Resultatet av alla 32 omgångar av algoritmen är ett 64-bitars chiffertextblock : Tw = ( A 32 , B 32 ) .
Dekryptering utförs enligt samma algoritm som kryptering, med ändringen att ordningen på undernycklar inverteras: X 0 ... X 7 är K 7 ... K 0 , och X 8 ... X 31 är cyklisk upprepning av K 7 ... K 0 .
I indata och utdata representeras 32-bitars tal i ordning från den minst signifikanta biten till den mest signifikanta ( liten endian ).
Funktionen beräknas så här:
Ai och Xi läggs till modulo 2 32 .
Resultatet är uppdelat i åtta 4-bitars undersekvenser, som var och en matas till ingången till dess substitutionstabellnod (i stigande ordning efter bitföreträde), kallad S-box nedan . Det totala antalet S-boxar i standarden är åtta, vilket är samma som antalet delsekvenser. Varje S-box är en permutation av siffror från 0 till 15 (den specifika formen av S-boxar är inte definierad i standarden). Den första 4-bitars undersekvensen är ingången till den första S-boxen, den andra är ingången till den andra, och så vidare.
Om S-box- noden ser ut så här:
1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12
och S-boxens ingång är 0, då blir utgången 1; om ingången är 4, kommer utsignalen att vara 5; om ingången är 12 så är utgången 6 osv.
Utgångarna från alla åtta S-boxarna kombineras till ett 32-bitars ord, sedan roteras hela ordet åt vänster (hög ordning) med 11 bitar.
Enkelt ersättningsläge har följande nackdelar:
Således är användningen av GOST 28147-89 i det enkla ersättningsläget endast önskvärt för kryptering av nyckeldata [11] .
När GOST 28147-89 fungerar i gammaläget bildas ett kryptografiskt gamma på det sätt som beskrivs ovan, som sedan läggs till bit för bit modulo 2 med den ursprungliga klartexten för att erhålla en chiffertext . Kryptering i gammaläge saknar nackdelarna med det enkla ersättningsläget [11] . Så även identiska block av källtexten ger en annan chiffertext, och för texter med en längd som inte är en multipel av 64 bitar, kasseras de "extra" gammabitarna. Dessutom kan gamma genereras i förväg, vilket motsvarar chifferens funktion i ett streamingläge.
Gamma genereras baserat på nyckeln och det så kallade synkroniseringsmeddelandet, som ställer in det initiala tillståndet för generatorn. Genereringsalgoritmen är som följer:
För att dekryptera det måste du räkna ut samma gamma och sedan lägga till det bit för bit modulo 2 med chiffertexten. För detta måste du självklart använda samma synkmeddelande som för kryptering. I det här fallet, baserat på kraven på gammaens unikhet, är det omöjligt att använda ett synkroniseringsmeddelande för att kryptera flera datamatriser. Synkmeddelandet sänds som regel på ett eller annat sätt tillsammans med chiffertexten.
En egenskap hos GOST 28147-89 i gammaläget är att när en bit av chiffertexten ändras, ändras bara en bit av den dekrypterade texten. Å ena sidan kan detta ha en positiv effekt på bullerimmuniteten; å andra sidan kan en angripare göra vissa ändringar i texten utan att ens dechiffrera den [11] .
Krypteringsalgoritmen liknar gamma-läget, men gamma är baserat på föregående block med krypterad data, så krypteringsresultatet för det aktuella blocket beror också på de tidigare blocken. Av denna anledning hänvisas även detta driftsätt till som interlocking scaleing.
Krypteringsalgoritmen är följande:
När man ändrar en bit av chiffertexten som erhålls med hjälp av återkopplingsgammaalgoritmen, ändras endast en bit i motsvarande block av dekrypterad text, och det efterföljande blocket av klartext påverkas också. I detta fall förblir alla andra block oförändrade [11] .
När du använder det här läget, kom ihåg att synkroniseringsmeddelandet inte kan återanvändas (till exempel vid kryptering av logiskt separata informationsblock - nätverkspaket, hårddisksektorer, etc.). Detta beror på det faktum att det första blocket i chiffertexten erhålls genom endast modulo två-addition med det krypterade synkmeddelandet; sålunda tillåter kunskap om endast de första 8 byten av originalet och chiffertexten att man kan läsa de första 8 byten av vilken annan chiffertext som helst efter att ha återanvänt synkmeddelandet.
Detta läge är inte ett krypteringsläge i konventionell mening. När man arbetar i infogningssimuleringsläget skapas ytterligare ett block som beror på hela texten och nyckeldata. Detta block används för att kontrollera att chiffertexten inte har manipulerats av misstag eller avsiktligt. Detta är särskilt viktigt för kryptering i gammaläge, där en angripare kan ändra specifika bitar utan att ens känna till nyckeln; men när man arbetar i andra moder kan sannolika distorsioner inte detekteras om det inte finns någon redundant information i den överförda datan.
Imitation genereras för M ≥ 2 klartextblock om 64 bitar. Algoritmen är följande:
För verifiering genomför den mottagande parten ett förfarande liknande det som beskrivs. Om resultatet inte matchar den godkända simuleringsinsättningen, anses alla motsvarande M-block vara falska.
Genereringen av en insättningsimitation kan utföras parallellt med kryptering med ett av de ovan beskrivna operationssätten [11] .
Alla åtta S-boxar kan vara olika. Vissa tror att de kan vara ytterligare nyckelmaterial som ökar nyckelns effektiva längd; dock finns det praktiska attacker som gör att de kan fastställas [12] . Det finns dock inget behov av att öka nyckellängden, 256 bitar räcker för närvarande [13] . Vanligtvis är ersättningstabeller en långsiktig schemainställning som är gemensam för en specifik grupp användare.
Texten i GOST 28147-89-standarden indikerar att leveransen av fyllningsersättningsenheter (S-block) utförs på det föreskrivna sättet, det vill säga av algoritmutvecklaren.
OID: 1.2.643.2.2.31.1
S-blocksnummer | Menande | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ett | 2 | 3 | fyra | 5 | 6 | 7 | åtta | 9 | A | B | C | D | E | F | |
ett | 9 | 6 | 3 | 2 | åtta | B | ett | 7 | A | fyra | E | F | C | 0 | D | 5 |
2 | 3 | 7 | E | 9 | åtta | A | F | 0 | 5 | 2 | 6 | C | B | fyra | D | ett |
3 | E | fyra | 6 | 2 | B | 3 | D | åtta | C | F | 5 | A | 0 | 7 | ett | 9 |
fyra | E | 7 | A | C | D | ett | 3 | 9 | 0 | 2 | B | fyra | F | åtta | 5 | 6 |
5 | B | 5 | ett | 9 | åtta | D | F | 0 | E | fyra | 2 | 3 | C | 7 | A | 6 |
6 | 3 | A | D | C | ett | 2 | 0 | B | 7 | 5 | 9 | fyra | åtta | F | E | 6 |
7 | ett | D | 2 | 9 | 7 | A | 6 | 0 | åtta | C | fyra | 5 | F | 3 | B | E |
åtta | B | A | F | 5 | 0 | C | E | åtta | 6 | 2 | 3 | 9 | ett | 7 | D | fyra |
Denna ersättningsnod används av CryptoPRO CSP som standard. Denna ersättningsnod används också i Verba-O-mjukvaran [14] .
ID: id-Gost28147-89-CryptoPro-B-ParamSetOID: 1.2.643.2.2.31.2
S-blocksnummer | Menande | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ett | 2 | 3 | fyra | 5 | 6 | 7 | åtta | 9 | A | B | C | D | E | F | |
ett | åtta | fyra | B | ett | 3 | 5 | 0 | 9 | 2 | E | A | C | D | 6 | 7 | F |
2 | 0 | ett | 2 | A | fyra | D | 5 | C | 9 | 7 | 3 | F | B | åtta | 6 | E |
3 | E | C | 0 | A | 9 | 2 | D | B | 7 | 5 | åtta | F | 3 | 6 | ett | fyra |
fyra | 7 | 5 | 0 | D | B | 6 | ett | 2 | 3 | A | C | F | fyra | E | 9 | åtta |
5 | 2 | 7 | C | F | 9 | 5 | A | B | ett | fyra | 0 | D | 6 | åtta | E | 3 |
6 | åtta | 3 | 2 | 6 | fyra | D | E | B | C | ett | 7 | F | A | 0 | 9 | 5 |
7 | 5 | 2 | A | B | 9 | ett | C | 3 | 7 | fyra | D | 0 | 6 | F | åtta | E |
åtta | 0 | fyra | B | E | åtta | 3 | 7 | ett | A | 2 | 9 | 6 | F | D | 5 | C |
Denna ersättningsnod används av CryptoPRO CSP.
Identifierare: id-Gost28147-89-CryptoPro-C-ParamSetOID: 1.2.643.2.2.31.3
S-blocksnummer | Menande | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ett | 2 | 3 | fyra | 5 | 6 | 7 | åtta | 9 | A | B | C | D | E | F | |
ett | ett | B | C | 2 | 9 | D | 0 | F | fyra | 5 | åtta | E | A | 7 | 6 | 3 |
2 | 0 | ett | 7 | D | B | fyra | 5 | 2 | åtta | E | F | C | 9 | A | 6 | 3 |
3 | åtta | 2 | 5 | 0 | fyra | 9 | F | A | 3 | 7 | C | D | 6 | E | ett | B |
fyra | 3 | 6 | 0 | ett | 5 | D | A | åtta | B | 2 | 9 | 7 | E | F | C | fyra |
5 | åtta | D | B | 0 | fyra | 5 | ett | 2 | 9 | 3 | C | E | 6 | F | A | 7 |
6 | C | 9 | B | ett | åtta | E | 2 | fyra | 7 | 3 | 6 | 5 | A | 0 | F | D |
7 | A | 9 | 6 | åtta | D | E | 2 | 0 | F | 3 | 5 | B | fyra | ett | C | 7 |
åtta | 7 | fyra | 0 | 5 | A | 2 | F | E | C | 6 | ett | B | D | 9 | 3 | åtta |
Denna ersättningsnod används av CryptoPRO CSP.
ID: id-Gost28147-89-CryptoPro-D-ParamSetOID: 1.2.643.2.2.31.4
S-blocksnummer | Menande | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ett | 2 | 3 | fyra | 5 | 6 | 7 | åtta | 9 | A | B | C | D | E | F | |
ett | F | C | 2 | A | 6 | fyra | 5 | 0 | 7 | 9 | E | D | ett | B | åtta | 3 |
2 | B | 6 | 3 | fyra | C | F | E | 2 | 7 | D | åtta | 0 | 5 | A | 9 | ett |
3 | ett | C | B | 0 | F | E | 6 | 5 | A | D | fyra | åtta | 9 | 3 | 7 | 2 |
fyra | ett | 5 | E | C | A | 7 | 0 | D | 6 | 2 | B | fyra | 9 | 3 | F | åtta |
5 | 0 | C | åtta | 9 | D | 2 | A | B | 7 | 3 | 6 | 5 | fyra | E | F | ett |
6 | åtta | 0 | F | 3 | 2 | 5 | E | B | ett | A | fyra | 7 | C | 9 | D | 6 |
7 | 3 | 0 | 6 | F | ett | E | 9 | 2 | D | åtta | C | fyra | B | A | 5 | 7 |
åtta | ett | A | 6 | åtta | F | B | 0 | fyra | C | 3 | 5 | 9 | 7 | D | 2 | E |
Denna ersättningsnod används av CryptoPRO CSP.
Ersättningsnod, definierad av den tekniska kommittén för standardisering "Cryptographic Information Protection" (förkortat TC 26) av Rosstandart [15] .
Identifierare: id-tc26-gost-28147-param-ZOID: 1.2.643.7.1.2.5.1.1
S-blocksnummer | Menande | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ett | 2 | 3 | fyra | 5 | 6 | 7 | åtta | 9 | A | B | C | D | E | F | |
ett | C | fyra | 6 | 2 | A | 5 | B | 9 | E | åtta | D | 7 | 0 | 3 | F | ett |
2 | 6 | åtta | 2 | 3 | 9 | A | 5 | C | ett | E | fyra | 7 | B | D | 0 | F |
3 | B | 3 | 5 | åtta | 2 | F | A | D | E | ett | 7 | fyra | C | 9 | 6 | 0 |
fyra | C | åtta | 2 | ett | D | fyra | F | 6 | 7 | 0 | A | 5 | 3 | E | 9 | B |
5 | 7 | F | 5 | A | åtta | ett | 6 | D | 0 | 9 | 3 | E | B | fyra | 2 | C |
6 | 5 | D | F | 6 | 9 | 2 | C | A | B | 7 | åtta | ett | fyra | 3 | E | 0 |
7 | åtta | E | 2 | 5 | 6 | 9 | ett | C | F | fyra | B | 0 | D | A | 3 | 7 |
åtta | ett | 7 | E | D | 0 | 5 | åtta | 3 | fyra | F | A | 6 | 9 | C | B | 2 |
Denna nod är fixerad enligt rekommendationerna i TK26-riktlinjerna [16] , och som den enda i den nya revideringen av standarderna GOST R 34.12-2015 [17] och GOST 34.12-2018 [18] samt RFC 7836 och RFC 8891 .
Ersättningsnod nr 1 ( DKE nr 1 - ukrainskt dubbelsträngat nyckelelement ) , definierad i "Instruktioner om proceduren för att tillhandahålla och använda nycklar till verktyg för skydd av kryptografiskt information " [19] .
S-blocksnummer | Menande | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ett | 2 | 3 | fyra | 5 | 6 | 7 | åtta | 9 | A | B | C | D | E | F | |
ett | A | 9 | D | 6 | E | B | fyra | 5 | F | ett | 3 | C | 7 | 0 | åtta | 2 |
2 | åtta | 0 | C | fyra | 9 | 6 | 7 | B | 2 | 3 | ett | F | 5 | E | A | D |
3 | F | 6 | 5 | åtta | E | B | A | fyra | C | 0 | 3 | 7 | 2 | 9 | ett | D |
fyra | 3 | åtta | D | 9 | 6 | B | F | 0 | 2 | 5 | C | A | fyra | E | ett | 7 |
5 | F | åtta | E | 9 | 7 | 2 | 0 | D | C | 6 | ett | 5 | B | fyra | 3 | A |
6 | 2 | åtta | 9 | 7 | 5 | F | 0 | B | C | ett | D | E | A | 3 | 6 | fyra |
7 | 3 | åtta | B | 5 | 6 | fyra | E | A | 2 | C | ett | 7 | 9 | F | D | 0 |
åtta | ett | 2 | 3 | E | 6 | D | B | åtta | F | A | C | 5 | 7 | 9 | 0 | fyra |
Enligt order från Ukrainas statliga tjänst för specialkommunikation nr 1273/35556 daterad 21 december 2020 "Tekniska specifikationer för RFC 5652 ", används denna ersättningsnod som standard och finns i packad form (64 byte) i parametrar för det publika nyckelcertifikatet , genererat enligt DSTU 4145-2002 [20] .
Man tror [21] att GOST är resistent mot så allmänt använda metoder som linjär och differentiell kryptoanalys. Den omvända ordningen av nycklar som använts under de senaste åtta omgångarna ger skydd mot glidattack och reflektionsattack. Rostovtsev A. G., Makhovenko E. B., Filippov A. S., Chechulin A. A. beskrev i sina arbeten [22] typen av kryptoanalys, som reduceras till konstruktionen av en algebraisk objektiv funktion och att hitta dess extremum. Klasser av svaga nycklar identifierades, i synnerhet visades det att glesa nycklar (med en signifikant övervikt på 0 eller 1) är svaga. Enligt författarna är deras metod i alla fall bättre än uttömmande uppräkning, men utan numeriska uppskattningar.
I maj 2011 bevisade den välkände kryptoanalytikern Nicolas Courtois förekomsten av en attack mot detta chiffer, som har en komplexitet på 2 8 (256) gånger mindre än komplexiteten för direkt uppräkning av nycklar, förutsatt att det finns 2 64 "klartext/stängd" textpar [23] [24] . Denna attack kan inte genomföras i praktiken på grund av för hög beräkningskomplexitet. Dessutom tillåter kunskap om 264 klartext/privattext-par uppenbarligen en att läsa chiffertexter utan att ens beräkna nyckeln . De flesta andra verk beskriver också attacker som endast är tillämpliga under vissa antaganden, såsom en viss typ av nycklar eller ersättningstabeller, någon modifiering av den ursprungliga algoritmen, eller som fortfarande kräver ouppnåeliga mängder minne eller beräkning. Frågan om det finns praktiska attacker utan att utnyttja svagheten hos enskilda nycklar eller ersättningstabeller är fortfarande öppen [12] .
Standardens huvudproblem är relaterade till standardens ofullständighet när det gäller generering av nycklar och substitutionstabeller. Man tror att standarden har "svaga" nycklar och substitutionstabeller [22] [25] , men standarden beskriver inte kriterierna för att välja och ta bort "svaga" sådana.
I oktober 2010, vid ett möte med den 1:a gemensamma tekniska kommittén för den internationella standardiseringsorganisationen (ISO / IEC JTC 1 / SC 27), nominerades GOST för införande i den internationella blockchifferstandarden ISO / IEC 18033-3. I detta avseende, i januari 2011, bildades fasta uppsättningar av ersättningsnoder och deras kryptografiska egenskaper analyserades. GOST accepterades dock inte som standard, och motsvarande substitutionstabeller publicerades inte [26] .
Den befintliga standarden specificerar således inte en algoritm för att generera substitutionstabeller (S-boxar). Å ena sidan kan detta vara ytterligare hemlig information (förutom nyckeln), och å andra sidan väcker det ett antal problem:
Symmetriska kryptosystem | |
---|---|
Streama chiffer | |
Feistel nätverk | |
SP nätverk | |
Övrig |