Khufu

Khufu
Luoja Ralph Merkle
Luotu 1990
julkaistu 1990
Avaimen koko 512-bittinen
Lohkon koko 64-bittinen
Kierrosten lukumäärä 8-32 (64 asti)
Tyyppi Feistelin verkko

Khufu  on Ralph Merklen vuonna 1990 kehittämä symmetrinen lohko 64-bittinen salausalgoritmi , joka on nimetty egyptiläisen faaraon Cheopsin mukaan .

Historiallinen tausta

Algoritmin luomishetkellä (vuoden 1990 lopussa) suurin osa tuolloin olemassa olevista symmetrisistä salausalgoritmeista oli sovitettu laitteistototeutuksiin huolimatta siitä, että salausalgoritmin laitteistototeutus on ennen kaikkea , kalliimpi kuin ohjelmisto, toisin sanoen useimpien potentiaalisten käyttäjien ulottumattomissa.

Joten 1990-luvun lopulla ryhmä Xerox -yhtiön kryptografeja kehitti salauksen - Khufu, joka on nimetty egyptiläisen faaraon Cheopsin mukaan. Algoritmi esiteltiin edelleen vuonna 1990 CRYPTO - konferenssissa .

Seuraavana vuonna (1991) Xerox Corporation sai patentin Khufu- ja Khafre-algoritmeille, minkä seurauksena patentinhaltija kielsi niiden kaupallisen käytön [1] .

Algoritmin luomisen edellytykset

Khufu-algoritmi on Feistel-verkkoon perustuva lohkoalgoritmi , joka on rakennettu seuraavien postulaattien perusteella:

Khufu-algoritmin teoreettinen perusta on DES-algoritmin kehittämisestä saatu kokemus . Siksi algoritmia suunniteltaessa otettiin huomioon seuraavat edellytykset [3] :

  1. 56-bittinen DES -avaimen koko on liian pieni ja sitä pitäisi suurentaa.
  2. Raskas permutaatioiden käyttö DES:ssä on kätevää vain laitteistototeutuksissa, mutta vaikeuttaa ohjelmistototeutuksia. DES:n nopeimmat toteutukset suorittavat permutaatioita taulukkomuodossa. Taulukkohaut voivat tarjota samat "sironta"-ominaisuudet kuin itse permutaatiot ja voivat tehdä toteutuksesta joustavamman.
  3. DES: n S-laatikot , joissa on vain 64 4-bittistä elementtiä, ovat liian pieniä, joten S - laatikoita on lisättävä. Lisäksi kaikki kahdeksan S -laatikkoa ovat käytössä samanaikaisesti. Tämä on kätevä laitteistolle, mutta ohjelmistototeutuksen kannalta se tuntuu turhalta rajoitukselta, joten on tarkoituksenmukaisempaa toteuttaa suurempi S -box-koko. Lisäksi S -laatikoiden sarjakäyttö (ei rinnakkaiskäyttö) vaihdon yhteydessä tulee toteuttaa.
  4. Alku- ja loppupermutaatiot ovat kryptografisesti merkityksettömiä, joten ne on eliminoitava.
  5. Kaikki nopeat DES-toteutukset laskevat avaimet kullekin vaiheelle. Tässä tilanteessa ei ole mitään järkeä monimutkaista näitä laskelmia.
  6. S -laatikoiden suunnittelukriteerit tulee olla julkisesti saatavilla.

Algoritmi

Algoritmin parametrit

Algoritmi salaa tiedot lohkoissa, lohkon koko on 64 bittiä. Sitten salausprosessin aikana jokainen lohko jaetaan 2 alilohkoon, joista kukin on kooltaan 32 bittiä.

Vaikka avaimen osia (aliavaimia K 0 ..K 3 ) käytetään vain alilohkojen lisäämiseen algoritmin alkuun ja loppuun, avaimen päätarkoituksena on luoda S -laatikoita. Algoritmi tarjoaa tavan luoda S -laatikoita avaimella [3] .

Algoritmilla on seuraavat parametrit [4] [3] :

  1. Salauslohkon koko on 64 bittiä.
  2. Salausavaimen koon on oltava 64-512 bittiä. Tässä tapauksessa avaimen koon on oltava 64:n kerrannainen.
  3. S - lohkossa on 8 tulobittiä ja 32 lähtöbittiä. On vaihteleva. Jokainen oktetti käyttää omaa S -laatikkoaan [1] .

