2. gyakorlat. Csutak Balázs Bevezető Tranzakció elemei Tranzakció ellenőrzése Bányászat...

Hasonló dokumentumok
Nyíri Gábor

Elosztott működésű adatbázisok kihívásai. Erős Levente, 2018.

IT BIZTONSÁGTECHNIKA. Tanúsítványok. Nagy-Löki Balázs MCP, MCSA, MCSE, MCTS, MCITP. Készítette:

Bevezetés a Python programozási nyelvbe

DIGITÁLIS TANÚSÍTVÁNY HASZNÁLATA AZ INFORMATIKAI PLATFORMON

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

Elektronikus hitelesítés a gyakorlatban

Áttekintés a GPG/PGP-ről Mohácsi János NIIF Intézet

A Z E L E K T R O N I K U S A L Á Í R Á S J O G I S Z A B Á L Y O Z Á S A.

SSL elemei. Az SSL illeszkedése az internet protokoll-architektúrájába

Általános Kondíciók (Érvényes május 1-től)

Általános Kondíciók (Érvényes május 1-től)

IP alapú távközlés. Virtuális magánhálózatok (VPN)

DIGITÁLIS TANÚSÍTVÁNY HASZNÁLATA A REGIONÁLIS BOOKING PLATFORMON

ÚJDONSÁGOK AZ FLP WEBSHOPBAN

POSZEIDON dokumentáció (6.4)

Sapientia Egyetem, Matematika-Informatika Tanszék.

A DOLLÁROS PIZZA TÖRTÉNETE, AVAGY MENNYIT ÉR A BITCOIN?

MICROCOIN DOKUMENTÁCIÓ V 1.0

ELEKTRONIKUS ALÁÍRÁS E-JOG

Bitcoin és ami mögötte van... 1 / 17

Sapientia Egyetem, Matematika-Informatika Tanszék.

Pannónia Egészség- és Önsegélyező Pénztár. Kártyahasználati szabályzat (IT-30)

MicroCoin Tárca használati útmutató

Kereskedelmi, Szolgáltató és Tanácsadó Kft. PDF dokumentumok hitelességének ellenőrzése

Felhasználói Leírás v.2.00

Tervezett fakitermelések bejelentése

Szabó Zoltán PKI termékmenedzser

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

Tarcsi Ádám ELTE Informatikai Kar

Használati útmutató a Székács Elemér Szakközépiskola WLAN hálózatához

AZ N-WARE KFT. ÁLTAL ELEKTRONIKUSAN ALÁÍRT PDF DOKUMENTUMOK HITELESSÉGÉNEK ELLENŐRZÉSE VERZIÓ SZÁM: 1.3 KELT:

Általános Kondíciók (Érvényes április 19-től)

KÖZÖSSÉGI FORGALMI JEGYZÉK

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

ECDL Információ és kommunikáció

Data Security: Protocols Integrity

Szolgáltatási szabályzat titkosító tanúsítvány szolgáltatáshoz (HSZSZ-T)

Titkosítás NetWare környezetben

A főképernyő felső ikonsorába kerültek a sajátmappa különböző füleire vezérlő ikonok, valamint a gyakran használt műveletek.

Euro-eBank Ügyfélprogram (ÜP) Felhasználói Leírás v. 3.00

D/A konverter statikus hibáinak mérése

Elektronikus aláírás. Miért van szükség elektronikus aláírásra? A nyiltkulcsú titkosítás. Az elektronikus aláírás m ködése. Hitelesít szervezetek.

Algoritmusok és adatszerkezetek 2.

A/D és D/A konverterek vezérlése számítógéppel

X. ANALÓG JELEK ILLESZTÉSE DIGITÁLIS ESZKÖZÖKHÖZ

Mintavételezés tanulmányozása. AD - konverzió. Soros kommunikáció

A forint jogcímezés és információ átadás főbb szabályai a loro- és vostro számlákon

Kvantumkriptográfia III.

Hirdetmény. üzleti fizetési számla csomagra vonatkozóan. Hatályos: Közzétéve:

Aláíráspótló vizsgára való jelentkezés feltételei és menete (Székesfehérvár)

Elektronikus átvételi elismervény és elektronikus küldés funkció bevezetése - változások az FMH rendszerben ( )

