Kryptografiassa Feistel-salaus on symmetrinen rakenne, jota käytetään lohkosalakirjoitusten rakentamisessa ja joka on nimetty saksalaisen IBM:n salakirjoittajan Horst Feistelin mukaan; se tunnetaan yleisesti myös nimellä Feistel-verkko. Suuri joukko lohkosalakirjoituksia käyttää tätä järjestelmää, mukaan lukien Data Encryption Standard -standardi. Feistel-rakenne on perusrakenteena monille tunnetuille salausalgoritmeille, koska se tarjoaa helposti toteutettavan tavan rakentaa käännettävä (invertible) lohkokirjoitus käyttäen ei-välttämättä käännettäviä osafunktioita.

Mikä on Feistel-rakenne?

Feistel-verkko on iteroitu lohkokirjoitusrakenne, jossa selväteksti jaetaan tyypillisesti kahteen yhtä suureen osaan: vasempaan (L) ja oikeaan (R) puolikkaaseen. Rakenteessa toistetaan useita kierroksia (round), ja jokainen kierros muuntaa osia käyttäen alifunktiota (kierrosfunktio) ja alavaimia (subkeys) avaimen aikataulusta. Rakenteen yksi keskeinen ominaisuus on, että salaus voidaan kumota samalla rakenteella ja samoilla alifunktioilla, kun alavaimojen järjestys vain käännetään — tästä seuraa tehokas implementaatio sekä ohjelmisto- että laitteistotasolla.

Kuinka Feistel-verkko toimii (yksittäinen kierros)

Yksinkertaistetusti yhden kierroksen operaatiot ovat:

  • Syötteenä L_{i-1} ja R_{i-1} (edellisen kierroksen tulokset).
  • L_i = R_{i-1}.
  • R_i = L_{i-1} XOR F(R_{i-1}, K_i), jossa F on kierrosfunktio ja K_i on kierroksen alavain.

Tämä rakenne takaa, että koko kierros on käännettävissä, koska XOR-operaatio on kääntyvä ja vasemman ja oikean puolikkaan vaihto on helposti peruutettavissa, kun alavaimat käytetään käänteisessä järjestyksessä purussa.

Kierrosfunktio ja komponentit

Feistel-verkot käyttävät usein useita toistuvia operaatiokierroksia, kuten:

  • Bittien sekoittaminen (usein kutsutaan permutaatiolaatikoiksi tai P-laatikoiksi).
  • Yksinkertaiset epälineaariset funktiot (joita kutsutaan usein korvauslaatikoiksi tai S-laatikoiksi).
  • Lineaarinen sekoittaminen (modulaarialgebran merkityksessä) XOR:n avulla tuottaa funktion, jossa on suuria määriä sitä, mitä Claude Shannon kuvaili "sekaannukseksi ja hajanaisuudeksi".

Bittien sekoittaminen luo diffuusiovaikutuksen, kun taas substituutiota käytetään sekoittamiseen. Kierrosfunktio F voi sisältää esimerkiksi S-laatikoita, permutaatioita, modulaarisia yhteenlaskuja tai muita epälineaarisia operaatioita. Tärkeää on, että F tuo epälineaarisuutta, koska ilman sitä verkko olisi alttiimpi analyyseille, kuten lineaariselle tai differentiaaliselle kryptanalyysille.

Ominaisuudet ja edut

  • Invertoitavuus ilman käänteisiä osafunktioita: Feistel-rakenne mahdollistaa sen, että koko lohkokirjoitus on käännettävissä vaikka kierrosfunktio F ei itsessään olisi käännettävissä.
  • Yhtenäinen toteutus: Salaus- ja purkuoperaatiot ovat rakenteellisesti lähellä toisiaan; purku saadaan käyttämällä samoja kierrosfunktioita mutta kääntämällä alavaimojen järjestys.
  • Hyvä diffuusio ja sekoittuminen: Yhdistämällä P-laatikoita, S-laatikoita ja XOR-operaatioita saavutetaan Shannonin kuvailema sekaannus ja hajanaisuus, mikä tekee salatusta tekstistä vaikeasti ennustettavaa.
  • Skaalautuvuus: Kierrosten määrää voi lisätä tai vähentää halutun turvallisuustason mukaan; tyypillisiä toteutuksia käyttävät esimerkiksi 8–32 tai enemmän kierroksia riippuen algoritmista.
  • Helppo laitteistototeutus: Iteratiivinen rakenne sopii hyvin piirirakenteisiin ja pipelinettyihin toteutuksiin.

Käyttöesimerkkejä

Feistel-rakennetta käyttävät monet tunnetut algoritmit. Esimerkkiarkkitehtuureja ovat muun muassa DES, Blowfish, CAST- ja monet muut vanhemmat sekä joistain tapauksista johdetut lohkosalausalgoritmit. Eri algoritmit eroavat käytettyjen S-laatikoiden, permutaatioiden, kierrosfunktion monimutkaisuuden ja alavaimojen generointitavan (avaimen aikataulu) osalta.

Turvallisuus ja suunnittelu

Feistel-verkkojen turvallisuus riippuu ensisijaisesti kierrosfunktion laadusta, S-laatikoiden epälineaarisuudesta, alavaimojen riippumattomuudesta sekä kierrosten määrästä. Hyvin suunnitellut S-laatikot ja riittävä määrä kierroksia auttavat vastustamaan differential- ja linear-kryptanalyysiä. Avaimen aikataulun (key schedule) heikkoudet voivat johtaa heikkoihin tai ristikkäisiin avaimiin, joten sen suunnittelu on olennainen osa turvallisuutta — tästä syystä joidenkin algoritmien turvallisuus heikkenee, jos avaimen aikataulu on liian heikko tai altis symmetrialle.

Variantiot ja laajennukset

Perinteisen (tasapainotetun) Feistel-verkon lisäksi on olemassa myös epätasapainotettuja Feistel-verkkoja, joissa L- ja R-osiot eivät ole yhtä suuria, sekä ristiin-sekoittavia (generalized) Feistel-rakenteita, joissa kierrosfunktiot ja vaihdot voidaan toteuttaa moninaisemmin. Joissain moderneissa rakenteissa käytetään hybridimuotoja, jotka yhdistävät Feistelin ja substituutio-permutaatioverkkojen (SPN) elementtejä.

Yhteenveto

Feistel-salaus on monikäyttöinen ja tehokas tapa rakentaa käännettävä lohkokirjoitus. Sen etuina ovat helppo toteutus, selkeä purkuprosessi (alavaimojen käännöllä) ja mahdollisuus käyttää monimutkaisia, epälineaarisia kierrosfunktioita ilman, että itse funktioiden tarvitsee olla käännettäviä. Kuitenkin turvallisuus perustuu aina huolelliseen suunnitteluun: riittävään määrä kierroksia, hyvin valittuihin S-laatikkoihin, ja vahvaan avaimen aikatauluun.