Mintafeladat az RSA algoritmus szemléltetésére Feladat Adottak a p = 269 és q = 24 prímszámok, továbbá az e = 5320 nyilvános kulcs és az x = 48055 nyílt szöveg. Számolja ki n = p q és ϕ(n) értékét! Igazolja az euklideszi algoritmussal, hogy ϕ(n) és e relatív prímek, majd szintén az euklideszi algoritmust felhasználva számolja ki az e szám multiplikatív inverzét modulo ϕ(n)! Titkosítsa az x üzenetet az n és e nyilvános kulcsok segítségével! Fejtse vissza az előző pontban kapott kriptoszövegből az eredeti nyílt szöveget! n = pq = 269 24 = 64829; ϕ(n) = (p )(q ) = 268 240 = 64320. Az euklideszi algoritmus végrehajtása során az alábbi maradékos osztásokat kellett kiszámolni. A legnagyobb közös osztó az utolsó nem nulla maradék (a bekeretezett maradék): gcd(ϕ(n), e) =, azaz ϕ(n) és e valóban relatív prímek. 64320 = 5320 + 9 5320 = 4 9 + 8725 9 = 8725 + 2394 8725 = 3 2394 + 543 2394 = 543 + 85 543 = 85 + 692 85 = 692 + 59 692 = 4 59 + 56 59 = 2 56 + 47 56 = 47 + 9 47 = 5 9 + 2 9 = 4 2 + 2 = 2 + 0 Legyen d az e szám multiplikatív inverze modulo ϕ(n). (d létezik, mivel ϕ(n) és e relatív prímek.) A meghatározásához az előző táblázatban lefelé haladva soronként kell kifejezni az osztási maradékokat ϕ(n)-nel és e-vel. (A részleteket csak az első pár sorban közöljük, az áttekinthetőség miatt ϕ(n) helyett itt inkább az F betűt használjuk.) 9 = F e 8752 = e 4 9 = e 4 (F e) = 4 F + 5 e 2394 = 9 8725 = (F e) ( 4 F + 5 e) = 5 F 6 e 543 = 8725 3 2394 = ( 4 F + 5 e) 3(5 F 6 e) = 9 F + 23 e 85 = 2394 543 = (5 F 6 e) ( 9 F + 23 e) = 24 F 29 e 692 = 43 F + 52 e 59 = 67 F 8 e 56 = 3 F + 376 e 47 = 689 F 833 e 9 = 000 F + 209 e 2 = 5689 F 6878 e
2 = 23756 F + 2872 e 2872 e (mod ϕ(n)) d = 2872. Az y kriptoszöveg előállítása y x e (mod n) y 48055 5320 (mod 64829) alapján történik. Ennek gyors lebonyolítása érdekében a kitevőt kettő hatványainak összegeként állítjuk elő: Ezt felhasználva 5320 = 2 5 + 2 4 + 2 + 2 0 + 2 9 + 2 8 + 2 7 + 2 6 + 2 4 + 2 0. x 5320 = x 25 x 24 x 2 x 20 x 29 x 28 x 27 x 26 x 24 x 20 = = (((... ( 2 )x) 2 x) 2 ) 2 ) 2 x) 2 x) 2 x) 2 x) 2 x) 2 x) 2 ) 2 x) 2 ) 2 ) 2 ) 2 x. Minden lépésben (mod 64829) kell a négyzetre emeléseket és a szorzásokat tekinteni. Tehát először ( 2 48055) 2 48055 2798 (mod 64829), majd 2798 2 6357 (mod 64829), utána 6357 2 649 (mod 64829), 649 2 48055 349 (mod 64829), stb. A következő számolások eredményei: 2278, 49487, 35533, 25004, 60979, 4488, 9459, 866, 5768, 2547, 6606 (mod 64829). A végeredmény lesz a keresett kriptoszöveg: y = 6606, ezt kell elküldeni a címzettnek. A d = 2872 titkos kulccsal lehet megfejteni az y kriptoszöveget, mégpedig x y d (mod n) x 6606 2872 (mod 64829) kiszámításával. Itt a felbontást nem részletezzük, de a sorozatos négyzetre emelések (mod 64829) eredményeit közöljük a nyomon követhetőség kedvéért: 54732, 53646, 4348, 39865, 9, 46, 7824, 32876, 6282, 5838, 59784, 39057, 22879, 48055. Mint látható, a legutolsó szám valóban a kiindulási nyílt szöveg x = 48055.
3 Mintafeladat a hátizsák algoritmus szemléltetésére Feladat Adott a {v k } 0 0 = {, 3, 7, 4, 28, 54, 0, 29, 437, 875, 750} szupernövekvő sorozat és az m = 3527 primmodulus, továbbá az a = 2222 szám és az x = 666 nyílt szöveg. Az euklideszi algoritmust felhasználva számolja ki az a szám b multiplikatív inverzét modulo m! Állítsa elő a megadott {v k} 0 k=0 sorozat, az a szám és az m modulus segítségével a {w k } 0 k=0 nyilvános kulcsot! Írja fel kettes számrendszerben az x üzenetet, majd titkosítsa azt a nyilvános kulcs segítségével (jelölje C az így kapott kriptoszöveget)! Fejtse vissza a C kriptoszövegből az eredeti nyílt szöveget! 3527 = 2222 + 305 2222 = 305 + 97 305 = 97 + 388 97 = 2 388 + 4 388 = 2 4 + 06 4 = 06 + 35 06 = 3 35 + 35 = 35 + 0 Hasonlóan az előző mintafeladathoz, az -et mint a 3527 és 2222 legnagyobb közös osztóját ki lehet fejezni 3527 és 2222 egészegyütthatós lineáris kombinációjaként (a számolást most nem részletezzük). gcd(3527, 2222) = = 63 3527 00 2222 00 2222 (mod 3527) b = 3427 = 3527 00 00 (mod 3527). A {w k } sorozat tagjait a w k a v k (mod m) képlet szolgáltatja: {w k } 0 0 = {2222, 339, 446, 2892, 2257, 70, 057, 349, 089, 873, 746}. x = 666 = (000000) 2, és azért írtunk az x szám kettes számrendszerbeli alakjának elejére egy 0-t, hogy mind a tizenegy bit fel legyen tüntetve. Ha az k-adik bitet ε k jelöli, akkor a C kriptoszöveget az x nyílt szövegből a C = 0 k=0 ε k w k formulával lehet meghatározni. Eszerint C = 2580. A C kriptoszöveg megfejtéséhez a b titkos kulccsal kell beszorozni C-t modulo m, majd az így kapott számot a szupernövekvő {v k } 0 0 sorozat elemeinek összegeként kell felírni. b C = 2580 3427 39 (mod 3527). 39 = 875+29+28+4+3 = v 9 +0 v 8 + v 7 +0 v 6 +0 v 5 + v 4 + v 3 +0 v 2 + v +0 v 0, ahonnan x = (00000) 2 = 666.
4 Mintafeladat a 2 2-es mátrixjátékok elemzésére Feladat Tekintsük az mátrixszal megadott mátrixjátékot. A = [ 6 4 2 8 Igazolja, hogy a játékosoknak nincs tiszta stratégiájuk! Határozza meg grafikus módszerrel a játékosok kevert stratégiáit, és a játék értékét! Határozza meg algebrai módszerrel a játékosok kevert stratégiáit, és a játék értékét! Tegyük fel, hogy a második játékos a bank. Mennyiért adja a bank az első játékosnak egy játék jogát, hogy igazságos legyen a játék? Az A mátrix sorminimumainak maximuma nem egyezik meg az oszlopmaximumok minimumával ( 2 6), tehát nincsenek tiszta stratégiák. Jelöljük a meghatározandó kevert stratégiát az első játékosnál [p, p]-vel, a második játékosnál [q, q]-val. Az alábbi egyenlőtlenségeket kell grafikus úton megoldani. 6p 2( p) v 4p + 8( p) v v max (0 p ) 6q 4( q) v 2q + 8( q) v v min (0 q ) ] v 8 v 8 A 0 p 0 A q -2 2 2-4. ábra. p és q meghatározása grafikus úton.
5 Ehhez a v = 2 + 8p és v = 8 2p valamint a v = 4 + 0q és v = 8 0q egyenletű egyeneseket kell feltüntetni. (Az ábrákon az egyenesek sorszámozása a felírásuk sorrendjében történt.) Mindkét ábrán az A pont koordinátáit kell meghatározni. Az első esetben a v = 2+8p = 8 2p egyenletekből p = 2, v = 2. A második esetben v = 4+0q = 8 0q miatt q = 3 5, v ismét 2. Tehát az optimális stratégiák [p, p] = [/2, /2] és [q, q] = [3/5, 2/5]. A p és q valószínűségek mellett az első játékos nyereményének várható értéke E(p, q) = 6pq 4p( q) 2( p)q + 8( p)( q) = 20 ( pq 3p q + 2 5 2 5) = = 20 ( ) ( ) p 2 q 3 5 + 2. Tehát a játék értéke 2, amely az első játékosnak kedvező. Az optimális stratégiák: [p, p] = [/2, /2], [q, q] = [3/5, 2/5]. A korábbiak szerint az első játékos játékonként átlagosan 2 pénzegységet nyer a másodiktól. Ha ennyibe kerül a játék az első számára, akkor játékjog megvételével az egy játékra jutó átlagos nyereménye 0 lesz, miközben a második játékos a játékban elszenvedett veszteségét a játékjog díjával kompenzálja. A játék ára tehát két pénzegység legyen.
6 Mintafeladat a 2 n-es ill. k 2-es mátrixjátékok elemzésére Feladat Tekintsük az D = mátrixszal megadott mátrixjátékot. [ 4 8 4 5 4 6 2 6 2 Igazolja, hogy a játékosoknak nincs tiszta stratégiájuk! Határozza meg grafikus módszerrel az első játékos kevert stratégiáját és a játék értékét! Az előbbi eredményeket felhasználva határozza meg algebrai módszerrel a második játékos kevert stratégiáját! Kinek előnyös a játék? Tegyük fel, hogy a fizetési mátrix elemei forint kifizetéseket jelentenek. Várhatóan mennyi pénzt nyer az egyik játékos a másiktól, ha az optimális stratégiákat követve 000 játékot játszanak? A D mátrix sorminimumainak maximuma nem egyezik meg az oszlopmaximumok minimumával ( 4 4), tehát nincsenek tiszta stratégiák. Jelöljük a meghatározandó kevert stratégiát az első játékosnál [p, p]-vel, a második játékosnál [q, q 2, q 3, q 4, q 5 ]-tel (q + q 2 + q 3 + q 4 + q 5 = ). ] Az alábbi egyenlőtlenségrendszert kell grafikus úton megoldani. p + 4( p) v 4p 6( p) v 8p 2( p) v 4p + 6( p) v 5p + 2( p) v v max (0 p ) Az egyenlőtlenségek bal oldala alapján a v = 4 5p, v = 6 + 20p, v = 2 + 0p, v = 6 0p, v = 2 + 3p egyeneseket kell ábrázolni a [0, ] intervallumon. (A grafikonon az itteni felírásuk sorrendjében sorszámoztuk az egyeneseket.) Az egyenesek alatti tartományok közös részének legmagasabb pontját, A-t kiemeltük. Ez rajta van az első négy egyenes mindegyikén, és p meghatározásához a koordinátáit kell kiszámolni. Bármely két, rajta áthaladó egyenes alkalmas erre, válasszuk pl. az elsőt és a másodikat. Ekkor a v = 4 5p = 6 + 20p egyenletekből p = 2, továbbá v = 2 következik. Tehát az első játékos optimális statégiája 5 [p, p] = [2/5, 3/5], a játék értéke v = 2. Az A ponton áthaladó egyenesek közül a negyediknek, azaz v = 6 0p-nek legkisebb a meredeksége; a legnagyobb meredekségű pedig a második, azaz a v = 6 + 20p egyenletű egyenes. A szóban forgó két egyenest és a v = 2 eredményt felhasználva úgy kell megválasztani a λ IR, 0 λ valós számot, hogy a λ(6 0p) + ( λ)( 6 + 20p) = 2
7 v 2 6 4 4 3 5 2 A 0 p -2-6 2. ábra. p meghatározása grafikus úton. egyenlőség minden p-re teljesüljön. Átrendezve (2λ 6) + (20 30λ)p = 2-höz jutunk, ahonnan 20 30λ = 0, tehát λ = 2 (hasonló eredményre vezet, ha 2λ 6 = 2-ből 3 indulunk ki). Az egyenesek szorszámából, valamint a λ és λ számokból felírhatjuk a második játékos optimális stratégiáját: [q, q 2, q 3, q 4, q 5 ] = [0, /3, 0, 2/3, 0]. A korábbiak szerint az első játékos játékonként átlagosan 2 forintot nyer a másodiktól, ezért a játék számára előnyös, és 000 játék után várhatóan 2 000 = 2000 forinttal gyarapodik. Igazságossá lehetne tenni a játékot, ha a D mátrix minden elemét 2-vel csökkentenénk.
8 Mintafeladat mátrixjátékok szimplex módszerrel való elemzésére Feladat Tekintsük a B = mátrixszal megadott mátrixjátékot. 4 3 5 3 3 0 3 3 5 Vizsgálja meg, hogy van-e a játékosoknak tiszta stratégiájuk! Határozza meg a szimplex módszerrel a játékosok stratégiáit, és a játék értékét (v)! A B mátrix sorminimumainak maximuma nem egyezik meg az oszlopmaximumok minimumával ( 3 0), tehát nincsenek tiszta stratégiák. Jelöljük a meghatározandó kevert stratégiát az első játékosnál [p, p 2, p 3 ]-mal, a második játékosnál [q, q 2, q 3 ]-mal. A szimplex módszerrel való megoldáshoz transzformálni kell a B mátrixot, mert nem csak pozitív elemeket tartalmaz. Ezért B minden eleméhez hozzáadunk hatot, ekkor a B mátrixhoz jutunk: A B mátrix alapján felírható a B = 0 3 3 9 6 9 9. 0x + 3x 2 + x 3 3x + 9x 2 + 6x 3 9x + 9x 2 + x 3 z = x + x 2 + x 3 max (x, x 2, x 3 0) lineáris programozási feladat, amelyet a szimplex módszer alkalmazásával oldunk meg. Megengedett bázistranszformációk (a generálóelem pozitív, és egy adott oszlopból mindig a szűk keresztmetszetet kell választani) egymás utáni alkalmazásáva arra kell törekedni, hogy a táblázat alsó sorában csupa negatív érték legyen. A generálóelemeket a szokásoknak megfelelően bekereteztük. x x 2 x 3 b u x 2 x 3 b u u 3 x 3 b x u 0 3 /0 3/0 /0 /0 /7 -/2 2/2 2/2 x 3 u 2 3 9 6-3/0 8/0 57/0 7/0 6/7-9/7 39/7 4/7 x 2 u 3 9 9-9/0 63/0 /0 /0 -/7 0/63 /63 /63 0 -/0 7/0 9/0 -/0 0 -/9 8/9 -/9 u u 3 u 2 b u x 2 u 2 b x 5/39 -/39-2/7 0/7 2/9 3/9 -/57 5/57 x 3 2/3-3/3 7/39 4/39 -/9 27/9 0/57 7/57 u 3 x 2-7/7 9/7 -/35 5/35-7/9 7/9 -/57 5/57-6/7 /7-56/35-7/35 -/9 -/9-3/9-4/9
9 A táblázatból az alábbi megoldások olvashatók le. Primál feladat: x = [x, x 2, x 3 ] = [5/57, 0, 7/57]; az eltérésvektor [u, u 2, u 3 ] = [0, 0, 5/57]. Duál feladat: y = [y, y 2, y 3 ] = [/9, 3/9, 0]; az eltérésvektor [w, w 2, w 3 ] = [0, /9, 0]. A maximális (ill. minimális) érték: ṽ = 4/9. Ezen eredményeket felhasználva a mátrixjáték megoldása a következő. [p, p 2, p 3 ] = ṽ y = 9 4 [q, q 2, q 3 ] = ṽ x = 9 4 [ ] [ ] 9, 3 9, 0 = 4, 3 4, 0, [ ] [ ] 5 57, 0, 7 5 = 57 2, 0, 7, 2 v = ṽ 6 = 5 4. A fentiek szerint az első játékosnak rendre /4, 3/4 valószínűséggel kell választania az -es és 2-es stratégiákat, míg a második játékosnak rendre 5/2, 7/2 valószínűséggel az -es és 3-as stratégiákat. A játék értéke 5/4 < 0, tehát a második játékosnak előnyös.
0 Mintafeladat Pollard ϱ algoritmusának szemléltetésére Feladat Adott az N = 246733 természetes szám, amelyet a Pollard féle ϱ módszerrel szeretnénk faktorizálni egy f(x) egészegyütthatós polinom és az x 0 kezdőelem által generált sorozat segítségével. Bontsa fel két szám szorzatára N-et, ha f(x) = x 2 + és x 0 = 2! Végezze el a szorzattá bontást egy másik polinomot és másik kezdőelemet felhasználva! Az x n+ f(x n ) (mod N) iterációt kell alkalmazni x 0 -ból kiindulva egyszeres és kétszeres sebességgel. A legnagyobb közös osztó meghatározására ismét az Euklideszi algoritmust használtuk. x n f(x n ) (mod N) x 2n f(f(x 2n 2 )) (mod N) gcd(n, x n x 2n ) x 0 = 2 x 0 = 2 5 26 2 26 2597 3 677 26543 4 2597 99653 5 33298 2250 6 26543 2877 7 5950 90806 8 99653 86408 9 20626 222422 983 Tehát 983 az egyik osztója N = 246733-nak. Az osztást elvégezve megkapjuk N egy faktorizációját: 246733 = 983 25. Legyen most f(x) = x 2 + 3, x 0 = 3. x n f(x n ) (mod N) x 2n f(f(x 2n 2 )) (mod N) gcd(n, x n x 2n ) x 0 = 3 x 0 = 3 2 47 2 47 2978 3 262 244820 4 2978 83650 5 5658 9002 6 244820 827 25 Másodszorra N-nek egy másik osztóját, a 25-et kaptuk. N felbontása megegyezik az előzőével.