FRØ
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 29. maj 2017; checks kræver
3 redigeringer .
Denne artikel handler om krypteringsalgoritmen. For en metode til måling af indhylningen og fasen af ultrakorte laserimpulser, se artiklen
Frequency-resolved optical gating .
FRØ |
---|
|
Skaber |
D. Georgoudis, D. Leroux og B. Chavet |
Oprettet |
1998 _ |
Nøglestørrelse |
128/192/256 bit |
Blokstørrelse |
128 bit |
Antal runder |
otte |
Type |
Egen |
FROG er en symmetrisk blokcifre med en uortodoks struktur, en af deltagerne i den amerikanske AES -konkurrence , udviklet af det costaricanske firma TecApro Internacional.
Oprettelseshistorie
FROG-algoritmen blev skabt i 1998 af tre specialister fra Tecnologia Apropriada (TesArgo) fra den lille latinamerikanske stat Costa Rica (tidligere ukendt for sin udvikling inden for kryptografi ): Dianelos Georgoudis, Damian Leroux og Billy Simon Chavez Simon Chaves
Chiffervarianten indsendt til konkurrencen overholder AES-kravene, idet den har en blok svarende til 128 bit og en nøglelængde på 128, 192 eller 256 bit. Selve algoritmen tillader teoretisk nøgler fra 40 til 1000 bits i længden.
AES-konkurrence
FROG-cifferet blev sat op til konkurrencen af TecApro Internacional, en international virksomhed registreret i Costa Rica. Udviklerne af algoritmen - D. Georgoudis, D. Leroux og B. Chaves - er mildest talt lidt kendte i den kryptografiske verden. Ifølge forfatterne er FROG "en ny chiffer med en uortodoks struktur." Grundlaget for krypteringens styrke er den hemmelige interne nøgle til et komplekst design, mens selve krypterings-/dekrypteringsoperationerne er ekstremt enkle.
I august viste TWOFISH- teamet (Wagner, Ferguson og Schneier), at FROG-chiffernøglen kunne knækkes med omkring 257 arbejdskraft .
Hvad angår styrken af chiffer, er denne indikator meget sværere at kontrollere. Under den foreløbige evalueringsfase af første runde blev et betydeligt antal kryptoanalytiske resultater præsenteret på NIST-webstedet og direkte på AES2-konferencen, på den ene eller anden måde "plettet" omdømmet for næsten alle kandidat-cifre. Men hvis vi ikke taler om de åbenlyse outsidere LOKI , FROG, MAGENTA og HPC , så blev der ikke fundet nogen åbenlyse svagheder i algoritmerne.
Grundlæggende karakteristika og struktur af algoritmen
AES -konkurrencen krævede, at algoritmerne, der deltog i konkurrencen, understøttede en 128-bit blokstørrelse af krypterede data samt 128-, 192- og 256-bit krypteringsnøgler. Udviklerne af FROG-algoritmen foreslog imidlertid et bredere sæt værdier for disse parametre:
- det er tilladt at bruge nøgler i størrelse fra 5 til 125 bytes (det vil sige fra 40 til 1000 bits);
- blokstørrelsen kan variere fra 8 til 128 bytes, det vil sige fra 64 til 1024 bit (i forfatterens beskrivelse af algoritmen, i overensstemmelse med kravene i AES, vises der dog en 16-byte blokstørrelse).
Uanset nøgle- og blokstørrelsen udføres kryptering i 8 runder. I hver runde udføres følgende handlinger på hver byte i den krypterede blok (forudsat at blokkene er 16 bytes store):
- Værdien af den aktuelle (N'te) byte lægges modulo 2 til værdien af den samme byte i 1. del af den runde nøgle (nøgleudvidelsesproceduren er beskrevet nedenfor).
- Den anden del af den runde nøgle er en permutationstabel. En byte vælges fra denne tabel, hvis serienummer er lig med værdien beregnet i det første trin. Værdien af den valgte byte erstatter værdien af den aktuelle byte i den krypterede datablok.
- Værdien af den næste byte (N + 1) er modulo 2 med værdien valgt i trin 2. Det opnåede resultat erstatter den gamle værdi af N + 1. byte af den krypterede datablok.
- Den tredje del af den runde nøgle er indekstabellen. Værdien af den N'te byte i indekstabellen definerer en anden modificerbar byte af den krypterede datablok, som modificeres på nøjagtig samme måde som den N + 1. byte (det vil sige, modulo 2 lægges til værdien opnået i trin 2) .
Nøgleudvidelsesprocedure
Denne procedure bør opnå 8 rundnøgler fra krypteringsnøglen - en for hver runde af algoritmen. Den runde nøgle består af tre undernøgler:
- 16-byte 1. del;
- 256-byte permutationstabel;
- 16-byte indekstabel.
For at algoritmen skal fungere, er det således nødvendigt at generere 2304 bytes nøgleinformation.
- Ved at "udbrede" krypteringsnøglen (det vil sige, at værdien af krypteringsnøglen gentages det nødvendige antal gange, og krypteringsnøglen for denne algoritme, som nævnt ovenfor, har en størrelse på 5 til 125 bytes), de første 2304 -byte midlertidigt dataarray genereres. De bytes af den sidste "replikerede" kopi af nøglen, der går ud over grænsen for det påkrævede 2304-byte-array (f.eks. de sidste 71 bytes af en 125-byte nøgle - nøglen med den maksimale størrelse) kasseres.
- En lignende "multiplikation" af 251-byte hovednøglefragmentet danner det andet 2304-byte midlertidige dataarray. Hovednøglen er en specielt valgt konstant på 251 bytes i størrelse. Byteværdien for masternøglen (startende fra den lave byte) er vist i tabellen.
- Ved at anvende modulo 2 addition til de tilsvarende bits af de to arrays genereret i trin 1 og 2, opnås en midlertidig udvidet nøgle.
- Formatering af nøglen opnået i trin 3 (dvs. opdeling af den i 8 segmenter - efter antallet af runder - 16 + 256 + 16 bytes i størrelse, samt yderligere behandling, som vil blive beskrevet senere), giver den foreløbige udvidede nøgle af algoritmen.
- Pre-spread-nøglen bruges til at kryptere et 2304-byte-array fyldt med nuller. Kryptering udføres i cipher block chaining mode , hvor de første 16 bytes af den originale krypteringsnøgle bruges som initialiseringsvektor (IV), hvoraf den allerførste også tilføjes modulo 2 med et tal svarende til størrelsen af krypteringen indtast bytes (dette er nødvendigt for at opnå forskellig IV for nøgler af forskellig størrelse, men med de samme første 16 bytes). Resultatet af operationen er en udvidet nøgle fyldt med pseudo-tilfældig information.
- I lighed med trin 4 formateres den udvidede nøgle til at opnå otte runde nøgler med den nødvendige struktur.
Nøgleformatering
Trin 4 og 6 i nøgleudvidelsesalgoritmen formaterer en 2304-byte pseudo-tilfældig sekvens for at producere 8 runde nøgler. Hvis 1. del af den runde nøgle brugt til modulo 2 addition kan have en fuldstændig tilfældig struktur, så skal den korrekte permutationstabel bestå af 256 ikke-gentagende værdier fra 0 til 255, og der stilles yderligere krav til 16-byten indeks tabel.
Ved formatering udføres følgende handlinger:
- Opdeling af et 2304-byte-array i 8 fragmenter på 16 + 256 + 16 bytes.
- De første 16 bytes af fragmentet bliver den første del af den runde nøgle, uændret.
- De næste 256 bytes (lad os kalde dette fragment A) behandles ved en speciel procedure for at opnå den korrekte permutationstabel. Denne procedure ser sådan ud:
- der oprettes et 256-byte array t/ indeholdende på hinanden følgende værdier fra 0 til 255;
- i en cyklus fra 0 til 255 /-th byte af permutationstabellen T bestemmes af formlen:
- index[il] er nummeret på elementet i arrayet t/ brugt i det foregående trin (for nultrinnet tages det lig med 0), og L er den aktuelle størrelse af arrayet U\
- den brugte byte af arrayet U kasseres, og elementerne i arrayet U, der er placeret efter det, forskydes med 1 byte til begyndelsen af arrayet; således er værdien af L i hver gang af denne cyklus reduceret med 1;
- hvis permutationstabellen er oprettet til dekrypteringsoperationen, så inverteres den.
- I lighed med trin 3 oprettes en 16-byte indekstabel.
- Indekstabelledkæderne analyseres; hvis bordet består af flere kæder, modificeres bordet for at opnå en kæde af led, hvis længde vil være lig med bordets størrelse.
- Tabellen analyseres igen for at finde indekser, der opfylder følgende betingelse:
hvis sådanne tabelelementer findes, ændres deres værdi til
Trin 3-5 i formateringsproceduren er værd at overveje med et eksempel. Antag, at en 6-byte indekstabel oprettes ud fra følgende 6-byte fragment af en pseudo-tilfældig sekvens:
21.247.199.108.66.239
I løkken fra 0 til 5 (trin 4) bestemmes /th byte i indekstabellen I af formlen:
som i eksemplet med ovenstående sekvens ser ud som den, der er vist i tabellen:
Resultatet er en indekstabel:
3,2,5,1,0,4
3,0,5,1,2,4
Analyse af tabellen (trin 5) giver os mulighed for at finde ud af, at denne tabel består af to kæder af led:
3→1→2→5→4→2→0→3
3→1→0→3 og 5→4→2→5
For at opnå den maksimale kryptografiske styrke af algoritmen skal indekstabellen dog indeholde én kæde af den maksimale størrelse. Algoritmen udført i trin 5 giver dig mulighed for at kombinere flere kæder til én.
Fordele og ulemper ved algoritmen
Som mange algoritmer såsom AES (Rijndael) eller SAFER+, er FROG byte-orienteret. I modsætning til de transformationer, der blev brugt i disse algoritmer, forklaret og forklaret af forfatterne af Rijndael og SAFER +, begrænsede forfatterne af FROG-algoritmen sig til at forklare, at en sådan usædvanlig rund struktur blev valgt for at sikre den hurtigste spredning af inputdata (det vil sige at sikre indflydelsen af hver bit af krypterede data på hver chiffertekstbit i en blok).
FROG blev dog anerkendt som en af de svageste deltagere i AES-konkurrencen; den fandt mange mangler, især:
- en ret stor del af sættet af mulige nøgler til algoritmen viste sig at være svag (på grund af en meget kompleks nøgleudvidelsesprocedure) til forskellige typer angreb;
- algoritmen viste sig at være langsom, og endda sammenlignet med de algoritmer, der var kendt før AES-konkurrencen, for eksempel Blowfish og RC5;
- FROG-algoritmen viste sig at være meget krævende for RAM - den har brug for omkring 2500 bytes, hvis de runde nøgler er genereret på forhånd, og omkring 5000 bytes er nødvendige for den fuld-funktionelle algoritme, som inkluderer nøgleudvidelsesproceduren; disse krav er meget høje (især i sammenligning med andre algoritmer - deltagere i AES-konkurrencen) til implementering af denne algoritme i smart cards;
- der er en række svage nøgler til denne algoritme. Nøgleindstillingsproceduren er relativt langsom på grund af den komplekse mekanisme til at generere transformationstabeller. Selve chifferen har en relativt lav ydeevne, selvom der efter installation af nøglen udføres 8 runder af konvertering ret hurtigt - implementeret i 8086 assembler FROG kører med en hastighed på 2,2 MB / s på en pc med en Pentium 200-processor;
- kryptoanalytikere gjorde også opmærksom på sårbarheden af dekrypteringsfunktionen og dens ret langsomme spredning ;
- andre deltagere i AES har vist, at Frog-chiffernøglen er brudt ved hjælp af 257 operationer.
FROG-algoritmen nåede således ikke finalen i AES-konkurrencen.
Litteratur