GRODA
Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från
versionen som granskades den 29 maj 2017; kontroller kräver
3 redigeringar .
Den här artikeln handlar om krypteringsalgoritmen. För en metod för att mäta enveloppen och fasen för ultrakorta laserpulser, se artikeln
Frequency-resolved optical gating .
GRODA |
---|
|
Skapare |
D. Georgoudis, D. Leroux och B. Chavet |
Skapad |
1998 _ |
Nyckelstorlek |
128/192/256 bitar |
Block storlek |
128 bitar |
Antal omgångar |
åtta |
Sorts |
Egen |
FROG är ett symmetriskt blockchiffer med en oortodox struktur, en av deltagarna i den amerikanska AES- tävlingen , utvecklad av det costaricanska företaget TecApro Internacional.
Skapande historia
FROG-algoritmen skapades 1998 av tre specialister från Tecnologia Apropriada (TesArgo) från den lilla latinamerikanska delstaten Costa Rica (tidigare okänd för sin utveckling inom kryptografi ): Dianelos Georgoudis, Damian Leroux och Billy Simon Chavez Simon Chaves
Chiffervarianten som skickats in för tävlingen uppfyller AES-kraven, med ett block lika med 128 bitar och en nyckellängd på 128, 192 eller 256 bitar. Algoritmen i sig tillåter teoretiskt sett nycklar från 40 till 1000 bitar i längd.
AES-tävling
FROG-chifferet lades upp för tävlingen av TecApro Internacional, ett internationellt företag registrerat i Costa Rica. Utvecklarna av algoritmen - D. Georgoudis, D. Leroux och B. Chaves - människor, för att uttrycka det milt, lite kända i den kryptografiska världen. Enligt författarna är FROG "ett nytt chiffer med en oortodox struktur." Grunden för chifferets styrka är den hemliga interna nyckeln för en komplex design, medan själva krypterings-/dekrypteringsoperationerna är extremt enkla.
I augusti visade TWOFISH- teamet (Wagner, Ferguson och Schneier) att FROG-chiffernyckeln kunde knäckas med cirka 257 arbetskrafter .
När det gäller chifferns styrka är denna indikator mycket svårare att kontrollera. Under det preliminära utvärderingsskedet av den första omgången presenterades ett betydande antal kryptoanalytiska resultat på NIST-webbplatsen och direkt på AES2-konferensen, på ett eller annat sätt "skadlade" ryktet för nästan alla kandidatchiffer. Men om vi inte pratar om de uppenbara outsiderna LOKI , FROG, MAGENTA och HPC , så hittades inga uppenbara svagheter i algoritmerna.
Grundläggande egenskaper och struktur för algoritmen
AES -tävlingen krävde att algoritmerna som deltog i tävlingen stödde en 128-bitars blockstorlek av krypterad data, såväl som 128-, 192- och 256-bitars krypteringsnycklar. Utvecklarna av FROG-algoritmen föreslog dock en bredare uppsättning värden för dessa parametrar:
- det är tillåtet att använda nycklar som sträcker sig i storlek från 5 till 125 byte (det vill säga från 40 till 1000 bitar);
- blockstorleken kan variera från 8 till 128 byte, det vill säga från 64 till 1024 bitar (dock, i författarens beskrivning av algoritmen, i enlighet med kraven i AES, visas en 16-byte blockstorlek).
Oavsett nyckel- och blockstorlek utförs kryptering i 8 omgångar. I varje omgång utförs följande åtgärder på varje byte i det krypterade blocket (förutsatt att blocken är 16 byte stora):
- Värdet på den aktuella (N:te) byten läggs till modulo 2 till värdet för samma byte i den första delen av den runda nyckeln (nyckelexpansionsproceduren beskrivs nedan).
- Den andra delen av den runda nyckeln är en permutationstabell. En byte väljs från denna tabell, vars serienummer är lika med det värde som beräknades i det första steget. Värdet på den valda byten ersätter värdet på den aktuella byten i det krypterade datablocket.
- Värdet för nästa byte (N + 1) är modulo 2 med värdet valt i steg 2. Det erhållna resultatet ersätter det gamla värdet på N + 1:e byten i det krypterade datablocket.
- Den tredje delen av den runda nyckeln är indextabellen. Värdet på den N:e byten i indextabellen definierar en annan modifierbar byte i det krypterade datablocket, som modifieras på exakt samma sätt som den N + 1:e byten (det vill säga, modulo 2 läggs till värdet som erhålls i steg 2) .
Nyckelexpansionsprocedur
Denna procedur bör erhålla 8 runda nycklar från krypteringsnyckeln - en för varje omgång av algoritmen. Den runda nyckeln består av tre undernycklar:
- 16-byte första delen;
- 256-byte permutationstabell;
- 16-byte indextabell.
För att algoritmen ska fungera är det alltså nödvändigt att generera 2304 byte med nyckelinformation.
- Genom att "propagera" krypteringsnyckeln (det vill säga värdet på krypteringsnyckeln upprepas det erforderliga antalet gånger, och krypteringsnyckeln för denna algoritm, som nämnt ovan, har en storlek på 5 till 125 byte), den första 2304 -byte temporär datamatris genereras. Byten av den sista "replikerade" kopian av nyckeln som går utanför gränsen för den erforderliga 2304-byte arrayen (till exempel de sista 71 byten av en 125-byte nyckel - nyckeln med maximal storlek) kasseras.
- En liknande "multiplikation" av 251-byte huvudnyckelfragmentet bildar den andra 2304-byte temporära datamatrisen. Huvudnyckeln är en speciellt vald konstant på 251 byte stor. Bytevärdet för huvudnyckeln (med början från den låga byten) visas i tabellen.
- Genom att applicera modulo 2-tillägg till motsvarande bitar av de två arrayerna som genereras i steg 1 och 2, erhålls en temporärt utökad nyckel.
- Att formatera nyckeln som erhölls i steg 3 (dvs. att dela upp den i 8 segment - med antalet omgångar - 16 + 256 + 16 byte i storlek, såväl som ytterligare bearbetning, som kommer att beskrivas senare), ger den preliminära utökade nyckeln av algoritmen.
- Den förspridda nyckeln används för att kryptera en 2304-byte array fylld med nollor. Kryptering utförs i chifferblockkedjeläget , där de första 16 byten av den ursprungliga krypteringsnyckeln används som initieringsvektor (IV), varav den allra första också läggs till modulo 2 med ett nummer lika med storleken på krypteringen nyckel in byte (detta är nödvändigt för att få olika IV för nycklar av olika storlekar, men med samma första 16 byte). Resultatet av operationen är en utökad nyckel fylld med pseudo-slumpmässig information.
- I likhet med steg 4 formateras den utökade nyckeln för att erhålla åtta runda nycklar med den nödvändiga strukturen.
Nyckelformatering
Steg 4 och 6 i nyckelexpansionsalgoritmen formaterar en 2304-byte pseudo-slumpmässig sekvens för att producera 8 runda nycklar. Om den första delen av den runda nyckeln som används för modulo 2-addition kan ha en helt slumpmässig struktur, måste den korrekta permutationstabellen bestå av 256 icke-repeterande värden från 0 till 255, och ytterligare krav ställs på 16-byten indextabell.
Följande åtgärder utförs vid formatering:
- Dela upp en 2304-byte array i 8 fragment på 16 + 256 + 16 byte.
- De första 16 byten av fragmentet blir den första delen av den runda nyckeln, oförändrad.
- Nästa 256 byte (låt oss kalla detta fragment A) bearbetas med en speciell procedur för att erhålla den korrekta permutationstabellen. Denna procedur ser ut så här:
- en 256-byte array t/ skapas som innehåller på varandra följande värden från 0 till 255;
- i en cykel från 0 till 255 /-th byte i permutationstabellen bestäms T av formeln:
- index[il] är numret på elementet i arrayen t/ som användes i föregående steg (för nollsteget tas det lika med 0), och L är den aktuella storleken på arrayen U\
- den använda byten för arrayen U kasseras, och elementen i arrayen U placerade efter den skiftas med 1 byte till början av arrayen; sålunda reduceras värdet på L i varje pass av denna cykel med 1;
- om permutationstabellen skapas för dekrypteringsoperationen, så inverteras den.
- I likhet med steg 3 skapas en 16-byte indextabell.
- Indextabellens länkkedjor analyseras; om bordet består av flera kedjor, modifieras bordet för att erhålla en kedja av länkar, vars längd kommer att vara lika med bordets storlek.
- Tabellen analyseras igen för att hitta index som uppfyller följande villkor:
om sådana tabellelement finns ändras deras värde till
Steg 3-5 i formateringsproceduren är värda att överväga med ett exempel. Anta att en 6-byte indextabell skapas från följande 6-byte fragment av en pseudo-slumpmässig sekvens:
21,247,199,108,66,239
I slingan från 0 till 5 (steg 4) bestäms /th byte i indextabellen I av formeln:
som i exemplet på ovanstående sekvens ser ut som den som visas i tabellen:
Resultatet är en indextabell:
3,2,5,1,0,4
3,0,5,1,2,4
Analys av tabellen (steg 5) låter oss ta reda på att denna tabell består av två länkkedjor:
3→1→2→5→4→2→0→3
3→1→0→3 och 5→4→2→5
Men för att uppnå den maximala kryptografiska styrkan hos algoritmen måste indextabellen innehålla en kedja av maximal storlek. Algoritmen som utfördes i steg 5 låter dig kombinera flera kedjor till en.
Fördelar och nackdelar med algoritmen
Liksom många algoritmer som AES (Rijndael) eller SAFER+, är FROG byte-orienterad. Men i motsats till de transformationer som används i dessa algoritmer förklarade och förklarade av författarna till Rijndael och SAFER +, begränsade författarna till FROG-algoritmen sig till att förklara att en sådan ovanlig rund struktur valdes för att säkerställa den snabbaste spridningen av indata (det vill säga att säkerställa påverkan av varje bit av krypterad data på varje chiffertextbitar inom ett block).
FROG erkändes dock som en av de svagaste deltagarna i AES-tävlingen; den fann många brister, särskilt:
- en ganska stor del av uppsättningen av möjliga nycklar till algoritmen visade sig vara svag (på grund av en mycket komplex nyckelexpansionsprocedur) för olika typer av attacker;
- algoritmen visade sig vara långsam, och till och med jämfört med de algoritmer som var kända före AES-tävlingen, till exempel Blowfish och RC5;
- FROG-algoritmen visade sig vara mycket krävande för RAM - den behöver cirka 2500 byte om de runda nycklarna genereras i förväg, och cirka 5000 byte behövs för den fullfjädrade algoritmen, som inkluderar nyckelexpansionsproceduren; dessa krav är mycket höga (särskilt i jämförelse med andra algoritmer - deltagare i AES-tävlingen) för implementering av denna algoritm i smarta kort;
- det finns ett antal svaga nycklar för denna algoritm. Nyckelinställningsproceduren är relativt långsam på grund av den komplexa mekanismen för att generera transformationstabeller. Chifferet i sig har en relativt låg prestanda, även om efter installation av nyckeln utförs 8 omgångar av konvertering ganska snabbt - implementerad i 8086 assembler FROG körs med en hastighet av 2,2 MB / s på en PC med en Pentium 200-processor;
- kryptoanalytiker uppmärksammade också sårbarheten hos dekrypteringsfunktionen och dess ganska långsamma spridning ;
- andra deltagare i AES har visat att Frog-chiffernyckeln är trasig med 257 operationer.
FROG-algoritmen nådde alltså inte finalen i AES-tävlingen.
Litteratur