LOKI97 | |
---|---|
Skapare | Brown |
Skapad | 1997 _ |
publiceras | 1998 _ |
Nyckelstorlek | 128/192/256 bitar |
Block storlek | 128 bitar |
Antal omgångar | 16 |
Sorts | Feistel nätverk |
LOKI97 är ett 128-bitars, 16-runda, symmetriska blockchiffer med en 128-256-bitars anpassad nyckel som används för att både kryptera och dekryptera meddelanden. Utvecklad av Lawrie Brown i samarbete med J.Pieprzyk och J.Seberry. Den har en Feistel-nätverksbalanserad loopstruktur som använder 16 cykler och en komplex f-funktion som kombinerar två SP-lager.
Det används för närvarande inte i stor utsträckning på grund av dess relativt långsamma krypteringshastighet, högre resurskrav än andra AES- tävlande och vissa potentiella sårbarheter.
Vid utvecklingen av LOKI97 togs hänsyn till funktionerna i de för närvarande befintliga symmetriska algoritmerna, deras sårbarheter och fördelar beaktades. I synnerhet i sin artikel "Preliminära skisser för att slutföra LOKI", den 15 december 1997, utforskar författaren till algoritmen L. Brown Blowfish , CAST , IDEA , TEA , ICE , SAFER och ett antal andra algoritmer. Den här artikeln undersökte sårbarheterna hos den ursprungliga algoritmen - LOKI91, föregångaren till LOKI97, som har ett fel i nyckelgenereringsmekanismen, som i teorin gjorde det möjligt att använda brute force-mekanismen för attacken.
LOKI97-chifferet är inte patenterat, gratis att använda, placerat av författaren som en ersättning för DES och andra blockalgoritmer. Föregångarna är LOKI89 och LOKI91 algoritmerna . Implementerat i mcrypt- biblioteket , ett antal gratis krypteringsprogram, finns en plugin för Total Commander med LOKI97-stöd.
LOKI97 var den första publicerade kandidaten i tävlingen Advanced Encryption Standard, analyserades och attackerades på ganska kort tid. I "Weaknesses in LOKI97" [1] (Rijmen & Knudsen, 1999) avslöjades att algoritmen har ett antal brister som gör den sårbar för differentiell och linjär kryptoanalys .
Enligt forskning utförd inom AES-tävlingen kommer en förändring av en bit av indata i en av omgångarna med en relativt hög sannolikhet (i storleksordningen ) att leda till en förändring av en bit i utdata, vilket gör skillnaden attacken lyckades maximalt för försök. Samtidigt gör obalansen i F-funktionen linjär kryptoanalys framgångsrik med kända krypterade meddelanden. Samtidigt, i beskrivningen av algoritmen, uppskattade författaren säkerheten för LOKI97 att vara flera storleksordningar högre (det antogs att för att spricka är det nödvändigt att ha åtminstone chiffertexter). Denna analys av algoritmens brister tillät inte LOKI97-chifferet att passera till nästa omgång av AES-tävlingen.
Ett modernt 128-bitars blockchiffer bör tåla differentiell och linjär kryptoanalys bättre än LOKI97.
Originaltext (engelska)[ visaDölj] Ett modernt blockchiffer med ett 128-bitars block borde motstå differentiell och linjär attackmuck bättre än LOKI97.LOKI97 konverterar ett 128-bitars klartextblock till 128-bitars chiffertext. Kryptering sker enligt följande: 128 bitar av det ursprungliga blocket [L|R] är uppdelat i 2 64-bitars ord
Därefter går dessa ord igenom 16 omgångar av det balanserade Feistel-nätverket enligt följande algoritm:
Varje omgång använder både XOR-operationen och addition (modulo 2:64) av 64-bitars ord, vilket ökar algoritmens motstånd mot sprickbildning. Funktionen F(F,B) ger den maximala blandningen av alla inmatade bitar av funktionen, dess beskrivning kommer att ges nedan. Dekrypteringsprocessen liknar algoritmen för att erhålla en chiffertext: 16 steg (från 16 till 1)
Algoritmen själv använder en 256-bitars nyckel, men nyckeln som ges till användare kan vara 256, 192 och även 128-bitars. Följaktligen, om en 256-bitars nyckel ges , då
om en 192-bitars nyckel ges , då
och om en 128-bitars nyckel ges , då
För att komplicera korta (128-bitars) och enkla (till exempel noll) nycklar använde genereringen funktionen F, som används i algoritmen nedan.
För att erhålla mellannycklar med samma effektivitet mot attacker, används funktionen g, vars ett av stegen är tillägget av en konstant, enligt författaren till "det gyllene snittet ". Nyckeln som tas emot vid ingången går igenom 48 iterationer av följande åtgärder (i=1,48), vilket skapar 48 mellanliggande nycklar
,var
Vid dekryptering av ett meddelande används mellannycklarna i omvänd ordning.
Funktionen kan beskrivas med följande uttryck
, vart i:
Bit shuffle-funktion. Delar upp det ingående 64-bitars ordet A i 2 32-bitars och de lägre 32 bitarna av ord B och producerar ett 64-bitars resultat vid utgången enligt formeln:
Genom att byta bitar med en mellannyckel och en del av indata, blandar KP-funktionen bitarna för att komplicera processen att matcha indata och utdata som kommer från och till S-boxar.
Förlängningsfunktion. Konverterar ett inmatat 64-bitars ord till ett 96-bitars ord enligt följande lag:
.
Funktionen är konstruerad på ett sådant sätt att varje bit vid sin ingång faller in i 2 S-boxar.
2 grupper av S-boxar . Byggd för att ha maximal icke-linjäritet (därav valet av den kubiska funktionen och Galois-fältets udda styrka), ha bra motstånd mot differentiell kryptoanalys och även skapa en lavineffekt när du använder funktionen. Block med olika längder används S1 - 13 bitar, S2 - 11 bitar. , och . Insignalen till Sa(C) är ett 96-bitars ord vid utgången av funktionen E(B). De höga bitarna i ordet för Sb(C) är de höga 32 bitarna av ordet B som används som en av ingångarna för hela funktionen F(A,B), och de låga bitarna är resultatet av funktionens verkan P(D). Indata för S-boxar inverteras för att minska sannolikheten för transformationer av formen 0-> 0, 1 -> 1. S-boxar beräknas med följande formler
Operationen väljer de minst signifikanta 8 bitarna från A.
Ordna om utgången från Sa(A)-funktionen. 64 bitar blandas enligt följande schema:
56 | 48 | 40 | 32 | 24 | 16 | 08 | 00 | 57 | 49 | 41 | 33 | 25 | 17 | 09 | 01 |
58 | femtio | 42 | 34 | 26 | arton | tio | 02 | 59 | 51 | 43 | 35 | 27 | 19 | elva | 03 |
60 | 52 | 44 | 36 | 28 | tjugo | 12 | 04 | 61 | 53 | 45 | 37 | 29 | 21 | 13 | 05 |
62 | 54 | 46 | 38 | trettio | 22 | fjorton | 06 | 63 | 55 | 47 | 39 | 31 | 23 | femton | 07 |
P-funktionen är det huvudsakliga sättet att blanda bitar. När man konstruerade den var målet att minimera sannolikheten för mönster i fördelningen av in- och utbitar. Liksom i tidigare versioner av algoritmen, enligt författaren, togs den latinska kvadraten som grund .
Symmetriska kryptosystem | |
---|---|
Streama chiffer | |
Feistel nätverk | |
SP nätverk | |
Övrig |