ETA tárgyfelelős. Munka az ETA-ban tárgyfelelősként

Webalkalmazás-biztonság. Kriptográfiai alapok

(appended picture) hát azért, mert a rendszerek sosem

LOGO CLIENT. Befektetési alapok könyvvizsgálata október 16.

e-szignó Online e-kézbesítés Végrehajtási Rendszerekhez

EGYÉB BEFIZETÉSI MÓDOK (KÜLSŐ SZÁMLA, HÁZIPÉNZÁR)

Kvantumkriptográfia II.

OTPdirekt Internet Banking. Használati útmutató

A Nemzeti Adatvédelmi és Információszabadság Hatóság állásfoglalása a blokklánc ( blockchain ) technológia adatvédelmi összefüggéseivel kapcsolatban

Hitelesítés elektronikus aláírással BME TMIT

4. Fejezet : Az egész számok (integer) ábrázolása

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Comp-Sys DOS Fo ko nyv-folyo sza mla program Felhaszna lo i leı ra s a e vi jogszaba lyva ltoza sokkal kapcsolatos mo dosı ta sokhoz

Bitcoin és ami mögötte van... 1 / 27

Bitcoin és altcoinok Átveszik-e az uralmat a hagyományos pénzek felett?

POSZEIDON dokumentáció (3.) január 27.

Nemzeti Akkreditálási Rendszer

KÓDOLÁSTECHNIKA PZH december 18.

Ágazati és intézményi szinten meglévő nemzetközi jó gyakorlatok bemutatása Új-Zéland

VÁLLALATI ÉS MIKROVÁLLALATI NETTRADER SZOLGÁLTATÁS ÁLTALÁNOS SZERZŐDÉSI FELTÉTELEI

Tudnivalók a TriplaShibe-hez

ElitCONTO Segédlet a később elszámolandó ÁFA kezeléséhez

PÉNZKEZELÉSI SZABÁLYZAT

ELEKTRONIKUS DOKUMENTUMTÁROLÁSI SZOLGÁLTATÁS (EDT)

Elektronikus Aláírási Szabályzat. Elektronikus aláírással ellátott küldemények fogadása és elektronikus aláírással ellátott iratok kiadmányozása

Valimed API. REST API a magyarországi orvos pecsétszámok validálására

POSZEIDON dokumentáció (2.2)

Papíron beadott, illetve visszavont beszedés, hatósági átutalás és átutalás végzés esetén a T nap 14:00-ig beadott megbízásokat teljesíti a bank.

Országgyűlési képviselők évi választása A JELÖLTAJÁNLÁSOK ELLENŐRZÉSE (JER) Felhasználói útmutató 2. rész. Ajánlóívek leadása, ajánlásellenőrzés

Bevezetés a laboratóriumi gyakorlatba és biológiai számítások GY. Jegyzőkönyv írása. Vajna Balázs 2019

Papíron beadott, illetve visszavont beszedés, hatósági átutalás és átutalás végzés esetén a T nap 14:00-ig beadott megbízásokat teljesíti a bank.

Webes kurzus kezelés folyamata Oktatói felületek

HIRDETMÉNY A MEGBÍZÁSOK TELJESÍTÉSI RENDJÉRŐL KISVÁLLALATI ÜGYFELEK RÉSZÉRE

Felhasználók hitelesítése adatbiztonság szállításkor. Felhasználóknak szeparálása

Több juttatás, rengeteg élmény!

Tájékoztató a NEPTUN rendszerben a hallgatói pénzügyek kezeléséről

Adat és Információvédelmi Mesteriskola 30 MB. Dr. Beinschróth József SAJÁTOS LOGIKAI VÉDELEM: A KRIPTOGRÁFIA ALKALMAZÁSA

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

ELEKTRONIKUS TANÚSÍTVÁNY HASZNÁLATA AZ INFORMATIKAI PLATFORMON

SODEXO MINDENNAPOK KÁRTYA ELFOGADÁSI TÁJÉKOZTATÓ

Gyakorló feladatok az 1. nagy zárthelyire

VBA makrók aláírása Office 2007 esetén

Dr. Beinschróth József Kriptográfiai alkalmazások, rejtjelezések, digitális aláírás

SEGÉDLET. A TTMER102 - FPGA-alapú hálózati eszközfejlesztés című méréshez

