Kriptográfia

Picture of matematikai alkalmazások

matematikai alkalmazások

Matematikai érdekességek, amelyek jól jöhetnek az érettségin vagy a felvételin is.

Alkalmazások
elliptic-curves

Oszd meg, ha tetszik!

Fel tudjuk törni a titkosítást?

A titkosítás lényege az, hogy a beavatott személyek úgy tudjanak egymásnak üzenetet küldeni, hogy bármely üzenetet el tudjanak olvasni, azonban egyetlen kívülálló se ismerhesse meg a tartalmat, illetve ne lehessen más nevében hamis üzenetet küldeni. A régebbi titkosítások meglehetősen egyszerűek voltak, amelyek közül néhány már inkább egy rejtvényújság feladványa lehetne, mintsem biztonságos kriptográfiai megoldás.

Egy rövid történeti kitérő után áttekintünk két modern titkosítási módszert, az RSA és az elliptikus görbéken alapuló kódolást. Az utóbbi két módszer matematikai háttere lényegesen meghaladja az emelt szintű középiskolai érettségi követelményeit, ennek ellenére sokak számára érdekesek lehetnek. A kíváncsiságunkat az is táplálja, hogy a mindennapokban gyakran találkozunk a kriptovalutákkal, blockchain-nel és elektronikus aláírással Az alábbiakban áttekintendő kódok akár nemzetbiztonsági szintű rejtjelezésre is alkalmasak.

Valóban fontos kérdés: Fel tudjuk törni a titkosítást? A válasz lényegében csak annyi tud lenni, hogy a mai technológia mellett jelenleg tudunk olyan titkosítást készíteni, amely reális időn belül nem törhető fel. Azt viszont nehéz megmondani, hogy a kvantumszámítógépek korában milyen titkosítási módszereket kell majd kialakítani.