Algoritmi S-laatikoiden rakentamiseen

Algoritmi koostuu aliavaimien luomisesta ja vakiokorvaustaulukosta. Standardin korvaustaulukon perusteella jokaiselle muunnosoktetille rakennetaan S -laatikot.

Vakiokorvaustaulukon rakentaminen
  • Tämän toimenpiteen alussa alustetaan taulukko, jossa on 256 riviä x 5 saraketta. Ensimmäinen sarake sisältää kaikki mahdolliset tavuarvot (00 - FF, vastaavasti). Muut neljä saraketta on täytetty samanlaisilla arvoilla. Alla on fragmentti tällaisesta taulukosta, joka osoittaa 1., 2. ja 256. rivin, vastaavasti [5] .
Fragmentti alustetusta vakiotaulukosta
tavu 4 tavua
00 00 00 00 00
01 01 01 01 01
FF FF FF FF FF
  • Yhdessä sarakkeessa tapahtuu tavupermutaatioita (menettely on samanlainen kuin S -laatikon tavujen permutaatio, kun se luotiin), jossa pseudona käytetään RAND Corporationin vuonna 1995 julkaisemaa miljoonan satunnaisluvun joukkoa. - satunnainen sekvenssi.
Fragmentti vakiotaulukosta iteraatioiden jälkeen
tavu 4 tavua
00 FA A1 22 41
01 71 88 B3 viisitoista
FF 44 yksitoista C4 E1
  • Näiden iteraatioiden jälkeen muodostetaan standardikorvaustaulukko. Katkelma tästä taulukosta on esitetty yllä.
Alaavaimien ja S-laatikoiden luominen

Khufu-algoritmin pääajatuksena on, että aliavaimet ja S -laatikot riippuvat kierroksesta, kun taas jokaisen kierroksen aikana Khufu-algoritmi käyttää vain yhtä korvausta vasemman alilohkon viimeisistä 8 bitistä 32 bitillä, toisin kuin DES-algoritmi. Harkitse algoritmia S -laatikoiden ja aliavaimien rakentamiseen. Se on rakennettu useissa vaiheissa [6] :

  1. Ensimmäisessä vaiheessa avain kirjoitetaan tähän varattuun 64 tavuun, kun taas käyttämättömät bitit asetetaan nollaan (muista, että mahdollinen avaimen koko vaihtelee välillä 8-64 tavua).
  2. Toisessa vaiheessa tämä lohko salataan Khufu-algoritmilla salauslohkoketjutustilassa. Nollasekvenssi otetaan kunkin lohkon aliavaimiksi ( K 0 .. K 3 ) ja standarditaulukko, joka on kuvattu edellä, otetaan korvaustaulukoiksi. Tulos on näennäissatunnainen 64-tavuinen sekvenssi, joka riippuu vain salausavaimesta. On mahdollista, että taulukoiden ja aliavaimien luomiseen tarvitaan lisää tavuja, joten tämä vaihe voidaan toistaa useita kertoja.
  3. Kolmannessa vaiheessa aliavainarvot ( K 0 .. K 3 ) valitaan annetusta bittijoukosta .
  4. Neljännessä vaiheessa jokaiselle muunnosoktetille rakennetaan S -laatikot:
    • Jokainen laskettu S -laatikko alustetaan alkuperäisellä standardikorvaustaulukolla, joka on kuvattu yllä.
    • Alkuperäisessä vakiokorvaustaulukossa syklissä sarakkeiden läpi (vastaavasti 0:sta tavuun 3. tavuun) suoritetaan sykli rivien yli (0:sta 255:een tavuun), jossa jokainen nykyinen tavu (tavun leikkauskohdassa oleva tavu) nykyinen rivi ja nykyinen sarake) vaihdetaan yhdellä saman sarakkeen seuraavista tavuista, määritettynä satunnaisesti (riippuu nykyisestä pseudosatunnaissekvenssitavusta); tuloksena on alkuperäinen taulukko, jossa jokaisen sarakkeen tavut on järjestetty "kaoottisesti" uudelleen [4] .

Salausmenettely

Salaus tapahtuu yhdellä 64-bittisellä tietolohkolla. Menettelyn alussa tälle lohkolle suoritetaan seuraavat toimet:

  • 64-bittinen datalohko on jaettu kahteen 32-bittiseen lohkoon (tämän jälkeen kutsumme niitä L:ksi ja R:ksi).
  • Kukin alilohko XOR - koodataan bittikohtaisesti alilohkoilla K0 ja K1 , vastaavasti (vasemmalle alilohkolle - K 0 , oikealle - K1 ) .