POSZEIDON dokumentáció (3.2)

Elektronikus Aláírási Szabályzat. Elektronikus aláírással ellátott küldemények fogadása és elektronikus aláírással ellátott iratok kiadmányozása

Elektronikus Aláírási Szabályzat. Elektronikus aláírással ellátott küldemények fogadása és elektronikus aláírással ellátott iratok kiadmányozása

A Nagykáta és Vidéke Takarékszövetkezet Általános Kondíciós Listája

Átírás:

jegyzőkönyv 2. gyakorlat Csutak Balázs 2018. 04. 25 Tartalomjegyzék 1. Bevezető 2 1.1. Tranzakció elemei................................ 2 1.2. Tranzakció ellenőrzése............................. 3 1.3. Bányászat.................................... 4 2. Elvégzett feladatok 5 2.1. Kulcsgenerálás................................. 5 2.2. Egyenleg lekérdezése.............................. 6 2.3. Új tranzakció létrehozása............................ 6 2.4. Tranzakció validálása.............................. 6 2.5. Bányászat.................................... 7 3. Következtetések 8 1

Ezen a gyakorlaton a blockchain technológián alapuló kriptovaluták működését szimuláltuk és vizsgáltuk egy PázMoney fantázianévre hallgató saját kriptovalután. A feladatok elvégzése során megérthettük a folyamat kulcslépéseit, megismerhettük a tranzakciók nélkülözhetetlen elemeit és a blokképítés alapjait. Jelen jegyzőkönyv első, bevezető részében összefoglalom a kriptovaluta vizsgált műveleteit, leírom az itt elvégzett műveletek okát és (részben) elméleti hátterét. A második rész a labor során elvégzett és lekódolt feladatokat és az ahhoz fűződő magyarázataimat tartalmazza. 1. Bevezető Mivel az előző jegyzőkönyvemben [2] a kriptovaluta elméleti működését nagyvonalakban ismertettem, itt csak a feladatok elvégzése szempontjából megértendő részletekre térek ki. 1.1. Tranzakció elemei Egy kriptovaluta tranzakció a következő elemeket tartalmazza: 1. Hivatkozott utalások 2. Visszajáró összeg 3. Küldő publikus kulcsa 4. Kedvezményezett publikus kulcsa 5. Digitális aláírás Hivatkozott utalások A blockhain-alapú működés lényege, hogy - mivel minden utalás publikus - egy felhasználó egyenlege a blokkchain-ben található tranzakciók alapján számolható. Amikor utalni szeretnénk, a szükséges pénz meglétének bizonyítékaként a tranzakció része lesz azon utalások listája, amelyekben az említett összeget megszereztük. Így bárki a rendszerben könnyedén ellenőrizheti, hogy valóban egy felhasználó csak annyi pénz fölött rendelkezik, amennyit valóban birtokol, és védelmet nyújt olyan csalások ellen, mint pl. ugyanazon összeg többszöri elköltése. Fontos, hogy a hivatkozott utalások érvényessége ellenőrizhető kell legyen, azaz benne kell legyenek a rendszer felhasználóinak többsége által épített láncban, és érvényes aláírással kell rendelkezzen. Ezt a jegyzőkönyv későbbi szakaszában részletesebben kifejtem. 2