Kódolás
A kódolás alapja valamilyen kódszó, kódrendszer alkalmazása, amellyel betűket, szótagokat, szavakat esetleg kifejezéseket helyettesítünk. Például a templomos lovagok által használt jelrendszer a betűket helyettesítette: A kódolás lényege, hogy minden résztvevőnek meg kell állapodnia egy kódrendszerben, amely a sikeres dekódolás kulcsa. Fel tudjuk törni? Vélhetően igen. Sokszor sikeres feltörést eredményez, ha gyakran előforduló vagy az adott szövegben gyakran ismétlődő betűket szavakat keresünk, például “az”, “egy” stb.
Rejtjelezés
A legegyszerűbb rejtjelezés, ha az ABC betűit helyettesítjük úgy, hogy minden betű helyett az őt követő \(n\)-dik betűt írjuk. Ha az ABC végére érünk, akkor elölről folytatjuk a leszámolást. Ez a módszer, a kódolással ellentétben, némi átalakítással már sokkal biztonságosabb lehet. A II. világháborúban, a németek által használt Enigma is ezen az elven működött. Az Enigma egy mechanikus berendezés volt, hasonló egy írógéphez. Az egyes betűk több tárcsán keresztül kerültek kódolásra úgy, hogy minden tárcsa módosított az előző által megadott kódon. Ahhoz, hogy a kódolt szöveget el tudják olvasni, biztosítani kellett, hogy minden gépen ugyanaz legyen a tárcsák beállítása, amelyet minden nap változtattak. Ennek ellenére feltörték az Enigmát, és sikeresen dekódolták a Szövetségesek a német üzeneteket.
Szimmetrikus kriptográfia
A számítástechnika fejlődésével olyan algoritmusok is kifejlesztésre kerültek, amelyek modern titkosítást tettek lehetővé, azonban közös volt bennük, hogy ugyanazt a kulcsot kellett alkalmazni a kódoláshoz és a dekódoláshoz. Természetesen ezt titokban kellett tartani, és minden részvevőnek rendelkeznie kellett ezzel a kóddal. A szimmetrikus kriptográfia továbbra sem tudta megoldani azt a problémát, hogy a kulcsokat meg kellett osztani mindenkivel, és változatás esetén újra kellett küldeni.
Aszimmetrikus kriptográfia
Az aszimmetrikus vagy nyilvános kulcsú titkosírás lényege, hogy minden résztvevő két kulccsal rendelkezik, amelyből az egyiket titokban tartja, azonban a másik nyilvános. Ezeknek a kulcsoknak nem kell megegyezni az üzenetet küldőnél és fogadónál. A fogadó fél pedig a saját kulcsával tudja dekódolni az üzenetet. Nézzük meg ennek a logikáját egy kicsit közelebbről. \(A\) üzenetet küld \(B\)-nek. Mindkét résztvevő elkészít magának egy kulcsot, amelyek egymás inverzei \(T,\,P\). Ezek közül a saját \(P\)-t nyilvánosságra hozzák, \(T\)-t pedig titokban tartják. Mindenki saját \(T,\,P\) kulcspárt hoz létre. \(A\) a \(text\) üzenet helyett a titkosított  \(txet=P_B(T_A(text))\) kódolt üzenetet küldi el \(B\)-nek. \(B\) az üzenetet \(A\) publikus kulcsának és saját titkos kulcsának segítségével dekódolja, azaz \(P_A(T_B(txet))=text\) műveletet végzi el. Mivel az egy emberhez tartozó kulcsok egymás inverzei, azaz \(P_A(T_A(text))=text\), így az alábbiak szerint történik a dekódolás: \[\begin{aligned} &P_A(T_B(txet))=\\ &=P_A(T_B(P_B(T_A(text))))=\\ &=P_A(T_A(text))=text \end{aligned}\notag\] A nyilvános kulcsú kódolás sok tekintetben kielégíti az igényeinket. Az \(A\) által küldött üzenetet csak \(B\) tudja dekódolni (sőt azt is tudja, hogy \(A\) küldte), \(C\) se feltörni, se hamisítani nem tudja az üzenetet, illetve nem tud más nevében hamis üzenetet küldeni. Továbbá nagy előrelépés, hogy nincs szükség titkos kulcsok megosztására, minden szereplő magának hozza létre.
A továbbiakban már csak a nyilvános kulcsú kriptográfiával foglalkozunk, és vizsgálunk meg két olyan matematikai eszközt, amely lehetővé tette az aszimmetrikus titkosírást. Az első az RSA (Rivest, Shamir és Adleman) kód, amely számok prímtényezőkre történő felbontásán, míg a másik diszkrét logaritmuson és elliptikus görbéken alapul. Egyik kódrendszer sem egyszerű, de talán bepillantást tudunk adni mindkettő matematikai hátterébe.
Mielőtt belevágunk a részletekbe meg kell ismerkednünk egy számelméleti fogalommal, a kongruenciával. Sokaknak csak az elnevezés lehet idegen, mert lényegében az oszthatósággal és az osztási maradékokkal való számolásra bevezetett definíció és jelölésmód.
Definíció
Legyen \(a\) és \(b\) egész számok és \(m\) nullától különböző természetes szám. \(a\) kongruens \(b\)-vel, ha \(m|a-b\) teljesül, azaz \(a\)-nak és \(b\)-nek \(m\)-mel vett osztási maradéka megegyezik. Jelölés \[ \begin{aligned} a\equiv b\mod m \end{aligned}\notag \] A kongruencia mellett bevezetünk még egy jelölést és egy fontos számelméleti tételt. Ezek ismerete inkább annak szemléltetésére szolgál, hogy milyen rövidke, egyszerűnek tűnő tételen alapul az egyik legelterjedtebb titkosítás, mintsem a megértése szükséges lenne a továbbiak feldolgozásához.
Definíció
Euler-függvény: Adott \(n\geq 2\) egész számhoz hozzárendeli az \(1\) és \(n\) közé eső, az \(n\) számhoz relatív prímek számát. Nézzünk egy példát \[ \begin{aligned} (1,\, 6)&=1\\ (5,\, 6)&=1\\ \varphi(6) &=2 \end{aligned}\notag \] Ha \(p\) prímszám, akkor \(\varphi(p)=p-1\)
Euler-Fermat tétel
Ha \(a\) egész szám, relatív prím az \(m\) pozitív egész számhoz, akkor \[ \begin{aligned} a^{\varphi(m)}\equiv 1\mod m \end{aligned}\notag \]
RSA kódolás
Az előző bekezdésben bevezetett jelölések szokatlanok, azonban ha megpróbáljuk a segítségükkel értelmezni az Euler-függvényt, akkor láthatjuk, hogy az csak a számokhoz rendeli hozzá az adott számhoz, a relatív prímek számát Az Euler-Fermat tétel, pedig csak azt állítja, hogy, hogy ha adott \(a\) és \(m\), két egymáshoz relatív prím, akkor az \(a^{\varphi(m)}\) szám, \(m\)-mel osztva, \(1\)-et ad maradékul.
Az RSA lényege, hogy ha \(p\) és \(q\) prímszámokat összeszorozzuk, akkor az egy könnyen elvégezhető művelet \(p\cdot q=n\), azonban megfelelően nagy prímszámok esetén \(n\) osztóinak meghatározása általában reménytelen.
Ettől kezdve már nincs sok dolgunk. Választanunk kell egy \(e\) számot, amely függ \(\varphi(n)\)-től, illetve meg kell határoznunk, egy \(e\)-től és \(\varphi(n)\)-től függő \(d\) titkos kulcsot. A nyilvános kulcs az \((n,\,e)\) számpáros, míg a titkos kulcs \(d\) lesz. (A kulcsok megválasztásának feltételeit nem részletezzük.)
A titkosítási algoritmust nem írjuk le teljes egészében, de megfelel a fentiekben leírt aszimmetrikus kriptográfiai elvnek, és a dekódolásban az Euler-Fermat tétel segítségével bizonyítható az egyértelmű megoldhatóság.
Nem tűnik bonyolult problémának, hogy keressük meg egy szám prímtényezőit, mégis ezen alapul sok-sok titkos információ védelme. Ha a számelméleti rész idegennek tűnik akkor is érdemes megjegyezni, és akár az érettségi vagy a felvételi szóbelin matematikai alkalmazásként megemlíthető, hogy a prímszámoknak, és a számok prímtényezőkre bontásának rendkívül fontos szerepe van a modern, nyilvános kulcsú titkosításban.
Bitcoin titkosítása – elliptikus görbékkel
A diszkrét logaritmus és az elliptikus görbék is idegen fogalmak, ráadásul teljes megértésükhöz felsőbb matematikai ismeretek szükségesek. Ennek ellenére tartogatnak olyan érdekességeket, amelyek már középiskolás tudással is megérthetők. Három lépésben mutatjuk be a titkosítás alapjait. Elsőször az elliptikus görbéket tekintjük át, és értelmezünk a pontjai között műveleteket. Második lépés, hogy megértsük, hogy miért használható ez a rendszer titkosításra, azaz, hogyan lehet nyílt és titkos kulcsokkal üzenni úgy, hogy lényegében feltörhetetlen kódolást készítünk. Végül megpróbálunk eljutni a valós kódolás alapjaihoz, amelyeket véges elemű halmazon értelmezett műveletekkel végzünk.
Elliptikus görbék
Elliptikus görbének nevezzük azt a síkgörbét, amelynek a pontjai kielégítik a következő egyenletet, kiegészítve egy “végtelenben felvett” ponttal, amelyet \(O\)-val jelölünk. \[ \begin{aligned} y^2=x^3+ax+b \end{aligned}\notag \] A fentiekben definiált elliptikus görbékből a kriptavaluták, így a Bitcoin-hoz használt blockchain titkosítását az alábbi elliptikus görbéből kiindulva végzik. \[ \begin{aligned} a=0,\,b=7\\ y^2=x^3+7 \end{aligned}\notag \] Most egy nehéz lépés jön. Műveleteket értelmezünk az elliptikus görbe pontjai között. Először két pont összegét, \(P+Q\)-t, majd egy pont skalárszorosát, \(nP\)-t definiáljuk. Két különböző pont összege legyen az ábrán jelölt \(P+Q\), azaz \(P,Q\)-n átmenő egyenes és a görbe metszéspontját tükrözzük az \(x\) tengelyre. Egy pont kétszeresét, \(2P\)-t úgy kapjuk, hogy \(P\)-ben érintőt húzunk az elliptikus görbéhez, és a görbével vett metszéspontját tükrözzük \(x\) tengelyre. A műveletek szokatlanok lehetnek, de talán ez adja az érdekességüket is. Ha meghatározzuk a \(2^kP\) pontokat, akkor ebből már tetszőleges \(nP\) pont számítható. Erre azért van szükség, mert kevesebb művelettel számítható ki egy pont tetszőleges skalárszorosa, \(nP\), ahhoz viszonyítva, mintha az \(n\) db összeadást elvégeznénk. Például \(9P=2^3P+P\), így a 9 összeadás helyett csak három duplikációt és egy összeadást kellett elvégezni. Ennek azért van jelentősége, mert nagyon nagy számokkal dolgozik a titkosító algoritmus, és az alacsonyabb műveletigény növeli a számítás sebességét.
Diszkrét logaritmus
Olyan titkosítás szeretnénk képezni, amely során a titkosítás könnyen megtörténhet, de feltörni nem lehet. Az elliptikus görbékkel definiált műveletek lehetővé teszik ezt. Ugyanis, ha nagy \(n\) számot keresünk, akkor ennek ellenére \(Q=nP\) könnyen számítható, azonban \(P,Q\) ismeretében lényegében reménytelen meghatározni \(n\) értékét. A műveletet, amellyel \(P\) és \(Q\) ismeretében \(n\) meghatározható, diszkrét logaritmusnak nevezzük és \(n=\log_P Q\)-val jelöljük.
Ezt a részt nehéz megérteni, mert egy sereg újdonságot tartalmaz, amelyhez általában felsőbb matematikai ismeretekre van szükség. Ennek ellenére nagyon szemléletes és egy olyan dolgot ismerhettünk meg, ami a mindennapi életünkben is jelen van, a modern technológiához kapcsolódva. Bár sok részletet áttekintettünk, de még nincs vége.
Véges elemű elliptikus görbe
A folytonos elliptikus görbék esetén látható, hogy az egyik pontból, hogyan juthatunk el egy másikba, összeadással, vagy skalárral való szorzással. A kriptográfiában nem jók az ennyire kiszámítható elemek, ezért a valós számokon értelmezett elliptikus görbék helyett ezek véges sok pontját használják. Az elliptikus görbe azon értékeit tekintjük, amelyekre teljesül a görbét leíró egyenlőség modul p, azaz csak azokat a pontokat tekintjük, amelyek koordinátáira teljesül, hogy \[ \begin{aligned} y^2=x^3+7\mod p \end{aligned}\notag \] Az \(x,y\) értékeit is csak véges sok számból, \((0,\,1,\,\ldots,\,p-1)\)-ből választjuk ki. Az előzőek alapján a kriptográfiában használatos elliptikus görbe képe \(y^2=x^3+7,\,p=17\): Igen, ez se nem elliptikus, se nem görbe. A grafikonról leolvasható, hogy például az \((1,\,5)\) pont eleme a diszkrét elliptikus görbének, mert \[ \begin{aligned} x^3+7=1^3+7=7,\quad 7\equiv 7 \mod 17\\ y^2=5^2=25,\quad 25\equiv 7\mod 17 \end{aligned}\notag \] Azaz a diszkrét elliptikus görbe egyenletét kielégítik a megadott koordináták (\(17\)-tel vett maradékait tekintve).
A tényleges titkosítás nagyon nagy mód \( p\) számokra történik. Például a Bitcoin esetén \(p=11\)\(579\)\(208\)\(923\)\(731\)\(619\)\(542\)\(357\)\(098\)\(500\)\(868\)\(790\)\(785\)\(326\)\(998\)\(466\)\(564\)\(056\)\(403\)\(945\)\(758\)\(400\)\(790\)\(883\)\(467\)\(166\). A diszkrét elliptikus görbéken alapuló kriptográfia szemléletesen azt jelenti, hogy az utolsó ábrán lévő pontok között, a korábban leírt műveletekkel ugrálunk. Ha megadjuk a kezdő és a végpontot, akkor arra lennénk kíváncsiak, hogy hány ugrásból jutottunk el az egyikből a másikba, amelyet a diszkrét logaritmussal tudunk meghatározni. A kezdő pont felel meg az üzenetnek, a végpont pedig a titkosított üzenetnek. A visszafejtéshez ismernünk kellene a lépések számát, de azt reménytelen meghatározni. A teljességhez hozzátartozik, hogy a diszkrét elliptikus görbéknek van egy generátor pontja, amelyből bármely másik származtatható, a generátor pont megfelelő skalárral való szorzásával.
Valószínűleg nehéz feldolgozni a fentieket a sok újdonság miatt, ennek ellenére egy kis betekintést kaptunk abba, hogy milyen bonyolult világ vesz körül bennünket.

