Bud Spencer és kínai harcosok a Nyomás utána című filmből

Episode I

Alice és Bob

22. fejezet

Alice, Bob és a kínaiak

Az előző fejezetben megismerkedtünk napjaink egyik legfontosabb aszimmetrikus kulcsú rejtjelezési eljárásával, az RSA algoritmussal. Ehhez alapvetően három összetevőre volt szükség. Először is hatékonyan kell tudni megoldani lineáris kongruenciákat, amelyhez bemutattuk az euklidészi algoritmus kibővített változatát. Másodszor hatékonyan kell tudni kiszámítani az Euler-féle -függvény értékét. Láttuk, hogy a bemeneti szám prímtényezőinek ismeretében ez gyerekjáték. Megemlítettük ugyanakkor, hogy a prímtényezők ismerete nélkül jelenlegi tudásunk szerint ez gyakorlatilag kivitelezhetetlen, amennyiben ezek a prímtényezők kellően nagyok. Ez adja az RSA eljárás biztonságát. Harmadszor a kódoló és dekódoló műveletek elvégzéséhez hatékonyan kell tudni moduláris hatványozást végezni, amelyhez az ismételt négyzetreemelések módszerével ismerkedtünk meg. Végül egy konkrét példán ki is próbáltuk az eljárást, és megmutattuk, hogy a kulcspár egyik tagjával kódolt üzenetet varázslatos módon a kulcspár másik tagjával lehet dekódolni.

De vajon varázslat helyett valójában mi áll az RSA algoritmus helyes működésének hátterében? Mit állít a kis Fermat-tétel és a kínai maradéktétel, és mi közük van ehhez az egészhez? Mit értünk egy maradékosztálygyűrű dekompozíciója alatt? Hogyan lehet ennek segítségével lényegesen felgyorsítani az RSA dekódolási algoritmust? Ebben a fejezetben erről lesz szó...

Ezek kontextusba helyezése miatt erőteljesen ajánlott elolvasni a 20. és a 21. fejezetet, mivel gyakran hivatkozni fogunk rájuk.

Az RSA algoritmus lépéseit tehát már ismerjük, és az előző fejezetben mutattunk is egy konkrét példát az alkalmazására. Ebben a példában először Bob generált magának egy RSA kulcspárt, amelynek publikus részét elérhetővé tette Alice – illetve bárki más – számára, a titkos részét viszont nem adta ki a kezéből. Alice ezután a sziabobmiahelyzet# üzenetet kódolta Bob publikus kulcsával, a titkosított üzetetet pedig átküldte a nembiztonságos csatornán. Ezt az üzenetet egy támadó, de még maga Alice sem tudja dekódolni. Arra ugyanis csak Bob képes, mivel nála van az ehhez szükséges titkos kulcs.

Úgy tűnik tehát, hogyha egy üzenetet egy kulcspár valamelyik tagjával – legyen az akár a publikus, akár a titkos kulcs – kódolunk, majd az így kapott eredményt dekódoljuk a kulcspár másik tagjával, akkor varázslatos módon az eredeti üzenetet kapjuk vissza. Most azt fogjuk megmutatni, hogy ez az összefüggés bármilyen, az ismertetett kritériumoknak megfelelő kulcspár, továbbá bármilyen üzenet esetén valóban fennáll. Ehhez azonban szükségünk lesz két nagyon fontos tételre. Ismerkedjünk is meg az elsővel.

A kis Fermat-tétel

A kis Fermat-tétel egy fontos számelméleti tétel, amelyet Pierre de Fermat fedezett fel 1636-ban. Fermat-nak bosszantó szokása volt, hogy bizonyítás nélkül közölte felfedezéseit kortársaival, mintegy kihívást intézve hozzájuk: jöjjenek rá ők is a bizonyításra. Fermat szokásához híven a kis Fermat-tételre sem adott bizonyítást. Ezt bizonyíthatóan elsőként Gottfried Wilhelm Leibniz német matematikus írta le egy dátumozatlan kéziratban, ahol azt is állította, hogy már 1683 előtt is ismert bizonyítást e tételre. A tétel nevében szereplő "kis" jelzőt a híres nagy Fermat-tételtől való megkülönböztetés miatt szokás használni. Ez utóbbi egészen 1995-ig "nagy Fermat-sejtés" néven volt ismeretes, mivel csak ekkor – mintegy 350 évvel később – sikerült bizonyítást adni rá.

Visszatérve a kis Fermat-tételre, az egy viszonylag egyszerű számelméleti tétel, amely moduláris hatványokról szól, méghozzá azokban az esetekben, amikoris a modulus egy valamilyen pozitív prímszám. Fermat azt vizsgálta, hogy egy tetszőleges egész szám moduláris hatványai hogyan alakulnak ebben a modulo óraaritmetikában. Észrevette, hogy minden olyan esetben, amikor a kitevő megegyezik a modulussal, akkor az egész szám -edik moduláris hatványa is épp megegyezik -val.

Vizsgáljuk meg például, hogy az egész szám moduláris hatványai hogyan alakulnak a kitevőknek megfelelő óraaritmetikákban. Nyilakkal jelöltük meg azokat a sorokat, amelyekben a kitevő és a modulus prímszám:

Valóban úgy tűnik, hogy a prím kitevők esetében a hatványai mindig kongruensek lesznek -vel a kitevőnek megfelelő óraaritmetikában.

Az alábbi tétel második állítása éppen azt fogalmazza meg, hogy ez bármilyen alap – tehát nem csak a –, továbbá bármilyen pozitív prím kitevő esetén így van. Amennyiben és relatív prímek, akkor érvényes az első állítás is, amely a kis Fermat-tétel gyakoribb alakja.

22.1. Tétel (A kis Fermat-tétel):

Legyen egy tetszőleges pozitív prímszám, továbbá egy tetszőleges egész szám, amely relatív prím -hez. Ekkor teljesül az alábbi kongruencia:

Az alábbi kongruencia tetszőleges egész számra – tehát nem csak a -hez relatív prímekre – teljesül:

Bizonyítás:

Amennyiben relatív prím a modulushoz, akkor alkalmazható az Euler-Fermat tétel, amely szerint ugye teljesül az alábbi kongruencia:

A 21.5. Tétel alapján az Euler-féle -függvény értéke ebben az esetben . Ebből a tétel első állítása adódik:

Ám ebben az esetben a 20.2. Tétel 5. pontja szerint a kongruencia mindkét oldalát megszorozhatjuk -val. Így teljesül az alábbi kongruencia is, amely tehát a tétel második állítása azokra az esetekre, amikoris relatív prím -hez:

Már csak annyit kell megmutatni, hogy ez a második állítás abban az esetben is teljesül, ha és nem relatív prímek. A 21.4. Lemma alapján ebben az esetben teljesül a oszthatóság. Ez viszont a 20.1. Tétel 3. pontja alapján épp az alábbi kongruenciát jelenti:

Ám ekkor a 20.2. Tétel 6. pontja alapján a kongruencia mindkét oldalát -edik hatványra emelhetjük. Így teljesül az alábbi kongruencia is:

Mivel tehát is és is -val kongruens modulo , ezért a 20.2. Tétel 3. pontja alapján ők egymással is kongruensek modulo , épp ahogyan a tétel állítja:

Megjegyzés:

Ez a tétel magától Fermat-tól származik 1636-ból. A bizonyításban felhasználtuk, hogy a kis Fermat-tétel az Euler-Fermat tétel egy speciális esete, amikoris a modulus egy prímszám, és így a kitevő -gyel egyezik meg. Megemlítjük azonban, hogy az Euler-Fermat tételt Leonhard Euler mintegy 100 évvel a kis Fermat-tétel felfedezése után publikálta, méghozzá éppen annak tetszőleges – tehát nem csak prímkitevőkre történő általánosításaként. A kis Fermat-tétel közvetlenül – tehát az Euler-Fermat tétel felhasználása nélkül – is viszonylag könnyen bizonyítható.