Visszajáró összeg Mivel egy tranzakció összegére hivatkozni csak egyetlen alkalommal és a teljes összegre lehet, viszont a hivatkozott lista elemeinek összege nem feltétlen egyezik az utalni kívánt összeggel, szükséges az ún. visszajáró bevezetése. Ennek lényege, hogy a tranzakció során a hivatkozott tranzakciók összértékéből át nem utalt pénzt a küldő visszakapja. Ennek megfelelően, egy újabb tranzakció során a felhasználó hivatkozhat ezen tranzakció visszajárójára. Saját publikus kulcs A rendszerben minden felhasználót a publikus kulcsa azonosít. Egy általunk létrehozott tranzakcióba így ennek két okból is bele kell kerülnie: egyrészt így lehet majd ellenőrizni a tranzakció aláírását, másrészt szükséges a hivatkozott tranzakciók validálásához (olyan tranzakcióra hivatkozhatunk, melynek kedvezményezettje - vagy visszajárójának tulajdonosa - ez a publikus kulcs volt). Megjegyzés, hogy a gyakorlaton leprogramozott rendszerben visszajáró összegre hivatkozni nincs lehetőség. Kedvezményezett publikus kulcsa Ez is mindenképpen szükséges, hiszen ő később ezen publikus kulcs privát párjával készített aláírással igazolhatja, hogy valóban jogosult a tranzakció összegének elköltésére. Digitális aláírás A tranzakció érvényességét a tranzakció küldőjének digitális aláírása bizonyítja. A digitális aláírás menete: 1. Kiszámoljuk a tranzakció elemeinek (hivatkozások, publikus kulcsok, összeg, visszajáró) lenyomatát (hash értékét). 2. Ezt a hash értéket aláírjuk a saját (azaz a küldő) privát kulcsának segítségével. 3. Az aláírást a tranzakció végéhez csatoljuk. Az eljárás lényege, hogy a tranzakcióban található publikus kulcs segítségével a rendszer tetszőleges felhasználója képes ellenőrizni, hogy a tranzakciót valóban az arra jogosult személy - azaz a hivatkozott tranzakciók címzettje - kezdeményezte. 1.2. Tranzakció ellenőrzése A tranzakció ellenőrzésének három része van: egyrész ellenőrizni kell az aláírást, vagyis hogy valóban a jogosult személy kezdeményezte-e az átutalást; másrészt meg kell vizsgálni, hogy a hivatkozott tranzakciók megtalálhatók-e a blockchain-ben, és nem lettek-e már másik tranzakció bemeneteként felhasználva; végül, ellenőriznünk kell, nem tartalmaz-e a rendszer szempontjából értelmetlen adatok a tranzakció. 3

Aláírás ellenőrzése Ennek során kiszámoljuk a tranzakció elemeinek (kivéve a végére csatolt aláírás) lenyomatát, illetve a küldő publikus kulcsával visszafejtjük (RSA) a tranzakció aláírását. Ha a két érték megegyezik, a tranzakciót valóban a publikus kulcs tulajsonosa írta alá. Hivatkozások ellenőrzése Ezen lépés során az elfogadott blockhain elemein végiglépegetve megvizsgáljuk, hogy a hivatkozott tranzakciók valóban léteznek, és nem lettek már másik tranzakció bemeneteként felhasználva (azaz elköltve). Megjegyzés, hogy ezt a lépést a gyakorlat során használt - a laborvezető által kiadott - kód nem végzi el ténylegesen, csupán ennek működését imitálja egy get transactions nevű függvénnyel. Negatív utalások vizsgálata A tranzakció ellenőrzése sotán feltétlen szükséges az érvénytelen adatokat tartalmazó tranzakciók szűrése. Különösen visszaélésre adhat módot a negatív tranzakció engedélyezése, hiszen ennek segítségével pénzteremtésre nyílik lehetőség (nem feltétlen más felhasználók kárára). Egy példa ennek módjára: Alice jogtalan pénzhez szeretne jutni. Ennek érdekében elindít egy -10 BTC összegű utalást Bob számára, hivatkozva egy üres listára. Mivel az üres lista bejövő összege (0) nagyobb, mint a tranzakció kimenő összege (-10), Alice jogosult 10 BTC visszajáróra, melyet a tranzakcióban fel is tüntet. A tranzakciót a rendszer érvényesnek fogadja el, és beleépíti a blokkláncba. Később, mikor Alice fizetni szeretne, hivatkozhat erre a tranzakcióra, hiszen ennek során 10 BTC pénzt kapott visszajáróként, és a tranzakció érvényes, hiszen az aláírás rendben van és benne van a láncban. Érdekesség, hogy mivel Bob (valószínűleg) soha nem fog a -10BTC összegű bejövő tranzakcióra hivatkozni, ő nem veszít pénzt; a példában említett 10BTC összeg minden alap nélkül jelenik meg a rendszerben. Ennek megfelelően, a negatív utalásokat vagy a negatív visszajárókat tartalmazó tranzakciókat a visszaélések elkerülése érdekében tilos érvényesnek elfogadni. 1.3. Bányászat A bányászat lényege, hogy új, tranzakciókat tartalmazó blokkal bővítjük a rendszer által elfogadott láncot, érvényessé téve ezeket. Az általunk vizsgált kriptovaluta Proof-of- Work elvre épül, azaz a blokk hitelességét az előállításához szükséges munka biztosítja (részletesen lásd az előző jegyzőkönyvben [2]). 4

