Kriptográfia Hatodik előadás Nyilvános kulcsú kriptográfia I. Az RSA Németh L. Zoltán SZTE, Számítástudom studomány Alapjai Tanszék 2008 ősz
Titkos kulcsú kriptográfia (Private-Key Cryptography) a hagyományos: szimmetrikus/titkos/egy kulcsú kriptográfi fiában egy titkosító/megfejt /megfejtő kulcs van ha nem is szó szerint egyezik meg a kettő,, a titkosító és s a megfejtő kulcs, egymásb sból l könnyen k kiszámíthat tható a kulcsot csak a feladó és s a címzett c ismeri a kulcs titokban tartásán n alapszik a biztonság a feleknek előzetesen kommunikálni kell egymással a titkos kulcsot ez szimmetrikus,, a felek szerepe egyenrangú: mindketten tudnak titkosítani tani és s megfejteni is ezért nem védi v a feladót t a címzettel c szemben attól, hogy a címzett c a kapott üzenetet meghamísítva azt állítsa, hogy az a feladótól l jöttj
Nyilvános kulcsú kriptográfia (Public-Key Cryptography) talán n a legjelentősebb találm lmány a kriptográfia 3000 éves törtt rténetében két t kulcs van egy nyilvános nos (public( key) egy magán (private key) /néhol: saját t kulcs v. titkos kulcs/ a nyilvános nos kulccsal lehet titkosítani tani de az üzenetet csak a magánkulccsal lehet megfejteni így példp ldául maga a küldk ldő sem tudja visszafejteni az üzenetet, ha mondjuk elfelejtette, hogy mit titkosított tott
Nyilvános kulcsú kriptográfia II (Public-Key Cryptography) a nyilvános nos kulcsot nyilvánoss nosságra lehet hozni és s legalább a küldk ldő számára nyilvánoss nosságra kell hozni (de ez nem igényeli hogy biztonságos kommunikáci ció legyen) bárki lehet feladó,, aki a nyilvános nos kulcsot megkapja a számelm melmélet let számítási si szempontból,,egyik irányban nehéz -- másik irányban könnyk nnyű problémáin alapszik (pl. faktorizáci ció,, diszkrét log.) kiegész szíti és s nem helyettesíti ti a titkosított tott kulcsú kriptográfi fiát
Miért jój a nyilvános nos kulcsú kriptográfia? a titkos kulcsú kriptográfia két k t alap problémájára ra ad választ: v kulcselosztás elektronikus aláí áírások az első nyilvános nos publikáci ciója: Whitfield Diffie és Martin Hellman (Stanford tanford), 1976 ismert volt, bár b r titokban tartották k 1999-ig: James Ellis (UK), 1970 sőt állítólag lag az NSA már m r a 60-as évek közepén n ismerte
Public-Key Cryptography nyílt kulcsú/k /két t kulcsú/aszimmetrikus titkosításnak snak is nevezik a kulcsok szerepe: a nyilvános nos kulcsot titkosításra sra és s a magánkulccsal készített aláí áírás s ellenőrz rzésérere lehet használni a magánkulccsal (amit csak a címzett c ismer) a megfejteni lehet, és aláí áírást készk szíteni természetesen másik irány nyú titkos vagy nem titkos üzenetküldéshez a felek szerepe aszimmetrikus: a nyilvános nos kulcs tulajdonosa (a feladó) csak titkosítani tani és s aláí áírást ellenőrizni tud, megfejteni vagy aláí áírni nem ezért aláí áíráshoz (saját t névre n szóló) ) magánkulcs kell, de üzenet titkosításához elég g a küldk ldő nyilvános nos kulcsát t ismerni
A nyilvános nos kulcsú titkosítás s vázlatav
A két k t kulcs viszonya Feltételek telek a nyilvános nos kulcsú titkosítás s működéshez: m a nyilvános nos kulcs ismeretében hatékonyan lehessen titkosítani tani a magánkulcs ismeretében hatékonyan lehessen az üzenetet megfejteni jelenlegi algoritmusainkkal reménytelen nytelenül l sok ideig tartson a nyilvános nos kulcsból l a magánkulcsot kiszámítani (a titkosító/megfejt /megfejtő algoritmust ismeretét t persze feltételezz telezzük) a magán n kulcs ismerete nélkn lkül l szintén n reménytelen számítási si feladat legyen az üzenet megfejtése hatékonyan tudjunk véletlen v nyilvános nos-magán kulcspárokat generálni néhány ny algoritmusnál l (pl. RSA) hasznos, hogy a magánkulccsal is lehessen titkosítani, tani, ami csak a nyilvános nos kulccsal fejthető meg (ezen alapul az aláí áírás)
Nyilvános kulcsú titkosítás és s aláí áírás (elvi vázlat) v PR = private, magánkulcs, PU = public, nyilvános kulcs
A nyilvános nos kulcsú kriptográfia alkalmazásai 3 kategóri riába osztható: titkosítás/megfejt s/megfejtés (bizalmasságot ad) elektronikus aláí áírások (hitelesítést st ad) kulcscsere (kapcsolatkulcsok (session( keys) cseréjére) re) néhány ny algoritmus mindhárom feladatra alkalmas, mások m csak egy-két t célra c használhat lhatók
A nyilvános nos kulcsú rendszerek biztonsága I nem biztonságosabbak vagy kevésb sbé biztonságosabbak mint a titkos kulcsú rendszerek; a biztonság g az alkalmazott algoritmustól, l, kulcs hossztól l stb. függ f nem a módszer típust pusától mint a titkos kulcsú rendszereknél l itt is a teljes kipróbálás (brute force) ) feltörés s legalább is elméletben letben mindig lehetséges de a gyakorlatban használt kulcsok a teljes kipróbálás meghiúsításánál l jóval j hosszabbak (> 512 bitesek esek) mert a titkosítás s alapját t képezk pező számelm melméleti leti probléma nehéz z irány nyának nak (pl. faktorizáci ció) ) kiszámítása sa ellen kell védekeznünknk pl. 512-bit RSA 64-bit DES, 1024-bit RSA 80-bit DES
A nyilvános nos kulcsú rendszerek biztonsága II a biztonság g a könnyű irány ny (titkosítás) s) és s a nehéz irány ny (feltörés) közötti k elég g nagy számítási si különbségen alapszik pl. RSA esetében könnyű irány = szorzás, s, (illetve hatványoz nyozás mod p) nehéz z irány = faktorizáci ció (prímt mtényezőkre bontás) általánosságban a,,nehéz z irány ny is algoritmussal megoldható,, de elég g nehézz zzé kell tennünk nk ahhoz, hogy a gyakorlatban kivitelezhetetlen legyen ehhez nagy (több százjegy zjegyű) ) számokra van szüks kség ezért a nyilvános nos kulcsú kriptográfia jóval lassabb a titkos kulcsúnál
RSA Rivest, Shamir & Adleman (MIT), 1977 a legismertebb és s legelterjedtebb nyilvános nos kulcsú algoritmus véges (Galois( Galois) ) test feletti hatványoz nyozáson alapszik valamilyen n modulusra nézven a b (mod n) kiszámításának időig igénye O((log n) 3 ) ez polinomiális lis a bemenet hosszának (log( n) függvényében /könny nnyű/ a modulus nagy szám (pl.. 1024 bit ) a biztonságát t a faktorizáci ció nehézs zsége adja erre ma csak superpolinomiális lis algoritmusok ismertek /nehéz/, pl. GNFS időig igénye ahol n a bemenet hossza
RSA Kulcsgenerálás Minden felhasználónak nak saját t nyilvános/mag nos/magán kulcspárra van szüks ksége, amit így generálhatunk: 1. válasszunk két k t nagy prímsz mszámot mot véletlenszerv letlenszerűen: en: p, q 2. számítsuk ki a modulust n=p q 3. ekkor φ(n)=(p-1)(q-1) ahol φ(n) az Euler féle φ függvény az {1,,n},n} számok közül k az n-hez n relatív v prímek száma, pl φ(6)= 2 4. válasszunk egy olyan e számot, melyre 1<e<φ(n) (n), (e,φ(n))=1 (n))=1 5. számítsuk ki azt a d értékét, t, melyre e d=1 mod φ(n) and 0 d n0 6. a nyilvános nos kulcs: PU={e,n} 7. a titkos kulcs: PR={d,n} p és q értékét t szintén n titokban kell tartani, vagy meg kell semmisíteni, bár b r sebesség g szempontjából, még m g jój jöhet
Az RSA használata az nyílt szöveget elősz ször 1 és n közötti számokkal kell kódolnunk, k legyen M a titkosítand tandó blokk értéke, ahol 0 M<n az M üzenet titkosításához a küldk ldő a címzettc PU={e,n e,n} nyilvános nos kulcsával kiszámítja a C = M e mod n értéket a C üzenet megfejtéséhez a címzett c a PR={d,n d,n} magánkulcs nkulcsát hasznáva kiszámítja az C d mod n értéket, ami éppen M
Miért működik m? az Euler-Fermat tétel tel szerint a φ(n) (n) mod n = 1, 1 amennyiben (a,n)=1 az RSA esetében: n=p q φ(n)=(p-1)(q-1) e és d egymás s inverzei mod φ(n) ezért e d=1+k φ(n) valamilyen k-ra ezért ha (M,n) = 1, akkor C d = M e d = M 1+k φ(n) = M 1 (M = M 1 (1) k = M 1 = M mod n az (M,n) 1, azaz az M=p vagy M=q eset hasonlóan an igazolható (HF!) (M φ(n) ) k
RSA minipélda - Kulcsgenerálás 1. Választott prímek mek: p=17 és q=11 2. Számítás: n = pq =17 11=187 11=187 3. Számítás: φ(n)=( )=(p 1) 1) (q-1)=16 10=16010=160 4. Választás e: melyre (e,160)=1; legyen e=7 5. Számítás d: melyre de=1 mod 160 és d < 160 Most d=23 mert 23 7=161=10 7=161=10 160+1160+1 6. Nyilvános kulcs: PU={7,187} 7. Magánkulcs: PR={23,187}
RSA minipélda titkosítás/megfejt s/megfejtés a példp ldát t folytatva legyen a nyílt szöveg M = 88 M szabályos blokk, mert 88<187 titkosítás: C = 88 7 mod 187 = 11 megfejtés: M = 11 23 mod 187 = 88
Gyors hatványoz nyozás modulo n az iterált négyzetreemelések módszerével (Square and Multiply Algorithm) gyors hatékony algoritmus (moduláris) hatványoz nyozásra a kitevő bináris reprezentáci cióját t tekintjük az alapot ismételten négyzetre n emeljük és s ezen hatványok közül k l azokat szorozzuk össze, amelyek a hatvány nyérték k kiszámításhoz shoz valóban kellenek, mert a kitevő megfelelő bitje 1-es1 így O(log 2 n) szorzás s kell, ha a kitevő legfeljebb n pl. 3 135 = 3 128 34 3 1 = 5 4 3 = 5 mod 11 mert 3 1 =3, 3 2 =9, 3 4 =4, 3 8= 5, 3 16 =3, 3 32 =9, 3 64 =4, 3 64 =5, 3 128 =5
a b mod n kiszámítása, sa, c = 0; f = 1 ahol b=b k b 0 for i = k downto 0 do c = 2 * c f = (f * f) mod n if b i == 1 then return f c = c + 1 f = (f * a) mod n Megj: c re nincs szükség csak szemlélteti a kitevő aktuális értékét
A titkosítás s hatékonyan megvalósíthat tható a titkosítás e kitevőre hatványoz nyozás mod n Ezért ha e kicsi, a titkosítás s gyorsabb gyakori választv lasztás: s: e=65537=(2 vagy szóba jöhet: j e=3 e or e=17 (2 16 +1) 16 +1 de ha e túl kicsi (pl. e=3) akkor feltörhet rhető ha e-t rögzítjük, akkor (e, φ(n))=1-t n megválaszt lasztásával kell biztosítanunk, tanunk, pl. elutasítva tva minden p-t és q-t melyekre p-1 és q-1 nem relatív v prímek e-hez
A megfejtés s is hatékony a megfejtés d-dikdik hatványra emelés d valósz színűleg nagy szám, különben k a rendszer nem biztonságos alkalmazható a kínai k maradékt ktétel tel a hatvány nyérték mod p majd mod q külön kiszámításához, majd a részeredmr szeredmények összekombinálásához ez kb. 4 szer gyorsabb mint a direkt módszerm csak a titkos kulcs, pontosabban p és q ismerője tudja ezt a gyorsítást st használni
RSA kulcsgenerálás s elmélete lete I Az RSA kulcsaihoz szüks kséges: két t nagy véletlen v prímsz mszám m meghatároz rozása: p és q e vagy d egyikének kiválaszt lasztása, sa, és s a másik m kiszámítása sa p és q nem lehet az n = p q szorzatból könnyen kiszámíthat tható pl. nem lehet az egyik sem túl t l kicsi nem eshetnek közel k a n négyzetgyökéhez p-1-nek és q-1-nek is kell, hogy legyen nagy prímoszt mosztója de (p-1,q 1,q-1) 1) kicsi legyen
RSA kulcsgenerálás elélete lete II általában a prímeket véletlen v generálással + valósz színűségi teszteléssel ssel állítják k elő Fermat teszt (néha hibás eredményt ad) Miller-Rabin teszt (valószínűségi teszt) Solovay-Strassen teszt (valószínűségi teszt) AKS teszt (determinisztikus, elméleti) ezért PRÍMEK P (2004-ben!) Ld: bonyolultságelm gelmélet let illetve http://en.wikipedia.org/wiki/primality_test a kitevők e, d egymás s inverzei mod φ(n) egymásb sból és φ(n) (n)-ből az általánosított Euklideszi algoritmussal számíthat thatók
Az RSA biztonsága lehetséges támadt madási típusok t ellene: a kulcsok teljes kipróbálása (kivitelezhetetlen a számok nagysága ga miatt) matematikai támadások időméréses támadt madások (a megfejtő algoritmuson) választott titkos szöveg alapú támadások
Matematikai támadt madások matematikai támadások fajtái: faktorizáci ció (n ből p és q meghatározása) φ(n) kiszámítása sa d direkt kiszámítása sa az első kettő egyforma nehéz: p és s q ismeretében φ(n)=( )=(p 1)( 1)(q-1) φ(n) és n ismeretében n = pq és φ(n)=( )=(p 1)( 1)(q-1) p-re és q-ra megoldható,, mert másodfokm sodfokú egyenletrendszer sejtés, s, hogy d kiszámítása sa is a faktorizáci cióval polinomiálisan lisan ekvivalens
A faktorizáci ció nehézs zsége a faktorizáló algoritmusok csak lassú ütemben fejlődnek (QS -> > GNFS -> > LS) Ld: Paul Zimmermann's factoring page 2005 májusm jusában a rekord 200 jegyű (663 bites es) ) szám felbontása LS (Lattice Sieve) ) algoritmussal (55 processzorév v lenne egyetlen 2.2 GHz Opteron CPU-val val.) pedig díjakat d is lehetett nyerni érte: Ld. RSA factoring challange: http://www.rsasecurity.com/rsalabs/node.asp?id www.rsasecurity.com/rsalabs/node.asp?id=2879 így ma egy 1024 vagy inkább 2048 bites RSA biztonságos feltéve, hogy p és q,e és d a feltételeknek teleknek megfelelően en és s valóban véletlenv letlenül l választott v az algoritmus biztonságosan implementált lt a titkos kulcs biztonságosan tároltt
Időméréses támadt madások (Timing Attacks) feltalálójuk Paul Kocher a 90-es évek közepk zepén különböző műveletek időig igénye eltérő pl. kis vagy nagy számmal való szorzás az IF-ek mely ága kerül l végrehajtv grehajtásra így a használt titkos kulcstól l (kitevő!) függ f a megfejtés s végrehajtv grehajtásának ideje az RSA erre igen érzékeny, mert a megfejtéskor a titkos kulcs a kitevő,, erősen hat az időig igényre védekezés s ellene konstans idejű hatványoz nyozás s implementálása (lassít) véletlen szünetek beiktatása blinding (megvakítás): véletlen v értékkel szorzás s a hatványoz nyozás s előtt, majd korrigálás s (csak + 2 102 %)
Választott titkos szöveg alapú támadás az RSA választott v titkos szöveg alapú támadásokra sérülékenys a támadt madó a feltöréshez titkos szövegeket jelölhet lhet ki, melyek megfejtését t megkapja választhatjuk titkos szövegeket úgy, hogy azok előseg segítsék k a kriptoanalízist ellenszere: a nyíltsz ltszöveg véletlen v szöveggel való feltölt ltése (padding( padding) nevezetesen: Optimal Asymmetric Encryption Padding (OASP) /bonyolult/
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 9) Lawrie Brown előad adás s fólif liái i (Chapter( 9) http://en.wikipedia.org/wiki/rsa /RSA