A blokk-rejtjel egyfajta szimmetrikus titkosítás [1] , amely rögzített hosszúságú bitcsoportokkal működik – olyan blokkokkal, amelyek jellemző mérete 64–256 bit között változik. Ha az eredeti szöveg (vagy annak maradéka) kisebb, mint a blokk mérete, akkor a titkosítás előtt kitömődik. Valójában a blokk titkosítás a blokkok ábécéjének helyettesítése, amely ennek következtében lehet mono- vagy többalfabetikus. [2] A blokk titkosítás számos kriptográfiai protokoll fontos összetevője, és széles körben használják a hálózaton keresztül továbbított adatok védelmére.
A rejtjelező padtól eltérően , ahol a kulcs hossza megegyezik az üzenet hosszával, a blokk-rejtjel képes egy vagy több üzenetet titkosítani egyetlen kulccsal, amelynek teljes hossza meghaladja a kulcs hosszát. Az üzenethez képest kicsi kulcsot titkosított csatornán továbbítani sokkal egyszerűbb és gyorsabb feladat, mint magát az üzenetet vagy egy azonos hosszúságú kulcsot továbbítani, ami lehetővé teszi annak mindennapi használatát. Ebben az esetben azonban a rejtjel megszűnik feltörhetetlennek lenni. A blokk titkosítások abban különböznek az adatfolyam titkosításoktól , hogy a biteket csoportokban dolgozzák fel, nem pedig adatfolyamban. Ugyanakkor a blokk titkosítások lassabbak, mint a stream titkosítások. [3] A szimmetrikus rendszerek előnyt jelentenek az aszimmetrikusakkal szemben a titkosítási sebességben, ami lehetővé teszi, hogy a gyengébb kulcsátviteli mechanizmus ellenére is relevánsak maradjanak (a címzettnek ismernie kell a titkos kulcsot, amelyet egy már kialakított titkosított csatornán kell továbbítani. időben, aszimmetrikus rejtjelekben a titkosításhoz szükséges nyilvános kulcs mindenki számára ismert, és nincs szükség a titkosítási kulcs megosztására).
A blokk-rejtjelek előnyei közé tartozik a titkosítási és visszafejtési eljárások hasonlósága , amelyek általában csak a műveletek sorrendjében különböznek. Ez leegyszerűsíti a titkosító eszközök létrehozását, mivel lehetővé teszi ugyanazon blokkok használatát a titkosítási és visszafejtési láncokban. A blokk-rejtjelek rugalmassága lehetővé teszi, hogy más kriptográfiai primitívek létrehozására is használják őket: pszeudo-véletlen sorrendgenerátort, adatfolyam-rejtjelet, beillesztési utánzatokat és kriptográfiai kivonatokat . [négy]
A modern blokk-rejtjel-modell az iteratív blokk-rejtjelek ötletén alapul, amelyet Claude Shannon 1949-es „ Kommunikációs elmélet a titkos rendszerekben ” című kiadványában javasolt. Ez a koncepció lehetővé teszi egy bizonyos szintű biztonság elérését a könnyen végrehajtható helyettesítési és permutációs műveletek kombinálásával [ 5 ] .
Az 1970-es évekig a titkosírás a katonaság és a hírszerző tisztek dolga volt, a nyílt sajtóban gyakorlatilag nem jelentek meg publikációk [6] . Az úttörő a " Lucifer " titkosítás volt, amelyet 1970-ben fejlesztett ki az IBM és az SP-net alapján . A titkosítás ötlete az volt, hogy egyszerű és ezért gyorsan kiszámítható műveletek kombinációit használja mind hardverben, mind szoftverben. A séma azonban sikertelennek bizonyult: túl nehézkes volt, ami alacsony titkosítási sebességhez vezetett a szoftveres megvalósításban (körülbelül 8 kb / s) és a hardverben (97 kb / s).
Kezdtek megjelenni az aggodalmak az algoritmus stabilitásával kapcsolatban. A Lucifer építése során kidolgozott elvek (SP-hálózat és az egyik fejlesztőről elnevezett Feistel hálózat ) azonban a blokk titkosítások megalkotásának alapját képezték.
1973-ban a National Institute of Standards and Technology ( NIST ) versenyt hirdetett egy adattitkosítási szabvány kidolgozására, amelynek 1974-es nyertese a DES (Data Encryption Standard) titkosítás lett, amely valójában a Lucifer továbbfejlesztett változata. . A rejtjel 1977-es kiadása alapvető fontosságú volt a modern blokk-rejtjelmodell nyilvános megértéséhez. Ugyanakkor ez okot adott a kriptoanalitikus támadások kifejlesztéséhez .
Miután az Amerikai Nemzeti Szabványügyi Intézet 1981-ben jóváhagyta, az algoritmust sokáig használták a polgári szektorban, és túlmutat az Egyesült Államokon . A rejtjelnek azonban volt egy jelentős hátránya - a kis kulcshossz, amely számos támadást eredményezett a párhuzamos felsorolással kapcsolatban, és a megvalósítás közelgő lehetősége. A DES titkosítási támadásokkal szembeni megfelelő védelem hiánya számos olyan algoritmust eredményezett, amelyek egyrészt a DES összetettebb változata ( 3DES ), másrészt teljesen más sémák ( NewDES , FEAL , IDEA ).
1997-ben kezdődött az AES (Advanced Encryption Standard) átvételi program. A verseny három szakaszból állt, melynek végső győztese a belgák J. Daemen és V. Rijmen által kifejlesztett RIJNDAEL algoritmusa lett. Az AES az elődeihez hasonlóan szintén SP hálózat felhasználásával épül.
Manapság sok támadásnak kell ellenállnia a blokk titkosításnak, kezdve a brute force támadástól , mint a legtriviálisabbtól. [7]
A blokkrejtjel két párosított algoritmusból áll: a titkosításból és a visszafejtésből . [8] Mindkét algoritmus ábrázolható függvényként. Az E titkosítási funkció ( magyar titkosítás - titkosítás ) egy n bites M adatblokkot ( magyar üzenet - üzenet) és egy k bites K kulcsot (magyar kulcs - kulcs) kap bemenetként, és ad. egy C rejtjelezett szöveg blokkja ( eng. cipher ) a kimeneten - titkosítás) n bites mérettel:
Bármely K kulcs esetén E K egy bijektív függvény ( permutáció ) az n bites blokkok halmazán. A D visszafejtő függvény ( angol. decryption - decryption) a C rejtjelezett szöveget, a K kulcsot kapja bemenetként, és M-et ad a kimeneten:
amely ugyanakkor a titkosítási függvény inverze:
ésVegye figyelembe, hogy a titkosításhoz és a visszafejtéshez szükséges kulcs ugyanaz, ami a blokk titkosítás szimmetriájának következménye.
„A blokk titkosítás megtervezése nem nehéz. A nehézség egy olyan blokk-rejtjel tervezésében rejlik, amely nemcsak biztonságos, hanem könnyen leírható és könnyen megvalósítható is.”
Bruce Schneier , kriptográfus és számítógépes biztonsági szakértő .
A blokk-rejtjelek fejlesztésének úttörői az IBM alkalmazottai voltak, amikor a „ Lucifer ” titkosításon dolgoztak. [9] Ők tervezték az első alapokat, amelyeket a későbbi áramkörök fejlesztéséhez használtak. Ugyanakkor figyelembe kell venni, hogy az új titkosításnak nemcsak minden ismert támadástípussal szemben ellenállónak kell lennie, hanem meglehetősen egyszerűnek is kell lennie.
A legtöbb blokk titkosítás iteratív. Ez azt jelenti, hogy az adott rejtjel az állandó hosszúságú nyílt szövegblokkokat azonos hosszúságú titkosított szövegblokkokká alakítja ciklikus reverzibilis függvényekkel, amelyeket kerek függvényeknek nevezünk. [10] Ez a szoftveres és hardveres megvalósítások egyszerűségének és végrehajtásának gyorsaságából adódik. A kerek függvények általában az eredeti kulcsból származó különböző billentyűket használnak:
,ahol C i az i-edik kör utáni blokk értéke, C 0 = M a nyílt szöveg, K i az i-edik körben használt és az eredeti K kulcsból kapott kulcs.
Az n blokkméret egy rögzített blokk-rejtjelparaméter, általában 64 vagy 128 bit, bár egyes titkosítások több különböző értéket is megengednek. A 64 bites hosszúság az 1990-es évek közepéig volt elfogadható, ekkor 128 bitet használtak, ami nagyjából megfelel egy gépi szó méretének, és lehetővé teszi a hatékony megvalósítást a legtöbb elterjedt számítási platformon. A különféle titkosítási sémák lehetővé teszik tetszőleges hosszúságú egyszerű szöveg titkosítását. Mindegyik rendelkezik bizonyos jellemzőkkel: hiba valószínűsége, könnyű hozzáférés, támadásokkal szembeni sebezhetőség. 2006-tól kezdve egy 80 bites kulcs képes volt megakadályozni a brute force támadást .
Az SP-hálózat ( angolul substitution-permutation network, SPN ) az iteratív blokk titkosítások egyik legfontosabb típusa. Az SP-netre épülő rejtjel egy blokkot és egy kulcsot kap bemenetként, és több váltakozó kört hajt végre, amelyek váltakozó helyettesítési és permutációs szakaszokból állnak [ 11 ] . Egy S-box elég a biztonság eléréséhez, de egy ilyen blokk nagy mennyiségű memóriát igényel. Ezért kisméretű S-boxokat alkalmaznak P-boxokkal keverve [6] . A nemlineáris helyettesítési szakasz keveri a kulcsbiteket a nyílt szöveges bitekkel, ami Shannon zavarát okozza A lineáris permutációs szakasz elosztja a redundanciát az egész adatstruktúrában, ami diffúziót eredményez [12] [13] .
Az S -box egy kis bemeneti bitblokkot helyettesít egy másik kimeneti bitblokkra. Ennek a helyettesítésnek egy az egyhez kell történnie a visszafordíthatóság biztosítása érdekében. Az S-box célja egy nemlineáris transzformáció, amely megakadályozza a lineáris kriptoanalízis végrehajtását . Az S-box egyik tulajdonsága a lavinaeffektus , azaz egy bit változása a bemeneten az összes bit változásához vezet a kimeneten [14] .
P-block - az összes bit permutációja: a blokk az S-box kimenetét kapja bemenetként, felcseréli az összes bitet és az eredményt a következő kör S-boxába táplálja. A P-box egyik fontos tulajdonsága, hogy egy S-box kimenetét a lehető legnagyobb S-box bemenetei között lehet elosztani.
Minden körben más kulcsot használnak, amelyet az eredeti kulcsból szereztek be . Az ilyen kulcsot kerek kulcsnak nevezik. Ezt úgy kaphatjuk meg, hogy az eredeti kulcsot egyenlő részekre osztjuk, vagy a teljes kulcsot valamilyen módon átalakítjuk.
A Feistel hálózat egy általános módszer egy tetszőleges F függvény blokkhalmaz permutációjává történő átalakítására. [15] Ciklikusan ismétlődő cellákból áll – körökből. Minden körön belül a szöveges blokkot két egyenlő részre osztják. Kerek funkció
felveszi az egyik felét (az ábrán balra), a K i billentyűvel átalakítja, és az eredményt a kizárólagos VAGY (XOR) művelettel kombinálja a második felével . Ezt a kulcsot a kezdő K kulcs adja, és minden körben más és más. Ezután a feleket felcserélik (ellenkező esetben csak a blokk egyik fele lesz átalakítva), és bekerül a következő körbe. A Feistel hálózati transzformáció reverzibilis művelet.
Vannak bizonyos követelmények az F függvényhez :
Ha az első követelmény nem teljesül, a hálózat differenciális támadásoknak lesz kitéve (a hasonló üzenetek titkosítása hasonló lesz). A második esetben a titkosítás műveletei lineárisak, és a feltöréshez elegendő egy lineáris egyenletrendszer megoldása [3] .
Ennek a kialakításnak van egy kézzelfogható előnye: a titkosítási / visszafejtési eljárások ugyanazok, csak az eredeti kulcsok származékait használják fordított sorrendben. Ez azt jelenti, hogy ugyanazok a blokkok használhatók titkosításra és visszafejtésre is, ami minden bizonnyal leegyszerűsíti a titkosítás megvalósítását. A séma hátránya, hogy minden körben csak a blokk felét dolgozzák fel, ami a körök számának növeléséhez vezet. [2]
Az algoritmus felépítésénél egy csoport kialakítását veszik figyelembe , amelyben az elemek a titkosított szöveg blokkok összes kulcsa, a csoport művelet pedig a titkosítási körök összetétele. Ha egy adott rejtjel majdnem teljes csoportot alkot, nincs értelme többszörös titkosítás alkalmazásának [6] .
Önmagában a blokk titkosítás lehetővé teszi, hogy csak egyetlen előre meghatározott hosszúságú adatblokkot titkosítson. Ha az üzenet hossza kisebb, mint a blokk hossza ( eng. blocklength ), akkor a rendszer a kívánt hosszúságúra párnázza. Ha azonban az üzenet hossza hosszabb, akkor szükségessé válik annak blokkokra bontása. Ugyanakkor számos módja van az ilyen üzenetek titkosításának, ezeket blokkos titkosítási módoknak nevezik.
A blokk titkosítás legegyszerűbb működési módja az elektronikus kódkönyv mód vagy az egyszerű helyettesítési mód ( Eng. Electronic CodeBook, ECB ), ahol az összes plaintext blokk egymástól függetlenül titkosításra kerül. Ennek az üzemmódnak a használatakor azonban a nyílt adatok statisztikai tulajdonságai részben megmaradnak, mivel minden azonos adatblokk egyedileg megfelel egy titkosított adatblokknak. Nagy mennyiségű adat (például videó vagy hang) esetén ez a tartalommal kapcsolatos információk kiszivárgásához vezethet, és több teret ad a kriptográfiai elemzésnek .
A statisztikai függőségek egyszerű szövegben történő eltávolítása előzetes archiválással lehetséges, de ez nem oldja meg teljesen a problémát, mivel az archiváló szolgáltatási információi a fájlban maradnak , ami nem mindig elfogadható.
E problémák leküzdésére más működési módokat [16] [17] fejlesztettek ki , amelyeket az ISO/IEC 10116 [18] nemzetközi szabvány határoz meg, és amelyeket nemzeti irányelvek határoznak meg, mint például a NIST 800-38A [19] és a BSI TR- 02102 [20]
Az általános ötlet egy véletlen szám használata, amelyet gyakran inicializálási vektornak neveznek (IV). A népszerű Cipher Block Chaining ( CBC ) módban az IV-nek véletlenszerűnek vagy pszeudovéletlennek kell lennie a biztonság érdekében. A definiálás után XOR-re kerül az első egyszerű szövegblokkkal. A következő lépés az eredmény titkosítása, és az első titkosítási blokk beszerzése, amelyet IV-ként használunk a második blokkhoz, és így tovább. A titkosítási visszacsatolás ( CFB ) módban az IV közvetlenül titkosítva van, majd az első blokkal modulo two (XOR, exkluzív VAGY) kerül hozzáadásra. A kapott rejtjelblokkot IV-ként használják a további titkosításhoz. A módnak nincs különösebb előnye a többihez képest. Az előző módokkal ellentétben az Output Feedback ( OFB ) mód ciklikusan titkosítja az IV-t, és az üzenetblokkokhoz hozzáadott kulcsfolyamot képez. A mód előnye a titkosítási és visszafejtési műveletek teljes egybeesése. A számláló mód ( angolul Counter, CTR ) hasonló az OFB-hez, de lehetővé teszi a rejtjel párhuzamos számítását: az IV-t kombinálják a blokkszámmal anélkül, hogy az eredményt titkosítsák. Az eredményül kapott blokkot hozzáadjuk a megfelelő üzenetblokkhoz.
Ne feledje, hogy az inicializálási vektornak eltérőnek kell lennie a különböző munkamenetekben. Ellenkező esetben az EKB mód problémájához érkezünk. Lehetséges véletlen számot használni, de ehhez egy elég jó véletlenszám-generátorra van szükség. Ezért általában beállítanak egy bizonyos számot - egy címkét, amelyet mindkét fél ismer (például a munkamenet száma), és nonce -nek nevezik ( Egyszer használt szám ) . Ennek a számnak a titkosítása általában nem kötelező. A további IV nonce titkosítás eredménye. Számláló mód esetén a nonce-t használjuk a kerek K i [3] kulcs létrehozásához :
ahol i a kerek szám.Mint fentebb említettük, ha magának az üzenetnek vagy az utolsó blokknak a hossza kisebb, mint a blokk hossza, akkor azt ki kell tölteni -val . A nulla bitekkel való egyszerű kitöltés nem oldja meg a problémát, mert a vevő nem fogja megtalálni a hasznos terhelés végét. Ezenkívül ez az opció a [21] kiegészítés Oracle támadásaihoz vezet .
Ezért a gyakorlatban az ISO/IEC 9797-1 szabványban "Complement Method 2"-ként ( Bit Completion ) szabványosított megoldás alkalmazható, amely 1 bitet ad az üzenet végéhez, és a maradék helyet nullákkal tölti ki [22] . Ebben az esetben az ilyen támadásokkal szembeni ellenállás bizonyított [23] .
Mint minden olyan rejtjel, amelynek algoritmusa ismert, a blokkrejtjelek is ki vannak téve kriptográfiai támadásoknak. A támadás célja egy olyan feltörő algoritmus kidolgozása, amely hatékonyabb, mint az összes lehetséges kulcs kimerítő keresése. Ha ilyen megoldást találnak, a támadás sikeresnek minősül. Ugyanakkor a titkosítás megszakad, ha olyan támadás történik, amely lehetővé teszi a feltörést addig az idő alatt, amíg az információ releváns marad, és az ilyen támadás végrehajtása előnyös a támadó számára.
angol Igazi erő támadás . A blokkrejtjel funkció reverzibilitása miatt a kimenete megkülönböztethetővé válik egy valódi véletlen sorozattól a születésnapi paradoxon miatt . Ez a funkció a titkosítás biztonságának csökkenéséhez és a blokk méretének figyelembevételéhez vezet. Így kompromisszum van a titkosítás teljesítményét csökkentő nagy blokkok és a megbízhatatlan kis blokkok között [24] .
A kulcs mérete ugyanolyan fontos szerepet játszik. A korai DES -rejtjelet 56 bites kulcsméret jellemezte, ami a gyakorlat szerint nyilvánvalóan nem elegendő a megbízható adatátvitelhez. Ez egy nyers erejű támadás volt, amely először megtörte a DES-t. A modernebb algoritmusok, például az AES és a GOST 28147-89 kulcsmérete 128 bit, illetve 256 bit, ami értelmetlenné teszi az ilyen támadásokat [25] .
angol Differenciális kriptoanalízis . 1990-ben Eli Biham és Adi Shamir meghatározta a differenciális kriptoanalízis gondolatát. Ezzel a módszerrel sikerült feltörni a DES titkosítást . Az állandó S-box titkosítók és a kódolt e-könyv módú titkosítók érzékenyek egy hasonló támadásra . Ez a módszer olyan rejtjelezett szövegpárokkal működik, amelyeknél ismert a megfelelő egyszerű szövegek közötti különbség, és figyelembe veszi ezeknek a különbségeknek az alakulását. A lineáris mellett ez a leggyakoribb a blokk titkosítás elleni támadásoknál [6] .
angol Lineáris kriptoanalízis . A lineáris kriptoanalízis egy titkosítási módszer, amely az algoritmus működéséhez szükséges affin közelítések keresésén alapul. Mitsuru Matsui japán matematikus fejlesztette ki , aki elsőként használta ezt a technikát a DES és a FEAL megtámadására . A módszer azon alapul, hogy az "Exclusive OR" (XOR) műveletet alkalmazzák a nyílt szöveg, a rejtjelezett szöveg blokkjaira és azok eredményére, amely lehetővé teszi a kulcsbitek XOR-ozásának eredményét. Az S-blokk szerkezete erősen befolyásolja a vonaltámadásokkal szembeni ellenállást. A módszer kidolgozásakor kiderült, hogy a DES-nek van egy gyenge pontja, hiszen senki sem számított ilyen támadásokra a kidolgozásakor [6] .
angol Intergal kriptoanalízis . Az integrált kriptográfiai elemzés a támadások egyik típusa, amely különösen az SP-netre épített blokk-rejtjelekre alkalmazható. Ellentétben a differenciális kriptográfiai elemzéssel, amely egy pár kiválasztott nyílt szöveget használ az XOR művelettel kiszámított rögzített különbséggel, az integrált kriptográfiai elemzés olyan nyílt szövegek halmazait használja, amelyekben egyes részek állandóak, míg mások a lehetséges értékek között változnak. Egy ilyen halmazban szükségszerűen 0 a modulo 2 (XOR) összege, míg a megfelelő rejtjelezett szöveg összege a rejtjelműveletekről tartalmaz információkat.
A fent leírtakon kívül vannak más típusú támadások is:
Minden új rejtjelnek ellenállónak kell lennie minden ismert támadástípussal szemben.
A gyakorlatban a blokk titkosítást számos kritérium szerint értékelik [26] [27] :
A Lucifer-rejtjelet általában az első blokk-rejtjelnek tekintik. Az algoritmust az IBM az 1970-es években fejlesztette ki saját igényeire, és Horst Feistel munkáján alapul . A végleges verziót az Egyesült Államok kormányának szövetségi információfeldolgozási szabványaként fogadták el : FIPS PUB 46 Data Encryption Standard (DES) - adattitkosítási szabvány.
A DES blokkmérete 64 bit, a kulcsa pedig 56 bites. Ezt követően a 64 bites blokkok általánosan elfogadottá váltak a titkosítás felépítésében. A kulcs hossza több tényezőtől függött, beleértve a kormányzati korlátozásokat is, és ennek eredményeként az algoritmus nyilvánvaló hátránya lett - nem volt elég a brute force támadásoknak. 1993-ban Michael Wiener egy 1 millió dolláros gépet tervezett, amely brutális erővel 3,5 óra alatt képes feltörni a DES-t , 1998-ban pedig megépült egy képes gép . Ezenkívül az algoritmus kulcsaihoz számos olyan érték van, amelyeket gyengének tartanak [6] .
Az algoritmusnak van egy továbbfejlesztett változata, a Triple DES vagy 3DES. Az algoritmus sebessége háromszorosára csökkent, de a rendszer a háromszoros kulcshossz (168 bit és 112 titkos bit) miatt sokkal ellenállóbbnak bizonyult a kimerítő kereséssel szemben. Opcionálisan választhat dupla kulcsot (112 bit és 80 titkos bit). 2011-től a háromkulcsos rendszer megőrzi biztonságát, de a kétkulcsos, 80 bites biztonsággal rendelkező változat már nem felel meg a modern követelményeknek [28] .
A GOST 28147-89, az 1990-ben bevezetett orosz titkosítási szabvány szintén a FÁK szabvány. A titkosítás egy 32 körből álló Feistel hálózaton alapul , 256 bites kulccsal. 2011 májusában Nicolas Courtois kriptoanalitikus olyan támadást kísérelt meg, amely 28 -szorosára (256) csökkentette a feltörési időt, de 264 egyszerű szöveg/ rejtjelezett párra volt szükség, ami nem tekinthető sikeres támadásnak, mivel ekkora mennyiségű egyszerű szövegre nincs szükség. a rejtjelezett szöveg ismeretéhez. [29] [30]
A nagy számú kör jelenléte miatt a differenciális és lineáris kriptoanalízisen alapuló támadások nem életképesek, mivel az utóbbiak érzékenyek a körök számára. Egy ilyen kulcshosszúságú teljes keresés teljesen értelmetlen. A lavinahatás eléréséhez a GOST-nak 8 körre van szüksége, ami az algoritmus gyengesége lehet, de 32 körnél ez nem számít annyira. A GOST biztonságának kérdése nyitva marad [6] .
A NIST által 2001-ben elfogadott 5 évnyi nyilvános verseny után az AES felváltotta a DES-t az Egyesült Államok szövetségi szabványaként. A titkosítást két belga kriptográfus , Daimen Yoan és Raymen Vincent fejlesztette ki . A blokk mérete 128 bit, a kulcsméretek pedig 128, 192 és 256 bitek, bár a blokk mérete a 32-nek tetszőleges számú bitjével megadható, a minimális érték 128 bit. A maximális blokkméret 256 bit, míg a kulcsméretnek nincs elméleti korlátja. Ennek a titkosításnak a támogatását az Intel vezette be az x86 processzorcsaládban .
A blokk titkosítás felhasználható más kriptográfiai primitívek létrehozására :
![]() |
---|
Szimmetrikus titkosítási rendszerek | |
---|---|
Rejtjelfolyam adatfolyam | |
Feistel hálózat | |
SP hálózat | |
Egyéb |