Vigyázat! Attól még, hogy valamely és egész számokra teljesülnek a tételben szereplő kongruenciák, még nem biztos, hogy prímszám. Ez azonban elsőre nem látszik. Például esetén a kongruenciák látszólag csak azokban az esetekben teljesülnek, amikor az kitevő prím. Az első ellenpéldára csak az kitevőnél bukkanunk rá. Ekkor teljesül ugyan a kongruencia, a azonban nem prím, hiszen . A következő ellenpélda -nél következik. Néhány továbbit találunk ebben a listában.

Ráadásul az ellenpélda különleges abból a szempontból, hogy esetében nemcsak az , hanem tetszőleges alap esetén is teljesül az kongruencia, ennek ellenére mégsem prím. Másként fogalmazva ez tehát azt jelenti, hogy a tétel megfordítása nem igaz!

Azon túlmenően, hogy a most ismertetett kis Fermat-tétel fontos szerepet játszik az RSA algoritmus helyességének igazolásában, Alice-nak és Bob-nak is nagy hasznára lesz a kulcsgeneráláshoz szükséges óriási – a gyakorlatban többszázjegyű – prímszámok kereséséhez. Erről a következő fejezetben lesz szó, most azonban ismerkedjünk meg egy másik, az RSA működése szempontjából fontos kérdéssel.

Kongruenciarendszerek

A 20. fejezetben megismerkedtünk az úgynevezett kongruenciaegyenletekkel. Ezek olyan kongruenciák, amelyekben valamilyen ismeretlen is szerepel, a feladatunk pedig az egész számok egy olyan részhalmazának – vagy részhalmazainak – meghatározása, amelynek – vagy amelyeknek – elemeit behelyettesítve az ismeretlen helyére a kongruencia teljesül. E kongruenciaegyenletek legegyszerűbb képviselői az úgynevezett lineáris kongruenciák voltak, így a továbbiakban elsősorban ezeket fogjuk példaként felhozni.

Legyen például és tetszőleges, pedig valamilyen pozitív egész szám, és tekintsük az alábbi lineáris kongruenciát:

A 20.8. Definíció utáni megjegyzés alapján egy ilyen kongruenciaegyenletnek a megoldásai teljes modulo maradékosztályok lesznek – amennyiben persze létezik megoldás.

Most bonyolítsuk meg a dolgot egy kicsit. A hagyományos egyenletekhez hasonlóan a kongruenciaegyenletek esetén is előfordulhat, hogy ugyanarra az ismeretlenre egyidejűleg több, különböző modulus szerinti kongruenciafeltételt is előírunk. Ezeket kongruenciarendszereknek nevezzük.

A példa kedvéért továbbra is a lineáris kongruenciáknál maradva tegyük fel, hogy most az egész számoknak azon részhalmazát – vagy részhalmazait – keressük, amelynek – vagy amelyeknek – elemei egyszerre elégítik ki az alábbi mindkét kongruenciát:

Nyilvánvalóan egy ilyen rendszer megoldhatóságának szükséges feltétele, hogy a benne szereplő kongruenciák külön-külön megolhatók legyenek. Ez ebben a példában természetesen a 20.13. Tétel alapján teljesül, mivel a és a kitüntetett közös osztók osztói a megfelelő kongruenciák jobboldalainak, azaz rendre a és a egész számoknak.

A 20.14. Tétel 1. pontja alapján az első kongruenciának darab modulo maradékosztály, míg a másodiknak darab modulo maradékosztály lesz a megoldása.

Ezek megtalálásához előszöris a 20.13. Tétel alapján az alábbi két lineáris diofantoszi egyenletet kell megoldani:

Ezt a 21.2. Tétel 1. pontja alapján a kibővített euklidészi algoritmussal tudjuk megtenni. Az így kapott megoldásokat a 20.13. Tételben leírtaknak megfelelően visszafordítva a kongruenciák nyelvére azt kapjuk, hogy a kongruenciának a modulo maradékosztály, míg a kongruenciának a modulo maradékosztály egy-egy megoldása lesz. Előbbinek ugye nincs más megoldása, míg utóbbinak a 20.14. Tétel 2. pontja alapján egy további megoldása lesz a modulo maradékosztály.

A fenti kongruenciarendszerben szereplő két lineáris kongruencia megoldásait az alábbiakban foglaltuk össze a 19.1. és a 19.3. Definícióban tanult halmazelméleti jelölésekkel:

Olyan egész számokat keresünk tehát, amelyek -tel osztva maradékot, és -cal osztva vagy maradékot adnak. Azaz tulajdonképpen az alábbi két kongruenciarendszer megoldásait keressük:

Az ilyen jellegű kérdések megválaszolására siet segítségünkre a most bemutatásra kerülő nagyon fontos összefüggés.

A kínai maradéktétel

Azt a kérdést szeretnénk tehát megválaszolni, hogy melyek azok az egész számok, amelyek adott modulusokkal osztva adott maradékokat adnak. Itt most csak azzal a számunkra fontos esettel foglalkozunk, amikor ezek a modulusok páronként relatív prímek egymáshoz – azaz bármely két modulus egymáshoz relatív prím. Ilyen például az előző szakaszban szereplő példa, hiszen az és modulusok egymáshoz relatív prímek.

Az írásos emlékek alapján az alábbi tételt már mintegy 2000 évvel ezelőtt is ismerte egy bizonyos Szun Cu nevű kínai matematikus, ezért ezt kínai maradéktétel néven szoktuk emlegetni.

22.2. Tétel (Kínai maradéktétel):

Legyenek és tetszőleges, és pedig valamilyen egymáshoz relatív prím pozitív egész számok. Ekkor az alábbi kongruenciarendszer megoldható, és a megoldás egyetlen modulo maradékosztály lesz:

Más megfogalmazásban minden, a fenti két kongruenciát egyszerre kielégítő egész szám ugyanabba az egyetlen modulo maradékosztályba esik, továbbá ennek a bizonyos maradékosztálynak minden eleme kielégíti a fenti két kongruenciát.

Bizonyítás:

Először a kongruenciarendszer megoldhatóságát igazoljuk. Az első kongruenciát pontosan az egész szám által reprezentált maradékosztály elemei elégítik ki. Ezek a 20.4. Tétel alapján épp azok az egész számok lesznek, amelyek felírhatók az alábbi alakban valamilyen alkalmasan megválasztott paraméterrel:

Ezt behelyettesítve a második kongruenciába:

Azt kell tehát igazolnunk, hogy létezik ilyen . Vegyük észre, hogy a kongruencia mindkét oldalából -t kivonva az alábbi lineáris kongruenciát kapjuk:

Ez viszont a 20.13. Tétel alapján megoldható -ra, hiszen a tétel szövege szerint ugye és egymáshoz relatív prímek, azaz , ami nyilván osztója a kongruencia jobboldalának, azaz -nak.

Másodszor azt mutatjuk meg, hogy minden, a kongruenciarendszert kielégítő egész szám ugyanabból a modulo maradékosztályból származik. Legyen ezért és két tetszőleges egész szám, amelyek mindkét kongruenciát kielégítik. Azaz egyrészt:

Másrészt:

Ez a 20.2. Tétel 3. pontja alapján azt jelenti, hogy az és egész számok kongruensek egymással mindkét modulus szerint, azaz:

Ez a 20.1. Tétel 3. pontja alapján azt jelenti, hogy az különbség többszöröse -nek is és -nak is, azaz:

Az első oszthatóság azt jelenti, hogy létezik olyan egész szám, hogy

Következésképp a második oszthatóság így írható fel:

Mivel és egymáshoz relatív prímek, ezért az Euklidészi lemma alapján:

Azaz létezik olyan egész szám, hogy:

Ezt behelyettesítve a egyenletbe az alábbit kapjuk:

Azaz , ami a 20.1. Tétel 3. pontja alapján azt jelenti, hogy valóban teljesül az alábbi kongruencia:

Tehát valóban igaz, hogy bármely két, a tételben szereplő kongruenciarendszert kielégítő egész szám ugyanabba a modulo maradékosztályba esik.

Végül azt kell igazolni, hogy ennek a bizonyos modulo maradékosztálynak minden eleme kielégíti a kongruenciarendszert. Tegyük fel ezért, hogy egy olyan egész szám ebben a maradékosztályban, amelyre teljesül a kongruenciarendszer, azaz:

Tegyük fel ezenkívül indirekt, hogy létezik olyan egész szám ugyanebben a maradékosztályban, amelyre viszont nem teljesül legalább az egyik a tételben szereplő kongruenciák közül. Mivel ugyanabban a modulo maradékosztályban van, mint , ezért igaz az alábbi:

Minthogy a valamint a oszthatóságok a 16.2. Tétel 7. pontja alapján teljesülnek, ezért a 20.2. Tétel 7. pontja miatt teljesülnek az alábbi kongruenciák is:

Azaz egyrészt ugyanabba a modulo maradékosztályba esik, mint , vagyis a 20.8. Definíció utáni megjegyzés alapján ő kielégíti az kongruenciát. Másrészt ehhez hasonlóan ugyanabba a modulo maradékosztályba is esik, mint , ezért ő kielégíti az kongruenciát is. Így tehát mégiscsak kielégíti a tételben szereplő kongruenciarendszert, ami ellentmond az indirekt feltételezésünknek. Az maradékosztálynak tehát valóban minden eleme kielégíti a kongruenciarendszert, ahogyan a tétel állítja.

Az előző szakaszban szereplő példánál maradva keressük tehát az alábbi két kongruenciarendszer megoldásait:

Az első kongruenciarendszer megoldásit az a halmaz fogja alkotni, amely a és a maradékosztályok közös része, azaz metszete. Mivel az és a modulusok egymáshoz relatív prímek, ezért alkalmazhatjuk a kínai maradéktételt. Eszerint a keresett halmaz épp egy modulo maradékosztály lesz.

Ellenőrizzük is le, azaz írjuk fel egymás alá a és a maradékosztályokat, és keretezzük be a közös elemeiket:

Látható, hogy a felső sorban az elemek – modulo maradékosztályról lévén szó – -ösével követik egymást, és minden -adik elem lett bekeretezve. Ezzel szemben az alsó sorban az elemek – modulo maradékosztályról lévén szó – -asával követik egymást, és minden -ödik elem lett bekeretezve.

Ha tehát kigyűjtjük a bekeretezett elemeket egy halmazba, akkor azok épp -esével fogják egymást követni, tehát ők valóban egy modulo maradékosztályt alakotnak, méghozzá a következőt:

Ezek – és a kínai maradéktétel alapján csak ezek – az egész számok elégítik ki tehát az első kongruenciarendszert.

A második kongruenciarendszer esetén a és a maradékosztályok metszetét keressük. Ezt az előzőhöz hasonló módszerrel kaphatjuk meg:

Ha ismét kigyűjtjük a bekeretezett elemeket egy halmazba, akkor azok szintén -esével fogják egymást követni, tehát ők ugyancsak egy modulo maradékosztályt alakotnak, méghozzá a következőt:

Az alábbiakban összefoglaltuk a két kongruenciarendszer megoldását, amely tehát egy-egy modulo maradékosztály:

Kongruenciarendszerek megoldása

Most megmutatjuk, hogy ez a "bekeretezős" módszer mindig működik, és eljárást is adunk a keresett maradékosztály kiszámítására. Tulajdonképpen az a feladat, hogy adva van egy modulo maradékosztályból – jelöljük ezt -val – és egy modulo maradékosztályból – jelöljük ezt -vel – álló rendezett pár, ahol és egymáshoz relatív prímek. A feladat megtalálni azt az -szel jelölt halmazt, amely épp a megadott két maradékosztály metszetével egyezik meg:

A kínai maradéktétel tehát azt állítja, hogy amennyiben és egymáshoz relatív prímek, akkor az -szel jelölt halmaz éppenséggel egy modulo maradékosztály lesz. Hamarosan látni fogjuk, hogy ennél jóval több is igaz.

Ehhez először röviden átismételjük a rendezett pár fogalmát, amelyről korábban már volt szó. Elsőként a kétváltozós művelet fogalmának bevezetésekor találkoztunk vele a 11.5. szakaszban. A kétváltozós műveleteket a 11.3. Definícióban olyan függvényekként definiáltuk, amelyek egy valamilyen halmaz elemeiből alkotott párokhoz az halmaz elemeit rendelik hozzá. Például az egész számok halmazán értelmezett szokásos összeadás művelet, mint függvény a rendezett párhoz az egész számot rendeli hozzá.

Másodszor a 12.5. szakaszban definiált kétváltozós reláció kapcsán került elő ez a fogalom. Egy szintén valamilyen halmazon értelmezett kétváltozós relációt a 12.9. Definícióban az elemeiből alkotott rendezett párok halmazának egy részhalmazaként definiáltuk. Azt mondtuk, hogy egy reláció akkor áll fenn két -beli és elem között, ha az rendezett pár eleme az halmaznak. Például a halmazon értelmezett relációnak, mint halmaznak eleme a rendezett pár – hiszen –, de nem eleme a rendezett pár – hiszen .

Végül a 13. fejezetben magukat az egész számokat is a természetes számok halmazának elemeiből alkotott rendezett párok segítségével definiáltuk.

Az eddig felsorolt példákban egyrészt "párokról", azaz kétkomponensű objektumokról volt szó, másrészt pedig a "pár" két komponense ugyanabból a halmazból került ki. A 12.8. Definícióban ennél általánosabban fogalmazva határoztuk meg, hogy pontosan mit értünk kettő vagy több halmaz direkt szorzata, valamint rendezett pár vagy rendezett -es alatt.

Egy kézenfekvő példa darab halmaz direkt szorzatára az dimenziós tér pontjainak halmaza. Az egyszerűség kedvéért szorítkozzunk most a sík pontjaira, amikoris . Ezeket általában egy derékszögű koordinátarendszerben szoktuk ábrázolni. Ilyenkor felrajzolunk két egymásra merőleges számegyenest, amelyek a -nál metszik egymást. Ezek után egy síkbeli pontot egy számpárral írhatunk le, amelynek komponenseit a pont koordinátáinak nevezzük.

Az első koordináta azt adja meg, hogy a két számegyenes metszéspontjából kiindulva mennyit kell haladni az első – általában vízszintes – számegyenes mentén, míg a második koordináta azt adja meg, hogy innen mennyit kell továbbhaladni a másik – általában függőleges számegyenes irányával párhuzamosan. Ezt mutatja a 22.1. ábra.

Derékszögű koordinátarendszer
22.1. ábra: Derékszögű koordinátarendszer

A számegyenes pontjainak halmazát -rel szoktuk jelölni, a sík pontjainak halmaza pedig ennek megfelelően az , vagy másként az direkt szorzat lesz. Ehhez hasonlóan a , , ..., dimenziós tér pontjainak halmazát , , ..., jelöli, amelynek elemei , , ..., komponensből fognak állni.

Egy másik kézenfekvő példa direkt szorzatra az 52 lapos franciakártya. Egy ilyen pakliban minden kártyalapnak van valamilyen "színe" (angolul "suit") és "értéke" (angolul "rank"). Jelöljük a lehetséges színek halmazát -sel, a lehetséges értékek halmazát pedig -rel:

Mivel a kártyapakliban lévő lapok minden lehetséges színt és értéket felvehetnek, ezért e lapok halmaza tulajdonképpen az direkt szorzat lesz. Ekkor egy kártyalapot egy olyan rendezett pár reprezentál, amelynek első komponense az , a második komponense pedig az halmaz eleme. Például a "treff hetest" reprezentáló rendezett pár a lesz.

Most vonatkoztassuk a direkt szorzat fogalmát a kínai maradéktétel állítására. A szakasz elején szereplő -ból és -ből álló rendezett pár első komponense tehát a modulo maradékosztálygyűrű, míg a második komponense a modulo maradékosztálygyűrű eleme. Maga az rendezett pár tehát eleme e két maradékosztálygyűrű direkt szorzatának. Azaz a 20.5. Tételben szereplő és a most bevezetett jelölésekkel:

Ezek után az alábbi tételben megadjuk a kínai maradéktétel egy alternatív megfogalmazását, valamint egy eljárást is mutatunk a tételben szereplő halmaz előllítására:

22.3. Tétel (A kínai maradéktétel alternatív megfogalmazása):

Legyenek és valamilyen pozitív egész számok, továbbá tegyük fel, hogy és egymáshoz relatív prímek. Ekkor minden rendezett pár esetén .

Tegyük fel, hogy az és egész számok kielégítik az alábbi kongruenciákat:

Amennyiben az és maradékosztályokat rendre valamilyen és egész számokkal reprezentáljuk – azaz és –, akkor az alábbi képlet az maradékosztály egy reprezentánselemét szolgáltatja:

Bizonyítás:

Az és maradékosztályok metszete pontosan azokat az egész számokat fogja tartalmazni, amelyek mindkét maradékosztályban benne vannak. Ezek ugye az alábbi kongruenciarendszert kielégítő egész számok lesznek:

A kínai maradéktétel alapján ezek az egész számok pontosan egy modulo maradékosztályt alkotnak, azaz valóban .

Most igazoljuk, hogy a tételben megadott képlet valóban az maradékosztály egy reprezentánselemét adja. Ehhez azt kell megmutatni, hogy az egész szám benne van ebben a halmazban. A halmazok közötti metszetképzésről szóló 19.3. Definíció alapján ez pontosan akkor teljesül, ha teljesül az alábbi mindkét feltétel:

Nézzük először az első feltételt: Mivel az halmaz egy modulo maradékosztály, amelynek az egész szám egy reprezentánseleme, ezért ez a feltétel pontosan akkor teljesül, ha fennáll az alábbi kongruencia:

A kongruencia baloldalán szereplő összeg második, tagja ugye -nek többszöröse, így ő -val kongruens modulo . Az összeg első, tagjában viszont a tényező a tétel szövege alapján -gyel, és így ez a tag -val kongruens modulo . Összefoglalva tehát valóban teljesül a fenti kongruencia, mivel:

Most nézzük a második feltételt: Mivel a halmaz egy modulo maradékosztály, amelynek a egész szám egy reprezentánseleme, ezért ez a feltétel pontosan akkor teljesül, ha fennáll az alábbi kongruencia:

A kongruencia baloldalán szereplő összeg első, tagja ugye -nak többszöröse, így ő -val kongruens modulo . Az összeg második, tagjában viszont a tényező a tétel szövege alapján -gyel, és így ez a tag -vel kongruens modulo . Összefoglalva tehát valóban teljesül a fenti kongruencia, mivel:

A összeg tehát benne van az metszethalmazban, amely – mint láttuk – egy modulo maradékosztály, és így valóban annak egy reprezentánselemét adja.

Megjegyzés:

A tételben szereplő és kongruenciáknak a 20.13. Tétel alapján létezik megoldása, hiszen és a tétel szövege alapján relatív prímek. Ugyanezen okból a 20.14. Tétel 1. pontja miatt a megoldás mindkét kongruencia esetén egy-egy maradékosztály lesz. Ezek megtalálásához a 20.13. Tétel alapján az alábbi lineáris diofantoszi egyenleteket kell megoldani:

Ezeket a 21.2. Tétel 1. pontja alapján a 21.1. Tétel bizonyításában ismertetett kibővített euklidészi algoritmus segítségével tehetjük meg. Azaz valóban egy eljárást kaptunk az maradékosztály egy reprezentánselemének meghatározásához.

Most térjünk vissza az előző szakaszban szereplő példára, amelynek során a "bekeretezős" módszerrel az alábbi két kongruenciarendszer megoldását kerestük meg:

Az első rendszernek tehát a , a másodiknak pedig a maradékosztály volt a megoldása. Ez a módszer azonban a gyakorlatban nem használható, így most próbáljuk meg megtalálni a megoldásokat a 22.3. Tételben ismertetett eljárás segítségével.

Az első kongruenciarendszer esetén keressük tehát az és a maradékosztályok metszetét. Ehhez a tétel szerint kell keresnünk olyan és egész számokat, amelyek kielégítik az alábbi kongruenciákat:

Ezeket a 21.1. Tétel bizonyításában ismertetett kibővített euklidészi algoritmussal megoldva például az alábbi számokat választhatjuk -nek és -nek:

Ezután a tételben szereplő képletet alkalmazva az maradékosztály alábbi reprezentánselemét kapjuk:

Valóban, az eredményül kapott egész szám benne van a maradékosztályban, amelyet a "bekeretezős" módszerrel kaptunk az első kongruenciarendszerre az előző szakaszban.

Most nézzük meg a második kongruenciarendszert. Ebben az esetben az és a maradékosztályok metszetét keressük. Az előző példánál már megkaptuk az és a kongruenciák megoldásait, így azokat most is használhatjuk. A tételben szereplő képletet alkalmazva most az alábbi reprezentánselemét kapjuk meg az halmaznak:

Valóban, az eredményül kapott egész szám benne van a maradékosztályban, amelyet a "bekeretezős" módszerrel kaptunk a második kongruenciarendszerre az előző szakaszban.

A most tanult eljárás tehát tulajdonképpen egy függvényt valósít meg, amely a halmazt képezi le a halmazra. Méghozzá minden maradékosztálypárt e párban szereplő maradékosztályok metszetére.

Kérdés, hogy vajon ez a leképezés bijektív-e, azaz vajon minden modulo maradékosztály pontosan egy -beli maradékosztálypárnak a metszete-e? A 22.2. ábra mutatja, hogy mi lenne a helyzet nemleges és igenlő válasz esetén.

Példa nem bijektív és bijektív leképezésre
22.2. ábra: Példa nem bijektív és bijektív leképezésre

Most igazoljuk, hogy az utóbbi a helyzet. Hamarosan kiderül, hogy ez miért olyan fontos.

22.4. Tétel (A kínai maradéktétel megfordítása):

Legyenek és valamilyen pozitív egész számok, továbbá tegyük fel, hogy és egymáshoz relatív prímek. Ekkor minden maradékosztályhoz pontosan egy olyan maradékosztálypár létezik, amely pár komponenseinek a metszete, azaz amelyre teljesül az alábbi:

Amennyiben az maradékosztályt egy valamilyen egész számmal reprezentáljuk – azaz –, akkor egyúttal a keresett és maradékosztályok reprezentánseleme is:

Bizonyítás:

A tétel bizonyításához az alábbi két állítást kell igazolni:

  1. Az maradékosztály valóban az maradékosztálypár metszete, azaz .
  2. Nincs másik olyan maradékosztálypár a halmazban, amelynek a metszete lenne.

Az 1. állítás: a 19.2. Definíció utáni megjegyzés 5. pontja alapján és akkor és csak akkor egyezik meg, ha egymásnak részhalmazai, azaz teljesülnek az alábbiak:

Az tartalmazási reláció a 19.2. Definíció alapján azt jelenti, hogy az maradékosztály minden eleme egyúttal az -nek is és -nak is eleme. Legyen például egy tetszőleges elem az maradékosztályban. Ezt úgy is megfogalmazhatjuk, hogy ugyanúgy az maradékosztályt reprezentálja, mint . Azaz , ami ugye az alábbi kongruenciát jelenti:

Mivel azonban a és oszthatóságok nyilvánvalóan teljesülnek, ezért a 20.2. Tétel 7. pontja miatt teljesülnek az alábbi kongruenciák is:

Tehát benne van az és maradékosztályokban, azaz valóban teljesül az tartalmazási reláció.

Most az tartalmazási relációt igazoljuk. Ez a 19.2. Definíció alapján azt jelenti, hogy az és maradékosztályok közös elemei egyúttal az maradékosztálynak is elemei. Legyen például egy tetszőleges elem az és maradékosztályok metszetében. Ezt úgy is megfogalmazhatjuk, hogy ugyanúgy benne van mind az , mind pedig a maradékosztályokban, mint .

Az maradékosztályba pontosan azok az egész számok tartoznak bele, amelyeket az alábbi kongruenciába az ismeretlen helyére behelyettesítve a kongruencia teljesül:

Ehhez hasonlóan a maradékosztályba pontosan azok az egész számok tartoznak bele, amelyeket az alábbi kongruenciába az ismeretlen helyére behelyettesítve a kongruencia teljesül:

A fentebb említett tehát -sel karöltve kielégíti az iménti két kongruenciából álló rendszert. Ám a kínai maradéktétel állítása szerint minden ilyen tulajdonságú egész szám ugyanabba az egyetlen modulo maradékosztályba esik. Az nyilvánvaló, hogy , hiszen a tétel szövege alapján ő épp az maradékosztály reprezentánseleme. Következésképp is szükségképpen -ben van, azaz valóban teljesül az tartalmazási reláció.

Mivel mindkét irányú tartalmazási reláció teljesül és között, ezért a két halmaz valóban megegyezik.

A 2. állítás: Tegyük fel indirekt, hogy létezik egy -től különböző maradékosztálypár a halmazban, amelynek a metszete, azaz:

Tegyük fel továbbá, hogy a maradékosztályt a egész számmal, míg a maradékosztályt a egész számmal reprezentáljuk, azaz:

Legyen egy tetszőleges elem az maradékosztályban. Egyrészt a fentebb egyszer már leírt gondolatmenetet megismételve ez az alábbi kongruenciákat jelenti:

Másrészt viszont az indirekt feltételezésünk miatt a és maradékosztályok metszete. Emiatt ugyanúgy benne van a maradékosztályban, mint , valamint ugyanúgy benne van a maradékosztályban, mint . Teljesülnek tehát az alábbi kongruenciák:

A 20.2. Tétel 3. pontja miatt teljesülnek tehát az alábbi kongruenciák is:

Azaz egyrészt az által reprezentált modulo maradékosztály – ez ugye az halmaz – megegyezik a által reprezentált modulo maradékosztállyal – ez pedig ugye a halmaz. Másrészt az által reprezentált modulo maradékosztály – ez ugye a halmaz – megegyezik a által reprezentált modulo maradékosztállyal – ez pedig ugye a halmaz.

Minthogy és , ezért indirekt feltételezésünkkel ellentétben az maradékosztálypár mégiscsak megegyezik a maradékosztálypárral. Azaz a 2. állításnak megfelelően az páron kívül nincs másik olyan maradékosztálypár a halmazban, amelynek a metszete lenne.

Ez azt bizonyítja, hogy a és a halmazok közötti függvény egy kölcsönösen egyértelmű leképezés. Ha úgy tetszik egy kétirányú híd képezhető a két halmaz között. Ez azt jelenti, hogy az egyik halmazban lévő bármely elemnek egyértelműen megvan a párja a másik halmazban és viszont. A halmazból a halmazba a 22.3. Tétel, visszafelé pedig a 22.4. Tétel biztosítja ezt a fajta átjárást.

A fentebbi példánkhoz visszatérve tehát egyrészt a halmazban lévő maradékosztálypárnak a maradékosztály, míg a maradékosztálypárnak a maradékosztály a megfelelője a halmazban. Másrészt pedig biztosak lehetünk benne, hogy a és a maradékosztályok csakis ezekhez a párokhoz vannak ilymódon hozzárendelve.

Az RSA algoritmus helyes működésének bizonyítása

Az előző fejezetben megismertük napjaink egyik legfontosabb felfedezését, az RSA nevű aszimmetrikus kulcsú rejtjelezési eljárást. Ebben a szakaszban törlesztjük végre az adósságunkat, és igazolni fogjuk, hogy az RSA valóban mindig helyesen működik. Ezért most ismételjük át röviden, hogyan is történik a kulcsok generálása, majd az üzenetek titkosítása és dekódolása.

Az RSA biztonsága a nagy számok prímtényezős felbontásának algoritmikus nehézségén alapul. Egy kulcspár generálásához ezért először is választani kell két egymástól különböző, óriási prímszámot – jelöljük ezeket -vel és -val –, majd képezni kell ezek szorzatából az modulust, és ki kell számítani az Euler-féle -függvény értékét erre a modulusra. Ezután választunk egy tetszőleges -hez relatív prím számot a 18.3. Definíció szerinti gyűrűből, amely a kulcspár publikus része lesz, és kiszámítjuk multiplikatív inverzét ebben a gyűrűben. Az így kapott szám lesz a kulcspár titkos része. A publikus és titkos kulcsok közötti számelméleti kapcsolatot tehát a gyűrű jelenti, amely gyűrű ismeretlen marad a támadó számára. Ennek oka, hogy értéke jelenlegi számelméleti ismereteink szerint csak prímtényezőinek ismeretében számítható ki hatékonyan.

Ezután részletesen leírtuk, és egy példával szemléltettük, hogyan történik egy üzenet titkosítása az adó, és dekódolása a vételi oldalon. Ehhez az elküldeni kívánt üzenetet valamilyen szabványos módon a gyűrű elemeinek sorozatává kell alakítani, majd a sorozat tagjaira külön-külön kell alkalmazni a kódoló és dekódoló függvényeket. Legyen az üzenetet leíró számsorozat következő tagja . Ennek titkosítása az alábbi -beli moduláris hatványozás elvégzését jelenti:

Az így képzett szám nyugodtan átküldhető a kommunikációs csatornán. Ebből ugyanis csak a titkos kulcs ismeretében állítható vissza "varázslatos módon" az eredeti üzenet. Ehhez az alábbi, szintén -beli moduláris hatványozást kell elvégezni:

Most igazolni fogjuk, hogy ez a "varázslat" tényleg mindig teljesül. Az helyére behelyettesíthetjük az őt képző, kódolófüggvény szerinti kifejezést. Ekkor az alábbit kapjuk:

A 20.4. szakaszban láthattuk, hogy a gyűrű izomorf a maradékosztálygyűrűvel. Így tehát a fenti kifejezést tulajdonképpen úgy is értelmezhetjük, hogy az egész számnak ugyanabba a modulo maradékosztályba kell esnie, mint az egész számnak. Ez az alábbi kongruencia teljesülését jelenti:

Most igazolni fogjuk, hogy ez a kongruencia valóban teljesül tetszőleges, a megadott kritériumoknak megfelelő , , és egész számokra.

22.5. Tétel (Az RSA algoritmus helyes működése):

Tegyük fel, hogy teljesülnek az alábbi feltételek:

  1. Választunk két tetszőleges, egymástól különböző pozitív és prímszámot.
  2. Képezzük ezekből az modulust.
  3. Képezzük az Euler-féle -függvény értékét az modulusra, azaz a 21.3. és a 21.5. Tételek alapján kiszámítjuk a egész számot.
  4. Választunk egy tetszőleges egész számot, amely relatív prím -hez.
  5. Keresünk egy olyan egész számot, amelyre teljesül az kongruencia.

Ekkor tetszőleges egész szám esetén teljesül az alábbi kongruencia is:

Bizonyítás:

Mivel teljesül az kongruencia, ezért a 20.1. Tétel 3. pontja alapján teljesül az alábbi oszthatóság:

Az oszthatóság 16.1. Definíciója alapján ekkor létezik olyan egész szám, amelyre teljesül az alábbi egyenlet:

Mindkét oldalhoz -et adva:

Azt kell tehát bizonyítani, hogy tetszőleges esetén teljesül az alábbi kongruencia:

Itt két eset lehetséges. Az első – és legvalószínűbb – esetben relatív prím -hez. Ekkor közvetlenül alkalmazható az Euler-Fermat tétel. Ehhez alakítsuk át a kongruencia baloldalán álló kifejezést a 18.8. Tétel 2. és 3. pontjainak megfelelően:

Az Euler-Fermat tétel miatt az kifejezés -gyel kongruens modulo . Így a 20.2. Tétel 6. és 5. pontjai alapján a fenti kongruencia egyszerűsíthető:

Ez a kongruencia viszont nyilvánvalóan teljesül a 20.2. Tétel 1. pontja alapján.