Sitten suoritetaan salaus. Vaiheiden toistojen määrä on yhtä suuri kuin algoritmin kierrosten lukumäärä.

  • Ensimmäisessä vaiheessa vasemman alilohkon alhainen tavu (viimeiset 8 bittiä) viedään S -lohkon läpi, josta saadaan 4-tavuinen (32-bittinen) arvo. Lisäksi jokaisessa operaatiooktetissa käytetään S - lohkoa, joka on tarkoitettu tälle oktetille.
  • Toisessa vaiheessa edellisessä vaiheessa saatu arvo lisätään bitti bitiltä (XOR) oikeanpuoleiseen tekstin alilohkoon.
  • Kolmas askel pyörii vasemmalle vasemman alilohkon eri bittien määrällä, mikä riippuu oktetin pyöreästä numerosta:
    1. 8 - jos numero on 3 tai 4
    2. 24 - jos numero on 7 tai 8
    3. 16 - kaikissa muissa tapauksissa
  • Neljännessä vaiheessa vasen ja oikea alilohko vaihdetaan.

Sen jälkeen kaikki vaiheet toistetaan uudelleen, mukaan lukien S - lohkon vaihtaminen 8 kierroksen välein.

Toimenpiteen lopussa, kun kaikki annetut kierrokset on käyty läpi, summaus suoritetaan samalla tavalla kuin summaus aliavaimilla K 0 ja K 1 , mutta muilla aliavaimilla K 2 ja K 3 [7 ] .

Käyttö ja kestävyys

S -laatikoiden ja aliavaimien riippuvuus tekee niistä salaisiksi kryptanalyytikon kannalta, mikä lisää merkittävästi algoritmin turvallisuutta differentiaalista kryptausanalyysiä vastaan. Tämä tarkoittaa tämän algoritmin pääspesifikaatiota: Khufu-algoritmia tulisi käyttää silloin, kun tarvitaan suurien tietomäärien nopea salaus harvinaisella avaimen vaihdolla [8] .

Algoritmin vertailu DES:n kanssa

Jotta jokainen lähtöbitti olisi riippuvainen DES-algoritmin jokaisesta syötteestä, on suoritettava 5 kierrosta. Khufu-algoritmissa samanlainen riippuvuus vaatii 9 kierrosta. Tässä tapauksessa suojakerroin on yhtä suuri kuin seuraava lauseke: , jossa parametrit  ovat kierrosten lukumäärä ,  on kierrosten lukumäärä, joka tarvitaan täydelliseen salaukseen . Siten DES-algoritmille ja Khufu-algoritmille vastaava parametri on . Tässä tapauksessa tämän vertailun suhteen Khufu-algoritmi on huonompi kuin DES-algoritmi. Khufu-algoritmin S -laatikot ovat kuitenkin salaisia, toisin kuin DES-algoritmi [9] .

Hyökkäykset salaukseen

Gilbertin ja Showon paras [10] hyökkäys Khufu-salausta vastaan. Hyökkäys tehtiin 16 kierroksen Khufua vastaan. Piilotetun tiedon paljastamiseksi kokonaan tarvittiin 2 31 valittua selkeää tekstiä. Mutta tätä tulosta ei voitu laajentaa useampaan kierrokseen. Jos käytetään suurempaa avainta, algoritmi on yksinkertaisesti tehoton [10] .

Salaus kestää raa'an voiman hyökkäyksen. 512-bittinen avain tarjoaa murtumisvaikeuden 2512, mikä tekee salauksesta kestävän tätä menetelmää vastaan ​​[3] .

Katso myös

  • poikkeamaa

Muistiinpanot

  1. 1 2 Panasenko, 2009 .
  2. Panasenko, 2009 , s. 288-289.
  3. ↑ 1 2 3 4 Schneier Bruce. luku 13. s.7. // Sovellettu kryptografia.
  4. 1 2 Panasenko, 2009 , s. 289-290.
  5. Panasenko, 2009 , s. 291-292.
  6. Panasenko, 2009 , s. 290-292.
  7. Panasenko, 2009, 289-290 .
  8. Panasenko, 2009 , s. 293-294.
  9. Merkle, 1991 .
  10. 1 2 Biham, Biryukov, Shamir, 1999 , s. 131-137.

Kirjallisuus