• Nem Talált Eredményt

Mutassuk meg, hogy az alábbi prímteszt gyors, és a tévedés lehetősége akármilyen pici (előre megadott) korlát alá szorítható

In document Számelmélet (Pldal 172-175)

Speciális alakú prímek:

5.6 A prímek reciprokösszege

5.7.14 Mutassuk meg, hogy az alábbi prímteszt gyors, és a tévedés lehetősége akármilyen pici (előre megadott) korlát alá szorítható

Az páratlan számról akarjuk eldönteni, hogy prím-e. Adott darabszámú (de elég sok) véletlen -ra megnézzük maradékát modulo . Az -et akkor „nyilvánítjuk” prímnek, ha az összes vizsgált -ra a maradék , de van köztük is.

5.7.15 Legyen , ahol , páratlan és . Tegyük fel, hogy egy egész számra

Lássuk be, hogy ekkor prím.

5.7.16 Legyen . Mutassuk meg, hogy az alábbi feltételek bármelyikéből következik, hogy az prím.

(a) Van olyan egész szám, amelyre , és az bármely prímosztójára

(b) Az bármely prímosztójához van olyan egész szám, amelyre

(c) Létezik az -nek egy -nél nagyobb osztója a következő tulajdonsággal: a bármely prímosztójához van olyan egész szám, amelyre

5.7.17 (M [576]*) Mutassuk meg, hogy a Miller–Lenstra–Rabin-teszt hatékonyabb a Solovay–

Strassen-tesztnél az alábbi értelemben. Ha egy adott -re az tanú a Solovay–Strassen-tesztnél, akkor ugyanez az tanú a Miller–Lenstra–Rabin-tesztnél is; vagyis, ha egy -ra az T 5.7.4 Tételnél szereplő (1) feltétel nem teljesül, akkor erre az -ra az T 5.7.5 Tételnél megadott (10) számhalmaz nem alkothat jó sorozatot.

5.8 Titkosírás

A klasszikus titkosírási sémákban és előre megegyeznek egy titkosító kulcsban (például minden betű helyett az ábécé rákövetkező betűjét írják), amelynek az inverze az megfejtő kulcs (az előző esetben ez minden betű helyett az azt megelőzőt jelenti). Ekkor az üzenet helyett annak

szerint titkosított változatát küldi el -nek, aki azt az segítségével fejti meg.

Ezek a kulcsok nemcsak betűkre, hanem hosszú betűsorozatokra is vonatkozhatnak, és rendkívül bonyolultak is lehetnek. Ezekben a ma már csak számítógéppel kezelhető hatalmas rendszerekben a gép a kulcsok szabályai szerint végzi a titkosítást, illetve a megfejtést, és az üzenettovábbítás is futár helyett elektronikus úton történik.

Ezek a sémák kielégítik azt a két alapkövetelményt, hogy üzenetét csak érti meg, továbbá egy harmadik fél nem tud hamis üzenetet küldeni nevében -nek. Hátrányt jelent azonban, hogy

nehézkes (és veszélyes) a kulcs előzetes egyeztetése, valamint nem dönthetők el az és között esetleg felmerülő viták, hiszen a közös és kulcsok birtokában akármelyikük képes a másik nevében „hamis” üzenetet gyártani.

Diffie és Hellman 1975-ben egy forradalmian új elven alapuló titkosírási sémát javasolt. Ebben a kulcsot nyilvánosságra hozzuk, és csak az kulcsot tartjuk titokban.

Ez első hallásra képtelen ötletnek hangzik, hiszen ha az egyik irányban ismeri valaki az eljárást, akkor a másik irányban is meg tudja adni. Valóban, legyenek a és függvények (amelyek egymás inverzei) például az halmaz bijekciói (látni fogjuk, hogy ez az általánosság megszorítása nélkül mindig feltehető). Ha meg akarjuk határozni (mondjuk) -öt, akkor a nyilvános kulcs segítségével sorban kiszámítjuk a értékeket, amíg az 5-öt meg nem kapjuk; az függvényérték az a lesz, amelyre .

Ez elvben szépen hangzik, azonban ha mondjuk egy 500-jegyű szám, akkor ez az út a gyakorlatban már nem járható. Ekkor ugyanis bármely számítógép évmilliárdok alatt is a értékeknek csak egy elenyésző töredékét tudná meghatározni, vagyis majdnem biztos, hogy -öt sohasem találná meg. (A helyzetet megpróbáljuk az alábbi hasonlattal érzékeltetni. Egy angol-magyar szótár elvben használható magyar-angol szótárként is: ha például az „ablak” szó angol megfelelőjét keressük, akkor sorra nézzük az angol-magyar szótár (ábécérendben szereplő) angol szavait, amíg a magyar jelentések között az „ablak” fel nem bukkan. Ez a „window”-nál be is következik. Nem valószínű, hogy ezek után bárkinek is eszébe jutna, hogy elég csak az angol-magyar szótárt megvenni.)

Mindezek alapján nem elképzelhetetlen, hogy a kulcs nyilvános ismerete mellett is az kulcs egyedül az illetékes személy titka maradjon. Nézzük, hogyan működik az ezen az elven alapuló ún. nyilvános jelkulcsú titkosírás.

Minden szereplő elkészít magának egy kulcspárt, amelyek egymás inverzei, a kulcsot nyilvánosságra hozza, az kulcsot viszont titokban tartja. Legyen az kulcspárja , a kulcspárja pedig . Ekkor az üzenet helyett a értéket küldi el -nek, aki ezt a következőképpen fejti meg: . Ez valóban igaz, hiszen

(Az a kiszámításához szükséges függvényt ismeri, a nyilvános függvényt pedig kikeresi a teletitok–könyvből, a -nél hasonló a helyzet -vel és -val.)

Most is teljesül az a két alapkövetelmény, hogy üzenetét csak érti meg, hiszen senki más nem ismeri a megfejtéshez szükséges -t, továbbá egy harmadik fél nem tud hamis üzenetet küldeni

nevében -nek, hiszen csak ismeri a kódoláshoz szükséges -t.

Emellett nincs szükség előzetes kulcsegyeztetésre, és mindenki használhatja ugyanezeket a kulcsait másokkal történő levelezésben is. Végül és között sem merülhet fel vita az üzenetről, mert a hamisíthatatlan „elektronikus aláírásként” működő akár bíróság előtt is egyértelműen bizonyítja a levél valódiságát.

A rendszer megvalósításához tehát olyan kulcspárokra van szükség, hogy a kulcstulajdonos egy alkalmas, csak az ő rendelkezésére álló információ alapján mindkét kulcsot ismerje, azonban mások még a nyilvánosságra hozott birtokában se legyenek képesek -et meghatározni.

Korábban láttuk, hogy ilyen „magántitok” például egy nagy szám prímtényezős felbontása, amelyet csak az ismer, aki ezeket a prímtényezőket összeszorozta. Ezt használta fel Rivest, Shamir és

Adleman 1976-ban a Diffie–Hellman-féle elv egy konkrét megvalósításához, amelyet ma RSA-sémának nevezünk. (Az elnevezés a felfedezők (vagy feltalálók?) nevének kezdőbetűiből származik.) Az RSA-séma ismertetése előtt megmutatjuk, hogy tetszőleges titkosírási rendszer visszavezethető arra az esetre, amikor a és függvények az halmaz bijekciói (vagyis permutációi), ahol az egy tetszőleges nagy egész szám. Ennek érdekében a betűket és egyéb jeleket (egy mindenki által ismert módon) számokként kódoljuk, majd az üzenetből ily módon gyártott számsorozatot adott méretű blokkokra vágjuk szét, és az egyes blokkokat (természetes módon) egy-egy (nagy) számnak tekintjük. Az így keletkező számok alkotják majd a és függvények értelmezési tartományát és értékkészletét.

A betűknek és jeleknek például az alábbi módon feleltethetünk meg kétjegyű (tízes számrendszerbeli) számokat: A 01, Á 02, B 03, …, Z 35, „pont” 36 stb., és (mondjuk) négy ilyen kétjegyű szám alkosson egy blokkot. Ezzel az üzenetet nyolcjegyű, azaz és közé eső számokká alakítottuk, vagyis ekkor vehető -nek.

