MacGuffin | |
---|---|
Skaber | Bruce Schneier , Matt Blaze |
Oprettet | 1994 _ |
offentliggjort | 1994.12.14 |
Nøglestørrelse | 128 bit |
Blokstørrelse | 64 bit |
Antal runder | 32 |
Type | Feistel netværk |
I kryptografi er MacGuffin en symmetrisk blokchiffer baseret på Feistel-netværket .
Algoritmen blev opfundet af Bruce Schneier og Matt Blaze i 1994 som en del af Fast Software Encryption . Og samme år viste Vincent Rayman og Bart Presnel sin sårbarhed over for differentiel kryptoanalyse , også fundet i den lignende DES -chiffer . Det var hensigten at studere en sådan struktur af cifre som et ubalanceret Feistel-netværk [1] .
Traditionelt deler cifre, der bruger Feistel-netværket, inputblokken i lige store dele - venstre (målblok) og højre (kontrolblok). Blokke byttes med hver runde . MacGuffin er baseret på en struktur, hvor målblokken er kortere end kontrolblokken. Chifferen opererer med inputblokke på 64 bit, hvor måldelen er 16 bit lang og kontroldelen er 48. Der bruges en 128 bit nøgle. Dog kan antallet af runder og nøglestørrelsen variere [2] .
Meget af designet er lånt fra DES. Den ukrypterede inputtekst er opdelt i 4 16-bit ord. S-bokse er lånt hos DES. Der er 8 af dem, som hver returnerer et resultat på 4 bit, idet de tager 6 bit som input. Men kun 2 bit tages i betragtning (det samlede resultat skal være 16 bit). Outputtet fra en S-boks ændres ikke til positionen af de bits, der bruges til at indtaste den samme blok i de næste 4 runder. Chifferen er beregnet til at blive implementeret i hardware eller software. Permutationerne er valgt for at minimere antallet af skift- og maskeoperationer. [3]
Nøgleelementet i chifferens struktur er det ubalancerede Feistel-netværk. Indgangsblokkene er opdelt i fire registre, hver to bytes. I den nye runde kombineres de sidste tre højre blokke til en kontrolblok og tilføjes modulo 2 med den runde nøgle oprettet fra den primære ved hjælp af nøgleskemaalgoritmen . De resulterende 48 bits opdeles i 8 dele og bliver inputparametrene for seks S-bokse. Til gengæld konverterer hver S-boks 6 inputbits til 2 outputbits. 16-bit resultatet af S-boksene er modulo 2 tilføjet til inputblok længst til venstre, og resultatet bliver registeret længst til højre for næste rundes inputblok. De tre registre længst til højre i den aktuelle runde flyttes uændret en position til venstre. Dette danner inputblokken for næste runde. [fire]
Ikke-lineariteten af krypteringsprocessen og runde nøgler tilvejebringes hovedsageligt af otte S-bokse, S 1 ... S 8 . Bits vælges til input fra de givne 16-bit registre a, b og c. Udvælgelsesrækkefølgen bestemmes af tabel 1 (bit med position 0 er den mindst signifikante) [5] :
S-klodser | input bits | |||||
---|---|---|---|---|---|---|
0 | en | 2 | 3 | fire | 5 | |
S1 _ | en 2 | en 5 | b 6 | b 9 | fra 11 | fra 13 |
S2 _ | en 1 | en 4 | b 7 | b 10 | fra 8 | fra 14 |
S3 _ | en 3 | en 6 | b 8 | b 13 | c 0 | fra 15 |
S4 _ | en 12 | en 14 | b 1 | b 2 | c 4 | fra 10 |
S5 _ | en 0 | en 10 | b 3 | b 14 | fra 6 | fra 12 |
S6 _ | en 7 | en 8 | b 12 | b 15 | c 1 | fra 5 |
S7 _ | en 9 | en 15 | b 5 | b 11 | c 2 | fra 7 |
S8 _ | en 11 | en 13 | b 0 | b 4 | c 3 | fra 9 |
Hver runde af chifferen bruger en hemmelig nøgleparameter, som modulo 2 påvirker S-box-indgangene. Derfor anmodes der om 48 bits for hver runde. For at konvertere en 128-bit nøgle til en 48-bit sekvens, bruger MacGuffin en itereret version af sin blokkrypteringsfunktion [5] .
Ligesom DES egner MacGuffin sig til differentiel kryptoanalyse, hvis essens er analysen af sandsynligheden for at opnå en vis forskel i værdierne af Feistel-funktionen for en given forskel i argumenter. En optimal 4-rund funktion har en sandsynlighed på , mens en 2-rund DES har en sandsynlighed på . Således er 32 MacGuffin-runder mindre stabile end 16 DES [6] .
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |