Kriptográfia Nyolcadik előadás Blokktitkosítók működési módjai, folyamtitkosítók Dr. Németh N L. Zoltán SZTE, Számítástudom studomány Alapjai Tanszék 2008 ősz
Blokktitkosítók k működési m módjaim a blokktitkosítók rögzített méretm retű adatmennyiséget (egy blokkot) titkosítanak tanak egyszerre pl. a DES 64 bitet, az AES 128 bitet valamilyen úton tetszőleges mennyiségű adata titkosítása/megfejt sa/megfejtése se kell a gyakorlatban 1983: a NIST 4 működési m módot m (Modes of Operations) vezetett be: FIPS 81-es szabvány később egy ötödik módotm is definiáltak ezek közt k mind blokk mind folyam módok vannak egymást stól l hatékonys konyságukban, biztonságukban, illetve hiba tűrésükben t különbk nböznek egy tetszőleges blokktitkosítóval való titkosítás lehetséges útjait igyekeznek lefedni melyekből l az alkalmazás s követelmk vetelményekhez választhatunkv
Elektronikus kódkk dkönyv mód m Electronic Codebook Book (ECB) a lehető legegyszerűbb alkalmazás az üzenetet elősz ször r blokkméret méretm retű blokkokra tördeljt rdeljük, majd azokat titkosítjuk tjuk minden blokk értékét t a titkosítás s szerinti értékkel helyettesítj tjük, mintha egy gigantikus méretm retű kódkönyvet használn lnánknk minden blokk a többi blokktól l függetlenf ggetlenül kerül titkosításra, sra, pl: C i = DES K (P i )ű a példp ldákban a DES-t használjuk, de vehetnénk nk más s blokktitkosítót t is használata: egyetlen titkos érték átvitelére
Elektronikus kódkönyv mód m (ECB)
Az ECB hátrányai azért gyenge,, mert a blokkok egymást stól függetlenül l kódolk dolódnak dnak a nyílt szöveg azonos blokkjai azonosak lesznek így a nyílt szöveg ismétl tlődő blokkjai ismétl tlődnek a titkosított tott szövegben is ha az üzenet erősen strukturált, ez kihasználhat lható a támadt madó beszúrhat/helyettes rhat/helyettesíthet/ thet/átrendezhet trendezhet blokkokat ha az üzenet csak kis mértm rtékben változik v (pl. egy szerződésben sben csak az összeg) táblt blázat készk szíthető hozzá akkor használhat lható,, ha csak néhány n ny blokkot kell titkosítani, tani, pl. egy kulcsot
Rejtjeles blokkok láncoll ncolása Cipher Block Chaining (CBC) az aktuális blokk titkosításának eredmény nyét felhasználja lja a következk vetkező blokk titkosításához is a nyílt szöveg és s az előző rejtjeles blokk között k egy XOR műveletet m végzv gzünk titkosítás s előtt így két k t egyforma blokk nem ugyanúgy fog titkosítódni dni,, mert az előző blokk másm egy kezdő vektor (Initial( Vector, IV)-vel kezdünk: C 0 = IV C i = DES K (P i XOR C i-1 ),, i=1, 2, használata lata: sok adat titkosítása sa, ha az összes adat előre rendelkezésre áll (pl. e-mail, e FTP, web)
Cipher Block Chaining (CBC)
Üzenet helykitölt ltése (Message Padding) az üzenet végén v n lehet, hogy egy blokkhossznál rövidebb rész r marad amit kezelni kell az üzenetet fel kell tölteni t (ki kell egész szíteni), hogy egész számú blokk legyen a helyet kitölthetj lthetjük k ismert nem adat értékekkel pl. 0-kkal 0 vagy a feltölt ltés s hosszát t beírhatjuk az utolsó bájtba pl.. [ b1 b2 b3 0 0 0 0 5] azt jelenti, hogy 3 bájt adatbájt és s 5 bájt a feltölt ltés esetenként nt szüks kségünk lehet, még m g egy extra blokk használat latára, hogy mindig legyen feltölt ltés és így a visszaalakítás s egyértelm rtelmű legyen vannak bonyolultabb technikák, k, melyekkel ez elkerülhet lhető
A CBC előnyei és s korlátai a titkosított tott blokk minden előtte levő blokktól függ egy blokk megváltoz ltozása a teljes az összes további blokk titkosítását t megváltoztatja a titkosítás s nem, de a megfejtés párhuzamosítható kezdővektor kell (IV),, melyet ismernie kell a küldk ldőnek és s a címzettnekc de nem küldhetk ldhető el titkosítás s nélkn lkül, l, mert a támadt madó azt meghamisítva a nyílt szöveg első blokkjának tetsző- leges bitjeit invertálni tudja (akármit hamisíthat oda) ezért IV vagy előre rögzr gzített érték k legyen vagy ECB módban titkosítva tva küldjk ldjük k el előre
A titkos szöveg visszacsatolása sa Cipher FeedBack (CFB) ha az adatfolyam csak időnk nként nt bitekből/b l/bájtokból áll (mint például egy terminál-hoszt kapcsolat) más m s titkosítási si módszer m kell, mert nem tarthatjuk vissza az informáci ciót a visszacsatolás általában a blokkméretn retnél l kisebb mondjuk s bites egységekben gekben törtt rténik (pl. s=8 bit) azaz s bitet titkosít t egyszerre (= folyam mód) m a kulcsot csak közvetvek használjuk a titkosításhoz shoz s álvéletlenletlen bitet generálva, melyekkel XOR-olva titkosítunk tunk az eredményt visszacsatoljuk a következk vetkező s álvéletlenletlen bit előáll llításához a szabványokban s tetszőleges értéket felvehet (1,8, 64, 128) jelölése: CFB-1, CFB-8, CFB-64, CFB-128 stb. ha s = blokkhossz, akkor C 0 = IV C i = P i XOR DES K (C i-1 ) használata lata: általános célúc adatfolyamok tikosítása sa, hitelesítés
Cipher FeedBack (CFB)
A CFB előnyei és s korlátai legelterjetebb mód, amivel blokktitkosítót folyamtitkosítóként alkalmazhatunk csak a titkosító algoritmust használja a megfejtőt nem, így csak szimmetrikus kulcsú módszerekkel használhat lható (nyilvános nos kulcsúakkal nem!) lassabb adatmozgást biztosít, t, mint maga a titkosító algoritmus blokkhossz/s menet kell egy blokknyi adat titkosításához érzékenyebb az adatátviteli tviteli hibákra egy bithiba az egész következk vetkező blokkot olvashatatlanná teszi (a lavinahatás s miatt), és s még m g további blokkokat is de miután n a hibás s bit a shift regiszterből l kilép p visszaáll a rend => önszinkronizáló (self syncronizing) ) módm
A kimenet visszacsatolása sa Output FeedBack (OFB) az üzenetet szintén folyamként dolgozza fel de most a titkosító algoritmus kimenetét, és nem magát a titkosított szöveget csatoljuk vissza így a generált álvéletlen bitek függetlenek a nyílt szövegtől, előre kiszámíthatók ha s = blokkhossz O 0 = IV O i = DES K (O i-1 ) C i = P i XOR O i használata: folyamtitkosítás zajos csatornán át
Output FeedBack (OFB)
Az OFB előnyei és s korlátai itt is blokkhossz/s menet kell egy blokknyi adat titkosításához, de az álvéletlenletlen bitek előre kiszámíthat thatók, ha biztonságosan tudjuk tárolni t amint az adat megvan mehet a titkosítás a bithibák k nem terjednek szét,, csak egy bit lesz rossz a blokkszinkron hibák k viszont nem javíthat thatók, ha egy C i elvész, ami utána jön j n megfejthetetlen -> szinkronizálás s kell igazából l a Vernam-titkos titkosító egy variáci ciója így tilos ugyanazt a kulcsot és IV-t többször r használni sérülékenyebb az üzenetcsatorna módosm dosításaival saival szemben bebizonyított tották, hogy csak s = blokkméret választv lasztással ssal lehet biztonságos (pl 3DES-OFB FB-64 or AES-OFB FB-128) mindkét t oldalon visszacsatolás s van => nem párhuzamosp rhuzamosítható
Száml mláló mód Counter (CTR) ez egy új (ötödik) mód, m bár b r már m r elég g régen r javasolták (1979) hasonlít az OFB módhoz, de egy száml mláló értékét titkosítja tja,, nem pedig visszacsatolt értéket minden blokkhoz különbk nböző értékpár kulcs & száml mláló kell (tilos újra használni lni) O i = DES K (i) C i = P i XOR O i használata lata: nagy sebességű hálózati titkosításn snál, aszinkron adatátviteki tviteki mód, IPSec egy blokkhossz méretm retű száml mlálót t használ,, melynek értékei a nyílt szövegekt vegektől l különbk nbözők k legyenek
Counter (CTR)
A CTR előnyei és s korlátai egyszerűség: : csak a titkosító algoritmust kell hozzá implementálni lni hatékonys konyság párhuzamosítható mind h/w mind s/w szinten előre generálhat lható a,,kulcsfolyam alkalmas sok adat gyors titkosításához közvetlenül l is hozzáférhet rhetünk az adatblokkokhoz (random( access) bizonyíthat thatóanan legalább olyan biztonságos mint a többi t módm de biztosítani tani kell, hogy ugyanazt a kulcs- száml mláló párt sohase használjuk újra,, különben k feltörhet rhető.
Folyamtitkosítók (Stream Chiphers) az üzenetet bitenként nt (bájtonk jtonként) nt) dolgozza fel adatfolyamként ehhez a kulcsból l egy álvéletlenletlen (pseudo random) kulcsfolyamot (keystream) állít t elő majd XOR műveletet végez v vele bitenként nt mint a OTP, csak ott valódi és s nem álvéletlenletlen a kulcsfolyam a kulcsfolyam véletlensv letlensége teljesen megsemmisíti a nyílt szöveg statisztikai jellemzőit C i = M i XOR StreamKey i de ugyanazt a kulcsot tilos többszt bbször r alkalmazni, különben feltörhet rhető (nem úgy mint a blokktitkosítókn knál.)
A folyamtitkosítók általános felépítése
A folyamtitkosítók k tulajdonságai néhány ny tervezési elv: a kulcsfolyam hosszú periódus dusú legyen hosszabb ismétl tlődések nélkn lkül állja ki a véletlenség g statisztikai próbáit ekkor a rejtjelezett szöveg is véletlennek v látszl tszó lesz egy elég g hosszú kulcstól l függjf ggjön n (pl. ma >= 128 bit) magas lineáris kompexitású legyen az alkalmasan tervezett folyamtitkosító ugyanolyan biztonságos lehet, mint az azonos kulcshosszú blokktitkosító (csak brute force) de általában egyszerűbb (pár r soros kód!) k és gyorsabb
Az RC4 tervezte Ron Rivest (RSA Security,, 1987) az RSA üzleti titokként kezelte a kódjk dját, de valaki elküldte ldte a Cypherpunks lev.. listára 1994-ben nagyon egyszerű, így rendkívül hatékony változtatható kulcsméret retű, bájtonkéntnt dolgozik az egyik legelterjedtebb (SSL/TLS, WPA, WEP) folyamtitkosító a kulcsfolyamhoz a 0..255 számok (ál)véletlen letlen permutáci cióitit használja a kulcsból l előáll llít t egy álvéletlenletlen permutáci ciót, majd az aktuális, permutáci ción n kever még m egyetet,, majd generál l belőle le egy bájtot, b amivel XOR-olva titkosítja tja az aktuális bájtotb
RC4 előkész szítési si fázisf kiindulás: S tömb a 0..255 számokkal melyet a kulcs alapján n megkeverünk keylen a kulcs mérete m bájrtokban (max 256) S adja majd meg a titkosító belső állapotát for i = 0 to 255 do S[i] = i T[i] = K[i mod keylen]) j = 0 for i = 0 to 255 do j = (j + S[i] + T[i]) (mod 256) swap (S[i], S[j]) // csere keylen a kulcs mérete m bájrtokban (max 256) K[i] a kulcs i. bájtja
RC4 titkosítás a titkosítás/megfejt s/megfejtés s (ugyanaz a kulcsfolyam kell!) során tovább keverjük k az aktuális permutáci ciót a megcserélt pár p értékeinek összege (t)( ) jelöli li ki az aktuális kulcs bájtotb jtot (S[t] -t)) a táblt blázatból ami az üzenet következk vetkező bájtjával XOR-olva adja a titkosítást/megfejt st/megfejtést i = j = 0 for each message byte M i i = (i + 1) (mod 256) j = (j + S[i]) (mod 256) swap(s[i], S[j]) t = (S[i] + S[j]) (mod 256) = M i XOR S[t] C i
RC4 áttekintés
Az RC4 biztonsága az eddigi kutatások alapján biztonságos az ismert támadt madásfajtákkal szemben (persze elég g hosszú kulcs esetén, >= 128 bit) van néhány n ny gyakorlatban kivitelezhetetlen kriptoanalízisen alapuló támadás nagyon nem lineáris titkosító mivel RC4 folyamtitkosító,, ezért tilos a kulcsot újra felhasználni lni ezzel van a főf probléma a WEP esetén, de ezt sérülékenyss kenységet a kulcsgenerálás gyengesége ge okozza és s nem magát t az RC4-et érinti
Felhasznált lt irodalom Virrasztó Tamás: Titkosítás és s adatrejtés: Biztonságos kommunikáci ció és s algoritmikus adatvédelem, delem, NetAcademia Kft., Budapest, 2004. Online elérhet rhető: http:// ://www.netacademia.net/book.aspx?id=1# William Stallings: Cryptography and Network Security,, 4th Edition, Prentice Hall, 2006. (Chapter 6) Lawrie Brown előad adás s fólif liái i (Chapter( 6)