Bányászjutalom A bányászjutalom lényege, hogy a blokk beillesztésekor a bányásznak joga van abba egy saját magának szóló, forrással nem rendelkező, megadott összegű tranzakciót elhelyezni, melyet a többiek érvényesnek fogadnak el. Ennek két fontos szerepe van: egyrészt ez a bányászat haszna, ez ösztönzi a bányászokat a blokklánc építésére és így a rendszer működésben tartására. Másrészt, központi felügyelet híján ez az egyetlen lehetőség, ahogy pénz kerülhet a rendszerbe. Erre a pénzre közgazdasági okokból mindenképp szükség van, ám itt az államok fizetőeszközeivel ellentétben nincs jegybank, mely a pénzteremtés feladatát elláthatná. Tranzakciós díj Ennek lényege, hogy a tranzakció kezdeményezője opcionálisan megjelölhet egy összeget, mely a tranzakcióból az azt blokkba beillesztő bányászt illeti meg. Ez egyrészt ismét a bányászokat ösztönzi a blokk építésére, másrészt - a blokkméretek korlátja miatt - versenyhelyzetet teremt a tranzakciók közt. A sok munkát igénylő blokkba a bányász - nyilvánvaló módon - a több jutalékot tartalmazó blokkot építi majd be. Tranzakciós díj megjelölésére az általunk vizsgált rendszerben nincs lehetőség. Bányászat nehézsége A bányászat nehézségét a hash érték elejére elvárt 0-bitek száma határozza meg, minden újabb 0-bittel a nehézség kétszeresére nő. A gyakorlaton vizsgált rendszer 4 darab hexadecimális 0-val kezdődő hash-t várt el, azaz nagyjából 2 16 lépést kellett a gép megtegyen egy érvényes blokk kibányászásához. A nehézség 5 hexadecimális 0-ra való növelése ennek megfelelően 16-szorosra növelné a nehézséget, a lépésszámot pedig 2 20 -ra. 2. Elvégzett feladatok 2.1. Kulcsgenerálás A gyakorlat első feladata egy új RSA-kulcspár generálása volt, aki a példában létrehozott tranzakcióink kedvezményezettjének szerepét tölti majd be. Ebből a párból csak a publikus részt használjuk. 1 key = RSA.generate(2048); 2 publicγ` key = key.publickey().exportkey('pem'); 3 fileγ` out = open(γ` publicγ` key2.pemγ`, Γ` wbγ` ); 4 fileγ` out.write(publicγ` key); 5

2.2. Egyenleg lekérdezése A felhasználónk egyenlegének leíró függvény megírása is egyszerű feladatnak bizonyult. Felhasználva, hogy ismerjünk a minket kedvezményezettként megjelölő érvényes tranzakciókat, egyszerűen össze kellett adni ezek összegét. Megjegyzés, hogy ez nem elégséges, ha pl. korábbi tranzakcióink visszajáróit is figyelembe szeretnénk venni, de a tökéletes működés megvalósítása túlmutatott jelen gyakorlat célján. A felhasznált python kód: 1 def myγ` balance(self): 2 balance = 0; 3 for input in self.myγ` inputs: 4 balance+=input['amount']; 5 return balance 2.3. Új tranzakció létrehozása Új tranzakció létrehozásánál a következő lépéseket végezzük: 1. Megkeresünk annyi bemenő tranzakciót, melyek összege éppen eléri vagy meghaladja az utalni kívánt összeget (így biztosítva az utalás fedezetét). 2. A tranzakciókat kivesszük a felhasználható tranzakciók listájából (ez egy valós rendszer működése szempontjából nem lényeges, csak a felhasználói egyenlegünk számontartását teszi könnyebbé). 3. Létrehozunk egy új tranzakciót, melybe a kikeresett hivatkozásokat rögzítjük. 4. Beleírjuk a tranzakcióba az utalandó összeget. 5. A hivatkozások és az utalandó összeg különbségéből kiszámoljuk a visszajárót, és beleírjuk a tranzakcióba. 6. Aláírjuk a tranzakciót a publikus kulcsunkkal. 7. A tranzakciót a hozzá tartozó aláírással beletesszük a blokkba kerülésre váró tranzakciók listájába, reménykedve, hogy egy bányász majd beépíti azt a láncba. A lépéseket megvalósító kódot nem másolom ide, hiszen viszonylag hosszú, ámde jól kommentelt, és jelen jegyzőkönyvhöz van csatolva. 2.4. Tranzakció validálása A tranzakció validálásának megoldása lényegében a kiadott kódba írt magyar nyelvű kommentek python-ra fordítását foglalta magába. Ennek lépései a következők: 6

1. Ellenőrzöm, hogy a tranzakciót valóban a feladóként beírt publikus kulcs tulajdonosa írta alá (részleteket lásd fent) 2. Ellenőrzöm, hogy az utalni kívánt összeg megfelel-e a követelményeknek (nemnegatív, jelen példában egész szám a kerekítésből adódó pénzveszteség elkerülése érdekében). 3. Ellenőrzöm, hogy a fedezetként hivatkozott tranzakciók valóban a feladó bevételét gyarapítják, és hogy az ezekből származó bevétel elég-e az utaláshoz és a visszajáróhoz. 4. Ellenőrzöm, hogy a hivatkozott tranzakciók benne vannak a blokkláncban, nem lettek korábban elköltve, és jelenleg is csak egyszer vannak felhasználva (ezt igazából csak szimuláljuk a kiadott kódba hardcode-olt get transactions függvénnyel, mely visszatérít egy listát az érvényesnek mondott tranzakciókról). Ha a folyamat összes tesztjén átmegy a tranzakció, akkor az validnak tekinthető és beépíthető egy következő blokkba. Megjegyzés: a rendszer egyszerűen tartása érdekében a példakódban a saját magunknak címzett utalás nem engedélyezett, így az is fennakad az ellenőrző függvényen. Ugyancsak egyszerűsítés, hogy bevételként csak bejövő utalás használható, visszajáró például már nem. 2.5. Bányászat A bányászat lényege, hogy a bányász (ez lehet a rendszer tetszőleges felhasználója, aki megfelelő erőforrásokkal rendelkezik egy blokk időben történő előállításához) a valid tranzakciókat blokkba gyűjti, majd (hash-en keresztül hivatkozva az előző blokkra) kiszámolja a szükséges nonce értéket és közzéteszi a blokkot. A kódban megírt függvény a következőket teszi: 1. Beilleszti az új blokk első elemeként a bányászjutalmat tartalmazó bemenet nélküli tranzakciót. 2. Listázza blokkbakerülésre váró tranzakciókat, és ellenőrzi ezek érvényességét. 3. Beilleszti a blokkba az előző block hash értékét (vagy 1-t, ha ez az első elem a láncban) 4. Kiszámolha a nonce értéket (azaz kibányássza a blokkot) 5. A beépített tranzakciókat kiveszi a várakozók listájából 6. Közzéteszi, azaz a láncba illeszti a blokkot 7

3. Következtetések A jegyzőkönyvben összefoglaltam a kriptovaluták működésének technikai alapjait, felhasználva az előadáson készített saját jegyzeteimet, a tantárgy wiki oldalán levő diasorokat, valamint az előző gyakorlaton írt kódomat és jegyzőkönyvemet. A gyakorlat során a feladatkiírásban szereplő teendőket sikerült maradéktalanul végrehajtani, a kód működéséhez szükséges részeket megírni és kiegészíteni. A feladat végzése során kipróbáltam a kriptovalutai rendszerek működésének alaplépéseit, így megismerve és megértve a fontos részeket. A jegyzőkönyv mellékletét képezi a gyakorlaton készített python kód, a saját privát kulcsommal generált tranzakciókat tartalmazó blokklánc, és a kísérletben felhasznált publikus kulcsom. A mellékletek a jegyzőkönyvhoz való csatolás mellett, a jegyzőkönyvvel együtt a [1] helyen is elérhetők. Hivatkozások [1] Csutak Balázs weboldala, adatbiztonság és kriptográfia http://users.itk.ppke.hu/~csuba/kripto [2] Csutak Balázs:, 1. gyakorlat jegyzőkönyv (megtalálható a weboldalon) 8