GOST (blockchiffer)
General | |
---|---|
Designers | USSR , KGB , 8:e departementet |
Först publicerad | 1994-05-23 (avsekretessbelagd) |
Efterträdare | GOST hashfunktion , Kuznyechik |
Certifiering | GOST-standard |
Chifferdetalj | |
Nyckelstorlekar | 256 bitar |
Blockstorlekar | 64 bitar |
Strukturera | Feistel nätverk |
Omgångar | 32 |
Bästa offentliga kryptoanalys | |
Under 2011 upptäckte flera författare mer betydande brister i GOST, och kunde för första gången attackera hela 32-omgångarna GOST med godtyckliga nycklar. Det har till och med kallats "ett djupt defekt chiffer" av Nicolas Courtois . |
GOST- blockchifferet ( Magma ), definierat i standarden GOST 28147-89 (RFC 5830), är ett sovjetiskt och ryskt standardiserat symmetrisk nyckelblockchiffer med en blockstorlek på 64 bitar. Den ursprungliga standarden, publicerad 1989, gav inte chiffret något namn, men den senaste revideringen av standarden, GOST R 34.12-2015 (RFC 7801, RFC 8891), anger att den kan kallas Magma. GOST -hashfunktionen är baserad på detta chiffer. Den nya standarden specificerar också ett nytt 128-bitars blockchiffer som heter Kuznyechik .
Sovjetunionens upplösning avhävdes den och släpptes till allmänheten 1994. GOST 28147 var en sovjetisk alternativ till USA: s standardalgoritm, DES . Således är de två mycket lika i struktur.
Algoritmen
GOST har en 64-bitars blockstorlek och en nyckellängd på 256 bitar. Dess S-boxar kan vara hemliga, och de innehåller cirka 354 (log 2 (16! 8 )) bitar av hemlig information, så den effektiva nyckelstorleken kan ökas till 610 bitar; dock kan en attack med vald nyckel återställa innehållet i S-boxarna i cirka 2 32 krypteringar.
GOST är ett Feistel-nätverk på 32 omgångar. Dess runda funktion är mycket enkel: lägg till en 32-bitars undernyckel modulo 2 32 , lägg resultatet genom ett lager av S-boxar och rotera resultatet med 11 bitar. Resultatet av det är resultatet av den runda funktionen. I det intilliggande diagrammet representerar en rad 32 bitar.
Undernycklarna väljs i en fördefinierad ordning. Nyckelschemat är mycket enkelt: dela upp 256-bitarsnyckeln i åtta 32-bitars undernycklar, och varje undernyckel används fyra gånger i algoritmen; de första 24 omgångarna använder nyckelorden i ordning, de sista 8 omgångarna använder dem i omvänd ordning.
S-boxarna accepterar en fyra-bitars ingång och producerar en fyra-bitars utsignal. S-box-substitutionen i rundfunktionen består av åtta 4 × 4 S-boxar. S-boxarna är implementeringsberoende, så parter som vill säkra sin kommunikation med GOST måste använda samma S-boxar. För extra säkerhet kan S-boxarna hållas hemliga. I den ursprungliga standarden där GOST specificerades gavs inga S-boxar utan de skulle levereras på något sätt. Detta ledde till spekulationer om att organisationer som regeringen ville spionera på fick svaga S-boxar. En GOST-chiptillverkare rapporterade att han själv skapade S-boxar med hjälp av en pseudoslumptalsgenerator .
Till exempel använde Rysslands centralbank följande S-boxar:
# | S-box |
---|---|
1 | 4 A 9 2 D 8 0 E 6 B 1 C 7 F 5 3 |
2 | EB 4 C 6 DFA 2 3 8 1 0 7 5 9 |
3 | 5 8 1 DA 3 4 2 EFC 7 6 0 9 B |
4 | 7 DA 1 0 8 9 FE 4 6 CB 2 5 3 |
5 | 6 C 7 1 5 FD 8 4 A 9 E 0 3 B 2 |
6 | 4 BA 0 7 2 1 D 3 6 8 5 9 CFE |
7 | DB 4 1 3 F 5 9 0 AE 7 6 8 2 C |
8 | 1 FD 0 5 7 A 4 9 2 3 E 6 B 8 C |
Den senaste revideringen av standarden, GOST R 34.12-2015 , lägger dock till den saknade S-box-specifikationen och definierar den enligt följande.
# | GOST R 34.12-2015 S-box |
---|---|
1 | C 4 6 2 A 5 B 9 E 8 D 7 0 3 F 1 |
2 | 6 8 2 3 9 A 5 C 1 E 4 7 BD 0 F |
3 | B 3 5 8 2 FADE 1 7 4 C 9 6 0 |
4 | C 8 2 1 D 4 F 6 7 0 A 5 3 E 9 B |
5 | 7 F 5 A 8 1 6 D 0 9 3 EB 4 2 C |
6 | 5 DF 6 9 2 CAB 7 8 1 4 3 E 0 |
7 | 8 E 2 5 6 9 1 CF 4 B 0 DA 3 7 |
8 | 1 7 ED 0 5 8 3 4 FA 6 9 CB 2 |
Krypteringsanalys av GOST
Den senaste kryptoanalysen av GOST visar att den är säker i teoretisk mening. I praktiken har data- och minneskomplexiteten för de bäst publicerade attackerna nått den praktiska nivån, medan tidskomplexiteten för även den bästa attacken fortfarande är 2 192 när 2 64 data är tillgängliga.
Sedan 2007 har flera attacker utvecklats mot reducerade GOST-implementeringar och/eller svaga nycklar .
Under 2011 upptäckte flera författare mer betydande brister i GOST, att för första gången kunna attackera hela 32-rundor GOST med godtyckliga nycklar. Det har till och med kallats "ett djupt defekt chiffer" av Nicolas Courtois . De initiala attackerna kunde reducera tidskomplexiteten från 2 256 till 2 228 till priset av enorma minneskrav, och snart förbättrades de upp till 2 178 tidskomplexitet (till priset av 2 70 minne och 2 64 data).
I december 2012 förbättrade Courtois, Gawinecki och Song attackerna mot GOST genom att bara beräkna 2 101 GOST-omgångar. Isobe hade redan publicerat en enda nyckelattack på hela GOST-chifferet, som Dinur, Dunkelman och Shamir förbättrade, och nådde 2 224 tidskomplexitet för 2 32 data och 2 36 minne, och 2 192 tidskomplexitet för 2 64 data.
Eftersom attackerna minskar den förväntade styrkan från 2 256 (nyckellängd) till cirka 2 178 , kan chifferet anses vara brutet. Men för alla blockchiffer med blockstorlek på n bitar är den maximala mängden klartext som kan krypteras innan omnyckelning måste ske 2 n/2 block, på grund av födelsedagsparadoxen , och ingen av de ovannämnda attackerna kräver mindre än 2 32 data.
Se även
Vidare läsning
- "WebCrypto GOST-bibliotek" . Rudolf Nickolaev, WebCrypto GOST-teamet.
- "RFC 5830: GOST 28147-89 kryptering, dekryptering och MAC-algoritmer" . IETF. mars 2010.
- "RFC 4357: Ytterligare kryptografiska algoritmer för användning med GOST" . IETF. januari 2006.
- Alex Biryukov & David Wagner (maj 2000). Advanced Slide Attacks (PDF) . Framsteg inom kryptologi, Proceedings of EUROCRYPT 2000. Brygge : Springer-Verlag. s. 589–606. doi : 10.1007/3-540-45539-6_41 . Hämtad 2007-09-03 .
externa länkar
- Beskrivning, texter av standarden, online GOST kryptera och dekryptera verktyg
- SCAN:s post för GOST
- En öppen källkodsimplementering av PKCS#11-programvaruenhet med ryska GOST-krypteringsstandardfunktioner
- https://github.com/gost-engine/engine — öppen källkod implementering av rysk GOST-kryptering för OpenSSL.