A Feistel hálózata vagy a Feistel terve ( angol. Feistel hálózat, Feistel titkosítás ) a blokk titkosítások létrehozásának egyik módszere . A hálózat Feistel cellákból áll . Minden cella bemenete adatokat és kulcsot kap. Az egyes cellák kimenetén a megváltozott adatok és a megváltozott kulcs fogadása történik. Minden cella azonos típusú, és azt mondják, hogy a hálózat egy bizonyos ismétlődő ( iterált ) struktúra. A kulcsot a titkosítási / visszafejtési algoritmustól függően választják ki, és az egyik cellából a másikba való áthelyezéskor megváltozik. A titkosítás és a visszafejtés ugyanazokat a műveleteket hajtja végre; csak a sorrend máskulcsok . A műveletek egyszerűsége miatt a Feistel hálózat szoftveresen és hardveresen is könnyen megvalósítható. Számos blokk titkosítás ( DES , RC2 , RC5 , RC6 , Blowfish , FEAL , CAST-128 , TEA , XTEA , XXTEA stb.) a Feistel hálózatot használja alapul. A Feistel hálózat alternatívája a permutációs-permutációs hálózat ( AES stb.).
1971 -ben Horst Feistel szabadalmaztatott két különböző titkosítási algoritmusokat megvalósító eszközt, amelyeket később " Lucifer "-nek ( Eng. Lucifer ) neveztek el. Az egyik ilyen eszköz a később "Feistel-hálózatnak" ( angol Feistel cipher , Feistel network ) elnevezett kialakítást használt. Ezután Feistel Don Coppersmith -tel közösen új kriptorendszerek létrehozásán dolgozott az IBM falai között . A Lucifer-projekt meglehetősen kísérleti jellegű volt, de a DES algoritmus ( eng. d ata e ncryption s tandard ) alapja lett. 1973- ban a Scientific American magazin megjelentette Feistel "Cryptography and computer security" ( Eng. Cryptography and computer privacy ) [1] című cikkét, amely feltárta a titkosítás néhány fontos vonatkozását, és leírta a Lucifer - projekt első változatát. A Project Lucifer első verziója nem használta a Feistel hálózatot.
A Feistel hálózat alapján készült a DES algoritmus. 1977 -ben az Egyesült Államok hatóságai elfogadták a FIPS 46-3 szabványt , és a DES-t ismerték el az adattitkosítás szabványos módszereként. A DES-t már egy ideje széles körben használják kriptográfiai rendszerekben. Az algoritmus iteratív felépítése lehetővé tette egyszerű szoftveres és hardveres implementációk létrehozását.
Egyes adatok szerint [2] a Szovjetunióban már az 1970-es években a KGB kifejlesztett egy blokk-rejtjelet , amely a Feistel hálózatot használta, és valószínűleg ezt a titkosítást fogadták el 1990 -ben GOST 28147-89 néven .
1987 - ben kifejlesztették a FEAL és az RC2 algoritmusokat . A Feistel hálózatok az 1990 -es években terjedtek el – az olyan algoritmusok megjelenésének éveiben, mint a Blowfish (1993), TEA (1994), RC5 (1994), CAST-128 (1996), XTEA (1997), XXTEA (1998), RC6 (1998) és mások.
1997. január 2- án a NIST Institute versenyt hirdetett egy új adattitkosítási algoritmus létrehozására a DES helyettesítésére . Az új blokkrejtjelet AES -nek ( a fejlett e ncryption s tandard ) nevezték el, és 2002. május 26-án hagyták jóvá . Az AES helyettesítő-permutációs hálózatot használ a Feistel hálózat helyett .
Legyen megkövetelhető néhány információ titkosítása , amely bináris formában jelenik meg ( nullák és egyesek sorozata formájában ), és amely egy számítógép vagy más eszköz memóriájában található (például egy fájlban ).
titkosítási algoritmus.
Továbbá figyelembe vesszük azokat a műveleteket is, amelyek csak egy blokkal fordulnak elő, mivel ugyanazokat a műveleteket más blokkokkal hajtják végre a titkosítási folyamat során.
A felsorolt műveletek N-1 alkalommal kerülnek végrehajtásra, ahol N a kiválasztott titkosítási algoritmus köreinek száma . Ebben az esetben az egyik fordulóból (szakaszból) a másikba való átmenetek között a billentyűk megváltoznak: helyette , - a stb.).
DekódolásAz információ visszafejtése ugyanúgy történik, mint a titkosítás, azzal az egyetlen kivétellel, hogy a kulcsok fordított sorrendben következnek, vagyis nem az elsőtől az N -ig, hanem az N- ediktől az elsőig .
A fordulók eredménye . Az N - edik körben a és permutáció nem kerül végrehajtásra, így ugyanazt az eljárást lehet használni a visszafejtéshez, egyszerűen a kulcsok használati sorrendjének megfordításával ( helyett ):
Egy kis változtatással elérhető a titkosítási és visszafejtési eljárások teljes azonossága.
Előnyök:
Vegyünk egy példát. Legyen:
Az A transzformáció egyszeri alkalmazása az X bemeneti blokkra az Y kimeneti blokkot eredményezi :
Ha az A transzformációt alkalmazza az előző - Y transzformáció eredményére, akkor a következőt kapja:
Legyen az X bemeneti blokk két egyenlő hosszúságú L és R részblokkból :
Két transzformációt határozunk meg:
Bemutatjuk a jelölést:
Bizonyítsuk be a G ( ) kettős transzformáció involutivitását .
Könnyen belátható, hogy a G transzformáció csak a bal L alblokkot változtatja meg , a jobb R változatlan marad:
Ezért a következőkben csak az L részblokkot fogjuk figyelembe venni . Miután kétszer alkalmaztuk a G transzformációt L - re , a következőt kapjuk:
Ilyen módon:
Következésképpen
és G involúció . _
Bizonyítsuk be a T ( ) kettős transzformáció involutivitását .
Fontolja meg a titkosítási folyamatot. Legyen:
Ekkor az i+1 -edik körben végrehajtott transzformáció a következőképpen írható fel:
.Az 1. fordulóban végrehajtott átalakítás:
Ezért a kimeneti érték m titkosítási kör után a következő lesz:
Látható, hogy az utolsó szakaszban nem szükséges T permutációt végrehajtani .
A visszafejtés az összes transzformáció fordított sorrendben történő alkalmazásával történik. Az egyes transzformációk involutivitása miatt a fordított sorrend adja az eredeti eredményt:
Horst Feistel "Cryptography and Computer Security" [1] című munkájában az átalakítások (függvények ) két blokkját írja le:
Megmutatható, hogy bármilyen bináris transzformáció egy fix hosszúságú adatblokkon keresztül megvalósítható s-boxként . A nagy N N bites s-blokk szerkezetének összetettsége miatt a gyakorlatban egyszerűbb konstrukciókat alkalmaznak.
Az eredeti cikkben [1] a "blokk" kifejezést használjuk a "funkció" kifejezés helyett, mivel blokk titkosításról beszélünk, és feltételezték, hogy az s- és p-blokkok digitális mikroáramkörök (digitális blokkok).
S-blokkA helyettesítő blokk (s-box, angol s-box ) a következő részekből áll:
Egy n bites S-blokk elemzése nagy n esetén rendkívül nehéz, de nagyon nehéz egy ilyen blokkot a gyakorlatban megvalósítani, mivel a lehetséges kapcsolatok száma rendkívül nagy ( ). A gyakorlatban a helyettesítési blokkot összetettebb rendszerek részeként használják.
Általános esetben egy s-blokk eltérő számú be-/kimenettel rendelkezhet, ebben az esetben a kapcsolórendszerben nem szigorúan egy kapcsolat mehet a dekóder minden kimenetéről, hanem 2 vagy több, vagy nem. összes. Ugyanez igaz a kódoló bemeneteire is.
Az elektronikában a jobb oldali diagram közvetlenül alkalmazható. A programozás során helyettesítő táblákat állítanak elő. Mindkét megközelítés egyenértékű, azaz a számítógépen titkosított fájl visszafejthető elektronikus eszközön és fordítva.
számú kombináció | 0 | egy | 2 | 3 | négy | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Bejárat | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
Kijárat | 011 | 000 | 001 | 100 | 110 | 111 | 010 | 101 |
A permutációs blokk (p-block, eng. p-box ) csak megváltoztatja a számok helyzetét, és egy lineáris eszköz. Ennek a blokknak nagyon sok be- és kimenete lehet, azonban a linearitás miatt a rendszer nem tekinthető kriptorezisztensnek.
Egy n bites p-blokk kulcsának kriptoanalízise n-1 különböző üzenet bemenetére való eljuttatásával történik, amelyek mindegyike n-1 nullából ("0") és 1 egyesből ("1") áll (vagy fordítva, egyesektől és nullától ).
Ciklikus váltásMegmutatható, hogy a ciklikus eltolás a p-blokk speciális esete.
A legegyszerűbb esetben (1 bites eltolás) a szélső bitet leválasztjuk, és áthelyezzük a regiszter vagy busz másik végére. Attól függően, hogy melyik bitet veszik fel, jobbra vagy balra, az eltolást jobbra vagy balra hívják. A több bittel történő eltolás úgy is felfogható, hogy többszöri 1-gyel történik.
Irányváltás | Bitrendelés műszak előtt | Bitsorrend műszak után |
---|---|---|
Bal | ||
jobb |
Az " add modulo n " műveletet a következőképpen jelöljük
( A + B ) mod nés az A + B összeg n -nel való osztásának maradéka , ahol A és B számok.
Megmutatható, hogy két modulo n szám összeadása a bináris rendszerben s-blokkként van ábrázolva, amelyben az A szám a bemenetre kerül, és a kapcsolásként egy B bites ciklikus balra eltolást használunk. s-blokk rendszere.
A számítástechnikában és az elektronikában az összeadási műveletet általában modulo összeadásként valósítják meg , ahol m egy egész szám (általában m egyenlő a gép kapacitásával). Binárisba kerülni
A + B modelég összeadni a számokat, majd eldobni az m -től kezdődő számjegyeket és az idősebbeket.
Szorzás modulo nA modulo n szorzást így jelöljük
( A * B ) mod nés az A * B szorzat n -nel való osztásának maradéka , ahol A és B számok.
Az x86 platformon lévő személyi számítógépekben két m bites szám szorzásakor 2 * m kapacitású számot kapunk . Ahhoz, hogy a maradékot megkapja a -val való osztás után , el kell dobnia az m legjelentősebb bitet.
A Feistel hálózatot használó titkosítási algoritmus általános képe:
/* Egy részblokk transzformációját végrehajtó függvény, figyelembe véve a kulcs értékét (kulcsonként). A megvalósítás a kiválasztott blokk titkosítási algoritmustól függ. */ int f ( int alblokk , /* alblokk konvertálásához */ int kulcs /* gomb */ ); /* visszatérési érték - konvertált blokk */ /* Egyszerű szöveges titkosítást végrehajtó függvény */ üres kripta ( int * bal , /* bal beviteli alblokk */ int * jobb , /* jobb beviteli alblokk */ int rounds , /* körök száma */ int * kulcs /* billentyűtömb (körönként egy billentyű) */ ) { int i , temp ; for ( i = 0 ; i < kör ; i ++ ) { hőmérséklet = * jobb ^ f ( * bal , gomb [ i ] ); * jobb = * bal ; * bal = hőmérséklet ; } } /* Szöveg visszafejtését végző függvény */ érvénytelen visszafejtés ( int * balra , /* balra titkosított alblokk */ int * jobb , /* jobb oldali titkosított alblokk */ int rounds , /* körök száma */ int * kulcs /* billentyűtömb (körönként egy billentyű) */ ) { int i , temp ; for ( i = kör - 1 ; i >= 0 ; i -- ) { hőmérséklet = * bal ^ f ( * jobb , gomb [ i ] ); * bal = * jobb ; * jobb = hőmérséklet ; } }Előnyök:
Hibák:
A Feistel hálózatokat széles körben tanulmányozták a kriptográfusok széleskörű használatuk miatt. 1988- ban Michael Louby és Charles Rakoff kutatást végzett a Feistel hálózaton, és bebizonyította, hogy ha a körfüggvény kriptográfiailag erős pszeudo-véletlenszerű, és a használt kulcsok minden körben függetlenek, akkor 3 kör is elegendő lesz. hogy a blokk titkosítás pszeudo-véletlen permutáció legyen, míg négy kör elég lesz egy erős pszeudo-véletlen permutációhoz.
Lubi és Rakoff „ ál- véletlenszerű permutációja ” olyan, amely ellenáll az adaptív nyílt szöveges választási támadásnak, az „ erős pszeudo-véletlenszerű permutáció ” pedig egy pszeudo-véletlen permutáció, amely ellenáll a választott titkosított szöveges támadásnak.
A nyugati irodalomban néha a Feistel hálózatot "Luby-Rackoff blokk titkosításnak" nevezik Luby és Rackoff tiszteletére, akik nagy mennyiségű elméleti kutatást végeztek ezen a területen.
Később, 1997-ben Moni Naor és Omer Reingold javasolta a Lubi-Rakoff konstrukció egyszerűsített változatát, amely négy körből áll. Ez a változat két páronkénti független permutációt használ első és utolsó körként . A Naor-Reingold konstrukció két középső köre megegyezik a Lubi-Rakoff konstrukció köreivel [6] .
A legtöbb kutatás konkrét algoritmusok tanulmányozására irányul. A Feistel hálózaton alapuló számos blokk-titkosítóban találtak néhány sebezhetőséget, de egyes esetekben ezek pusztán elméleti jellegűek, és a számítógépek jelenlegi teljesítménye mellett a gyakorlatban lehetetlen feltörni őket.
Nagy méretű (128 bites vagy több) titkosítási blokkok esetén az ilyen Feistel-terv 32 bites architektúrákon való megvalósítása nehézségeket okozhat, ezért ennek a kialakításnak a módosított változatait használják. Általában négy ágú hálózatokat használnak. Az ábra a leggyakoribb módosításokat mutatja. Vannak olyan rendszerek is, amelyekben a felek és a hossza nem egyezik. Az ilyen hálózatokat kiegyensúlyozatlannak nevezzük .
Forrás [7] :
Az IDEA algoritmus teljes körének egy iterációjának sémája |
---|
Az IDEA algoritmus egy mélyen módosított Feistel hálózatot használ. Ebben a 64 bites bemeneti adatblokkok (jelölése ) 4, 16 bites alblokkra vannak osztva . Mindegyik szakasz 6 darab 16 bites kulcsot használ. Összesen 8 fő szakaszt és 1 rövidített szakaszt használnak.
Képletek a részblokkok értékének kiszámításához az i - edik körben (1-8. körhöz):
hol van a j -edik billentyű az i -edik körön.
A 9. forduló kiszámításának képlete:
A függvény kimenete az lesz
Látható, hogy az s- és p-blokkokat nem tiszta formában használják. A fő műveletek a következők:
Történelmileg az első Feistel-hálózatot használó algoritmus a „ Lucifer ” algoritmus volt, a munka során, amelyen Feistel ténylegesen kidolgozta a struktúrát, amely később „Feistel-hálózat” néven vált ismertté. 1971 júniusában a Feistel megkapta a 3798359. számú amerikai szabadalmat [8] .
A " Lucifer " első verziója 48 bites blokkokat és kulcsokat használt, és nem a "Feistel hálózat" kialakítását. Az algoritmus egy későbbi módosítását John L. Smith nevére szabadalmaztatták 1971 novemberében (3 796 830 amerikai egyesült államokbeli szabadalom; 1971. november) [ 9 ] , és a szabadalom magában foglalja a Feistel hálózat leírását és egy speciális titkosítási funkciót is. 64 bites kulcsokat és 32 bites blokkokat használt. Végül pedig a legújabb verziót 1973-ban javasolták, és 128 bites blokkokkal és kulcsokkal működött. A "Lucifer" algoritmus legteljesebb leírását Arthur Sorkin ( eng. Arthur Sorkin ) "Lucifer. Cryptographic Algorithm" ("Lucifer, A Cryptographic Algorithm") a "Cryptology" ("Cryptologia") folyóiratban 1984 januárjában [10] .
Bár a "Lucifer" eredeti módosítása nélkülözte a "Feistel-sejteket", jól mutatja, hogy csak az s- és p-dobozok használata nagymértékben torzíthatja az eredeti szöveget. Az 1971. júniusi minta „Lucifer” algoritmusának felépítése kétféle réteg „szendvicse” egymás után – az úgynevezett SP-hálózatok (vagy helyettesítési-permutációs hálózatok). Az első rétegtípus egy 128 bites p-blokk, amelyet egy második réteg követ, amely 32 modulból áll, amelyek mindegyike két négybites s-blokkból áll , amelyek megfelelő bemenetei rövidre vannak zárva, és ugyanazt az értéket táplálják azokat az előző réteg kimenetéből . De maguk a helyettesítési blokkok különböznek egymástól (a helyettesítési táblázatokban különböznek). A modul kimenete csak az egyik s-boxból kap értékeket, melyeket konkrétan a kulcs egyik bitje határozza meg, aminek a száma megegyezett a szerkezetben lévő s-box számával. Az algoritmus egyszerűsített diagramja kisebb bitmélységgel és nem teljes körszámmal az ábrán látható. 16 s-box szelektort használ (összesen 32 s-boxot), tehát ez a séma 16 bites kulcsot használ.
Vizsgáljuk meg most, hogyan változik a rejtjelezett szöveg a fenti algoritmusban, ha csak egy bit változik. Az egyszerűség kedvéért az s-blokk cseréinek táblázatait vesszük úgy, hogy ha az összes nullát betápláljuk egy s-blokk bemenetére, akkor az összes nulla is megjelenik. Az általunk választott s-blokkok alapján, ha minden nulla a titkosító eszköz bemenetére kerül, akkor az eszköz kimenete csupa nulla lesz. Valós rendszerekben nem használnak ilyen helyettesítési táblákat, mivel nagymértékben leegyszerűsítik a kriptoanalitikus munkáját, de példánkban jól szemléltetik az erős karakterek közötti kapcsolatot a titkosított üzenet egy bitjének megváltoztatásakor. Látható, hogy az első p-blokk miatt az egyetlen egység a blokk közepére kerül, majd a következő nemlineáris s-blokk "megsokszorozza", és már két egység megváltoztatja pozícióját a következő p miatt. -blokk, stb. A titkosító eszköz végén az erős szimbólumok közötti csatolás miatt a kimeneti bitek a bemenet és a használt kulcs komplex funkcióivá váltak. Átlagosan a bitek fele "0" és fele "1" lesz a kimenetben.
Lényegében a Feistel hálózat alternatívája az összetett SP-hálózatoknak, és sokkal szélesebb körben használják. Elméleti szempontból a kerek titkosítási funkció SP hálózatra redukálható, de a Feistel hálózat praktikusabb, mivel a titkosítást és a visszafejtést ugyanaz az eszköz végezheti, de a használt kulcsok fordított sorrendjében. Az algoritmus második és harmadik verziója (a Feistel hálózatot használva) 32 bites blokkon működött 64 bites kulccsal és 128 bites blokkokkal 128 bites kulccsal. A legújabb (harmadik) verzióban a kerek titkosítási funkciót nagyon egyszerűen rendezték el - először a titkosított alblokkot egy 4 bites s-blokk rétegen vezették át (hasonlóan az SP hálózatok rétegeihez, csak az s-blokk állandó és nem függ a kulcstól), majd a modulo 2-hez egy kerek kulcsot adtak hozzá, ami után az eredmény átkerült a p-blokkon.
Funkció (ahol:
A DES algoritmus a következő műveletekből áll:
A DES algoritmusban a körök száma összesen 16.
A függvény (ahol és 32 bites számok) a következőképpen kerül kiszámításra:
A GOST 28147-89 algoritmusban a fordulók száma 32.
A következő blokk titkosítások a klasszikus vagy módosított Feistel hálózatot használják alapként.
Algoritmus | Év | A körök száma | Kulcs hossza | Blokkméret | Alblokkok száma |
---|---|---|---|---|---|
blowfish | 1993 | 16 | 32-től 448-ig | 64 | 2 |
Kamélia | 2000 | 18/24 | 128/192/256 | 128 | 2 |
CAST-128 | 1996 | 12/16 | 40-128 | 64 | 2 |
CAST-256 | 1998 | 12×4=48 | 128/192/256 | 128 | 2 |
CIPHERUNICORN-A | 2000 | 16 | 128/192/256 | 128 | 2 |
CIPHERUNICORN-E | 1998 | 16 | 128 | 64 | 2 |
CLEFIA | 2007 | 16 | 128/192/256 | 128 | 16 |
ÜZLET | 1998 | 6 (8) | (128/192) 256 | 128 | 2 |
DES | 1977 | 16 | 56 | 64 | 2 |
DFC | 1998 | nyolc | 128/192/256 | 128 | ? |
FEAL | 1987 | 4-32 | 64 | 64 | 2 |
GOST 28147-89 | 1989 [2] | 32/16 | 256 | 64 | 2 |
ÖTLET | 1991 | 8+1 | 128 | 64 | négy |
KASUMI | 1999 | nyolc | 128 | 64 | 2 |
Khufu | 1990 | 16-32/64 | 512 | 64 | 2 |
LOKI97 | 1997 | 16 | 128/192/256 | 128 | 2 |
Lucifer | 1971 | 16 | 48/64/128 | 48/32/128 | 2 |
MacGuffin | 1994 | 32 | 128 | 64 | négy |
BÍBORVÖRÖS | 1998 | 6/8 | 128/192/256 | 128 | 2 |
MARS | 1998 | 32 | 128-1248 | 128 | 2 |
Kegyelem | 2000 | 6 | 128 | 4096 | ? |
MISTY1 | 1995 | 4×n(8) | 128 | 64 | négy |
Raiden | 2006 | 16 | 128 | 64 | 2 |
RC2 | 1987 | 16+2 | 8-128 | 64 | négy |
RC5 | 1994 | 1-255 (12) | 0-2040 (128) | 32/64/128 | 2 |
RC6 | 1998 | húsz | 128/192/256 | 128 | négy |
RTEA | 2007 | 48/64 | 128/256 | 64 | 2 |
MAG | 1998 | 16 | 128 | 128 | 2 |
Sinopoli | 2003 | 64 | 128 | 128 | négy |
skipjack | 1998 | 32 | 80 | 64 | négy |
TEA | 1994 | 64 | 128 | 64 | 2 |
Tripla DES | 1978 | 32/48 | 112/168 | 64 | 2 |
Kéthal | 1998 | 16 | 128/192/256 | 128 | négy |
XTEA | 1997 | 64 | 128 | 64 | 2 |
XTEA-3 | 1999 | 64 | 256 | 128 | négy |
XXTEA | 1998 | 12-64 | 128 | 64 | 2 |
Szimmetrikus titkosítási rendszerek | |
---|---|
Rejtjelfolyam adatfolyam | |
Feistel hálózat | |
SP hálózat | |
Egyéb |