LOKI97 | |
---|---|
Luoja | Brown |
Luotu | 1997_ _ |
julkaistu | 1998_ _ |
Avaimen koko | 128/192/256 bittiä |
Lohkon koko | 128 bittinen |
Kierrosten lukumäärä | 16 |
Tyyppi | Feistelin verkko |
LOKI97 on 128-bittinen, 16-kierros, symmetrinen lohkosalaus , jossa on 128-256-bittinen mukautettu avain, jota käytetään sekä viestien salaamiseen että salauksen purkamiseen. Kehittäjä Lawrie Brown yhteistyössä J.Pieprzykin ja J.Seberryn kanssa. Siinä on Feistelin verkon tasapainotettu silmukkarakenne, joka käyttää 16 sykliä ja monimutkainen f-toiminto, joka yhdistää kaksi SP-kerrosta.
Sitä ei tällä hetkellä käytetä laajalti suhteellisen hitaan salausnopeuden, muita AES - kilpailijoita korkeampien resurssivaatimusten ja joidenkin mahdollisten haavoittuvuuksien vuoksi.
LOKI97:ää kehitettäessä otettiin huomioon olemassa olevien symmetristen algoritmien ominaisuudet, niiden haavoittuvuudet ja edut. Erityisesti artikkelissaan "Alustavat luonnokset LOKI:n viimeistelemiseksi", 15. joulukuuta 1997, algoritmin kirjoittaja L. Brown tutkii Blowfish , CAST , IDEA , TEA , ICE , SAFER ja useita muita algoritmeja. Tässä artikkelissa tarkasteltiin alkuperäisen algoritmin haavoittuvuuksia - LOKI91:n, LOKI97:n edeltäjän, haavoittuvuuksia. Avainten luontimekanismissa on puute, mikä teoriassa mahdollisti raakavoimamekanismin käytön hyökkäyksessä.
LOKI97-salausta ei ole patentoitu, se on vapaasti käytettävissä, tekijä on asettanut sen korvaamaan DES :n ja muita lohkoalgoritmeja. Edeltäjät ovat LOKI89- ja LOKI91- algoritmit . Toteutettu mcrypt- kirjastoon , useisiin ilmaisiin salausohjelmiin, Total Commanderille on lisäosa LOKI97-tuella.
LOKI97 oli ensimmäinen julkaistu ehdokas Advanced Encryption Standard -kilpailussa, se analysoitiin ja hyökättiin melko lyhyessä ajassa. Teoksessa "Weaknesses in LOKI97" [1] (Rijmen & Knudsen, 1999) paljastettiin, että algoritmissa on useita puutteita, jotka tekevät siitä haavoittuvan differentiaali- ja lineaariselle kryptausanalyysille .
AES-kilpailussa tehdyn tutkimuksen mukaan yhden syöttötiedon bitin muuttaminen jollain kierroksella suhteellisen suurella todennäköisyydellä (luokkaa ) johtaa yhden bitin muutokseen lähtötiedoissa, mikä tekee eron. hyökkäys onnistuu enintään yrityksissä. Samalla F-funktion epätasapaino tekee lineaarisen krypta-analyysin onnistuneeksi tunnetuilla salatuilla viesteillä. Samanaikaisesti algoritmin kuvauksessa kirjoittaja arvioi LOKI97:n turvallisuuden useita suuruusluokkia korkeammaksi (oletettiin, että murtamiseen tarvitaan ainakin salatekstejä). Tämä algoritmin puutteiden analyysi ei sallinut LOKI97-salauksen siirtymistä AES-kilpailun seuraavalle kierrokselle.
Nykyaikaisen 128-bittisen lohkosalauksen pitäisi kestää differentiaali- ja lineaarinen kryptausanalyysi paremmin kuin LOKI97.
Alkuperäinen teksti (englanniksi)[ näytäpiilottaa] Nykyaikaisen lohkosalauksen, jossa on 128-bittinen lohko, pitäisi vastustaa differentiaalista ja lineaarista hyökkäysmukkia paremmin kuin LOKI97.LOKI97 muuntaa 128-bittisen selkeän tekstin lohkon 128-bittiseksi salatekstiksi. Salaus tapahtuu seuraavasti: 128 bittiä alkuperäisestä lohkosta [L|R] on jaettu 2 64-bittiseen sanaan
Sen jälkeen nämä sanat käyvät läpi tasapainoisen Feistel-verkon 16 kierrosta seuraavan algoritmin mukaisesti:
Jokainen kierros käyttää sekä XOR-operaatiota että 64-bittisten sanojen lisäystä (modulo 2:64), mikä lisää algoritmin vastustuskykyä murtumista vastaan. Funktio F(F,B) tarjoaa funktion kaikkien tulobittien maksimisekoituksen, sen kuvaus annetaan alla. Salauksen purkuprosessi on samanlainen kuin salatekstin hankkimisalgoritmi: 16 vaihetta (16:sta 1:een)
Algoritmi itsessään käyttää 256-bittistä avainta, mutta käyttäjille annettava avain voi olla 256-, 192- ja myös 128-bittinen. Vastaavasti, jos 256-bittinen avain annetaan , niin
jos 192-bittinen avain annetaan , niin
ja jos 128-bittinen avain annetaan , niin
Lyhyiden (128-bittinen) ja yksinkertaisten (esimerkiksi nolla) näppäinten monimutkaisemiseksi sukupolvi käytti funktiota F, jota käytetään alla olevassa algoritmissa.
Väliavainten saamiseksi samalla tehokkuudella hyökkäyksiä vastaan käytetään funktiota g, jonka yksi vaihe on vakion lisääminen " kultaisen leikkeen " kirjoittajan mukaan. Syöttössä vastaanotettu avain käy läpi 48 iteraatiota seuraavista toiminnoista (i=1,48) luoden 48 väliavainta
,missä
Viestin salausta purettaessa käytetään väliavaimia käänteisessä järjestyksessä.
Funktiota voidaan kuvata seuraavalla lausekkeella
, jossa:
Bit shuffle toiminto. Jakaa syötetyn 64-bittisen sanan A kahteen 32-bittiseen ja sanan B alempaan 32 bittiin ja tuottaa 64-bittisen tuloksen ulostulossa seuraavan kaavan mukaan:
Vaihtamalla bittejä väliavaimella ja osan syöttötiedoista KP-toiminto sekoittaa bitit monimutkaistaakseen S-laatikoista tulevien ja niihin tulevien tulo- ja lähtötietojen sovitusprosessia.
Laajennustoiminto. Muuntaa syötetyn 64-bittisen sanan 96-bittisiksi seuraavan lain mukaisesti:
.
Funktio on rakennettu siten, että jokainen bitti sisääntulossaan putoaa 2 S-laatikkoon.
2 ryhmää S-laatikoita . Rakennettu siten, että sillä on maksimaalinen epälineaarisuus (siis kuutiofunktion valinta ja Galois-kentän pariton teho), niillä on hyvä vastustuskyky differentiaalista kryptausanalyysiä vastaan ja ne luovat myös lumivyöryefektin funktiota käytettäessä. Käytetään eripituisia lohkoja S1 - 13 bittiä, S2 - 11 bittiä. , ja . Sa(C):n syöte on 96-bittinen sana funktion E(B) lähdössä. Sb(C):n sanan korkeat bitit ovat sanan B korkeita 32 bittiä, joita käytetään yhtenä syötteenä koko funktiolle F(A,B), ja matalat bitit ovat seurausta funktion toiminnasta. P(D). S-laatikoiden syöttötiedot käännetään 0-> 0, 1 -> 1 muunnosten todennäköisyyden pienentämiseksi. S-laatikot lasketaan seuraavilla kaavoilla
Operaatio valitsee vähiten merkitsevät 8 bittiä A:sta.
Sa(A)-funktion lähdön uudelleenjärjestely . 64 bittiä sekoitetaan seuraavan kaavion mukaisesti:
56 | 48 | 40 | 32 | 24 | 16 | 08 | 00 | 57 | 49 | 41 | 33 | 25 | 17 | 09 | 01 |
58 | viisikymmentä | 42 | 34 | 26 | kahdeksantoista | kymmenen | 02 | 59 | 51 | 43 | 35 | 27 | 19 | yksitoista | 03 |
60 | 52 | 44 | 36 | 28 | kaksikymmentä | 12 | 04 | 61 | 53 | 45 | 37 | 29 | 21 | 13 | 05 |
62 | 54 | 46 | 38 | kolmekymmentä | 22 | neljätoista | 06 | 63 | 55 | 47 | 39 | 31 | 23 | viisitoista | 07 |
P-funktio on tärkein tapa sekoittaa bittejä. Sitä rakennettaessa tavoitteena oli minimoida kuvioiden todennäköisyys tulo- ja lähtöbittien jakautumisessa. Kuten aiemmissa algoritmin versioissa, tekijän mukaan latinalainen neliö otettiin perustaksi .
Symmetriset salausjärjestelmät | |
---|---|
Suoratoista salauksia | |
Feistelin verkko | |
SP verkko | |
Muut |