Nézzük meg, mit kapunk ily módon a „számelmélet” szóból. Az S-nek megfelel a 25, a Z-nek a 35, az Á-nak a 02 stb., vagyis ekkor a

számsorozat keletkezik. Ez a 25350216, 06151607, 15062600 blokkokat jelenti (az utolsó csonka blokkot nullákkal egészítettük ki). Így a titkosírás (illetve ) kulcsát rendre erre a három számra kell alkalmazni. (Még egyszer hangsúlyozzuk, hogy a szövegnek ez a számokká konvertálási módja mindenki számára ismert, és csak arra szolgál, hogy a titkosírásban szereplő és függvényeket egységesebben és kényelmesebben lehessen majd megadni.)

Most rátérünk az RSA-séma szerinti kulcspár konstrukciójára.

Legyen , ahol és két nagy prímszám, amelyeket a kulcstulajdonos titokban tart, ugyanakkor -et teljes nyugalommal nyilvánosságra hozza. Választ továbbá egy olyan egészt, amelyre , és nyilvánosságra hozza, hogy az ő kulcsa a következő:

Hogyan lehet -et megkapni? Keressük -et hasonló alakban:

Ez akkor lesz megfelelő, ha minden -re

azaz, ha minden -re

A és prímekre a kis Fermat-tételt felhasználva könnyen következik, hogy tetszőleges -val

minden -re teljesül (lásd az 5.8.3a feladatot [164]).

A (4) alapján (3)-ban (és így (2)-ben is) megfelelő -hez jutunk, ha megoldjuk az

lineáris diofantikus egyenletet -re (és -ra). Mivel , ezért van megoldás, és az euklideszi algoritmus segítségével gyorsan megkapható.

Mindezt azonban csak a kulcstulajdonos tudja megcsinálni, mert más nem ismeri értékét, hiszen ahhoz tudnia kellene, mik az prímtényezői.

A kulcstulajdonos az eljárás alapját képező és prímeket a következőképpen generálja. Sorra választ (mondjuk) 250, illetve 300-jegyű páratlan véletlen számokat, és (például az 5.7 pontban tárgyalt prímtesztek valamelyikével) ellenőrzi, hogy prímek-e. Ezt addig csinálja, amíg egy-egy prímet nem talál. Mivel egyrészt a prímteszt gyors, másrészt „elég sok” 250, illetve 300-jegyű prím van (a prímszámtétel szerint körülbelül minden -ödik 300-jegyű páratlan szám prím), ezért és hamar kiválasztható.

Végül, (1) és (2) alapján mind a , mind pedig az függvényértékek az ismételt négyzetre emelések módszerével gyorsan kiszámolhatók (persze ez utóbbiakat csak a kulcstulajdonos tudja meghatározni).

A , és kiválasztásánál néhány biztonsági szabályt is figyelembe kell venni. Ha például és túl közel lenne egymáshoz, akkor könnyebb lenne az -et faktorizálni, ezért kellett a és

választásánál különböző nagyságú véletlen számokat tesztelni. Hasonló okokból szükséges az is, hogy -nek és -nek legyenek nagy prímtényezői stb. Ezekkel a technikai részletekkel nem foglalkozunk.

Mennyire biztonságos ez az eljárás? Úgy tűnik, hogy (az óvatossági rendszabályok maximális betartása esetén) nincs okunk aggodalomra. Nincs azonban kizárva, hogy valaki talál egy olyan módszert, amellyel gyorsan tud nagy számokat is prímtényezőkre bontani, és akkor hozzáfér az kulcshoz. Az is elképzelhető, hogy valamilyen egészen másféle formában képes előállítani az függvényt. Mindez azonban meglehetősen valószínűtlen.

Az RSA-séma lényegét az alábbi tételben foglaljuk össze:

5.8.1 Tétel (RSA-séma) . T 5.8.1 függvényértékeket pedig bárki gyorsan ki tudja számítani.

Feladatok

5.8.1 Milyen problémát jelenthet, ha a Diffie–Hellman-sémában az az üzenet helyett nem a

In document Számelmélet (Pldal 172-175)