Adatfolyam-Kódolás

A kriptográfiában az adatfolyam-kódolás olyan szimmetrikus kulcsú kódolás, amelyben a nyílt szöveg bitjeit egy pszeudorandom kódoló bitfolyam (kulcsfolyam) kombinálja egy exkluzív-vagy (xor) művelet segítségével. A folyamchiffrírban a tisztaszöveges számjegyeket egyenként titkosítják, és az egymást követő számjegyek átalakulása a titkosítási állapot során változik. Egy alternatív elnevezés az állapot titkosítás, mivel az egyes számjegyek titkosítása az aktuális állapottól függ. A gyakorlatban a számjegyek jellemzően egyetlen bit vagy bájt.

Az adatfolyam-kódolás a szimmetrikus titkosításnak a blokk-kódolástól eltérő megközelítését képviseli. A blokkos kódolók nagy, rögzített hosszúságú blokkokkal dolgoznak. Az adatfolyam-kódolók általában nagyobb sebességgel működnek, mint a blokk-kódolók, és alacsonyabb hardverigényük van. A folyamkódolók azonban súlyos biztonsági problémákra lehetnek hajlamosak, ha helytelenül használják őket; például ugyanazt a kezdőállapotot soha nem szabad kétszer használni.

A stream cipher sokkal kisebb és kényelmesebb kriptográfiai kulcsot használ, például 128 bites kulcsot. E kulcs alapján egy pszeudorandom kulcsfolyamot generál, amelyet a plaintext számjegyeivel kombinálhatunk a one-time pad titkosítási algoritmushoz hasonlóan. Mivel azonban a kulcsfolyam pszeudorandom, és nem valóban véletlenszerű, az egyszeri padhoz kapcsolódó biztonság nem alkalmazható, és könnyen előfordulhat, hogy a folyamchiffrözés teljesen bizonytalan.

A kulcsfolyam-generátor működése az A5/1-ben, amely egy LFSR-alapú áramfolyam-kódoló, amelyet mobiltelefonos beszélgetések titkosítására használnak.Zoom
A kulcsfolyam-generátor működése az A5/1-ben, amely egy LFSR-alapú áramfolyam-kódoló, amelyet mobiltelefonos beszélgetések titkosítására használnak.

A folyamkódolás típusai

A kulcsfolyamat egymást követő elemeit egy belső állapot alapján generálja a kulcsfolyam. Ez az állapot kétféleképpen frissül:

  1. Ha az állapot a tisztaszöveges vagy a rejtjelezett üzenettől függetlenül változik, akkor a rejtjelezőt szinkron áramlatos rejtjelezőnek minősítik.
  2. Ha az állapotot a rejtjelezett szöveg számjegyeinek korábbi változásai alapján frissítik, akkor a rejtjelezőt önszinkronizáló folyamkriptornak minősítik.

Szinkron áramfolyam-kódolás

A szinkron áramlatos rejtjelezésben a tisztaszöveges és a rejtjelezett üzenettől függetlenül pszeudo-véletlen számjegyek áramát generálják, majd kombinálják a tisztaszöveggel (titkosításhoz) vagy a rejtjelezett szöveggel (visszafejtéshez). A legelterjedtebb formában bináris számjegyeket (biteket) használnak, és a kulcsfolyamot az egyszerű szöveggel kombinálják a kizárólagos vagy művelet (XOR) segítségével. Ezt nevezzük bináris additív folyamkódolásnak.

A szinkron áramfolyam-alapú titkosításban a küldőnek és a fogadónak szinkronban kell lennie ahhoz, hogy a visszafejtés sikeres legyen. Ha az átvitel során számjegyeket adnak hozzá vagy vesznek el az üzenetből, a szinkronizáció elveszik. A szinkronizálás helyreállítása érdekében szisztematikusan próbálkozhatunk különböző eltolásokkal a helyes dekódolás eléréséhez. Egy másik megközelítés az, hogy a rejtjelezett szöveget a kimenet rendszeres pontjain jelölőkkel jelöljük.

Ha azonban egy számjegy az átvitel során sérül, nem pedig hozzáadódik vagy elveszik, akkor a hiba csak egyetlen számjegyet érint a nyílt szövegben, és a hiba nem terjed át az üzenet más részeire. Ez a tulajdonság akkor hasznos, ha az átviteli hibaarány magas; ugyanakkor kevésbé valószínűvé teszi, hogy a hiba további mechanizmusok nélkül észlelhető lenne. Ráadásul e tulajdonsága miatt a szinkron áramfolyam-kriptek nagyon érzékenyek az aktívtámadásokra - ha egy támadó képes megváltoztatni egy számjegyet a rejtjelezett szövegben, akkor képes lehet kiszámítható változásokat végrehajtani a megfelelő nyílt szövegbeli bitben is; például egy bit megfordítása a rejtjelezett szövegben ugyanannak a bitnek a megfordítását (Toggled) okozza a nyílt szövegben.

Önszinkronizáló adatfolyam-kódok

Az önszinkronizáló adatfolyam-kódolás egy másik technika, amely az előző N rejtjelezett szöveg számjegyeinek egy részét használja fel a kulcsfolyam kiszámításához. Az ilyen sémákat aszinkron áramvonalas kódolóként vagy rejtjelező szöveges automatikus kulcsként (CTAK) is ismerik. Az önszinkronizálás ötletét 1946-ban szabadalmaztatták, és előnye, hogy a vevő automatikusan szinkronizálódik a kulcsfolyam-generátorral, miután N rejtjelezett szöveges számjegyet kapott, így könnyebben helyreállítható, ha az üzenetfolyamban számjegyek kiesnek vagy hozzáadódnak. Az egy számjegyű hibák hatása korlátozott, csak N tisztaszöveges számjegyig hatnak. Az önszinkronizáló folyamkódok ellen valamivel nehezebb aktív támadásokat végrehajtani, mint a szinkronizált társaik ellen.

Az önszinkronizáló adatfolyam-alapú kódolásra példa a blokkos kódolású kódolás visszafejtési módban (CFB).

Lineáris visszacsatolású eltolásregiszter-alapú áramfolyam-kódolás

A bináris adatfolyam-kódok gyakran lineáris visszacsatolású shift regiszterek (LFSR) segítségével készülnek, mivel könnyen megvalósíthatók hardveresen, és matematikailag gyorsan elemezhetőek. Azonban az LFSR-ek használata önmagában nem elegendő a jó biztonság eléréséhez. Az LFSR-ek biztonságának növelésére különböző sémákat terveztek.

Nem lineáris kombináló függvények

Mivel az LFSR-ek eredendően lineárisak, a linearitás megszüntetésének egyik technikája az, hogy a párhuzamos LFSR-ek egy csoportjának kimeneteit egy nemlineáris Boole-függvénybe tápláljuk, hogy egy kombinációs generátort alkossunk. Az ilyen kombinációs függvény különböző tulajdonságai fontosak az eredményül kapott rendszer biztonságának biztosításához, például a korrelációs támadások elkerülése érdekében.

Óravezérelt generátorok

Az LFSR-eket általában rendszeresen lépcsőzik. A nemlinearitás bevezetésének egyik technikája az, hogy az LFSR-t szabálytalanul, egy második LFSR kimenete által vezérelve ütemezik. Ilyen generátorok például a stop-and-go generátor, a váltakozó lépésgenerátor és a zsugorodó generátor.

A stop-and-go generátor (Beth és Piper, 1984) két LFSR-ből áll. Az egyik LFSR akkor van órajelezve, ha a második kimenete "1", ellenkező esetben megismétli az előző kimenetét. Ezt a kimenetet ezután (egyes változatokban) egy harmadik LFSR kimenetével kombinálják, amelyet szabályos ütemben ütemeznek.

A zsugorodó generátor más technikát használ. Két LFSR-t használunk, mindkettőt a következő módon szabályos ütemezéssel:

  1. Ha az első LFSR kimenete "1", akkor a második LFSR kimenete lesz a generátor kimenete.
  2. Ha az első LFSR kimenete "0", a második kimenete elvetésre kerül, és a generátor nem ad ki bitet.

Ez a technika a második generátor időzítési támadásaitól szenved, mivel a kimenet sebessége a második generátor állapotától függő módon változtatható. Ez javítható a kimenet pufferelésével.

Szűrő generátor

Egy másik megközelítés az LFSR biztonságának javítására az, hogy egyetlen LFSR teljes állapotát átadjuk egy nemlineáris szűrőfüggvénynek.

Egyéb minták

A lineáris meghajtóeszköz helyett használhatunk nemlineáris frissítő függvényt is. Klimov és Shamir például háromszögfüggvényeket (T-funkciókat) javasolt egyetlen ciklussal n bites szavakon.

Biztonság

A biztonság érdekében a kulcsfolyam periódusának (a kimeneti számjegyek száma, mielőtt a folyam megismétlődik) elég nagynak kell lennie. Ha a sorozat ismétlődik, akkor az egymást átfedő rejtjelszövegek "mélységben" egymáshoz igazíthatók, és léteznek olyan technikák, amelyek lehetővé teszik az egyszerű szöveg kivonását az ilyen módszerekkel előállított rejtjelszövegekből.

Használat

Az adatfolyam-kódolást gyakran használják olyan alkalmazásokban, ahol a nyílt szöveg ismeretlen hosszúságú mennyiségben érkezik, mint például a biztonságos vezeték nélküli kapcsolatokban. Ha ilyen típusú alkalmazásokban blokkos titkosítót használnának, a tervezőnek választania kellene az átviteli hatékonyság vagy a megvalósítás bonyolultsága között, mivel a blokkos titkosítók nem tudnak közvetlenül a blokkméretüknél rövidebb blokkokon dolgozni. Ha például egy 128 bites blokkos rejtjelező különálló 32 bites nyílt szövegtömböket kap, akkor az átvitt adatok háromnegyedét kell kitölteni. A blokkos titkosítókat a kitöltés elkerülése érdekében rejtjelező szöveglopási vagy maradék blokkmegszüntetési módban kell használni, míg a stream-ciperek kiküszöbölik ezt a problémát azzal, hogy a legkisebb átvitt egységen (általában bájton) dolgoznak.

A katonai kriptográfiában a folyamkódolás másik előnye, hogy a rejtjelfolyamot egy szigorú biztonsági intézkedéseknek alávetett titkosító eszközzel lehet létrehozni, majd más eszközökhöz, például egy rádiókészülékhez táplálni, amelyek a funkciójuk részeként elvégzik az xor műveletet. A másik eszköz kevésbé biztonságos környezetben való használatra is tervezhető.

Az RC4 a szoftverekben legszélesebb körben használt adatfolyam-kódolás; a többi a következő: Az A5/1, A5/2, Chameleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Pike, SEAL, SOBER, SOBER-128 és WAKE.

Az RC4 az egyik legszélesebb körben használt folyamkódolás.Zoom
Az RC4 az egyik legszélesebb körben használt folyamkódolás.

Az adatfolyam-kódok összehasonlítása

StreamCipher

CreationDate

Sebesség
(ciklusok/bájt)

(bitek)

Támadás

Hatékony
Kulcshossz

Inicializálási vektor

InternalState

A legismertebb

ComputationalComplexity

A5/1

1989

Hang (Wphone)

54

114

64

Aktív KPA VAGY
KPA idő-memória kompromisszum

~2 másodperc OR239.91

A5/2

1989

Hang (Wphone)

54

114

64?

Aktív

4,6 milliszekundum

HAL

1993

Elég gyors (Wsoft)

Hatalmas

Ismert-plaintext támadás

211

Gabona

2004 előtt

Gyors

80

64

160

Kulcs-leválasztás

243

HC-256

2004 előtt

4 (WP4)

256

256

65536

ISAAC

1996

2.375 (W64-bit)
-4.6875
(W32-bit)

8-8288 rendszerint
40-256

N/A

8288

(2006) Első körös gyenge-belső-állami-leválás

4.67×101240 (2001)

MUGI

1998-2002

128

128

1216

N/A (2002)

~282

PANAMA

1998

2

256

128?

1216?

Hash Collisions (2001)

282

Phelix

2004 előtt

legfeljebb 8 (Wx86)

256 + egy 128 bites nonce

128?

Differenciál (2006)

237

Pike

1994

0,9 x FISH (Wsoft)

Hatalmas

N/A (2004)

N/A (2004)

Py

2004 előtt

2.6

8-2048?
általában 40-256?

64

8320

Kriptanalitikai elmélet (2006)

275

Nyúl

2003-február

3,7(WP3)-9,7(WARM7)

128

64

512

N/A (2006)

N/A (2006)

RC4

1987

Lenyűgöző

8-2048általában
40-256

8

2064

Shamir kezdeti bájtos kulcsleválasztás VAGY KPA

213 OR 233

Salsa20

2004 előtt

4,24 (WG4) -11
,84
(WP4)

128 + 64 bites nonce

512

512 + 384 (kulcs+IV+index)

Differenciál (2005)

N/A (2005)

Scream

2002

4 - 5 (Wsoft)

128 + egy 128 bites nonce

32?

64 bites kerekítő funkció

SEAL

1997

Nagyon gyors (W32-bit)

32?

SNOW

2003 előtt

Nagyon jó (W32-bit)

128 VAGY 256

32

SOBER-128

2003

akár 128

Üzenet Forge

2−6

SOSEMANUK

2004 előtt

Nagyon jó (W32-bit)

128

128

Trivium

2004 előtt

4 (Wx86) - 8 (WLG)

80

80

288

Brute force támadás (2006)

2135

Turing

2000-2003

5.5 (Wx86)

160

VEST

2005

42 (WASIC) -64 (WFPGA)

Változó Általában
80-256

Változó Általában
80-256

256 - 800

N/A (2006)

N/A (2006)

WAKE

1993

Gyors

8192

CPA & CCA

Sebezhető

StreamCipher

CreationDate

Sebesség
(ciklusok/bájt)

(bitek)

Támadás

Hatékony
Kulcshossz

Inicializálási vektor

InternalState

A legismertebb

ComputationalComplexity

Kapcsolódó oldalak

  • eSTREAM

Kérdések és válaszok

K: Mi az a stream cipher?


V: A stream cipher egy olyan szimmetrikus kulcsú rejtjelező, ahol a nyílt szöveg bitjeit egy pszeudorandom rejtjelező bitfolyam (keystream) kombinálja egy exkluzív-vagy (xor) művelet segítségével.

K: Miben különbözik a blokkos rejtjelezőktől?


V: Az adatfolyam-kódolók jellemzően nagyobb sebességgel hajtódnak végre, mint a blokk-kódolók, és alacsonyabb hardverigényük van. A blokkos kódolók nagy, rögzített hosszúságú blokkokon működnek, míg a folyamkódolók a számjegyeket egyenként titkosítják, és az egymást követő számjegyek átalakulása a titkosítási állapot során változik.

K: Milyen típusú kulcsokat használ?


V: Az adatfolyam-kódolók sokkal kisebb és kényelmesebb kriptográfiai kulcsokat használnak, például 128 bites kulcsokat.

K: Hogyan generálja a kulcsfolyamot?


V: A kulcsfolyam a használt kriptográfiai kulcs alapján generálódik, hasonlóan az egyszeri pad titkosítási algoritmushoz. Mivel azonban a kulcsfolyam pszeudorandom és nem valóban véletlenszerű, az egyszeri padhoz kapcsolódó biztonság nem alkalmazható.

K: Miért nem szabad kétszer ugyanazt a kezdőállapotot használni?


V: Ugyanazon kezdőállapot kétszeri használata komoly biztonsági problémákhoz vezethet, mivel megkönnyíti a támadók számára az adatok visszafejtését anélkül, hogy ismernék a kriptográfiai kulcsot vagy hozzáférnének ahhoz.

K: Van-e valamilyen kockázata a folyamkódok használatának?


V: Igen, ha helytelenül vagy a megfelelő óvintézkedések megtétele nélkül használják, akkor kockázatot jelent a folyamkódolók használata, mivel nem megfelelő kezelés esetén teljesen bizonytalanok lehetnek.

AlegsaOnline.com - 2020 / 2023 - License CC3