Érdekességek

További alkalmazások

Most kedvező áron az előkészítő csomag

2023 iFeladatok I.

Interaktív feladatok felvételire és emelt szintű érettségire
4.590 Ft 2022/23 tanévre
  • 20 iFeladat automatikus javítással
  • 19 témakör
  • 121 megoldási lépés
  • Megoldássegítő felépítés
  • 2,15 átlagos nehézség (1-3 skálán)
  • A tananyag 2023. június 30-ig érhető el

2023 Emelt szintű
matematika előkészítő

Kidolgozott feladatok felvételire és emelt szintű érettségire
59.900 Ft 2022/23 tanévre
  • 25 kidolgozott témakör
  • Több mint 200 kidolgozott példa
  • 13 interaktív feladatsor
  • 21 elméleti összefoglaló
  • Felkészülés folyamatos követése, naplózása
  • 2024-től érvényes követelményekkel kiegészítve
  • 25 szóbeli tétel - teljes tételsor
  • A tananyag 2023. június 30-ig érhető el

2023 Középszintű matematika kurzusok

Tananyag középszintű matematika felkészüléshez
1.750 Ft 2022/23 tanévre, kurzusonként
  • Témakörönkénti előfizetés
  • Megértést segítő magyarázat
  • Definíciók, tételek
  • Kidolgozott típuspéldák
  • Online feladatok, azonnali javítással
  • Felkészülés folyamatos követése, naplózása
  • 2024-től érvényes követelmények alapján
  • A tananyag 2023. június 30-ig érhető el