Most nézzük meg, hogy mi a helyzet abban a nem túl gyakori esetben, ha nem relatív prím az modulushoz, azaz -nek és -nek van egységtől különböző közös osztója. Ekkor a és a oszthatóságok közül legalább az egyik teljesül. Ha ugyanis egyik sem teljesülne, akkor a 21.4. Lemma alapján relatív prím lenne -hez is és -hoz is, és a 20.12. Következmény miatt az modulushoz is, ami ellentmondás. A és oszthatóságok tekintetében tehát az alábbi három eset lehetséges:

1. eset: és

Ez a 20.1. Tétel 3. pontja alapján azt jelenti, hogy teljesülnek az alábbi kongruenciák:

Ekkor a 20.2. Tétel 6. pontja alapján e kongruenciák mindkét oldalát a -edik hatványra emelve teljesülnek az alábbi kongruenciák is:

A két-két kongruenciát összevetve a 20.2. Tétel 2. és 3. pontja alapján az alábbi kongruenciákat kapjuk:

2. eset: és

Nyilván teljesül az alábbi kongruencia, mivel többszöröse -nek, és így mindkét oldal -val kongruens modulo :

Továbbá mivel , ezért teljesül az alábbi – itt a második lépésben felhasználtuk a hatványozás azonosságairól szóló a 18.8. Tételt:

Mivel , ezért a 21.4. Lemma alapján relatív prím -hoz, és így alkalmazható a kis Fermat-tétel, amely szerint tehát teljesül az alábbi kongruencia:

A 20.2. Tétel 6. pontja alapján mindkét oldalt a -edik hatványra emelve, valamint a 20.2. Tétel 5. pontja alapján mindkét oldalt -szel megszorozva továbbra is érvényes kongruenciát kapunk:

De mivel , ezért teljesül az alábbi kongruencia:

3. eset: és

Ebben az esetben az egész szám helyett -hez lesz relatív prím, tehát az előző gondolatmenetet szinte szóról szóra meg lehet ismételni, csak és szerepét fel kell cserélni. Ekkor is azt fogjuk kapni, hogy teljesülnek az alábbi kongruenciák:

Mivel ugye , ezért mindhárom esetben végülis azt kaptuk, hogy teljesül az alábbi két kongruencia:

Ez a és a maradékosztálygyűrűkben az alábbiakat jelenti:

Ennek megfelelően ezt így írhatjuk fel a direkt szorzat egy elemeként:

A 22.3. és a 22.4. Tétel alapján azonban tudjuk, hogy a direkt szorzat elemei kölcsönösen egyértelműen megfeleltethetők a maradékosztálygyűrű elemeivel. Ez a leképezés az iménti egyenlet bal és jobboldalához a 22.4. Tételben szereplő képlet alapján az alábbi modulo maradékosztályokat rendeli hozzá:

Mármost ha itt a nyilak baloldalán álló objektumok megegyeznek, akkor a leképezés kölcsönösen egyértelműsége miatt a nyilak jobboldalán álló objektumok is meg kell egyezzenek, azaz:

Ugyanezt kongruenciával megfogalmazva megkapjuk a tétel állítását:

Maradékosztálygyűrűk dekompozíciója

Az RSA algoritmussal főként az a probléma, hogy szimmetrikus kulcsú társaihoz képest relatíve lassú. Ezt elsősorban a moduláris hatványozás okozza. Ez némileg ellentmond annak, amit a 21.4. szakaszban állapítottunk meg erről a műveletről. Akkor ugyanis azt mondtuk, hogy az ismételt négyzetreemelések módszerével rendkívül gyorsan elvégezhető a moduláris hatványozás. Ez algoritmuselméleti értelemben valóban így van, hiszen láttuk, hogy az elvégzendő moduláris szorzások száma legfeljebb a kitevő bináris számjegyei számának a kétszerese lehet. Márpedig egy ilyen jellegű skálázódás a 7. fejezetben leírtak fényében bőven hatékony algoritmusnak tekinthető.

Igenám, csakhogy hiába a megfelelő skálázódás, amennyiben eleve nagyméretű bemenetekről van szó. A gyakorlatban ugyanis több ezer bites számokon kell több ezer moduláris szorzást elvégezni. Az ismételt négyzetreemelések módszerét vizsgálva megállapítottuk, hogy a szükséges moduláris szorzások száma attól függ, hogy a kitevő bináris számábrázolásában hány -es bit szerepel. Az RSA esetén a publikus kulcsban szereplő, kódoláshoz használt kitevő megválasztásától nem függ az eljárás biztonsága. Emiatt általában olyan publikus kitevőt választanak a kulcsgeneráláskor, amelyben minimális számú -es számjegy van. Célszerű például valamilyen -hatványnál -gyel nagyobb számot választani, hiszen ebben az esetben csak az első és az utolsó számjegy nem . Következésképp a kódoláskor elvégzendő moduláris hatványozás mindössze egy-két moduláris szorzásból megúszható.

A probléma érezhetően a dekódoláskor, vagy digitális aláírások képzésekor jön elő, amikor is a titkos kitevőt kell használni. Ez ugyanis az publikus kitevő multiplikatív inverze a 18.3. Definíció szerinti gyűrűben. Itt ugye a kulcsgeneráláskor véletlenszerűen választott és prímszámok szorzata. Mivel emiatt a is gyakorlatilag véletlenszerű lesz, ezért nemigazán lehet szabályozni, hogy a gyűrűben az multiplikatív inverzének éppenséggel milyen számjegyei lesznek. Emiatt pedig a fogadó oldal által elvégzendő RSA dekódolás általában sokkal lassabb művelet, mint a küldő által elvégzett kódolás.

Ezért most a kínai maradéktétel egy nagyon praktikus alkalmazását mutatjuk be, amelynek a segítségével Alice és Bob a nekik küldött üzenetek dekódolását a 21.9. szakaszban leírtakhoz képest sokkal gyorsabban is el tudja végezni. Ehhez a kulcspár generálásakor választott titkos és prímszámokat is fel kell használni, így ezt a módszert csak a titkos kulcs birtokában lehet alkalmazni. Az eljárásban kulcsszerepe lesz a már sokat emlegetett halmaznak.

Most e halmaz elemei között fogunk két műveletet értelmezni. Az egyiket "összeadásnak", a másikat pedig "szorzásnak" fogjuk nevezni, és rendre a és a szimbólumokkal fogjuk őket jelölni. A halmaz elemei ugye olyan maradékosztálypárok, amelyeknek első komponense egy modulo maradékosztály, második komponense pedig egy modulo maradékosztály. Adja magát a kérdés, hogy vajon mi legyen két ilyen maradékosztálypár "összege" és "szorzata":

Az ötletet a 22.4. szakaszban már említett síkbeli pontok derékszögű koordinátáit leíró számpárok adhatják. Amennyiben a koordinátarendszer kezdőpontjából egy számpárral megadott pontba képzeletben egy "nyilacskát" rajzolunk, akkor mondhatjuk azt is, hogy az számpár tulajdonképpen ezt a "nyilacskát", vagy tudományosabb nevén vektort reprezentálja. E vektorok között az alábbi kézenfekvő módon értelmezhető az "összeadás" művelete: két vektor "összege" legyen az a vektor, amelynek koordinátáit úgy kapjuk, hogy az eredeti két vektor megfelelő koordinátáit egymással összeadjuk a szokásos értelemben. Azaz:

Itt a vektorok közötti "összeadást" a , míg az egyes koordináták közötti szokásos összeadást a szimbólummal jelöltük. Ezzel azt próbáljuk kihangsúlyozni, hogy ez a két művelet nagyon nem ugyanaz. Nyilván, hiszen teljesen más halmazokon vannak értelmezve: a művelet az , míg a művelet az halmazon. A 22.3. ábrán az imént definiált vektorok közötti "összeadás" intuitív értelmezése látható.

Vektorok összeadása
22.3. ábra: Vektorok összeadása

Eszerint tehát a két vektor "összege" épp abba a pontba mutat, amelybe úgy juthatunk el, hogy az egyik vektor végpontjába toljuk a másik vektor kezdőpontját, majd a koordinátarendszer kezdőpontjából végigmegyünk az így kijelölt útvonalon.

Visszatérve a halmazhoz adja magát az ötlet, hogy ezen a halmazon is hasonlóképpen, azaz "koordinátánkénti" műveletvégzésként definiáljuk a két kérdéses műveletet. Nevezetesen:

A vektorok között definiált "összeadáshoz" képest itt mindössze annyi a különbség, hogy az egyes "koordináták" nem feltétlenül azonos gyűrűkből származnak. Például jelen esetben az eredmény első "koordinátáját" adó összeadást a modulo maradékosztálygyűrűben, míg a második "koordinátát" adó összeadást a modulo maradékosztálygyűrűben kell elvégezni. A "szorzásra" természetesen ugyanez vonatkozik.

Ezután minden bizonnyal nem lesz túl meglepő, hogy a halmaz az imént értelmezett és műveletekkel egy gyűrűt alkot. Az alábbi tételben ezt ennél általánosabban igazoljuk.

22.6. Tétel (Gyűrűk direkt szorzata):

Legyenek , , ..., tetszőleges gyűrűk, és értelmezzünk két műveletet az halmaz tetszőleges és elemei között az alábbi módon:

A illetve a műveleteket tehát úgy kell elvégezni, hogy az azonos pozícióban lévő komponensek összegeit illetve szorzatait képezzük a megfelelő gyűrűkben.

Ekkor az halmaz szintén egy gyűrűt alkot ezzel a két művelettel. Ezt a gyűrűt az , , ..., gyűrűk direkt szorzatának, vagy szorzatgyűrűjének nevezzük. E szorzatgyűrű nulleleme egy olyan rendezett -es, amelynek minden komponensében a megfelelő gyűrű nulleleme áll. Azaz:

A szorzatgyűrű egy tetszőleges elemének -nel jelölt ellentettjét úgy kapjuk meg, hogy vesszük minden komponens ellentettjét a megfelelő gyűrűben. Azaz:

Bizonyítás:

A 14.12. Definícióban felsorolt gyűrűaxiómákat kell ellenőrizni. A művelet kommutativitása könnyedén adódik az , , ..., gyűrűkön értelmezett összeadások ugyanezen tulajdonságából:

Hasonlóképpen adódik a művelet asszociativitása:

És a művelet asszociativitása is:

Továbbá a két művelet közötti mindkét oldali disztributivitás is könnyen látszik. Nézzük először a baloldali disztributivitást, a jobboldali disztributivitás ugyanígy igazolható:

Végül igazoljuk a nullelemre és az ellentettképzésre vonatkozó állításokat. Legyen az halmaz egy tetszőleges eleme. Ezt a elemmel összeadva az eredmény valóban nem változik, hiszen minden komponensben a megfelelő gyűrű nullelemével való összeadás fog szerepelni:

Ehhez hasonlóan az elemet a elemmel összeadva az eredmény valóban a elem lesz, hiszen minden komponensben az adott komponens és annak a megfelelő gyűrűben vett ellentettjének összege fog szerepelni:

E tételből következően a halmaz a komponensenkénti moduláris összeadásra és moduláris szorzásra nézve valóban egy gyűrűt alkot. Például a 22.4. szakaszban szereplő és maradékosztálypárok ilyen értelemben vett "összegét" és "szorzatát" az alábbiak szerint kapjuk meg:

A szakasz elején említett RSA dekódolást gyorsító eljárás működésének a kulcsa az a tény, hogy szoros kapcsolat áll fenn a és a gyűrűk között. Olyannyira szoros, hogy az alábbi tétel szerint lényegében ugyanannak a gyűrűnek csupán két megjelenési formájáról van szó.

22.7. Tétel (Maradékosztálygyűrűk dekompozíciója):

Legyenek és valamilyen egymáshoz relatív prím pozitív egész számok. Ekkor a 22.6. Tétel szerint értelmezett szorzatgyűrű izomorf a maradékosztálygyűrűvel, azaz:

Legyenek , és tetszőleges egész számok, továbbá tegyük fel, hogy az és egész számok kielégítik az alábbi kongruenciákat:

Ekkor az alábbi és leképezések épp egymás megfordításai, továbbá mindketten gyűrűizomorfizmusok a két gyűrű között:

Bizonyítás:

Az függvényről a 22.3. Tételben igazoltuk, hogy minden -beli rendezett párhoz pontosan egy -beli maradékosztályt rendel hozzá. Méghozzá azt a maradékosztályt, amely a rendezett pár két komponensének a metszete. A 22.4. Tételben pedig azt mutattuk meg, hogy ilymódon minden -beli maradékosztály pontosan egy -beli rendezett párhoz lehet hozzárendelve, amelyet ráadásul épp a függvény segítségével kaphatunk meg.

Ez egyrészt azt jelenti, hogy a halmaz elemei kölcsönösen egyértelmű megfeleltetésben állnak a halmaz elemeivel. Másrészt pedig azt jelenti, hogy e kölcsönösen egyértelmű megfeleltetést az függvény segítségével az egyik, míg a függvény segítségével a másik irányban kaphatjuk meg. Más szavakkal az és függvények valóban épp egymás megfordításai. Ezt a szituációt mutatja a 22.4. ábra.

Az f és g függvények egymáshoz való viszonya
22.4. ábra: Az és függvények egymáshoz való viszonya

Így már csak azt kell igazolni, hogy az és függvények rendelkeznek-e a 18.6. Definíció szerinti művelettartó tulajdonsággal. Annak érdekében, hogy világos legyen, melyik műveletet melyik gyűrűben kell elvégezni, a maradékosztálygyűrű összeadását és szorzását a és , míg a gyűrű összeadását és szorzását a és szimbólumokkal fogjuk jelölni.

Ezeket a jelöléseket bevezetve tehát azt kell igazolni, hogy tetszőleges , , és egész számokra teljesülnek az alábbiak:

Kezdjük a függvénnyel. Az erre vonatkozó két állítás baloldalait a 20.5. Tétel és a függvény képletének felhasználásával az alábbi módon lehet kifejteni – itt a és szimbólumok a szokásos egészek közötti összeadást és szorzást jelölik:

Míg a jobboldalakból ezt kapjuk:

A 22.6. Tétel alapján a kapott rendezett párokat komponensenként kell összeadni illetve összeszorozni. Az első komponenshez szükséges műveleteket a modulo maradékosztálygyűrűben, míg a második komponenshez szükséges műveleteket a modulo maradékosztálygyűrűben kell elvégezni. Ismételten a 20.5. Tétel felhasználásával így az alábbit kapjuk:

A -re vonatkozó két állítás bal- és jobboldalai tehát megegyeznek, azaz a függvény tartja mindkét műveletet, így ő egy gyűrűizomorfizmus és között.

Mivel az függvény a függvény megfordítása, ezért a 18.6. Definíció utáni megjegyzés 2. pontja alapján ő is egy gyűrűizomorfizmus a két gyűrű között, csak épp a másik irányba képez.

Tekintsük ismét példaként a már sokat emlegetett és maradékosztálypárokat a gyűrűben. Ezek összege és szorzata ebben a gyűrűben az alábbiak voltak:

A 22.4. szakaszban már láttuk, hogy az imént tanult gyűrűizomorfizmusok – és persze az ezek hátterében lévő kínai maradéktétel – alapján az ő párjaik a gyűrűben rendre a és a maradékosztályok. Most nézzük meg ezek összegét és szorzatát a gyűrűben:

Valóban, a 22.7. Tételben szereplő gyűrűizomorfizmus a maradékosztályhoz a , míg a maradékosztályhoz a maradékosztálypárt rendeli hozzá. Azaz tényleg egy művelettartó leképezésről van szó a és a gyűrűk között.

Tulajdonképpen az történt, hogy a gyűrűt felbontottuk két kisebb gyűrű direkt szorzatára. A két algebrai struktúra izomorfiája miatt bármelyikben elvégezhetjük a szükséges számításokat, és az egyikben kapott eredményt könnyedén áttranszformálhatjuk a másik struktúrába a gyűrűizomorfizmusok segítségével. Most megvizsgáljuk, hogy mégis miért jó ez Alice és Bob számára.

Az RSA dekódolás gyorsítása

Térjünk most vissza a 21. fejezetben bemutatott példára, amikoris Alice az RSA algoritmussal rejtjelezett sziabobmiahelyzet# üzenetet küldte el Bob-nak. Bob a kulcsgenerálás során a és prímszámokat választotta, és ezek segítségével előállította az modulust, az publikus, valamint a titkos kitevőt.

Alice a példában leírt módon a 18.3. Definíció szerinti gyűrű elemeinek sorozatává alakította az elküldendő üzenetet, melyek közül az első az volt. Ebből a rejtjelezett számsorozat első tagja a gyűrűben végrehajtott alábbi moduláris hatványozás eredményeként állt elő:

Bob ebből a kitevő segítségével az alábbi, szintén a gyűrű végrehajtott moduláris hatványozással kaphatja vissza az eredeti számot:

A 20.4. szakaszban az egész számok maradékosztályai kapcsán szó volt róla, hogy a gyűrűk homomorfizmustétele miatt tetszőleges pozitív egész szám esetén a gyűrű izomorf a maradékosztálygyűrűvel. Következésképp a maradékosztálygyűrűk dekompozíciójáról szóló 22.7. Tétel miatt a szorzatgyűrű is izomorf a gyűrűvel.

Emiatt Bob a és prímszámok ismeretében megteheti, hogy a dekódoláskor elvégzendő moduláris hatványozást a gyűrű helyett a szorzatgyűrűben végzi el, majd az eredményt visszatranszformálja a gyűrűbe. Kérdezhetnénk, hogy ez miért jó neki, amikor így egy helyett gyakorlatilag két moduláris hatványozást kell elvégeznie? Igenám, csakhogy ezeknél már nem , hanem a nagyságrendileg feleannyi számjegyből álló és lesz a modulus. A moduláris hatványozás sebessége pedig a kitevő méretén kívül erőteljesen függ a modulus méretétől is. Ráadásul a modulus méretét megfelezve a moduláris hatványozás futásideje kevesebb mint a felére csökken. Így két feleakkora modulussal elvégzett hatványozás összességében hatékonyabb, mintha csak egyet végeznénk el ugyan, de az eredeti modulussal.

A fenti példában ez azt jelenti, hogy megérkezik Bob-hoz az rejtjelezett szám, amely ugye a gyűrű egy eleme. Ezt Bob a 22.7. Tételben megadott gyűrűizomorfizmus segítségével áttranszformálja a szorzatgyűrűbe, azaz veszi a két prímmel való osztási maradékát:

Ezután elvégzi a dekódolást ebben a szorzatgyűrűben, azaz kiszámítja az alábbi két moduláris hatványt:

Itt tehát az első moduláris hatványozást a , míg a másodikat a gyűrűben kell végrehajtani. Ez hatékonyabban végrehajtható, mintha csak a moduláris hatványozást hajtanánk végre ugyan, viszont a jóval nagyobb modulusú gyűrűben. A 21.4. szakaszban megismert ismételt négyzetreemelések módszerével Bob az alábbi eredményt kapja:

A kapott rendezett pár tehát a . Ahhoz, hogy Bob ebből megkapja az Alice által küldött eredeti üzenetet, vissza kell transzformálja ezt a -beli elemet a gyűrűbe. Ezt a 22.7. Tételben megadott gyűrűizomorfizmussal teheti meg:

A kapott eredmény helyességét könnyen leellenőrizhetjük. Ha ugyanis alkalmazzuk rá az említett tételben szereplő függvényt, akkor vissza kell kapnunk a rendezett párt, hiszen a függvény épp az függvény megfordítása. Valóban: a egész számnak a -gyel való osztási maradéka , míg a -cel való osztási maradéka . Vagyis a valóban az üzenet párja a két gyűrű közötti gyűrűizomorfizmus szerint.

Végezetül a kis Fermat-tétel egy egyszerű következményét ismertetjük, aminek a segítségével Alice és Bob nemcsak a dekódolás során használt modulus, hanem a titkos kitevő méretét is jelentősen képes lecsökkenteni.

22.8. Következmény:

Legyen egy tetszőleges pozitív egész szám, pedig egy tetszőleges pozitív prímszám. Tegyük fel továbbá, hogy egy olyan egész szám, amelyre teljesül az alábbi kongruencia:

Ekkor minden egész szám esetén teljesül az alábbi kongruencia is:

Bizonyítás:

A kongruencia a 20.1. Tétel 3. pontja alapján az alábbi oszthatóság teljesülését jelenti:

Ez az oszthatóság a 16.1. Definíció alapján azt jelenti, hogy létezik olyan egész szám, amelyre teljesül az alábbi egyenlet:

Az egyenlet mindkét oldalához -t adva az alábbi kifejezést kapjuk -re:

Ez alapján az kongruencia így írható fel:

Ez a hatványozás azonosságairól szóló 18.8. Tétel 2. és 3. pontjai alapján az alábbi alakra hozható:

Amennyiben relatív prím -hez, akkor alkalmazható a kis Fermat-tétel, amely alapján a fenti kongruencia jobboldalán szereplő tényező -gyel kongruens modulo :

Így tehát a kongruencia jobboldala a 20.2. Tétel 4. és 6. pontja alapján valóban -vel kongruens modulo .

Amennyiben nem relatív prím -hez, akkor a 21.4. Lemma alapján teljesül a oszthatóság. Ilyenkor tehát ugyancsak teljesül a fenti kongruencia, hiszen mindkét oldal -val kongruens modulo .

A fenti példánál maradva Bob-nak tehát a dekódoláshoz végre kéne hajtania az alábbi moduláris hatványozásokat a és a gyűrűben:

Az imént bizonyított 22.8. Következmény alapján ezen a ponton megteheti, hogy veszi a kitevő -zel és -cal való osztási maradékait, és helyett ezeket az osztási maradékokat használja kitevőként. Jelöljük az így kapott új kitevőket -vel és -val. Jelen esetben ezek az alábbiak lesznek:

A moduláris hatványozásokat ezekkel az eredeti -nél jóval kisebb kitevőkkel elvégezve valóban ugyanazt az eredményt kapjuk:

Ráadásul a és kitevők csak a választott és prímszámoktól függenek, azaz Alice és Bob megteheti, hogy már a kulcsgenerálás során előállítják ezeket.

Összességében a szorzatgyűrű, valamint a redukált és titkos kitevők használatával az RSA dekódolást nagyjából négyszer hatékonyabban el tudják végezni, mintha az eredeti gyűrűt és az eredeti titkos kitevőt használnák. Megtehetik továbbá, hogy az RSA eljárást alapvetően csak arra használják, hogy egy közös titokban állapodjanak meg, amelyet aztán egy valamilyen sokkal hatékonyabb, szimmetrikus kulcsú rejtjelező kulcsaként használhatnak a kommunikáció további részéhez.

Ebben a fejezetben tehát megismerkedtünk a kis Fermat-tétellel és a több kongruenciából álló kongruenciarendszerek egyértelmű megoldhatóságát biztosító kínai maradéktétellel. Ezek segítségével igazoltuk, hogy az RSA algoritmus valóban mindig helyesen működik. Ezután megismerkedtünk egy olyan konstrukcióval, amelynek a segítségével kettő vagy több gyűrűből egy újabb gyűrűt tudunk létrehozni azok direkt szorzataként. A kínai maradéktétel következményeként megmutattuk, hogy ezen a módon bármely összetett modulusú maradékosztálygyűrű felbontható egymáshoz relatív prím modulusú maradékosztálygyűrűk direkt szorzatára, amely ráadásul izomorf lesz az eredeti gyűrűvel. Ezt és a kis Fermat-tétel egy következményét kihasználva Alice és Bob jelentősen gyorsítani tudja az RSA dekódolási eljárást.

A következő fejezetben megtudjuk, hogy hogyan lehet az RSA kulcsokhoz szükséges óriási prímszámokat találni anélkül, hogy az idők végezetéig osztáspróbákat kelljen végezni. Ezenkívül megismerkedünk néhány olyan módszerrel, amellyel a gonosz Eve képes feltörni az RSA algoritmust, amennyiben Alice és Bob nem kellő körültekintéssel jár el a kulcsgenerálás során.