MARS | |
---|---|
Skaber | Carolyn Barwick, Don Coppersmith |
Oprettet | 1998 _ |
offentliggjort | 1998 _ |
Nøglestørrelse | 128-448 bit |
Blokstørrelse | 128 bit |
Antal runder | 32 |
Type | Feistel netværk |
MARS er en AES kandidat chiffer udviklet af IBM , som skabte DES på én gang . IBM siger, at MARS-algoritmen trækker på firmaets 25 års kryptoanalytiske ekspertise, og sammen med dens høje kryptografiske styrke tillader chifferen effektiv implementering selv inden for begrænsningerne af smart cards .
Don Coppersmith , en af forfatterne af Lucifer -chifferet ( DES ), kendt for en række artikler om kryptologi, deltog i udviklingen af chifferen : forbedring af strukturen af S-bokse mod differentiel kryptoanalyse , den hurtige matrixmultiplikationsmetode ( Coppersmith-Winograd-algoritme ), RSA - kryptanalyse . Ud over ham deltog Carolyn Barwick , Edward D'Evignon , Rosario Genaro , Shai Halevi , Charanjit Jutla , Steven M. Matyas Jr. i udviklingen af algoritmen . , Luke O'Connor , Mohamed Perevyan , David Safford , Nevenko Zunich .
I henhold til reglerne for AES -konkurrencen kunne deltagerne foretage mindre ændringer i deres algoritmer. Ved at udnytte denne regel ændrede forfatterne af MARSa nøgleudvidelsesproceduren, hvilket gjorde det muligt at reducere kravene til ikke-flygtig og RAM . En ændret version af algoritmen vil blive givet nedenfor.
Baseret på resultaterne af AES -konkurrencen kom MARS til finalen, men tabte til Rijndael . Efter offentliggørelsen af resultaterne (19. maj 2000) dannede udviklingsteamet deres egen mening om AES -konkurrencen [1] , hvor de kommenterede påstandene til deres hjerne.
MARS distribueres nu over hele verden under en royalty-fri licens .
MARS er en bloksymmetrisk chiffer med en hemmelig nøgle. Blokstørrelsen for kryptering er 128 bit, nøglestørrelsen kan variere fra 128 til 448 bit inklusive (multipler af 32 bit). Skaberne forsøgte at kombinere kodningshastigheden og chifferens styrke i deres algoritme. Resultatet er en af de stærkeste algoritmer i AES- konkurrencen .
Algoritmen er unik ved, at den brugte næsten alle eksisterende teknologier brugt i kryptoalgoritmer, nemlig:
Brugen af dobbelt shuffling udgør en vanskelighed for kryptoanalyse , som nogle tilskriver ulemperne ved algoritmen. Samtidig er der i øjeblikket ingen effektive angreb på algoritmen, selvom nogle nøgler kan generere svage undernøgler.
Forfatterne af chifferen gik ud fra følgende antagelser:
MARS-krypteringen brugte følgende krypteringsmetoder:
Strukturen af MARS-algoritmen kan beskrives som følger:
I den første fase overlejres hvert dataord med et nøgleord, og derefter er der otte omgange med blanding efter Feistel-netværket af den tredje type, sammen med noget ekstra blanding. I hver runde bruger vi et dataord (kaldet kildeordet) til at ændre tre andre ord (kaldet målordene). Vi behandler de fire bytes af det oprindelige ord som indekser i to S-bokse, S 0 og S 1 , som hver består af 256 32-bit ord, og derefter XOR eller tilføjer de tilsvarende S-boks data til tre andre ord.
Hvis de fire bytes af det oprindelige ord er b 0 , b 1 , b 2 , b 3 (hvor b 0 er den første byte og b 3 er den høje byte), så bruger vi b 0 , b 2 som indekser i blok S 0 og bytes b 1 , b 3 , som indekser i S-boksen S 1 . Først XOR S 0 til det første målord og derefter tilføje S 1 til det samme ord. Vi tilføjer også S 0 til det andet målord og blokerer XOR-S 1 til det tredje målord. Til sidst roterer vi det oprindelige ord 24 bit til højre.
I næste runde roterer vi de fire ord, vi har: så det aktuelle første målord bliver det næste kildeord, det nuværende andet målord bliver det nye første målord, det tredje målord bliver det næste andet målord, og nuværende kildeord bliver det tredje målord.
Desuden tilføjer vi efter hver af de fire runder et af målordene tilbage til det oprindelige ord. Konkret tilføjer vi efter første og femte runde det tredje målord tilbage til det oprindelige ord, og efter anden og sjette runde tilføjer vi det første målord tilbage til det oprindelige ord. Grunden til disse yderligere blandingsoperationer er at eliminere nogle få simple differentielle kryptoangreb i blandingsfasen for at bryde symmetrien i blandingsfasen og få et hurtigt flow.
Pseudokode 1. // Første overlejring af en nøgle på dataene 2. 3. 4. // Derefter 8 omgange med fremblanding 5. // brug D[0] til at ændre D[1]; D[2]; D[3] 6. // adgang til 4 S-bokse 7.8.9.10 _ _ _ 11. // og drej det oprindelige ord til højre 12. 13. // udfører også yderligere blandingsoperationer 14. 15. // tilføje D[3] til det oprindelige ord 16. 17. // tilføje D[1] til det oprindelige ord 18. // roter array D[ ] 19.20 .Den kryptografiske kerne i MARS er et type 3 Feistel-netværk, der indeholder 16 runder. I hver runde bruger vi nøglen E-funktion, som er en kombination af multiplikationer, rotationer og S-boks-kald. Funktionen tager et dataord som input og returnerer tre ord, med hvilke operationen med addition eller XOR til andre tre dataord efterfølgende vil blive udført. Derudover roteres kildeordet 13 bit til venstre.
For at give alvorlig modstand mod kryptoangreb bruges de tre outputværdier af E-funktionen (O 1 , O 2 , O 3 ) i de første otte runder og i de sidste otte runder i forskellige rækkefølger. I de første otte runder tilføjer vi O 1 og O 2 til henholdsvis det første og andet målord og XOR O 3 til det tredje målord. I de sidste otte runder tilføjer vi O 1 og O 2 til henholdsvis tredje og andet målord og XOR O 3 til det første målord.
Pseudokode 1. // Lav 16 runder med kryptering med nøglen 2. 3. 4. 5. 6. // første 8 runder fremadkonvertering 7. 8. 9. // derefter 8 runder omvendt transformation 10. 11. 12. 13. // roter array D[ ] 14. 15. E-funktionE-funktionen tager ét ord med data som input og bruger yderligere to nøgleord, hvilket producerer tre ord som output. I denne funktion bruger vi tre midlertidige variable, betegnet L, M og R (for venstre, midterste og højre).
Indledningsvis satte vi R til værdien af det oprindelige ord, der blev flyttet 13 bit til venstre, og satte M til summen af de oprindelige ord og det første nøgleord. Vi bruger derefter de første ni bit af M som et indeks til en af de 512 S-bokse (som opnås ved at kombinere S 0 og S 1 ved faseblanding), og lagrer i L værdien af den tilsvarende S-boks.
Derefter multiplicerer vi det andet nøgleord med R, og gemmer værdien i R. Så roterer vi R 5 positioner til venstre (så de 5 høje bit bliver de 5 lave bits af R efter rotationen). Derefter XOR R til L, og ser også på de nederste fem bits af R for at bestemme mængden af skift (fra 0 til 31), og roterer M til venstre med denne mængde. Dernæst roterer vi R yderligere 5 positioner til venstre og XOR L ind i L. Til sidst ser vi igen på de 5 mindst signifikante bits af R som mængden af rotation og roterer L med den mængde til venstre. Resultatet af E-funktionen er således 3 ord (i rækkefølge): L, M, R.
Pseudokode 1. // brug 3 midlertidige variable L; M; R 2. //tilføj det første søgeord 3. // gange med det andet nøgleord, som skal være lige 4. 5. // tag S-boks 6. 7. // disse bits beskriver mængden af efterfølgende rotation 8. // første rotation ved variabel 9. 10. 11. 12. // disse bits beskriver mængden af efterfølgende rotation 13. // anden variabel rotation fjorten.Tilbage shuffle er næsten det samme som fremad shuffle, bortset fra at dataene behandles i omvendt rækkefølge. Det vil sige, at hvis vi kombinerede frem- og tilbageblanding, så deres udgange og indgange ville blive forbundet i omvendt rækkefølge (D[0] fremad og D[3] tilbage, D[1] fremad og D[2] tilbage), så ville ikke se resultatet af blandingen. Som ved direkte blanding bruger vi også her ét kildeord og tre målord. Overvej de første fire bytes af det oprindelige ord: b 0 , b 1 , b 2 , b 3 . Vi vil bruge b 0 , b 2 som et indeks til S-boksen - S 1 , og b 1 b 3 for S 0 . Lad os XOR S 1 [b 0 ] ind i det første målord, trække S 0 [b 3 ] fra det andet ord, trække S 1 [b 2 ] fra det tredje målord og derefter XOR S 0 [b 1 ] også for at det tredje målord . Til sidst roterer vi det oprindelige ord 24 steder til venstre. Til næste runde roterer vi de tilgængelige ord, så det aktuelle første målord bliver det næste kildeord, det aktuelle andet målord bliver det første målord, det aktuelle tredje målord bliver det andet målord og det aktuelle kildeord bliver det tredje målord. Derudover trækker vi før en af de fire "særlige" runder et af målordene fra kildeordet: før fjerde og ottende runde trækker vi det første målord fra; før tredje og syvende runde trækker vi den tredje fra målord fra kildeordet.
Pseudokode 1. // Lav 8 omgange med tilbageblanding 2. 3. // yderligere blandingsoperationer 4. 5. //træk D[3] fra det oprindelige ord 6. 7. // trække D[1] fra det oprindelige ord 8. // henviser til de fire elementer i S-bokse 9. 10. 11. 12. 13. // og drej det oprindelige ord til venstre fjorten. 15. // roter array D[] 16. 17. 18. // Træk nøgleord fra 19.20 .Afkodningsprocessen er det omvendte af kodningsprocessen. Dekrypteringskoden ligner (men ikke identisk) med krypteringskoden.
Direkte blanding 1. // Indledende nøgleoverlejring 2. 3. 4. // Derefter laves 8 runder fremadblanding 5. 6. // roter array D[] 7. 8. // og drej det oprindelige ord til højre 9. 10. // adgang til 4 elementer af S-bokse 11. 12. 13. 14. 15. // yderligere blanding 16. 17. // tilføje D[3] til det oprindelige ord 18. 29. // tilføje D[1] til det oprindelige ord tyve. Kryptografisk kerne 1. // Kør 16 runder med overlay-tasten 2. 3. // roter array D[] 4. 5. 6. 7. 8. // sidste 8 runder i direkte rækkefølge 9. 10. 11. // første 8 runder i omvendt rækkefølge 12. 13. 14. 15.
Ved oprettelse af en S-boks S blev dens elementer genereret af en pseudo-tilfældig generator, hvorefter de blev testet for forskellige lineære og differentielle egenskaber. Pseudo-tilfældige S-bokse blev genereret med følgende parametre:
(hvor er det j-te ord i SHA-1 output ) Her anses i for at være et 32-bit heltal uden fortegn, og c1, c2, c3 er nogle konstanter. I IBM-implementeringen: c1 = 0xb7e15162; c2 = 0x243f6a88 (som er den binære notation af brøkdelen af hhv .). c3 blev ændret indtil S-bokse med passende egenskaber blev fundet. SHA-1 fungerer på datastrømme og bruger lidt endian.
S-boks egenskaberDifferentielle egenskaber .
XOR | Subtraktion |
---|---|
Lineære egenskaber
nøgleudvidelsesproceduren udvider det givne array af nøgler k[], bestående af n 32-bit ord (hvor n er et heltal fra 4 til 14) til et array K[] med 40 elementer. Den originale nøgle behøver ikke følge nogen struktur. Derudover garanterer nøgleudvidelsesproceduren følgende egenskaber for nøgleordet, der bruges til multiplikation i den kryptografiske kerne af algoritmen:
Lad os beskrive nøgleudvidelsesalgoritmen.
Chifferen var en AES - kandidat , efter nogle mindre ændringer i løbet af konkurrencens første runde, relateret til en ændring i nøgleudvidelsesproceduren, gik MARS med succes videre til finalen.
I finalen i konkurrencen havde MARS en række mangler:
For alle disse mangler fremhævede ekspertkommissionen en stor fordel ved denne algoritme - dens symmetri. Baseret på de identificerede mangler blev MARS, som forventet, ikke vinderen af AES.
Efter offentliggørelsen af resultaterne af AES-konkurrencen udgav MARS-holdet deres anmeldelse af hele konkurrencen. Det satte spørgsmålstegn ved kriterierne for at vurdere konkurrencen. De mente, at det vigtigste kendetegn ved chifferen netop skulle være pålideligheden og dens modstand (for eksempel mod brute-force- angreb). Derudover besvarede de alle krav fra juryen til deres algoritme.
1. MARS er ikke egnet til hardwareimplementering Blandt klagerne over chifferen var dens vanskelige hardwareimplementering, hvilket kunne føre til byrden af internettet, samt indførelsen af store, i størrelse ordninger.
Udviklerne hævder, at deres implementering er i stand til at fungere med en hastighed på 1,28 Gbps, hvilket er acceptabelt for internettet, og prisen på deres chips kan være høj ($13 for en 12Gbps-chip eller $1 for en 1Gbps-chip), men i deres prisen vil falde markant i fremtiden.2. MARS er ikke egnet til implementering på enheder med lav hukommelse Til implementering på SMART-kort har algoritmerne kun 128 bytes hukommelse. Til nøgleudvidelsesproceduren kræver MARS 512 bytes.
Udviklerne mener, at der ikke er nogen grund til at implementere AES på en så sårbar ressource med lav hukommelse som smart cards, da alle disse ressourcer nemt og hurtigt kan konverteres til offentlige nøglesystemer.3. MARS er ikke egnet til implementering på FPGA MARS er ikke egnet til implementering på platforme, hvor rotation ikke er tilladt (afhængigt af eksterne faktorer).
Udviklerne bemærker, at dette problem ikke er fatalt, men det tager lidt tid at tilpasse algoritmen til denne platform.4. MARS nøgleudvidelse er en meget tung operation
Udviklerne hævder, at dette er en latterlig udtalelse. De hævder at have det "ideelle" forhold mellem yderligere hukommelse pr. nøgle og gennemløb (25 bytes pr. nøgle)Som konklusion giver udviklerne deres analyse af AES-deltagernes algoritmer, ifølge resultaterne af hvilke MARS sammen med Serpent var den bedste kandidat til titlen AES. [en]
Der er i øjeblikket ingen effektive angreb på denne algoritme. Selvom det har flere svagheder [1] :
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |