94
TRENČIANSKA UNIVERZITA ALEXANDRA DUBČEKA V TRENČÍNE FAKULTA MECHATRONIKY DIPLOMOVÁ PRÁCA 2007 JÁN ADÁMEK

DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

  • Upload
    ngobao

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

TRENČIANSKA UNIVERZITA ALEXANDRA DUBČEKA V TRENČÍNE

FAKULTA MECHATRONIKY

DIPLOMOVÁ PRÁCA

2007 JÁN ADÁMEK

Page 2: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

TRENČIANSKA UNIVERZITA ALEXANDRA DUBČEKA V TRENČÍNE

FAKULTA MECHATRONIKY

DIPLOMOVÁ PRÁCA

2007 JÁN ADÁMEK

Page 3: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

BEZPEČNÉ A SPOĽAHLIVÉ SIEŤOVÉ APLIKÁCIE

DIPLOMOVÁ PRÁCA

JÁN ADÁMEK

TRENČIANSKA UNIVERZITA ALEXANDRA DUBČEKA V TRENČÍNE

FAKULTA MECHATRONIKY

Katedra informatiky

Študijný odbor: Mechatronika

Študijné zameranie: Informatické zabezpečenie mechatronických systémov

Pedagogický vedúci: Mgr. Jaromír Suchánek

Konzultant: Mgr. Jaromír Suchánek

Page 4: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

Analytický list

Autor: Ján Adámek

Názov práce: Bezpečné a spoľahlivé sieťové aplikácie

Jazyk práce: slovenský

Typ práce: Diplomová práca

Počet strán: 94

Akademický titul: Inžinier

Univerzita: Trenčianska univerzita Alexandra Dubčeka v Trenčíne

Fakulta: Fakulta mechatroniky (FM)

Katedra: Katedra informatiky (KI)

Študijný odbor: Mechatronika

Študijný program: Informatické zabezpečenie mechatronických systémov

Mesto: Trenčín

Vedúci DP: Mgr. Jaromír Suchánek

Konzultant DP: Mgr. Jaromír Suchánek

Dátum odovzdania: 9. 5. 2007

Dátum obhajoby: 31.5. 2007

Kľúčové slová: bezpečnosť, šifrovanie, kódovanie, sieťový protokol

Kategória Konspekt: Výpočtová technika; Počítačové siete

Citovanie práce: Ján Adámek. Bezpečné a spoľahlivé sieťové aplikácie.

Diplomová práca. Trenčín: Trenčianska univerzita Alexandra

Dubčeka v Trenčíne, Fakulta mechatroniky, 2007.

Názov práce v AJ: Secure and reliable network applications

Kľúčové slová v AJ: security, cryptography, coding, network protocol

Page 5: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

Zadanie DP

Page 6: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

Abstrakt

Adámek Ján: Bezpečné a spoľahlivé sieťové aplikácie

[Diplomová práca] / Ján Adámek – Trenčianska univerzita Alexandra Dubčeka v Trenčíne, Fakulta

mechatroniky, Katedra informatiky.

Práca prezentuje možnosť ako zabezpečiť sieťovú komunikáciu pomocou šifrovania

a kódovania. V úvode sú vysvetlené niektoré základné pojmy a definície, neskôr práca

rozoberá rôzne spôsoby šifrovania pomocou verejného i symetrického kľúča. Po ľahkom

úvode do teórie kódovania, prechádza do problematiky BCH-kódov. Zostávajúca časť sa

zaoberá praktickým riešením zabezpečenia. Tvoria ju dve časti. Prvú časť tvorí tunelovací

protokol navrhnutý nad sieťou typu bod-to-bod, využívajúci šifrovanie a kódovanie,

implementovaný v jazyku C++. Druhá časť je implementovaná v jazyku Java a predstavuje

aplikáciu, ktorá využíva protokol z prvej časti na prenos správ a súborov.

Abstract

Adámek Ján: Secure and reliable network applications

[Graduation theses] / Ján Adámek – Alexander Dubček University in Trenčín, Faculty of

Mechatronics, Department of Informatics, Slovakia.

The diploma project presents possibility how to secure network communication with

encryption and using BCH codes. In the first part of this document some of the basic terms

and definitions are explained. Later, we analyze properties of using public and symmetric key

encryption. After easy introduction to the coding theory, we move to the problem of BCH-

codes. The rest of the project is dealing with the practical solution, which consist of two parts.

In the first part we designed tunneling protocol over simple peer-to-peer network with coding

and encrypting. It is implemented in the C++ language. The second part remains of simple

text messaging and files transfer application, which uses protocol from the first part. It is

implemented in the Java language.

Page 7: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

Poďakovanie

Na tomto mieste by som chcel poďakovať všetkým ľuďom, bez ktorých by táto

diplomová práca nemohla vzniknúť. Menovite sa chcem poďakovať svojmu pedagogickému

vedúcemu a zároveň i odbornému konzultantovi, pánovi Mgr. Jaromírovi Suchánkovi za

poskytnutie mnohých užitočných rád a pripomienok, ktoré mi pomohli pri vypracovávaní

tejto diplomovej práce. Ďalej by som sa rád poďakoval svojím najbližším za vytvorenie

vhodných študijných podmienok a za podporu počas celého štúdia. Tiež sa chcem poďakovať

pedagogickým pracovníkom a vedeniu Trenčianskej univerzity Alexanda Dubčeka v Trenčíne

za nadobudnuté vedomosti počas celého štúdia na univerzite.

Čestné prehlásenie

Podpísaný Ján Adámek týmto čestne prehlasujem, že som diplomovú prácu na tému

„Bezpečné a spoľahlivé sieťové aplikácie“ vypracoval samostatne, pod vedením

Mgr.Jaromíra Suchánka a s použitím uvedenej literatúry.

V Trenčíne dňa 3. mája 2007 ...........................................

Page 8: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

Obsah Úvod..........................................................................................................................................12 1 Niektoré matematické pojmy a definície ..........................................................................14

1.1 Prvočísla....................................................................................................................14 1.2 Prvočíselné delitele ...................................................................................................14 1.3 Niektoré vlastnosti prvočísiel ...................................................................................14 1.4 Miller-Rabin test .......................................................................................................15

1.4.1 Algoritmus testu Miller-Rabin..........................................................................15 1.5 Počet prvočísiel.........................................................................................................16 1.6 Postup generovania prvočísiel ..................................................................................17

1.6.1 Voľba bezpečnostného parametra t...................................................................17 1.6.2 Optimálna hranica pokusného delenia B...........................................................18

1.7 Deliteľnosť celých čísiel ...........................................................................................18 1.7.1 Euklidov algoritmus..........................................................................................18 1.7.2 Rozšírený Euklidov algoritmus ........................................................................18

1.8 Grupa ........................................................................................................................19 1.8.1 Grupa nZ ..........................................................................................................19

1.8.1.1 Sčítavanie v 15Z ...........................................................................................19

1.8.1.2 Súčet so záporným číslom ............................................................................20 1.8.1.3 Ďaľšie operácie .............................................................................................20

1.8.2 Grupa *pZ ..........................................................................................................20

1.8.2.1 Násobenie v *11Z ............................................................................................20

1.8.3 Multiplikatívna inverzia....................................................................................20 1.8.4 Abelianova grupa ..............................................................................................21

1.9 Pole ...........................................................................................................................21 1.9.1 Pole pF .............................................................................................................21

1.9.1.1 Príklad výpočtov v 23F .................................................................................22

1.9.2 Pole Galois ........................................................................................................22 1.9.3 Určenie Galoisového poľa ................................................................................22

1.9.3.1 Výpočet tabuľky GF(9).................................................................................22 1.10 Kongruencia..............................................................................................................23 1.11 Kvadratické reziduá ..................................................................................................23 1.12 Eulerové kritérium ....................................................................................................24

2 Kryptografia......................................................................................................................25 2.1 Kryptografia so symetrickým kľúčom......................................................................25

2.1.1 Substitučná a tranzpozičná šifra .......................................................................27 2.1.1.1 Jednoduchá substitučná šifra ........................................................................27 2.1.1.2 Homofónna substitučná šifra ........................................................................28 2.1.1.3 Polyabecedná substitučná šifra .....................................................................28 2.1.1.4 Transpozičná šifra.........................................................................................29

2.1.2 Kompozícia šifier..............................................................................................30 2.1.2.1 Kompozícia funkcií.......................................................................................30 2.1.2.2 Kompozícia a involúcia ................................................................................30

2.1.3 Produktová šifra ................................................................................................31 2.1.4 Prúdové šifry.....................................................................................................32

2.1.4.1 Vernamova šifra............................................................................................32 2.1.5 Priestor kľúčov..................................................................................................33

Page 9: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

2.2 Kryptografia s verejným kľúčom..............................................................................33 2.2.1 Komunikácia dvoch strán v kryptografií s verejným kľúčom ..........................34 2.2.2 Potreba autentifikácie v systémoch s verejným kľúčom ..................................35

2.3 Výmena kľúčov, manažment a certifikácia ..............................................................36 2.3.1 Manažment kľúčov prostredníctvom techník symetrického kľúča ..................36

2.3.1.1 Výhody riešenia ............................................................................................37 2.3.1.2 Nevýhody riešenia ........................................................................................37

2.3.2 Manažment kľúčov prostredníctvom techník verejného kľúča ........................37 2.3.2.1 Výhody riešenia ............................................................................................38 2.3.2.2 Aktívny útočník ............................................................................................38 2.3.2.3 Výhody použitia DTS ako udržovateľa integrity verejného zoznamu .........40 2.3.2.4 Nevýhody použitia DTS ako udržovateľa integrity verejného zoznamu......40 2.3.2.5 Dôveryhodné tretie strany a certifikácia verejného kľúča ............................40 2.3.2.6 Certifikáty verejných kľúčov ........................................................................40

2.4 Porovnanie kryptografie so symetrickým kľúčom a s verejným kľúčom.................41 2.4.1 Výhody kryptografie so symetrickým kľúčom.................................................41 2.4.2 Nevýhody kryptografie so symetrickým kľúčom .............................................41 2.4.3 Výhody kryptografie s verejným kľúčom.........................................................42 2.4.4 Nevýhody kryptografie s verejným kľúčom.....................................................42 2.4.5 Prehľad porovnania...........................................................................................42

2.5 RSA kryptosystém ....................................................................................................43 2.5.1 Algoritmus generovania kľučov RSA...............................................................43 2.5.2 Algoritmus šifrovania RSA ..............................................................................43 2.5.3 Príklad RSA algoritmu......................................................................................44

2.5.3.1 Generovanie páru kľúčov..............................................................................44 2.5.3.2 Šifrovanie......................................................................................................44 2.5.3.3 Dešifrovanie. .................................................................................................44

2.6 ElGamal kryptosystém..............................................................................................44 2.6.1 Algoritmus generovania kľúčov ElGamal ........................................................45 2.6.2 Algoritmus šifrovania ElGamal ........................................................................45 2.6.3 Príklad algoritmu ElGamal ...............................................................................45

2.6.3.1 Generovanie páru kľúčov..............................................................................45 2.6.3.2 Šifrovanie......................................................................................................46 2.6.3.3 Dešifrovanie..................................................................................................46

2.7 Eliptické krivky.........................................................................................................46 2.7.1 Eliptická krivka ako grupa ................................................................................46 2.7.2 Body eliptickej krivky ......................................................................................47

2.8 Menezes Vanstone kryptosystém eliptických kriviek...............................................48 2.8.1 Príklad algoritmu Menezes Vanstone ...............................................................49

2.8.1.1 Generovanie kľúčov......................................................................................49 2.8.1.2 Šifrovanie......................................................................................................49 2.8.1.3 Dešifrovanie..................................................................................................49

2.9 Bezpečnosť kryptosystémov s verejným kľúčom.....................................................50 2.9.1 Niektoré výpočtové problémy kryptografického významu ..............................50

2.9.1.1 Faktorizácia...................................................................................................50 2.9.1.2 RSA problém (RSAP)...................................................................................50 2.9.1.3 Problém kvadratického rezidua (QRP) .........................................................50 2.9.1.4 Druhé odmocniny modulo n (SQROOT)......................................................51 2.9.1.5 Problém diskrétneho logaritmu (DLP) .........................................................51 2.9.1.6 Problém generalizovaného diskrétneho logaritmu (GDLP) .........................51

Page 10: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

2.9.1.7 Diffie-Hellman problém (DHP)...................................................................51 2.9.1.8 Generalizovaný Diffie-Hellman problem (GDHP).......................................51 2.9.1.9 Problém podmnožiny (SUBSET-SUM) .......................................................51

2.9.2 Bezpečnosť kryptosystémov eliptických kriviek..............................................52 3 Kódovanie a samoopravné BCH−kódy ............................................................................53

3.1 Rozdelenie kódovania podľa oblasti využitia...........................................................53 3.2 Kódovanie .................................................................................................................53 3.3 Bezpečnostné kódy ...................................................................................................54 3.4 Objavovanie, zisťovanie chýb ..................................................................................55

3.4.1 Hammingova vzdialenosť.................................................................................55 3.4.2 Minimálna vzdialenosť .....................................................................................55 3.4.3 Hammingova váha ............................................................................................55 3.4.4 Príklad: Kód 2 z 5 .............................................................................................56

3.5 Opravovanie chýb .....................................................................................................56 3.5.1 Príklad opravovania chýb .................................................................................57

3.6 Informačné znaky .....................................................................................................57 3.6.1 Kódovanie informačných znakov .....................................................................58

3.7 BCH kódy .................................................................................................................58 3.7.1 Binárne BCH kódy............................................................................................58

3.7.1.1 Príklad binárneho BCH kódu........................................................................59 3.7.1.2 Kódovanie informačných znakov .................................................................60

3.7.2 BCH kódy s q znakovou abecedou ...................................................................60 3.7.3 Dekódovanie BCH kódu...................................................................................61

3.7.3.1 Euklidov algoritmus......................................................................................61 3.7.3.2 Dekódovanie BCH kódu...............................................................................62 3.7.3.3 Príklad dekódovania BCH ............................................................................64

3.7.3.3.1 Určenie syndrómov.................................................................................64 3.7.3.3.2 Určenie pozícií, korene lokátoru chýb ....................................................64 3.7.3.3.3 Oprava chybných znakov........................................................................65 3.7.3.3.4 Skúška správnosti dekódovania ..............................................................66

4 Bezpečný a spoľahlivý komunikačný kanál .....................................................................67 4.1 Miera bezpečnosti komunikačnej cesty ....................................................................67 4.2 Miera spoľahlivosti komunikačnej cesty ..................................................................67 4.3 Proxy server ..............................................................................................................67

4.3.1 Činnosť proxy servera.......................................................................................68 4.3.2 Kategórie proxy serverov..................................................................................68

4.3.2.1 Aplikačné proxy servery...............................................................................68 4.3.2.2 SOCKS proxy servery ..................................................................................69

4.4 SOCKS protokol .......................................................................................................69 4.4.1 „Objednanie spojenia“ ......................................................................................69

4.5 Tunelovací protokol ..................................................................................................69 4.6 Bezpečný a spoľahlivý komunikačný kanál .............................................................69

4.6.1 Balík..................................................................................................................70 4.6.2 Relácie ..............................................................................................................71 4.6.3 Dátový procesor ................................................................................................71 4.6.4 P2p Pipe ............................................................................................................72 4.6.5 Interpreter balíkov.............................................................................................72 4.6.6 Typy balíkov .....................................................................................................73

4.6.6.1 Balíky pre tunelovací protokol .....................................................................73 4.6.6.2 Balíky pre nastavenie RSA kryptosystému ..................................................73

Page 11: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

4.6.6.3 Balíky pre nastavenie ElGamal kryptosystému ............................................73 4.6.6.4 Ostatné balíky ...............................................................................................74

4.6.7 Testovanie dostupnosti .....................................................................................74 4.6.8 Bod-to-bod verzus klient-server .......................................................................74 4.6.9 Tunelovanie spojenia ........................................................................................74 4.6.10 Zabezpečenie komunikačného kanálu ..............................................................75 4.6.11 Realizácia komunikačného kanálu....................................................................75

5 Aplikácia pre prenos správ a súborov...............................................................................77 5.1 Šifrovanie v Jave.......................................................................................................77

5.1.1 Java JCE............................................................................................................77 5.1.2 Zoznam kryptografických provajderov.............................................................78 5.1.3 Generovanie kľúčov..........................................................................................79 5.1.4 Šifrovanie..........................................................................................................79 5.1.5 Dešifrovanie......................................................................................................79

5.2 Sieťová komunikácia v Jave .....................................................................................79 5.2.1 Adresovanie ......................................................................................................79

5.2.1.1 IP adresovanie - InetAddress, Inet4Address, Inet6Address .........................79 5.2.1.2 Soketové adresovanie - SocketAddress, InetSocketAddress ........................80

5.2.2 Vytváranie TCP spojenia ..................................................................................80 5.2.2.1 Vytvorenie serverovského soketu.................................................................80 5.2.2.2 Vytvorenie klientského soketu......................................................................80 5.2.2.3 Pripojenie pomocou proxy servera ...............................................................80

5.3 Objektová serializácia...............................................................................................81 5.4 Komunikačný protokol .............................................................................................81

5.4.1 Popis komunikačných paketov .........................................................................82 5.4.1.1 Packet............................................................................................................82 5.4.1.2 PacketSendID................................................................................................83 5.4.1.3 PacketSendMyPublicKey .............................................................................83 5.4.1.4 PacketEnableAsymetricCryptography..........................................................83 5.4.1.5 PacketSendData ............................................................................................83 5.4.1.6 PacketRequestReceivingFile ........................................................................83 5.4.1.7 PacketReceivingFileAccepted ......................................................................83

5.4.2 Prenos správ ......................................................................................................84 5.4.3 Prenos súborov..................................................................................................85 5.4.4 Štruktúra menu aplikácie ..................................................................................87 5.4.5 Konzola aplikácie .............................................................................................88

Záver .........................................................................................................................................89 Zoznam skratiek a symbolov ....................................................................................................91 Zoznam obrázkov .....................................................................................................................92 Zoznam tabuliek .......................................................................................................................92 Zoznam použitej literatúry........................................................................................................93 Zoznam príloh...........................................................................................................................94

Page 12: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-12-

Úvod

Komunikáciu môžeme definovať ako odovzdávanie informácií medzi subsystémami

systému, alebo medzi systémom a okolím. Komunikačný protokol je množina pravidiel, ktoré

komunikujúce strany využívajú na vzájomnú komunikáciu. Protokol teda možno

charakterizovať ako pravidlá riadiace syntax, sémantiku a synchronizáciu komunikácie.

Syntax určuje tvar zápisu symbolov a sémantika pravidlá pre význam rôznych kombinácií

symbolov komunikácie.

K procesu odovzdávania informácií môže mať prístup i nepovolaná tretia strana. Tejto

je potom prístupný celý obsah komunikácie. Zabrániť jej v tom môžeme použitím vhodného

kryptosystému. V podstate tak nezabránime prístupu ku komunikácií, ale zneprístupníme jej

obsah. Od voľby kryptosystému potom závisia i následné ďalšie rozšírenia pôvodného

protokolu o výmenu kľúčov, autentifikáciu či prípadne iné vlastnosti.

Odovzdávanie informácií prebieha v určitom prostredí. Aj od tohto prostredia závisí

celková efektivita komunikácie. Rýchlosť, akou sa informácia v prostredí šíri, resp. prenesený

objem informácií za jednotku času a podobne. Vplyv prostredia však môžeme zmierniť

použitím vhodného kódovania, ktoré zabezpečí zmenšenie objemu informácie, kódovanie ako

kompresia, či zvýšenie spoľahlivosti prenosovej cesty, detekčné a samoopravné kódy.

Jedným takým prostredím je internet. Internet predstavuje rozsiahlu komunikačnú sieť.

V tejto sieti potom ľubovolní dvaja užívatelia spolu komunikujú prostredníctvom

internetového protokolu (IP), resp. prostredníctvom množiny protokolov. Množina má

vrstvovitý charakter, kde každá vrstva má presne danú, špecifickú úlohu, ktorú rieši.

Hlavný dôvod, ktorý ma viedol k výberu tejto témy, je ten, že v poslednej dobe sa

čoraz viac spomína problematika bezpečnosti komunikácie v prostredí internetu. Zvyšuje sa

výkon výpočtových prostriedkov, kapacita prenosových médií a príchodom nových

technológií sa otvárajú nové možnosti. Otázka zabezpečenia informácií tak naberá na

vážnosti, hlavne v oblasti spravodajských služieb.

Mojou snahou v tejto práci je popísať rôzne techniky šifrovania a kódovania, navrhnúť

a naprogramovať komunikačný protokol pre spoľahlivú a bezpečnú sieťovú komunikáciu

a aplikáciu využívajúcu tento protokol. Protokol som z praktického hľadiska navrhol ako

tunelovací, využívajúci zostavenie spojenia pomocou SOCKS protokolu. To znamená, že

služby navrhnutého protokolu môžu využívať i iné aplikácie, no podmienkou je podpora

pripojenia pomocou proxy servera. V práci využívam techniky objektovo orientovaného

programovania, preto odkazujem na jednotlivé časti návrhu ako na objekty či triedy. Ich

Page 13: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-13-

názvy pre sprehľadnenie uvádzam v pôvodnom znení, tak ako vznikli pri návrhu

a implementácií v objektovo orientovanom jazyku.

Pre úplnosť spomeňme niektoré v praxi používané protokoly, riešiace túto

problematiku. Na sieťovej úrovni je to IP security (IPsec), ktorý autentifikuje a prípadne

šifruje každý prechádzajúci IP paket. Na aplikačnej Transport Layer Security (TLS), jeho

predchodca Secure Sockets Layer (SSL), prípadne Secure Shell (SSH). Tieto protokoly potom

umožňujú vytváranie tzv. virtuálnych privátnych sietí (virtual private network (VPN)). To sú

súkromné siete, kde spojenia medzi jednotlivými uživateľmi sú tvorené pomocou verejnej

siete (public network (PN)). Spojenia vo verejnej sieti sú však zabezpečené pomocou vyššie

spomínaných protokolov.

Page 14: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-14-

1 Niektoré matematické pojmy a definície

1.1 Prvočísla

Matematicky, prvočíslo je prirodzené číslo, ktoré je deliteľné iba číslom 1 a samým

sebou. Pre príklad uveďme prvých 30 prvočísiel: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41,

43, 47, 53, 59, 61, 67, 71, 79, 83, 89, 97, 101, 103, 107, 109 a 113. Jediné párne prvočíslo je

číslo 2, všetky ostatné prvočísla väčšie ako 2 nazývame nepárne prvočísla. Dlhú dobu nemali

prvočísla žiadne praktické využitie. Až v sedemdesiatych rokoch dvadsiateho storočia, kedy

bol vynájdený koncept kryptografie s verejným kľúčom, sa stali základom prvých

kryptografických algoritmov ako RSA kryptosystém, či Diffie-Hellman algoritmus pre

výmenu kľúčov.

1.2 Prvočíselné delitele

Základná teoréma aritmetiky je založená na tom, že každé kladné celé číslo väčšie ako

1 môžeme napísať ako súčin jedného alebo viac prvočísiel v unikátnom tvare, nie však

v unikátnom poradí. Rovnaké prvočíslo sa môže vyskytovať viackrát. Prvočísla potom

môžeme pokladať za „základné stavebné bloky“ prirodzených čísiel. Príklad: číslo 23244

môžeme napísať ako 14913322 ⋅⋅⋅ , hocijaké iné faktorizácie čísla 23244 budú, okrem

poradia faktorov identické. Význam tohoto predpokladu je jedným z dôvodov, prečo čislo 1

nepatrí do množiny prvočísiel.

1.3 Niektoré vlastnosti prvočísiel

� Nech p je prvočíslo, ak p delí súčin čísiel a a b, potom p delí a alebo p delí b.

� Nech p je prvočíslo a a je ľubovolné celé číslo, potom je apa −⋅ deliteľné p.

� Ak n je kladné celé číslo, existuje prvočíslo p také, že platí

npn 2≤< (1)

� Pre každé prvočíslo p>2 môžeme nájsť prizodzené číslo n, také, že platí

14 ±⋅= np (2)

� Pre každé prvočíslo p>3 môžeme nájsť prizodzené číslo n, také, že platí

16 ±⋅= np (3)

� Nech p je prvočíslo, 2≠p a 5≠p , potom p/1 má v desiatkovej číselnej sústave

nekonečný desatinný rozvoj.

Page 15: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-15-

� Každé zložené číslo môžeme jednoznačne vyjadriť ako súčin prvočísiel. Proces

rozkladu čísla na jednotlivé prvočinitele nazývame faktorizácia.

� Nech p je prvočíslo a G je grupa s pn prvkami, potom G obsahuje prvok rádu p.

� Ak pn je najvyššia mocnina prvočísla p, ktorá delí rád grupy G a G je konečná grupa,

potom G má podgrupu rádu pn.

� Okruh Z/nZ je teleso práve vtedy, keď n je prvočíslo, resp. n je prvočíslo, práve vtedy,

keď

1)( −= nnϕ (4)

1.4 Miller-Rabin test

Miller-Rabinov test, tiež známy ako silný pseudo prvočíselný test, je v praxi

najčastejšie používaný test pravdepodobnej prvočíselnosti. Test je založený na nasledujúcom

fakte: Nech n je nepárne prvočíslo a nech

rn s ⋅=− 21 , (5)

kde r je nepárne. Nech a je ľubovolné celé číslo také, že platí

1),gcd( =na (6)

Potom platí

)(mod1 na r ≡ (7)

alebo

)(mod12 na rj −≡ (8)

pre ľubovolné 10, −≤≤ sjj .

1.4.1 Algoritmus testu Miller-Rabin

Miller-Rabin(n,t)

Vstup: Nepárne celé číslo 3≥n a bezpečnostný parameter 1≥t .

Výstup Rozhodnutie, či n je alebo nie je pravdepodobné prvočíslo.

1. Napíšme rn s ⋅=− 21 , tak, že r je nepárne.

2. Pre každé i z intervalu 1 až t vykonajme nasledujúce kroky

2.1. Zvoľme náhodné celé číslo 22, −≤≤ naa .

2.2. Vypočítajme

nay r mod= (9)

Page 16: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-16-

2.3. Ak 1≠y a 1−≠ ny , potom vykonajme nasledujúce kroky:

1←j .

Pokiaľ 1−≤ sj a 1−≠ ny , vykonajme nasledujúce:

Vypočítajme nyy mod2←

Ak 1=y , potom výsledok, n je zložené číslo.

1+← jj .

Ak 1−≠ ny , potom výsledok, n je zložené číslo.

3. Výsledok, n je pravdepodobné prvočíslo.

1.5 Počet prvočísiel

Nech )(xπ je počet prvočísiel x≤ , potom

1ln/

)(lim =

∞→ xx

x

x

π (10)

To znamená, že pre veliké hodnoty x, môžeme )(xπ vyjadriť ako x

x

ln. Pre príklad, ak

511,052,455)(,1010 == xx π , kde 481,294,434ln

=

x

x. Presnejšie môžeme )(xπ vyjadriť

nasledovne: Nech )(xπ je počet prvočísiel x≤ . Potom pre 17≥x platí

x

xx

ln)( >π (11)

a pre 1>x platí

x

xx

ln25506.1)( <π (12)

Pomer celých čísiel x≤ , ktoré sú prvočíslami je približne xln

1. Kedže polovica

všetkých celých čísiel x≤ sú párne čísla, pomer nepárnych čísiel, ktoré sú prvočíslami je

približne xln

2. Pre príklad, pomer všetkých nepárnych čísiel 5122≤ , ktoré sú prvočíslami je

približne 177

1

)2ln(512

2≈

⋅. Teda môžeme predpokladať, že rozumná stratégia pre výber

náhodného k-bitového (pravdepodobného) prvočísla je opakovaný výber náhodného k-

bitového nepárneho celého čísla, až pokiaľ nenájdeme také celé číslo, ktoré môžeme za

Page 17: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-17-

pomoci Miller-Rabinovho testu s vhodne zvoleným bezpečnostným parametrom t pokladať za

prvočíslo.

Ak náhodné k-bitové nepárne celé číslo n je deliteľné malým prvočíslom, je výpočtovo

menej náročné vylúčiť dané n za pomoci pokusného delenia (trial division), ako s použitím

Miller-Rabinovho testu. Kedže pravdepodobnosť, že náhodné celé čislo n má deliteľa je

relatívne vysoká, pred tým, ako aplikujeme Miller-Rabinov test, mali by sme n testovať

delením malými deliteľmi pod zvolenou hranicou B. Toto je možné ralizovať delením čísla n

všetkými prvočíslami pod B, alebo vypočítaním najväčšieho spoločného deliteľa čisla n

a predvypočítaného súčinu niekoľkých prvočísiel B≤ . Pre príklad, ak B = 256, potom iba

20% nepárnych celých čísiel n prejde testom pokusného delenia, tzn. 80% čísiel je

vyradených predtým ako je vykonaný výpočtovo náročnejší Miller-Rabinov test.

1.6 Postup generovania prvočísiel

Algoritmus: Hľadanie náhodného prvočísla s použitím Miller-Rabinovho testu.

Náhodné hľadanie(k,t)

Vstup: celé čislo k a bezpečnostný parameter t.

Výstup: náhodné k-bitov dlhé prvočíslo.

1. Generujeme nepárne k-bitov dlhé náhodné celé číslo.

2. Použijeme pokusné delenie pre test, či n je deliteľné ľubovoľným nepárnym

prvočíslom < B. Ak áno, vrátime sa na krok 1.

3. Ak Miller-Rabinov test vyhodnotí n ako prvočíslo, vrátime n, inak sa vrátime na

krok 1.

1.6.1 Voľba bezpečnostného parametra t

Z praktického hľadiska sa toleruje chybovosť 80

2

1

generovania pravdepodobného

prvočísla. Pre príklad, pre generovanie 1000-bitového pravdepodobného prvočísla postačí pre

Miller-Rabinov test parameter t = 3, keďže väčšinu zložených čísiel odhalí pokusné delenie.

k t k t k t k t

100 27 500 6 900 3 1400 2

200 15 600 5 1000 3 1600 2

300 9 700 4 1100 3 1900 2

400 7 800 4 1200 3 2050 2

Tab. 1 Voľba bezpečnostného parametra t

Page 18: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-18-

1.6.2 Optimálna hranica pokusného delenia B

Nech E je čas potrebný pre plnú k-bitovú modulárnu exponenciu a nech D je čas

potrebný pre určenie malého prvočísla ako deliteľa k-bitového celého čísla (Hodnoty E a D

závisia od implementácie aritmetiky). Potom hranica pokusného delenia B, ktorá

minimalizuje očakávaný čas algoritmu generovania k-bitového pravdepodobného prvočísla je

približne

D

EB = (13)

Presnejšie určenie hranice B určíme experimentálne. Pre zvýšenie rýchlosti vypočtu

môžeme nepárne prvočísla do hranice B predpočítať a uložiť do tabuľky.

1.7 Deliteľnosť celých čísiel

Celé číslo c je spoločným deliteľom čísiel a i b vtedy, ak c|a a zároveň c|b. Nech d je

nezáporné celé číslo, potom d je najväčší spoločný deliteľ celých čísiel a a b,

),gcd( bad = (14)

vtedy, ak platí, že d je spoločný deliteľ a a b a zároveň ak platí c|d keď platí c|a a c|b.

Ekvivalentne, ),gcd( ba je najväčšie kladné celé číslo, ktoré delí a i b, s výnimkou

0)0,0gcd( = . Príklad: spoločné delitele čísiel 12 a 18 sú }6,3,2,1{ ±±±± , potom

6)18,12gcd( = .

1.7.1 Euklidov algoritmus

Euklidov algoritmus predstavuje výpočet najväčšieho spoločného delitela dvoch čísiel.

Vstup: dve celé nezáporné čísla a a b, ba ≥ .

Výstup: najväčší spoločný delitel čísiel a a b.

1. Pokiaľ 0≠b vykonaj nasledujúce

1.1 Nastav rbbabar ←←← ,,mod .

2. Výsledok a

1.7.2 Rozšírený Euklidov algoritmus

Euklidov algoritmus môžeme rozšíriť o výpočet celých čísiel x a y, takých, že platí

dybxa =⋅+⋅ (15)

Page 19: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-19-

Vstup: dve celé nezáporné čísla a a b, také, že platí ba ≥ .

Výstup: ),gcd( bad = a celé čísla x, y, také, že platí dybxa =⋅+⋅

1. Ak 0=b , potom nastav 0,1, ←←← yxad a vráť výsledok ),,( yxd .

2. Nastav 1,0,0,1 1212 ←←←← yyxx .

3. Pokiaľ 0>b vykonaj nasledujúce kroky:

3.1 1212 ,,, yqyyxqxxbqarb

aq ⋅−←⋅−←⋅−←

← .

3.2 yyyyxxxxrbba ←←←←←← 112112 ,,,,, .

4. Nastav 22 ,, yyxxad ←←← a vráť výsledok ),,( yxd .

1.8 Grupa

Grupa je množina čísiel s vlastnou definovanou aritmetickou operáciou. Unikátne

pravidlá pre aritmetiku grupy sú zdrojom ťažkých problémov nevyhnutných pre

kryptografickú bezpečnosť. V kryptografií sa najčastejšie používajú dve grupy a to

nZ aditívna grupa celých čísiel modulo n a multiplikatívna grupa *pZ celých čísiel modulo p,

kde p je prvočíslo.

1.8.1 Grupa nZ

Grupa nZ používa iba celé čísla z intervalu 0 až n-1. Jej základná operácia je súčet a

končí redukciou výsledku. Výsledkom je celočíselný zvyšok po delení výsledku súčtu celým

číslom n (modulo n). Veľmi dôležitou vlastnosťou grupovej aritmetiky je uzavretosť. To

znamená, že výsledky všetkych vypočtov v grupe sa nachádzajú tiež v grupe samotnej.

Modulárna redukcia číslom n teda zaisťuje správnosť všetkých výsledkov súčtov čísiel

z intervalu 0 až n-1.

1.8.1.1 Sčítavanie v 15Z

Príklad sčítavania v 15Z . Aditívna grupa 15Z používa celé čísla z intervalu 0 až 14.

715mod2215mod)1210( ==+

015mod1515mod)114( ==+

v 15Z , 71210 =+ , 0114 =+ všetky výsledky ležia na intervale 0 až 14.

Page 20: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-20-

1.8.1.2 Súčet so záporným číslom

Každé číslo x v aditívnej grupe má aditívny inverzný element, čo je celé číslo –x, také,

že platí

0)( =−+ xx (16)

v grupe. V 15Z , 114 =− , kedže 015mod1515mod)114( ==+ .

1.8.1.3 Ďaľšie operácie

Keďže sčítanie je hlavná operácia aditívnej grupy nZ , ďaľšie operácie môžu byť z nej

odvodené. Odčítanie yx − môžeme vykonať ako sčítanie nyx mod)(−+ . V 15Z ,

1215mod111)4(141 =+=−+=− . Násobenie v nZ môžeme definovať ako opakované

sčítanie. Pre príklad násobenie )9(4 ⋅ v 15Z môžeme uskutočniť ako sčítanie

615mod3615mod9999 ==+++ .

1.8.2 Grupa *pZ

Multiplikatívna grupa *pZ používa iba celé čísla z intervalu 1 až p-1, kde p je

prvočíslo, a jej základná operácia je násobenie. Násobenie končí redukciou výsledku, resp za

výsledok pokladáme zvyšok po delení výsledku násobenia číslom p, toto zaisťuje uzavretosť.

1.8.2.1 Násobenie v *11Z

Príklad násobenia. Multiplikatívna grupa *11Z používa celé čísla z intervalu 1 až 10.

611mod2811mod74 ==⋅

111mod4511mod59 ==⋅

V *11Z , 674 =⋅ , 159 =⋅ všetky výsledky ležia na intervale 1 až 10.

1.8.3 Multiplikatívna inverzia

Každé číslo x v multiplikatívnej grupe má multiplikatívny inverzný element., čo je

číslo 1−x , také, že platí

11 =⋅ −xx (17)

v grupe. V *11Z , 59 1 =− kedže 111mod59 =⋅ .

V multiplikatívnej grupe, každý element musí mať multiplikatívnu inverziu. Uvažujme

grupu *15Z . 15 je zložené číslo, tzv kompozit ( 1535 =⋅ ). Na celom intervale 1 až 14 je

Page 21: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-21-

možné definovať násobenie končiace redukciou modulo 15, avšak nie je možné na celom

intervale definovať inverzné elementy. Číslo 6 nemá inverziu, keďže nie je možné nájsť také

číslo y, že platí

115mod6 =⋅ y (18)

1.8.4 Abelianova grupa

Aritmetická operácia je komutatívna vtedy, ak poradie argumentov nie je dôležité.

V oblasti bežných čísiel, sčítanie i násobenie sú komutatívne operácie. Pre príklad 2992 ⋅=⋅

a 2992 +=+ , no odčítanie či delenie nie sú komutatívne operácie, keďže platí 2992 −≠−

a 2/99/2 ≠ .

Grupa sa nazýva abelianova, iba ak jej hlavná operácia je komutatívna. Teda aditívna

grupa je abelianova iba ak pre všetky elementy a a b z grupy platí

abba +=+ (19)

Multiplikatívna grupa je abelianova, ak pre všetky elementy a a b z grupy platí

abba ⋅=⋅ (20)

Aditívna grupa nZ a multiplikatívna grupa *pZ sú abelianove grupy.

1.9 Pole

Pole je množina elementov s dvoma vlastne definovanými aritmetickými operáciami,

najčastejšie súčet a súčin. Všetky prvky poľa patria do adítívnej abeliánovej grupy a všetky

nenulové prvky patria i do multiplikatívej abeliánovej grupy. To znamená, že všetkým

prvkom poľa môžeme nájsť ich aditívnu inverziu a všetkým nenulovým prvkom poľa

môžeme nájsť multiplikátívnu inverziu. Podobne ako v grupách, ďaľšie operácie v poli môžu

byť definované použitím hlavných dvoch operácií.

Pole sa nazýva finítne, vtedy, ak má konečný počet prvkov. Najčastejšie používané

polia sú pF , kde p je prvočíslo a pole mF2 .

1.9.1 Pole pF

Finítne pole pF , kde p je prvočíslo, pozostáva z čísiel z intervalu 0 až 1−p . Jeho

operácie sú sučet a súčin, ktoré sú definované podobne ako pre grupy nZ a *pZ , resp. všetky

výpočty končia redukciou modulo p. Obmedzenie, že p musí byť prvočíslo je nevyhnutné pre

to, aby všetky nenulové prvky mali svoju multiplikatívnu inverziu. Podobne ako nZ a *pZ ,

Page 22: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-22-

daľšie operácie ako delenie, odčítanie, umocňovanie v poli pF sú odvodené pomocou

definícií súčtu a súčinu.

1.9.1.1 Príklad výpočtov v 23F

623mod2923mod11410 ==−⋅

1023mod7 1 =− kedže 123mod7023mod107 ==⋅

1423mod10623mod7623mod7/51223mod7/)8( 13 =⋅=⋅== −

1.9.2 Pole Galois

Pole )(xq

Z p , kde p je prvočíslo a )(xq je nerozložiteľný polynóm stupňa n nad pZ sa

nazýva Galoisové pole a označuje sa )( npGF . Inak povedané, je to algebraické rozšírenie

poľa pZ nerozložiteľným polynómom stupňa n.

1.9.3 Určenie Galoisového poľa

Jednoduchý spôsob, ako určit Galoisove pole

)()(

xq

ZpGF

pn = (21)

je taký, že určíme primitívny prvok a a vyjadríme všetky nenulové prvky (všetky nenulové

polynómy premennej x stupňa menšieho ako n) v tvare ia . Potom súčet v )( npGF je

obyčajným súčtom polynómov a súčin je daný ako

jiji aaa +=⋅ (22)

1.9.3.1 Výpočet tabuľky GF(9)

Kedže 239 = , potom 3=p a 2=n a kedže 3=p , potom majme pole 3Z rozšírené

nerozložiteľným polynómom druhého stupňa

2)( 2 ++= xxxq (23)

Potom prvky )(

3

xq

Z sú polynómy stupňa menšieho ako 2. Premenná spĺňa rovnicu

022 =++ xx (24)

potom mocninami ix môžeme vyjadriť kompletnú tabuľku GF(9).

Page 23: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-23-

( )

( ) ( )( ) ( )

( ) ( )( )

1

11421222

22412222

22

22621222222

2225122212

122

1

:9

08

267

256

45

234

223

2

1

0

==

+=+=++=+=×+=×=

+=+=+×==×=×=

=×=×=

=+=++×=+=×+=×=

+=+=++×=+=×+=×=

+=−−=

=

=

xx

xxxxxxxxxxx

xxxxxxxxx

xxxxx

xxxxxxxxxx

xxxxxxxxxxx

xxx

xx

x

GF

Tab. 2 Kompletná tabuľka GF(9). 1.10 Kongruencia

Nech a a b sú celé čísla a m je kladné celé číslo, potom ak m delí ab − , môžeme

napísať

)(modmba ≡ (25)

Daný výraz čítame ako „a je kongruentné – zhodné ku b modulo m“ . Celé kladné číslo

m nazývame modulus. Výraz )(modmba ≡ platí iba vtedy a len vtedy ak

mbma modmod = (26)

Dôkaz je uvedený v knihe [1].

1.11 Kvadratické reziduá

Definícia: Nech p je nepárne prvočíslo a x je celé číslo, také, že platí 11 −≤≤ px .

Definujme x ako kvadratické reziduum modulo p ak kongruencia

)(mod2 pxy ≡ (27)

má riešenie pZy∈ a definujme x ako kvadratické nereziduum modulo p ak platí, že

0mod ≠px (28)

a x nie je kvadratické reziduum modulo p.

Príklad: Kvadratické reziduá modulo 11 sú 1,3,4,5 a 9. Kedže v pZ platí 1)1( 2 =± ,

3)5( 2 =± , 4)2( 2 =± , 5)4( 2 =± a 9)3( 2 =± .

Page 24: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-24-

1.12 Eulerové kritérium

Nech p je nepárne prvočíslo. Potom x je kvadratické reziduum modulo p ak a iba ak

platí

)(mod12

)1(

px

p

≡−

(29)

Dôkaz je uvedený v knihe [1].

Page 25: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-25-

2 Kryptografia

Kryptografia je vedná disciplína, zaoberajúca sa tvorbou šifier, určených pre bezpečné

ukrývanie informácií. Zameriava sa na bezpečnosť informačných systémov. Na

� Dôvernosť/utajenie (confidentiality) informácií počas prenosu, počas uloženia,...

� Autentizáciu (authentication), overenie a potvrdenie pravosti odosielateľa,

� Integritu (data integrity) dát, celistvosť a správnost obsahu prenášaných správ.

Kryptosystém je definovaný päticou (P,C,K,E,D), kde

� P je konečná množina možných vstupných správ

� C je konečná množina možných šifrovaných správ

� K je priestor kľúčov, konečná množina možných kľúčov

Pre každé Kk ∈ existuje šifrovacie pravidlo Eek ∈ a zodpovedajúce dešifrovacie

pravidlo Dd k ∈ . Všetky CPek →: a PCd k →: sú funkcie, také, že platí

xxed kk =))(( (30)

pre každú vstupnú správu Px∈ .

Tretia strana

Správa Cieľ

Ee(m) = c

ŠifrovanieDd(c) = m

Dešifrovanie

m

c

m

Bob

Nezabezpečený kanál

Obr. 1 Komunikácia dvoch strán s využitím šifrovania

2.1 Kryptografia so symetrickým kľúčom

Nech }:{ KeEe ∈ je množina šifrovacích transformácií a nech }:{ KdDd ∈ je

množina zodpovedajúcich dešifrovacích transformácií, kde K je priestor kľúčov. Šifrovaciu

schému môžeme považovať za schému so symetrickým kľučom, ak pre každý asociovaný

šifrovací pár kľúčov (e,d) je výpočtovo ľahké určiť d, za predpokladu, že poznáme e, a určit e

poznaním d. V bežných schémach šifrovania so symetrickým kľúčom uvažujeme e = d.

Page 26: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-26-

Príklad, nech },,,...,,,{ ZYXCBAA = je anglická abeceda, nech M a C je množina

všetkých reťazcov dlžky 5 nad A. Kľúč e je vybraný ako permutácia na A. Pre šifrovanie je

správa rozdelená na časti po 5 písmen (s vhodnou výplňou, ak dĺžka správy nie je násobkom

piatich). Permutácia e je aplikovaná na každé písmeno. Pre dešifrovanie je na každé písmeno

šifry aplikovaná inverzná permutácia

1−= ed (31)

Pre príklad, predpokladajme, že kľúč e je vybraný ako permutácia, ktorá mapuje každé

písmeno na iné písmeno vzdialené v abecede o 3 miesta doprava.

=

XYZABCNOPQRSTUVWDEFGHIJKLM

UVWXYZKLMNOPQRSTABCDEFGHIJe

Správa

m = THISC IPHER ISCER TAINL YNOTS ECURE

je zašifrovaná ako

)(mEc e= (32)

c = WKLVF LSKHU LVFHU WDLQO BQRWV HFXUH

Na obr.2 je znázornená dvojstranná komunikácia s použitím symetrického kľúča.

Dešifrovací kľúč d je možné vypočítať pomocou e.

Tretia strana

Správa Cieľ

Ee(m) = c

ŠifrovanieDd(c) = m

Dešifrovanie

m

c

m

Alica Bob

Nezabezpečený kanál

Zdroj kľúčove Zabezpečený kanál

e

Obr. 2 Využitie šifrovania so zabezpečeným kanálom pre výmenu kľúča

Jedna z hlavných otázok v systéme šifrovania so symetrickým kľúčom je nájsť

efektívnu metódu pre bezpečné dohodnutie a výmenu kľúča. Tento problém je známy ako

problém distribúcie kľúča.

Page 27: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-27-

Predpokladáme, že všetky strany poznajú šifrovacie/dešifrovacie transformácie. Ako

sme uviedli vyššie, jediná informácia, ktorú treba ponechať v utajení je kľúč d. Kedže však

ide o šifrovanie so symetrickým kľúčom, kľúč d môže byť odvodený z kľúča e a preto i kľúč

e musí byť uchovaný v tajnosti. Na obr. 2 je šifrovací kľúč e transportovaný z jednej strany

na druhú s predpokladom, že obe strany vedia vypočítať dešifrovací kľúč d.

Šifrovacie schémy so symetrickým kľúčom bežne rozdeľujeme do dvoch tried a to:

blokové šifry a prúdové šifry.

Definícia: Bloková šifra, je šifrovacia schéma, ktorá rozdeľuje nešifrované správy do

blokov pevnej dĺžky t a v danom čase šifruje jeden blok.

Veľa známych techník šifrovania so symetrickým kľúčom môžeme považovať za

blokové šifry. Blokové šifry môžeme ďalej rozdeliť do dvoch dôležitých tried a to:

substitučná šifra a tranzpozičná šifra.

2.1.1 Substitučná a tranzpozičná šifra

Substitučné šifry sú blokové šifry, ktoré zamieňajú symboly, prípadne skupiny

symbolov inými symbolmi či skupinami symbolov.

2.1.1.1 Jednoduchá substitučná šifra

Definícia: Nech A je abeceda s q symbolmi a M je množina všetkých reťazcov dlžky t

nad A. Nech K je množina všetkých permutácií na množine A. Definujme pre každé

Ke∈ šifrovaciu transformáciu eE nasledovne:

ccccmemememE tte =⋅⋅⋅=⋅⋅⋅= )())()()(()( 2121 (33)

kde Mmmmm t ∈⋅⋅⋅= )( 21 .

Inými slovami, každý symbol v t-tici, sa na základe pevnej permutácie e zamení iným

symbolom z abecedy A. Pre dešifrovanie )( 21 tcccc ⋅⋅⋅= vypočítame inverzú permutáciu

1−= ed a

mmmmcdcdcdcD ttd =⋅⋅⋅=⋅⋅⋅= )())()()(()( 2121 (34)

eE potom môžeme nazvať jednoduchou substitučnou šifrou alebo mono-abecednou

substitučnou šifrou.

Počet jednoznačných substitučných šifier je q! a je nezávislý od veľkosti bloku v šifre.

Jednoduché substitučné šifry nad malými blokmi predstavujú nedostatočnú bezpečnosť aj keď

priestor kľúčov je extrémne veľký. Ak ako abecedu použijeme anglickú abecedu, potom

Page 28: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-28-

veľkosť priestoru kľúčov je 26104!26 ⋅≈ , avšak použitý kľúč môže byť veľmi ľahko odhalený

preskúmaním neveľkého množstva šifrovaných správ, keďže frekvencia používania písmen

abecedy je obsiahnutá v i šifrovanej správe. Pre príklad, písmeno E sa v bežnom anglickom

texte vyskytuje častejšie ako iné písmena. Potom písmeno, ktoré sa najčastejšie vyskytuje

v sekvencií šifrovaných blokov pravdepodobne zodpovedé písmenu E v pôvodnej správe.

Analýzou frekvencie výskytu písmen v blokoch môžeme potom určiť šifrovací kľúč.

2.1.1.2 Homofónna substitučná šifra

Definícia: Každému symbolu Aa∈ priraďme množinu )(aH reťazcov o t symboloch

s obmedzením, takým že množiny AaaH ∈),( sú párovo disjunktné. Homofónna substitučná

šifra zamieňa každý symbol a v bloku spávy s náhodne vybraným reťazcom z )(aH . Pre

dešifrovanie reťazca c o dĺžke t symbolov, musíme určiť Aa∈ , také, že platí )(aHc∈ .

Šifrovací kľúč potom pozostáva z množín )(aH .

Príklad: Nech }10,00{)(},,{ == aHbaA a }11,01{)( =bH . Správu ab potom môžeme

zašifrovať do nasledujúcej podoby: 0001, 0011, 1001, 1011.

}1010,1000,0010,0000{→aa

}1011,1001,0011,0001{→ab

}1110,1100,0110,0100{→ba

}1111,1101,0111,0101{→bb

Ľubovoľný 4 bitový unikátny identifikátor a jeho dešifrovaný tvar.

2.1.1.3 Polyabecedná substitučná šifra

Definícia: Polyabecedná substitučná šifra je bloková šifra, s dĺžkou bloku t nad

abecedou A majúca nasledovné vlastnosti:

1. Priestor kľúčov K pozostáva s usporiadaných množín t permutácií ),...,,( 21 tppp ,

kde každá permutácia ip je definovaná na množine A.

2. Šifra správy )...( 21 tmmmm = pomocou kľúča

),...,,( 21 tpppe = (35)

je daná

))()()(()( 2211 tte mpmpmpmE ⋅⋅⋅= (36)

Page 29: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-29-

3. Dešifrovací kľúč asociovaný s ),...,,( 21 tpppe = je

),...,,( 112

11

−−−= tpppd (37)

Príklad: Vigenèreova šifra. Nech },,,...,,,{ ZYXCBAA = a 3=t , zvoľme

),,( 321 pppe = , kde 1p mapuje každé písmeno na písmeno posunuté v abecede o tri pozície

doprava, 2p o sedem a 3p o desať pozícií doprava. Potom, ak

m = THI SCI PHE RIS CER TAI NLY NOT SEC URE ,

tak

== )(mEc e WOS VJS SOO UPC FLB WHS QSI QVD VLM XYO .

Polyabecedné šifry majú oproti jednoduchým substitučným šifrám výhodu v tom, že

hodnoty frekvencie výskytu symbolov nie sú obsiahnuté v šifrovanom tvare. V príklade je

písmeno E šifrované ako O, aj ako L. No polyabecedné šifry nie sú výraznejšie náročnejšie na

kryptoanalýzu. Metóda analýzy je podobná analýze jednoduchej substitučnej šifry. Písmená

šifrovanej správy môžeme rozdeliť do t skupín, kde skupina tii ≤≤1, , pozostáva zo

šifrovaných písmen odvodených s použitím permutície ip . Potom frekvenčná analýza môže

byť vykonaná na každej skupine.

2.1.1.4 Transpozičná šifra

Ďaľšia trieda šifier so symetrickým kľúčom je jednoduchá transpozičná šifra, ktorá

jednoducho obmieňa znaky v bloku.

Definícia: Uvažujme schému blokového šifrovania so symetrickým kľúčom o dĺžke

bloku t. Nech K je množina všetkých permutácií na množine },...,2,1{ t . Pre každé Ke∈

definujme šifrovaciu funkciu

)()( )()2()1( teeee mmmmE ⋅⋅⋅= (38)

kde Mmmmm t ∈⋅⋅⋅= )( 21 , M je priestor správ. Množina všetkých transformácií je nazývaná

jednoduchou transpozičnou šifrou. Dešifrovací kľúč, korešpondujúci s e je inverznou

permutáciou 1−= ed . Pre dešifrovanie )( 21 tcccc ⋅⋅⋅= treba vypočítať

).()( )()2()1( tdddd ccccD ⋅⋅⋅= (39)

Jednoduchá transpozičná šifra chráni symboly daného typu na úrovni bloku a preto je

ľahko kryptoanalyzovateľná.

Page 30: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-30-

2.1.2 Kompozícia šifier

Kompozícia je spôsob, ako pomocou jednoduchších funkcií vytvoriť zložitejšie.

2.1.2.1 Kompozícia funkcií

Definícia: Nech S,T a U sú finítne množiny a nech TSf →: a UTg →: sú funkcie.

Kompozícia g s f, ktorú značime fg o (alebo jednoduchšie gf) je funkcia z S do U, zobrazená

na obr. 3 a definovaná ako

))(())(( xfgxfg =o (40)

pre všetky Sx∈ .

a

c

b

1

4

3

2

s

v

u

t

f g

S

T U

a

c

b

S

s

v

u

t

U

g o f

Obr. 3 Kompozícia fg o funkcií g a f

Kompozícia môže byť ľahko rozšírená o viac ako dve funkcie. Pre funkcie tfff ,...,, 21

definujeme 12 fff t ooo ⋅⋅⋅ za predpokladu, že doména tf je rovná kodoméne 1−tf .

2.1.2.2 Kompozícia a involúcia

Involúcia je jednoduchá trieda funkcií so zaujímavou vlastnosťou

xxEE kk =))(( (41)

pre všetky x z domény kE . Potom kk EE o je totožná funkcia.

Poznámka: Kompozícia dvoch involúcií nemusí byť nevyhnutne involúciou. Involúcie

môžu byť skladané tak, že výsledkom sú potencionálne viac zložité funkcie, ktorých inverzia

je ľahko odvoditeľná. Toto je dôležitý fakt pre dešifrovanie. Pre príklad: ak tkkk EEE ,...,,

21 sú

involúcie, potom inverzia

tkkkk EEEE ⋅⋅⋅=21

(42)

je

11

1kkkk EEEE

tt⋅⋅⋅=

− (43)

Page 31: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-31-

Kompozícia involúcií má opačné poradie.

1

4

3

2

4

3

2

1 1

4

3

2

4

3

2

1 1

4

3

2

4

3

2

1

g o fgf

Obr. 4 Kompozícia fg o involúcií g a f nie je involúcia

2.1.3 Produktová šifra

Jednoduché substitučné a transpozičné šifry samé o sebe neposkytujú veľmi vysokú

úroveň bezpečnosti. No kombináciou týchto transformácií je možné získať silné šifry.

Príkladom produktovej šifry je skladba 2≥t transformácií tkkk EEE ⋅⋅⋅

21, kde každé

tiEik

≤≤1, je substitučná alebo transpozičná šifra. Skladbu substitúcie a transpozicie

môžeme nazývať kruhom.

Príklad: Nech KCM == je množina všetkých binárnych reťazcov dĺžky 6. Počet

elementov v M je 6426 = . Nech )( 621 mmmm ⋅⋅⋅= . Definujme

kmmEk ⊕=)()1( , Kk∈ (44)

)()( 321654)2( mmmmmmmE = (45)

Operáciu ⊕ voláme exclusive-OR (XOR) a je definovaná nasledovne: 000 =⊕ ,

110 =⊕ , 101 =⊕ , 011 =⊕ . )1(kE je polyabecedná substitučná šifra a )2(E je transpozičná

šifra (nemá vplyv na kľúč). Produktom )2()1( EEk je kruh.

Poznámka: Neporiadok a rozptýlenie. Substitúciu v kruhu môžeme považovať ako

pridanie neporiadku do šifrovacieho procesu a transpozíciu ako pridanie rozptýlenia. Pridanie

neporiadku znamená vytvoriť čo najzložitejší vzťah medzi kľúčom a šifrovanou správou.

Rozptýlenie znamená preskupenie a rozšírenie bitov v správe tak, že hociaká redundancia

v pôvodnej správe je rozptýlená cez šifrovanú správu. Za kruh potom môžeme považovať

pridanie neporiadku a rozptýlenia do šifrovacieho procesu. Veľa moderných blokových

šifrovacích systémov aplikuje viacero kruhov za sebou.

Page 32: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-32-

2.1.4 Prúdové šifry

Prúdove šifry predstavujú dôležitú triedu schém šifrovania so symetrickým kľúčom.

Ide vlastne o veľmi jednoduché blokové šifry s dĺžkou bloku rovnej jednej. Prúdové šifry

nepodporujú šírenie chyby, čo je výhodné v situáciách, kedy sa očakáva vysoká

pravdepodobnosť výskytu chyby počas prenosu. Tiež môžu byť použité, v systémoch, kde

dáta musia byť spracovávané po symboloch z dôvodu limitovania vyrovnávacej pamäte.

Definícia: Nech K je priestor kľúčov pre množinu šifrovacích transformácií.

Sekvenciu symbolov Keeee i ∈⋅⋅⋅321 nazývame prúd kľúčov.

Definícia: Nech A je abeceda s q symbolmi a nech eE je jednoduchá substitučná šifra

s blokom dĺžky 1, kde Ke∈ . Nech ⋅⋅⋅321 mmm je pôvodný reťazec a nech ⋅⋅⋅321 eee je prúd

kľúčov z K. Potom výsledkom prúdovej šifry je reťazec ⋅⋅⋅321 ccc , kde

)( iei mEci

= (46)

Ak id je inverziou ie , potom

iid mcDi

=)( (47)

dešifruje šifrovaný reťazec.

Prúdove šifry aplikujú jednoduché šifrovacie transformácie na základe prúdu kľúčov.

Prúd kľúčov môže byť generovaný náhodne, alebo pomocou algoritmu, ktorý generuje prúd

kľúčov z prvotného malého prúdu nazývaného seed, alebo zo seed a predchádzajúcich

zašifrovaných symbolov. Takýto algoritmus sa nazýva generátor prúdu kľúčov.

2.1.4.1 Vernamova šifra

Definícia: Vernamova šifra je prúdová šifra definovaná nad abecedou }1,0{=A .

Binárna správa tmmm ⋅⋅⋅21 je šifrovaná pomocou binárneho reťazca kľúčov tkkk ⋅⋅⋅21

rovnakej dĺžky tak, že výsledný šifrovaný reťazec je tccc ⋅⋅⋅21 , že platí

tikmc iii ≤≤⊕= 1, (48)

Ak je prúd kľúčov vybraný náhodne a nie je použitý opakovane, Vernamova šifra má

charakter jednorázového systému (one-time system, one-time pad).

Vernamova šifra sa v podstate skladá z dvoch substitučných šifier 0E a 1E na množine

A. 0E predstavuje jednoduché mapovanie 00→ , 11→ a 1E mapuje 10→ a 01→ . Ak

prúd kľučov obsahuje práve 0, aplikuje sa 0E , inak 1E .

Page 33: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-33-

Viacnásobné použitie reťazca kľučov nie je bezpečné. Pre príklad, ak tccc ⋅⋅⋅21 a

tccc ′⋅⋅⋅′′ 21 sú dva reťazce, šifrované pomocou rovnakého prúdu kľúčov tkkk ⋅⋅⋅21 , potom

iii kmc ⊕= (49)

iii kmc ′⊕′=′ (50)

iiii mmcc ′⊕=′⊕ (51)

Redundancia následne uľahčuje kryptoanalýzu.

Jednorázový systém sa javí ako teoreticky nenapadnuteľný. Ak má kryptoanalytik

k dispozicí reťazec tccc ⋅⋅⋅21 šifrovaný pomocou náhodného iba raz použitého reťazca

kľúčov, nemôže urobiť nič viac, ako odhadovať, že pôvodná správa môže byť hocijaký

binárny reťazec dĺžky t. Teoreticky, nenapadnuteľný systém vyžaduje náhodný kľúč, resp.

reťazec kľúčov rovnakej dĺžky ako má pôvodná správa. Toto však znižuje praktičnosť celého

systému, no v niektorých špeciálnych prípadoch je to nevyhnutné. Údajne, donedávna bola

komunikácia medzi Moskvou a Washingtonom zabezpečená pomocou jednorázového

systému a transport kľúčov bol zaistený pomocou dôveryhodného kuriéra.

2.1.5 Priestor kľúčov

Veľkosť priestoru kľúčov predstavuje počet dostupných šifrovacích/dešifrovacích

párov kľúčov v šifrovacom systéme. Pre príklad: transpozičná šifra s dĺžkou bloku t má t!

šifrovacích funkcií. Každá sa dá jednoducho popísať permutáciou a nazývame ju kľúčom.

Dalo by sa povedať, že bezpečnosť kryptosystému môžeme hodnotiť z hľadiska

veľkosti priestoru kľúčov, no nie je to celkom tak.

Nevyhnutná, no nie postačujúca podmienka bezpečnosti kryptosystému je dostatočná

veľkosť priestoru kľúčov, taká, aby zabránila úplnému prehľadaniu. Pre príklad: priestor

kľúčov jednoduchej substitučnej šifry je 26104!26 ⋅≈ . Priestor kľúčov polyabecednej šifry je

793 107)!26( ⋅≈ . Úplné prehľadanie celého priestoru kľúčov je z časového hľadiska prakticky

nemožné, resp. neefektívne, no i tak sú obe šifry relatívne slabé a poskytujú nízku úroveň

bezpečnosti.

2.2 Kryptografia s verejným kľúčom

Nech }:{ KeEe ∈ je množina šifrovacích transformácií a nech }:{ KdDd ∈ je

množina zodpovedajúcich dešifrovacích transformácií, kde K je priestor kľúčov. Uvažujme

ľubovoľný pár asociovaných šifrovacích/dešifrovacích kľúčov ),( de DE a predpokladajme, že

Page 34: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-34-

každý pár má vlastnosť, takú, že s daným eE a ľubovolnou šifrovanou správou Cc∈ nie je

možné zistiť dešifrovanú správu Mm∈ , takú, že platí

cmEe =)( (52)

Táto vlastnosť naznačuje, že z daného e nie je možné zistiť zodpovedajúci dešifrovací kľúč d.

2.2.1 Komunikácia dvoch strán v kryptografií s verejným kľúčom

Predpokladajme komunikáciu dvoch strán, konkrétnejšie medzi Alicou a Bobom. Bob

vygeneruje pár kľúčov (e,d). Bob zašle Alici svoj šifrovací kľúč e, nazývaný tiež verejný

kľúč, no svoj dešifrovací kľúč d, nazývaný tiež privátny kľúč, musí nechať utajený

a zabezpečený. Následne na to Alica zašle Bobovi správu m, na ktorú aplikuje šifrovaciu

transformáciu podľa Bobovho kľuča a teda vlastne zašle Bobovi šifrovanú správu )(mEc e= .

Bob dešifruje šifrovanú správu aplikovaním inverznej transformácie dD unikátne určenej

hodnotou d.

Pasívna tretiastrana

Správa Cieľ

Ee(m) = c

ŠifrovanieDd(c) = m

Dešifrovanie

m

c

m

Alica Bob

Nezabezpečený kanál

Zdroj kľúčove

d

Nezabezpečený kanál

Obr. 5 Šifrovanie využívajúce techniky verejného kľúča

Komunikácia medzi Alicou a Bobom prebieha cez nezabezpečený kanál. Cez tento

kanál sa prenášajú šifrované správy ako i samotný šifrovací kľúč. Obr. 6 predstavuje

myšlienku, kde tri rôzne entity 1A , 2A a 3A posielajú Bobovi správy. Poznámka: ak 1A zničí

správu 1m po jej zašifrovaní do správy 1c , potom 1A už nemôže obnoviť správu 1m z 1c .

Analogicky si to môžeme predstaviť ako poštovú schránku, od ktorej má kľúč iba Bob.

Hocikto, kto pozná jeho verejnú adresu, mu do nej môže vhodiť správu, no iba Bob s jeho

Page 35: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-35-

tajným kľúčom môže tieto správy vyzdvihnúť. Šifrovanie s verejným kľúčom, predpokladá,

že znalosť verejného kľúča e neumožňuje výpočet privátneho kľúča d.

Ee(m

1) = c

1

Dd (c2) = m

2Ee(m

2) = c

2

Ee(m

3) = c

3

A1

A2

A3

Dd (c1) = m

1

Dd (c3) = m

3

Bob

c1

c3

c2

e

e

e

Obr. 6 Schématické znázornenie použitia šifrovania s verejným kľúčom

2.2.2 Potreba autentifikácie v systémoch s verejným kľúčom

Kryptografia s verejným kľúčom sa javí ako ideálny systém, nevyžadujúci

zabezpečený kanál pre výmenu šifrovacieho kľúča. To znamená že dve strany môžu spolu

komunikovať cez nezabezpečený kanál, bez toho, aby sa predtým stretli a vymenili si kľúče.

Toto však nie je celkom pravda. Obr. 7 ilustruje ako aktívny protivník môže narušiť systém

(dešifrovať správu určenú pre druhú stranu) bez toho, aby narušil kryptovací systém. Ide o typ

falošnej prezentácie a je to i príklad zlyhania protokolu. V tomto prípade sa útočník

prezentuje ako Bob, zaslaním Alici verejný kľúč e′ , ktorý Alica pokladá za Bobov verejný

kľúč. Útočník tak má k dispozicií celú komunikáciu medzi Alicou a Bobom, dešifrovaním

správ pomocou jeho privátneho kľúča d ′ , zašifrovaním správy Bobovým verejným kľúčom e

a zaslaním šifrovanej správy Bobovi. Preto je nutné overiť pravosť verejných kľúčov. Alica si

musí byť istá, že správu šifruje pravým Bobovým verejným kľúčom.

Správa Cieľ

Ee' (m) = c'

ŠifrovanieDd(c) = m

Dešifrovanie

m m

Alica Bob

Zdroj kľúčov

d

Ee(m) = c

ŠifrovanieDd' (c') = m

Dešifrovanie

Zdroj kľúčov

m

e'

c'

d'

e

c

Tretia strana

Obr. 7 Útok falošnou prezentáciou

Page 36: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-36-

2.3 Výmena kľúčov, manažment a certifikácia

Definícia: Výmena kľúčov je proces, kedy sa tajomstvo stáva prístupné dvom či viac

stranám, pre následne šifrovacie postupy.

Definícia: Manažment kľúčov je množina procesov a mechanizmov, ktoré podporujú

výmenu kľúčov a udržujú trvalé vzťahy medzi účastníkmi. Patrí sem i výmena starých kľúčov

za nové.

Obr. 8 ilustruje sieť, pozostávajúcu zo 6 účastníkov. Ak by v tejto malej sieti chcel

každý pár účastníkov vzájomne komunikovať, predstavovalo by to potrebu bezpečnej výmeny

15 párov kľúčov. V sieti s n účastníkmi by počet párov bol 2

)1( −⋅ nn.

A1 A2

A5

A3A6

A4

Obr. 8 Vzťah kľúčov v sieti šiestich účastníkov

V praxi sú však siete oveľa väčšie a tak problém manažmentu kľúčov sa stáva

rozhodujúcou otázkou.

2.3.1 Manažment kľúčov prostredníctvom techník symetrického kľúča

Jedno z riešení, ktoré využíva techniky symetrického kľúča predpokladá entitu v sieti,

ktorej dôverujú všetci účastníci. Táto entita je označovaná ako dôveryhodná tretia strana

(DTS). Každý účastník iA zdieľa s DTS odlišný symetrický kľúč ik . Predpokladáme, že tieto

kľúče boli distribuované cez zabezpečený kanál. Ak sa dvaja účastníci rozhodnú spolu

komunikovať, DTS vygeneruje kľúč k, niekedy tiež nazývaný kľúč relácie, a šifrovaný ho

zašle komunikáciechtivým účastníkom.

Page 37: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-37-

k1

A1 A2

A5 A4

A3A6

k2

k3

k6

k4

k5

Zdroj

kľúčovk

DTS

Ek(m)

Ek1(k)

Ek5(k)

Obr. 9 Manažment kľúčov využívajúci DTS

2.3.1.1 Výhody riešenia

� Ľahké pridávanie i odstránenie účastníkov siete.

� Každému účastníkovi stačí pamätať si iba jeden dlhodobý tajný kľúč.

2.3.1.2 Nevýhody riešenia

� Každá komunikácia si vyžaduje počiatočnú komunikáciu s DTS.

� DTS si musí pamätať n dlhodobých tajných kľúčov.

� DTS má schopnosť čítať všetky správy.

� Ak je napadnutá DTS, je celá komunikácia v sieti nezabezpečená.

2.3.2 Manažment kľúčov prostredníctvom techník verejného kľúča

Každý účastník v sieti vlastní verejný/privátny šifrovací pár kľúčov. Verejný kľúč

spolu s identitou účastníka je uložený v centrálnej schránke nazývanej verejný zoznam. Ak

chce účastník 1A poslať šifrovanú správu účastníkovi 6A , z verejného zoznamu získa verejný

kľúč 6e účastníka 6A , zašifruje správu použitím tohoto kľúča a zašle účastníkovi 6A .

Page 38: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-38-

A1 : e1A2 : e2A3 : e3A4 : e4A5 : e5A6 : e6

Verejný

zoznam

Privátny kľúč d1

A1

c = Ee6 (m)

Privátny kľúč d2

A2

Privátny kľúč d3

A3

Privátny kľúč d4

A4

Privátny kľúč d5

A5

Privátny kľúč d6

A6

m = Dd6 (c)

e6

c

Obr. 10 Manažment kľúčov využívajúci techniky verejných kľúčov

2.3.2.1 Výhody riešenia

� Nevyžaduje sa vierohodná tretia strana.

� Verejný zoznam môže byť umiestnený u každého účastníka.

� Za predpokladu, že počítame iba s pasívnym útočnikom – odpočúvanie, vystačíme s n

verejnými kľúčmi, pre bezpečnú komunikáciu medzi hociktorými dvomi účastníkmi.

2.3.2.2 Aktívny útočník

Ak však rátame s aktívnym útočníkom, ktorý je schopný pozmeniť verejný zoznam

obsahujúci verejné kľúče, problém manažmentu kľúčov sa stáva zložitejším. Obr. 11 ilustruje,

ako aktívny útočník môže napadnúť schému manažmentu kľúčov popísanú vyššie. Na

obrázku útočník pozmení verejný zoznam výmenou verejného kľúča 6e učastníka 6A za svoj

verejný kľúč *e . Ľubovoľná správa, určená pre účastníka 6A , šifrovaná s použitím verejného

kľúča získaného z verejného zoznamu, môže byť dešifrovaná len útočníkom. Ten si ju môže

prečítať a prípadne zašifrovať verejným kľúčom uživateľa 6A a zaslať ju uživateľovi 6A ,

zatiaľ, čo uživateľ 1A verí, že iba uživateľ 6A môže správu dešifrovať.

Page 39: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-39-

A1 : e1A2 : e2A3 : e3A4 : e4A5 : e5A6 : [e6] e

*

Verejný

zoznam

Ee* (m) = c

A1

Dd* (c) = m E

e6 (m) = c'

Privátny kľúč d*

Tretia strana

Dd6 (c' ) = m

Privátny kľúč d6

A6

e*c

c'

Obr. 11 Útok falošnou prezentáciou 6A aktívnym útočníkom s verejným kľúčom *e

Ako prevenciu pred takýmto útokom, by užívatelia mali použiť DTS pre certifikáciu

verejného kľúča každého užívateľa. DTS má privátny podpisovací algoritmus TS a overovací

algoritmus TV a predpokladá, že ho poznajú všetci užívatelia siete. DTS pozorne overí

identitu každého užívateľa a podpíše správu, pozostávajúcu s identifikátora a užívateľovho

autentického verejného kľúča. Toto je jednoduchý príklad certifikácie, čiže previazania

identity užívateľa s jeho verejným kľúčom. Obr. 12 znázorňuje sieť s takýmito predpokladmi.

Užívateľ 1A použije verejný kľúč užívateľa 6A iba vtedy, ak úspešne overí podpis certifikátu.

A1, e1, ST ( A1 || e1 ) = s1A2, e2, ST ( A2 || e2 ) = s2A3, e3, ST ( A3 || e3 ) = s3A4, e4, ST ( A4 || e4 ) = s4A5, e5, ST ( A5 || e5 ) = s5A6, e6, ST ( A6 || e6 ) = s6

Verejný zoznamOverenie

VT ( A6 || e6, s6 )

A1

e6 , s6

Dd6 (c) = m

Privátny kľúč d6

A6

c = Ee6 (m)

Obr. 12 Autentifikácia verejných kľúčov pomocou DTS, symbol || znamená spojenie

Page 40: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-40-

2.3.2.3 Výhody použitia DTS ako udržovateľa integrity verejného zoznamu

� Chráni pred falšovaním užívateľa aktívnym útočníkom.

� DTS nemôže monitorovať komunikáciu. Užívatelia potrebujú DTS iba pre správne

zviazanie identity s verejným kľúčom.

� Ak si užívatelia ukladajú certifikáty lokálne, nevyžaduje sa interakcia s verejným

zoznamom.

2.3.2.4 Nevýhody použitia DTS ako udržovateľa integrity verejného zoznamu

� Ak je napadnutý podpisovací kľúč DTS, celá komunikácia sa stáva nezabezpečenou.

� Dôvera je založená na jednej entite.

2.3.2.5 Dôveryhodné tretie strany a certifikácia verejného kľúča

DTS môžeme pokladať za absolútne dôveryhodnú, ak je dôveryhodná v každom

smere. Pre príklad, prístup k tajným a privátnym kľúčom, prístup k asociácií identity

a verejného kľúča.

DTS môžeme pokladať za funkčne dôveryhodnú, ak je pokladaná za dôveryhodnú no

nemá prístup k tajným či privátnym kľúčom.

2.3.2.6 Certifikáty verejných kľúčov

Distribúciu verejného kľúča, kedže sa nevyžaduje zabezpečený kanál, môžeme

pokladať za ľahšiu oproti distribúcií symetrického kľúča. Kritická je skôr integrita, či

autenticita verejného kľúča.

Certifikát verejného kľúča pozostáva z dátovej časti a z podpisovej časti. Dátová čast

pozostáva z mena užívateľa, jeho verejného kľúča a možných ďaľších údajov (adresa,

platnosť kľúča...). Podpisová časť pozostáva z podpisu dátovej časti dôveryhodnou treťou

stranou.

Pre overenie autenticity verejného kľúča užívateľa A uživateľom B, uživateľ M musí

mať autentickú kópiu funkcie DTS pre overenie podpisu. Pre jednoduchosť uvažujme že

autenticita overovacej funkcie je zaručená. Uživateľ B potom môže vykonať nasledujúce

kroky:

1. Získa certifikát verejného kľúča užívateľa A cez nezabezpečený kanál, napríklad

z centrálnej databázy certifikátov, priamo od A či iným spôsobom.

2. Použije overovaciu funkciu DTS pre overenie podpisu DTS na certifikáte.

Page 41: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-41-

3. Ak je podpis certifikátu správny, akceptuje verejný kľúč z certifikátu ako autentický

verejný kľúč uživateľa A, ak nie, považuje verejný kľúč za neplatný.

Pred tým, ako DTS vytvorí certifikát verejného kľúča, musí vykonať určité zistenia

pre overenie identity uživateľa A a faktu, že verejný kľúč, ktorý certifikuje, skutočne patrí A.

Jedna z metód, ako vykonať tieto zistenia, je, že DTS si vyžiada konkrétny doklad totožnosti

A a potvrdenie, že A pozná korešpondujúci privátny kľúč.

2.4 Porovnanie kryptografie so symetrickým kľúčom a s verejným

kľúčom

Kryptografické schémy so symetrickým, či verejným kľúčom majú rôzne

výhodné, nevýhodné či spoločne vlastnosti.

2.4.1 Výhody kryptografie so symetrickým kľúčom

� Systém so symetrickým šifrovaním môže byť navrhnutý tak, aby mal vysokú dátovú

priepustnosť. Niektoré hardvérové implementácie dosahujú šifrovaciu rýchlosť rádovo

stovky megabajtov za sekundu. Softvérové implementácie však iba rádovo megabajty

za sekundu.

� Kľúče pre symetrické šifrovanie sú relatívne krátke.

� Symetrické šifrovanie môže byť použité ako primitívny prvok pre konštrukciu

rôznych kryptografickým mechanizmov. Podobne ako generátory pseudonáhodných

čísiel, hašovacie funkcie, výpočtovo efektívne schémy digitálneho podpisu...

� Symetrické šifry môžeme zložiť tak, aby vznikol silnejší šifrovací systém. Jednoduché

transformácie, ktorých slabé stránky je ľahké analyzovať, môžu byť použité pre

konštrukciu silného šifrovacieho systému.

2.4.2 Nevýhody kryptografie so symetrickým kľúčom

� V komunikácií dvoch strán musí byť kľúč utajený na oboch stranách.

� Vo veľkých sieťach je veľa kľúčov, čo spôsobuje ich zložitý manažment. Efektívny

manažment si vyžaduje použitie absolútne dôveryhodnej DTS.

� V komunikácií dvoch strán, sa z praktického hľadiska kľúč často mení, teoreticky pre

každú komunikačnú reláciu.

� Mechanizmus digitálneho podpisu vychádzajúci zo šifrovania symetrickým kľúčom

typicky vyžaduje veľké kľúče pre verejné overenie, alebo použitie DTS.

Page 42: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-42-

2.4.3 Výhody kryptografie s verejným kľúčom

� V utajení musí zostať iba privátny kľúč, no musi byť zaručená autenticita verejného

kľúča.

� Administrácia kľúčov na sieti vyžaduje iba funkčne dôveryhodnú DTS.

� V závislosti od spôsobou použitia, pár privátneho/verejného kľúča môže zostať

nezmenený dlhší čas, môže byť platný pre viac komunikačných relácií.

� Veľa schém šifrovania s verejným kľúčom vedie k relatívne efektívnemu mechanizmu

digitálneho podpisu. Kľúč použitý k popisu funkcie verejného overenia je typicky

menší ako kľúč odvodený z mechanizmu šifrovania so symetrickým kľúčom.

� Počet kľúčov vo veľkých sieťach je podstatne menší ako by bol potrebný počet

symetrických kľúčov.

2.4.4 Nevýhody kryptografie s verejným kľúčom

� Dátova priepustnosť systémov šifrovania s verejným kľúčom je o niekoľko rádov

menšia v porovnaní so systémami so symetrickým kľúčom.

� Veľkosť kľúčov je typicky oveľa väčšia ako veľkosť symetrického kľúča.

� U žiadnej schémy šifrovania s verejným kľúčom nebola dokázaná bezpečnosť.

U väčšiny schém šifrovania s verejným kľúčom je bezpečnosť založená na

odhadovanej náročnosti malej množiny číselno-teoretických problémov.

2.4.5 Prehľad porovnania

Obidve kryptografické riešenia majú výhody, ktoré sa môžu vzájomne dopĺňať. Dnes

používané kryptografické systémy využívajú silu oboch. Nasledujúci príklad to vhodne

ilustruje.

Techniky šifrovania s verejným kľúčom môžu byť použité pre výmenu kľúča

symetrického šifrovania pre potrebu komunikácie Alice s Bobom. V tomto prípade Alica

i Bob využívajú výhody dlhodobosti a sily verejného/privátneho kľúča schémy šifrovania

s verejným kľúčom a efektívnosti dátovej priepustnosti schémy so symetrickým kľúčom.

Kedže šifrovanie dát je častá a časovo náročná časť procesu komunikácie, výmenu kľúča

pomocou šifrovania s verejným kľúčom môžeme považovať za menšiu časť celkového

procesu šifrovanej komunikácie medzi Alicou a Bobom. Toto však nemá záväzný charakter.

Dôležité body z praktického hľadiska sú nasledovné:

� Kryptografia s verejným kľúčom umožnuje efektívne podpisovanie a manažment

kľúčov.

Page 43: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-43-

� Kryptografia so symetrickým kľúčom je efektívna pre šifrovanie dát, prípadne pre

aplikácie pracujúce s integritou dát.

Poznámka: privátne kľúče v systémoch šifrovania s verejným kľúčom musia byť

väčšie (napríklad 1024 bitový kľuč RSA) ako tajné kľúče v systémoch so symetrickým

kľúčom (príklad 64 či 128 bitové).

2.5 RSA kryptosystém

RSA je algoritmus pre šifrovanie pomocou verejného kľúča, no môže byť použitý i pre

digitálny podpis. Jeho bezpečnosť je založená na vysokej náročnosti riešenia celočíselného

faktorizačného problému. Verejne bol popísaný na MIT v roku 1977. Jeho predstaviteľmi sú

Ron Rivest, Adi Shamir a Leonard Adleman. Písmená RSA sú iniciály ich priezvisk.

2.5.1 Algoritmus generovania kľučov RSA

Predpoklad: Každá entita vytvára RSA verejný kľuč a prislúchajúci privátny kľuč. Každá

entita A by mala urobiť nasledujúce:

1 Zvoliť dve veliké náhodné prvočísla p a q, každé približne rovnakej dĺžky.

2 Vypočítať

qpn ⋅= (53)

)1()1( −⋅−= qpφ (54)

3 Vybrať náhodné cele číslo φ<< ee1, , tak aby

1),gcd( =φe (55)

4 Použiť rozšírený Euklidov algoritmus pre výpočet unikátneho celého čísla

φ<< dd 1, , tak aby

)(mod1 φ≡⋅ de (56)

5 Verejný kľúč entity A je potom (n,e), privátný kľuč je d, resp (n,d).

Celé číslo e sa nazýva šifrovací exponent, d dešifrovací exponent a n je modulus.

2.5.2 Algoritmus šifrovania RSA

Predpoklad: B šifruje správu pre A, A správu dešifruje.

1 Šifrovanie: B by mal urobiť nasledovné:

1.1 Získať autentický verejný kľúč (n,e) entity A

1.2 Vyjadriť správu ako celé číslo m z intervalu [0, n-1].

Page 44: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-44-

1.3 Vypočítať

nmc e mod= (57)

1.4 Poslať šifrovanú správu c entite A

2 Dešifrovanie, pre získanie správy m z c by A mala vykonať nasledovné:

2.1 Použiť svoj privátny kľúč d (d,n) a získať m nasledovne

ncm d mod= (58)

2.5.3 Príklad RSA algoritmu

2.5.3.1 Generovanie páru kľúčov

Entita A si zvolí prvočísla 2551,2357 == qp , a vypočíta 6012707=⋅= qpn a

6007800)1()1( =−⋅−= qpφ . A zvolí 3674911=e a s použitím rozšíreného Euklidovho

algoritmu nájde 422191=d práve tak, že )(mod1 φ≡⋅ de . Verejný kľúč A je (n = 6012707,

e = 3674911), privátny kľúč je d = 422191.

2.5.3.2 Šifrovanie.

Pre šifrovanie správy m = 5234673, B použije algoritmus modulárneho umocňovania

pre výpočet 3650502 6012707 mod 49115234673367mod === nmc e a výsledok pošle

entite A

2.5.3.3 Dešifrovanie.

Pre dešifrovanie šifrovanej správy c, entita A vypočíta

5234673 6012707 mod 1913650502422mod === ncm d

Poznámka: ak je šifrovací exponent zvolený náhodne, šifrovanie je náročné na

výpočtový čas. Tieto nároky však môžeme znížiť vhodnou voľbou exponentu. V praxi sa

bežne používa 3=e , prípadne 655371216 =+=e .

2.6 ElGamal kryptosystém

Algoritmus ElGamal môžeme interpretovat i ako Diffie-Hellmanov algoritmus pre

dohadovanie kľúčov v móde prenosu kľúčov. Jeho bezpečnosť je založená na vysokej

náročnosti riešenia problému diskrétneho logaritmu a Diffie-Hellman problému.

Page 45: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-45-

2.6.1 Algoritmus generovania kľúčov ElGamal

Predpoklad: Každá entita vytvára ElGamal verejný kľuč a prislúchajúci privátny kľuč.

Každá entita A by mala urobiť nasledujúce:

1 Vygenerovať veliké náhodné prvočíslo p a generátor α multiplikatívnej grupy *pZ

celých čísiel modulo p. 2 Zvoliť náhodné celé číslo 21, −≤≤ paa a vypočítať pa modα .

3 Verejný kľúč entity A je ),,( ap αα , privátny kľúč je a.

2.6.2 Algoritmus šifrovania ElGamal

Predpoklad: B šifruje správu pre A, A správu dešifruje.

1 Šifrovanie B vykoná nasledovné kroky

1.1 Získa autentický verejný kľúč ),,( ap αα entity A.

1.2 Vyjadrí správu ako celé číslo m z intervalu [0,1,…, p-1].

1.3 Vyberie náhodné celé číslo 21, −≤≤ pkk ,

1.4 Vypočíta

pk modαγ = (59)

pm ka mod)(αδ ⋅= (60)

1.5 Entite A zašle šifrovanú správu

),( δγ=c (61)

2 Dešifrovanie, pre získanie správy m z c A vykoná nasledovné kroky

2.1 Použije privátny kľúč A pre výpočet

pm ap mod)1( −−= γ (62)

(poznámka: akaap −−−− == αγγ )1( (63))

2.2 Získa správu m vypočítaním

pm a mod)( δγ ⋅= − (64)

2.6.3 Príklad algoritmu ElGamal

2.6.3.1 Generovanie páru kľúčov

Entita A zvolí prvočíslo p= 2357 a generátor 2=α z *2357Z , A zvolí privátny kľúč

a=1751 a vypočíta 11852357mod2mod 1751 ==paα .

Verejný kľúč entity A je 1185,2,2357( === ap αα ).

Page 46: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-46-

2.6.3.2 Šifrovanie

Pre zašifrovanie správy m=2035, entita B zvolí náhodné celé číslo k=1520 a vypočíta

14302357mod21520 ==γ a 6972357mod11852035 1520 =⋅=δ B zašle 1430=γ a 697=δ

entite A.

2.6.3.3 Dešifrovanie

Pre dešifrovanie, A vypočíta 8722357mod14306051 ==−− apγ a výpočtom

20352357mod697872 =⋅=m získa správu m.

2.7 Eliptické krivky

Definícia: Nech 3>p je prvočíslo. Eliptická krivka

baxxy ++= 32 (65)

nad pZ je množina riešení pp ZZyx ×∈),( kongruencie

)(mod32 pbaxxy ++≡ (66)

kde pZba ∈, sú konštanty, také, že

0)(mod274 23 ≠+ pba (67)

spolu so špeciálnym bodom O, nazývaným bod na nekonečne (point at infinity).

2.7.1 Eliptická krivka ako grupa

Eliptická krivka E môže byť abeliánovou grupou definovaním vhodných operácií na

jej bodoch.

Nech ),( 11 yxP = a ),( 22 yxQ = sú body na E. Ak 12 xx = a 12 yy −= , potom

OQP =+ (68)

inak

),( 33 yxQP =+ (69)

kde

212

3 xxx −−= λ (70)

1313 )( yxxy −−= λ (71)

a

Page 47: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-47-

=⋅

+⋅

≠−

QPaky

ax

QPakxx

yy

,2

3

,

1

21

12

12

λ (72)

PPOOP =+=+ (73)

pre všetky EP∈ .

Inverziu bodu ),( yx , ktorú, kedže grupová operácia je súčtova zapisujeme ako

),( yx− , môžme vypočítať ako ),( yx − , pre všetky Eyx ∈),( .

Poznámka: Všetky aritmetické operácie prebiehajú v pZ .

2.7.2 Body eliptickej krivky

Nech E je eliptická krivka

632 ++= xxy (74)

nad 11Z . Body na E určíme nasledovne. Pre všetky 11Zx∈ vypočítame 11mod63 ++ xx a

pre y sa pokúsime riešiť rovnicu (66). Pre dané x môžme testovať či

11mod63 ++= xxz (75)

je kvadratické reziduum aplikovaním Eulerovho kritéria 1.12. Ak z je kvadratickým

reziduom, potom môžeme pomocou explicitného vzorca (76) vypočítať druhé odmocniny

kvadratických reziduí modulo p.

11mod11modmod 34

)111(

4

)1(

zzpz

p

±=±=±++

(76)

pre )4(mod3≡p

x 11mod63 ++ xx Je QR(11)? y

0 6 nie

1 8 nie

2 5 ano 4,7

3 3 ano 5,6

4 8 nie

5 4 ano 2,9

6 8 nie

7 4 ano 2,9

8 9 ano 3,8

9 7 nie

10 4 ano 2,9

Tab. 3 Body eliptickej krivky 632 ++= xxy nad 11Z .

Page 48: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-48-

Teda E má 13 bodov, keďže ľubovoľná grupa prvočíselného rádu je cyklická, znamená

to, že E je izomorfné 13Z a ľubovoľný bod okrem bodu na nekonečne O, je generátorom E.

Nech )7,2(=α je generátorom E, potom môžeme vypočítať „mocniny“ α , ktoré

zapisujeme ako násobky α , kedže grupová operácia je súčtová. Pre výpočet

)7,2()7,2(2 +=α teda najskôr vypočítame

811mod4211mod3211mod)72()123( 112 =⋅=⋅=⋅⋅+⋅= −−λ , potom

511mod22823 =−−=x a 211mod7)52(83 =−−⋅=y a teda )2,5(2 =α .

Ďaľší násobok je )7,2()2,5(23 +=+= ααα , znova vypočítame λ ako

211mod7511mod8511mod)52()27( 11 =⋅=⋅=−⋅−= −−λ , potom

811mod25223 =−−=x a 311mod2)85(23 =−−⋅=y a teda )3,8(3 =α .

Podobne pokračujeme s výpočtom zostávajúcich násobkov.

)4,2(12)9,5(11)8,8(10

)9,10(9)5,3(8)2,7(7

)9,7(6)6,3(5)2,10(4

)3,8(3)2,5(2)7,2(

===

===

===

===

αααααααααααα

A teda vidieť, že )7,2(=α je skutočne primitívny element.

Eliptická krivka E definovaná nad pZ , kde p je prvočíslo, také, že platí 3>p , má

približne p bodov. Presnejšie môžeme definovať E# ako počet bodov na E, nasledovne

pomocov Hassovho teorému.

ppEpp 21#21 ++≤≤−+ (77)

Určenie presnej hodnoty E# je však výpočtovo veľmi náročné, a preto je výhodnejšie

použiť Schoofov efektívny algoritmus, ktorý je praktický pre prvočísla majúce niekoľko

stoviek číslic.

2.8 Menezes Vanstone kryptosystém eliptických kriviek

Nech E je eliptická krivka definovaná nad pZ , kde 3>p je prvočíslo. Potom E

obsahuje cyklickú grupu H, v ktorej je problém diskrétneho logaritmu vysoko výpočtovo

náročný.

Nech **** , pppp ZZECZZP ××=×= , definujme }:),,,{( αββα ⋅== aaEK , kde

E∈α , potom hodnoty α a β predstavujú verejný kľúč a hodnota a predstavuje privátny,

Page 49: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-49-

tajný kľúč. Majme ),,,( βα aEk = , tajný kľúč H

Zk ∈ a **21 ),( pp ZZxxx ×∈= , potom

môžme definovať šifrovací algoritmus ),,(),( 210 yyykxek = ako

α⋅= ky0 (78)

β⋅= kcc ),( 21 (79)

pxcy mod111 ⋅= (80)

pxcy mod222 ⋅= (81)

Pre šifrovanú správu ),,( 210 yyyy = definujme dešifrovací algoritmus

)mod,mod()( 122

111 pcypcyyd k

−− ⋅⋅= (82)

kde

),( 210 ccya =⋅ (83)

2.8.1 Príklad algoritmu Menezes Vanstone

2.8.1.1 Generovanie kľúčov

Ako v predchádzajúcom príklade, majme eliptickú krivku E 632 ++= xxy nad 11Z ,

bod )7,2(=α na krivke E a tajný „exponent“ 7=a , taký, že platí Ea #< . Potom

)2,7(7 =⋅=⋅= ααβ a . Predpokladajme správu )1,9(),( 21 == xxx , ktorú chceme zašifrovať.

Zvolíme ľubovoľné k, také, že platí Ek #0 ≤≤ , potom pre príklad 6=k . Vypočítajme

)9,7()7,2(60 =⋅=⋅= αky a )3,8()2,7(6 =⋅=⋅ βk , potom 81 =c a 32 =c .

2.8.1.2 Šifrovanie

Následne šifrujeme správu vypočítaním 611mod98mod111 =⋅=⋅= pxcy a

311mod13mod222 =⋅=⋅= pxcy . Šifrovaná správa je teda )3,6),9,7((=y .

2.8.1.3 Dešifrovanie

Dešifrovanie správy y. Vypočítajme )3,8()9,7(7),( 021 =⋅=⋅= yacc , potom

)1,9()11mod43,11mod76()11mod33,11mod86()mod,mod( 11122

111 =⋅⋅=⋅⋅== −−−− pcypcyx

Porovnaním pôvodnej správy s dešifrovaným výsledkom môžeme pokladať výsledok za

správny.

Poznámka: Bod x nepatrí krivke E. Eliptická krivka je použitá pre „maskovanie“.

Správy potom môžu byť reprezentované ako ľubovoľné usporiadané prvky poľa a nemusia

byť bodmi na krivke E. To však vedie k dvojnásobnému rozšíreniu správ, resp. šifrovaná

Page 50: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-50-

správa je dvakrát väčšia ako pôvodná správa. Pre príklad uvažujme krivku 632 ++= xxy

nad 11Z , potom Menezes-Vanstoneho kryptosystém umožňuje šifrovať 1001010 =× možných

vstupných správ v porovnaní z 13timi správami v pôvodnom systéme s predpokladom že x

musí patriť krivke E.

2.9 Bezpečnosť kryptosystémov s verejným kľúčom

Bezpečnosť kryptosystémov s verejným kľúčom je založená na zjavnej náročnosti

riešenia daného výpočtového problému. V kryptografickom prostredí je rozumné

predpokladať veľmi silného protivníka. Ak je možné vyriešiť výpočtový problém

v polynomiálnom čase pre značnú časť možných vstupov, považujeme takýto problém za

ľahký či poddajný. Inými slovami, ak existuje algoritmus, ktorý dokáže vyriešiť značnú časť

problému v polynomiálnom čase, potom kryptosystém, ktorého bezpečnosť je založená na

takomto probléme musíme považovať za nie bezpečný.

2.9.1 Niektoré výpočtové problémy kryptografického významu

2.9.1.1 Faktorizácia

Problém faktorizácie celého čísla: nech n je kladné celé číslo, nájdime jeho

prvočíselnú faktorizáciu

ek

k

ee pppn ...22

11= (84)

kde ip sú prvočísla a každé 1≥ie .

2.9.1.2 RSA problém (RSAP)

RSA problém (tiež známy ako RSA inverzia), nech n je kladné celé číslo, ktoré je

súčinom dvoch rozdielnych prvočísiel p a q, e nech je kladné celé číslo, také, že platí

1))1)(1(,gcd( =−− qpe (85)

a c nech je celé číslo. Nájdime celé číslo m, také, že platí

)(modncm e ≡ (86)

2.9.1.3 Problém kvadratického rezidua (QRP)

Nech n je zložené celé číslo a a je celé číslo majúce Jakobiho symbol

Page 51: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-51-

1=

n

a (87)

Rozhodnime, či a je kvadraticke reziduum modulo n.

2.9.1.4 Druhé odmocniny modulo n (SQROOT)

Nech n je zložené celé číslo a nQa∈ (množina kvadratických reziduí modulo n).

Nájdime druhú odmocninu z a modulo n, teda x, takú, že platí

)(mod2 nax ≡ (88)

2.9.1.5 Problém diskrétneho logaritmu (DLP)

Nech p je prvočíslo a α generator *pZ a prvok *

pZ∈β . Nájdime celé číslo x,

20 −≤≤ px , také, že platí

)(mod px βα ≡ (89)

2.9.1.6 Problém generalizovaného diskrétneho logaritmu (GDLP)

Nech G je finítna cyklická grupa stupňa n , α je generator G a prvok G∈β . Nájdime

celé číslo 10, −≤≤ nxx , take, že platí

βα =x (90)

2.9.1.7 Diffie-Hellman problém (DHP)

Nech p je prvočíslo, α generator *pZ a prvky pa modα a pb modα . Nájdime

pab modα .

2.9.1.8 Generalizovaný Diffie-Hellman problem (GDHP)

Nech G je finítna cyklická grupa, α je generátorom G a aα , bα sú prvkami grupy G.

Nájdime abα .

2.9.1.9 Problém podmnožiny (SUBSET-SUM)

Majme množinu kladných celých čísiel },...,2,1{ naaa a kladné celé číslo s.

Rozhodnime, či existuje podmožina prvkov ja , ktorej súčet prvkov je rovný s.

Page 52: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-52-

Skutočná výpočtová náročnosť týchto problémov nie je známa. No všeobecne sa tieto

problémy považujú za ťažko riešiteľné i napriek tomu, že dôkaz nie je známy. Náročnosť

problému môžeme zvýšiť vhodne zvolenými problémovými parametrami.

2.9.2 Bezpečnosť kryptosystémov eliptických kriviek

Bezpečnosť kryptosystémov eliptických kriviek je založená na náročnosti riešenia

problému diskrétneho logaritmu eliptických kriviek (Elliptic Curve Discrete Logarithm

Problem - ECDLP). Nech k je veľké celé číslo a P a Q sú bodmi eliptickej krivky E, také, že

platí

PkQ ⋅= (91)

potom z daných P a Q je vysoko výpočtovo náročné určiť hodnotu k.

Matematicko-kryptografický problém

Najlepšia známa metóda pre riešenie

Faktorizácia celých čísiel RSA

Number field sieve: ])log(log)(log923,1exp[ 3

2

3

1

nn Sub Exponenciálny čas.

Diskrétny logaritmus ElGamal

Number field sieve: ])log(log)(log923,1exp[ 3

2

3

1

nn Sub Exponenciálny čas.

Diskrétny logaritmus eliptických kriviek

Pollard-rho algoritmus: sqrt(n) Plne exponenciálny čas.

Tab. 4 Porovnanie problémov kryptosystémov s verejným kľúčom.

Keďže najlepší známy algoritmus pre útok na kryptosystém eliptických kriviek je

časovo oveľa náročnejší ako najlepšie algoritmy pre útoky na iné kryptosystémy, eliptické

krivky ponúkajú porovnateľnú bezpečnosť, avšak s podstatne menšou dĺžkou kľúčov. Pre

príklad 160 bitový systém šifrovania pomocou eliptických kriviek (ECC) poskytuje rovnakú

úroveň zabezpečenia ako 1024 bitový RSA kryptosystém, 224 bitový ECC je ekvivalentný

2048 bitovému RSA.

Page 53: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-53-

3 Kódovanie a samoopravné BCH−kódy

Teória kódovania sa zaoberá štúdiom a konštrukciou kódov, ktoré majú vhodné

vlastnosti a parametre pre dané potreby v oblasti ich súčasného i plánovaného využitia.

Vznikla v štyridsiatich rokoch dvadsiateho storočia prácami Shannona, ktoré pojednávali o

teórii informácie, a prácami Hamminga a Golaya, v ktorých skonštruovali prvé lineárne kódy.

Hammingové kódy sú schopné opraviť jednoduché chyby, Golayove kódy opravujú

chyby trojnásobné. Z teoretického i praktického hľadiska teda patria medzi dodnes

najdôležitejšie kódy.

V päťdesiatich rokoch dvadsiateho storočia boli objavené tzv. Reed-Mullerove kódy

schopné opraviť ľubovoľný predpísaný počet chýb. Vyznačujú sa hlavne ľahko vykonateľnou

metódou dekódovania, resp. ľahkým opravovaním chýb predpísaného počtu.

Neskôr boli objavené kódy BCH, ktoré tiež opravujú ľubovolný počet chýb, no majú

lepšie parametre ako Reed-Mullerove kódy čo sa však odráža na väčšej náročnosti

dekódovacieho procesu.

3.1 Rozdelenie kódovania podľa oblasti využitia

Kódovanie možno rozdeliť do troch kategórií:

� Kódovanie ako kompresia dát. To znamená, kódovať tak, aby sme dostali čo

najkratší kód a teda aby priemerná dĺžka kódových slov bola menšia ako dĺžka

zdrojových slov. Tým kód znižuje redundanciu znakov vstupného jazyka.

Takýmto postupom napríklad urýchlime prenos, pretože skrátime správu.

� Kódovanie ako šifrovanie pre účely utajenia informácie.

� Kódovanie ako tvorba tzv. bezpečnostných kódov, znamená vytvoriť takú

štruktúru výstupných dát, u ktorej bude možné ľahko odhaľovať a odstraňovať

chyby, ktoré môžu nastať napríklad počas prenosu cez zarušený kanál.

3.2 Kódovanie

Nech A a B sú konečné množiny znakov. Množina A nech je zdrojová abeceda

obsahujúca zdrojové znaky. Množina B nech je kódová abeceda obsahujúca kódové znaky.

Potom konečná množina *B je množina všetkých kódových slov utvorených zreťazením

kódových znakov. Potom pod pojmom kód rozumieme množinu všetkých slov z množiny *B .

Page 54: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-54-

Kódovanie je teda funkcia, ktorá každému prvku zo zdrojovej abecedy A priradí práve jeden

prvok z kódovej abecedy B, teda BAK →: .

3.3 Bezpečnostné kódy

Behom prenosu informácie, v závislosti od prostredia v ktorom sa šíri, môže

dochádzať k chybám. Tie následne spôsobia nečitateľnosť, prípadne chybnú interpretáciu

správy na strane prijímateľa. Tento jav môžeme obmedziť použitím detekčných a opravných

kódov, tzv. bezpečnostných kódov (BK). Použitie BK je teda výhodné v systémoch, kde

dochádza k prenosom informácií, no nie len tam. Výhodné je využiť BK i v systémoch kde

dochádza k uchovávaniu informácií. Pamäťové média starnú, kvalita záznamu sa znižuje, až

časom klesne pod určitú úroveň, kedy už nie je možné získať späť uchovanú informáciu.

Vhodnou voľbou BK však môžeme akoby predĺžiť životnosť média, resp. dobu pokiaľ máme

možnosť spoľahlivo a bezpečne informáciu z média získať.

Chyba sa môže prejaviť dvoma spôsobmi, a to:

� Zámenou vyslaného znaku za iný znak.

� Poruchou synchronizácie, t.j. vypadnutím znaku zo správy, prípadne vytvorenie

nového znaku, ktorý pôvodná správa neobsahuje.

Zabezpečenie bezpečnostných kódov vočí chybám je založené na zvýšení redundancie

správy pomocou vhodného kódovania. Niektoré znaky kódového slova teda nenesú žiadnu

informáciu pôvodnej správy, ale slúžia len ako znaky kontrolného charakteru. Pre príklad:

metóda kontroly parity. K binárnemu kódovému slovu naaa K21 pridáme jeden bit 1+na tak,

aby celé slovo obsahovalo párny počet jednotiek. Ak pri prenose rozšíreného slova dôjde

k jednej chybe vieme túto skutočnosť na strane príjimateľa odhaliť a teda môžeme o takomto

kóde prehlásiť, že objavuje jednoduché chyby, tzn. že vie zistiť, že nastala chyba, no nevie

kde, na ktorom mieste. Takéto kódy je vhodné použiť v systémoch s možnosťou opakovania

správ. Ak takúto možnosť nemáme, alebo je obmedzená, či v prípadne, kedy by bolo

neefektívne správu vždy po zistení určitého počtu chýb celú opakovať, je vhodnejšie použiť

kódy, ktoré chyby objavujú a následne ich aj vedia opraviť. Kódy, ktoré chyby opravujú sú

však výpočtovo náročnejšie ako kódy, ktoré chyby len objavujú.

Page 55: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-55-

3.4 Objavovanie, zisťovanie chýb

Nech K je blokový kód v konečnej abecede T a

{ }niTttttT in

nKK ,2,1 pre |21 =∈= (92)

je množina všetkých slov dĺžky n. Ak dĺžka kódu K (dĺžka všetkých slov v K) je rovná n,

potom nTK ⊆ a teda slová množiny nT môžeme rozdeliť na kódové slová (v K) a nekódové

slová (v KT n − ). Nech vysielané slová sú kódové a prijímané slova sú z množiny nT . Ak

príjmeme slovo, ktoré nie je kódové, potom došlo k chybe, ktorej existenciu sme odhalili. No

ak prijaté slovo patrí medzi kódove, k chybe nedošlo, alebo sme ju nezistili, preto, že

zapríčinila zmenu pôvodného kódového slova správy na iné slovo, patriace tiež medzi

kódové. Ak pri vyslaní kódového slova bude vždy prijaté slovo nekódove, kód objavuje t-

násobné chyby, tzn že najväčší počet chybných miest v slove je t, kde nt ,,2,1 K= .

3.4.1 Hammingova vzdialenosť

Hammingová vzdialenosť dvoch slov nvvv K21 a nwww K21 je počet znakov,

v ktorých sa tieto slová líšia, t.j.

{ }ii wvnii ≠= ,,2,1| K (93)

3.4.2 Minimálna vzdialenosť

Minimálna vzdialenosť, tiež minimálna Hammingova vzdialenosť blokového kódu K

je najmenšou Hammingovou vzdialenosťou dvoch rôznych kódových slov z blokového kódu

K.

3.4.3 Hammingova váha

Hammingovú váhu slova nvvv K21 predstavuje počet nenulových znakov v slove.

Značíme ju v : nvvv K21 je veľkosť množiny { }0| ≠ivi . Napríklad 310011 = .

Hammingová vzdialenosť je metrikou na množine nT všetkých slov n. To znamená,

že pre každé slová nTwvu ∈,, splňuje Hammingová vzdialenosť ( )wvd , nasledovné

podmienky:

( ) 0, ≥wvd (94)

a rovnosť nastáva práve vtedy, keď

wv = (95)

Page 56: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-56-

( ) ( )vwdwvd ,, = (96)

( ) ( ) ( )wuduvdwvd ,,, +≤ (97)

Potom blokový kód s minimálnou vzdialenosťou d objavuje t násobné chyby pre všetky

dt < , no nie je schopný objaviť všetky d násobné chyby. Teda ak v kódovom slove zmeníme

t znakov, potom

ak 0=t , znamená to že k chybe nedošlo, potom prijmeme kódové slovo wv = .

ak 1−≤ dt (t.j. dt < ), nevznikne kódové slovo a chyby vieme objaviť.

ak dt = , môže vzniknúť kódové slovo.

3.4.4 Príklad: Kód 2 z 5

Kód je binárny s dĺžkou 5, ( 5=n ), teda { }51,0⊆K je zložený zo všetkých slov

obsahujúcich dve jednotky. Počet slov je teda 102

5=

. Kód s takýmto počtom kódových

slov je vhodný pre kódovanie číslic 0 až 9.

0 01001 5 01001 1 11000 6 00101 2 10100 7 00011 3 10010 8 00110 4 10001 9 01100

Tab. 5 Kód 2 z 5

Každé dve kódové slová v tomto kóde majú Hammingovú vzdialenosť rovnú 2.

Znamená to teda, že v danom kóde neexistujú kódové slová s Hammingovou vzdialenosťou

menšou ako 2. Taktiež Hammingova váha všetkých kódových slov je rovná 2.

3.5 Opravovanie chýb

Kód má schopnosť opravovať t násobné chyby práve vtedy, ak

12 +≥ td (98)

teda má minimálnu vzdialenosť je 12 +t . Kód K opravuje t-násobné chyby vtedy, ak vyslaním

kódového slova v pri t-násobnej chybe príjmeme slovo w , ktoré má Hammingovú

vzdialenosť ( )wvd , menšiu ako je jeho vzdialenosť od ľubovoľného iného kódového slova.

Potom za pôvodné slovo považujeme také slovo, ktoré je k prijatému slovu najbližšie. Pre

každé slovo Kv∈ a každé slovo nTw∈ také, že

Page 57: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-57-

( ) twvd ≤, (99)

teda platí:

( ) ( )wxdwvd ,, < (100)

pre každé slovo

vxKx ≠∈ , (101)

Blokový kód s minimálnou vzdialenosťou d opravuje t násobné chyby pre všetky

2

dt < (102)

no nedokáže opraviť chyby násobnosti 2

d alebo väčšej. Teda ak v kódovom slove v

zmeníme t znakov, potom:

� Ak 2

dt < , vznikne slovo, ktorého Hammingová vzdialenosť od kódového slova v je

menšia ako od iných kódových slov.

� Ak 2

dt ≥ , potom môže vzniknúť slovo s rovnakou, alebo menšou Hammingovou

vzdialenosťou od iných kódových slov

3.5.1 Príklad opravovania chýb

Nech kód K je dĺžky 5, opravujúci 2 násobné chyby a s minimálnou vzdialenosťou

5=d . Potom 2/dt < alebo ( ) 22/112 =−=⇒+≥ dttd . Ak nastane 2 násobná chyba,

väčšina miest sa nezmení a teda správu dekódujeme vždy so správnym výsledkom. Ak

vvvvvv = , potom každé slovo 54321 wwwww , v ktorom väčšinu znakov tvorí v, dekódujeme

ako vvvvv .

3.6 Informačné znaky

Kódové znaky môžme rozdeliť na:

� Informačné, tieto si môžeme ľubovoľne zvoliť a kódovať tak informáciu.

� Kontrolné, tieto si nemôžeme voliť, určuje ich voľba informačných znakov.

Pre príklad: kód celkovej kontroly parity dĺžky 5 má 4 informačné znaky a 1 kontrolný

znak. Ak môžeme ľubovoľne meniť k znakov z n, kde k sú informačné znaky a n je celkový

Page 58: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-58-

počet znakov kódového slova a máme algoritmus, taký, ktorý umožnuje ľubovoľné slovo

dĺžky k kódovať na kódové slovo dĺžky n, potom sa takýto algoritmus nazýva kódovanie

informačných znakov.

3.6.1 Kódovanie informačných znakov

Definícia: Nech nTK ⊆ je blokový kód dĺžky n. Ak existuje prosté zobrazenie ϕ

množiny všetkých slov (informačných znakov) dĺžky k na množinu všetkých kódových slov K

dĺžky n, potom KT k →:ϕ , kde kód K má k informačných znakov a kn − kontrolných

znakov, sa zobrazenie ϕ nazýva kódovanie informačných znakov.

3.7 BCH kódy

BCH kódy boli objavené R.C.Bose-om a D.K.Ray-Chaudhuri-om (1960) a nezávisle

na nich A.Hocquenghem-om (1959). Názov kódov pochádza z iniciál ich objaviteľov. Medzi

významné vlastnosti týchto kódov patrí dobrý vzťah medzi počtom informačných znakov

a počtom opravovaných chýb, dobre vypracované dekódovacie techniky a v neposlednom

rade i značná voliteľnosť parametrov.

3.7.1 Binárne BCH kódy

Nech t je počet chýb, ktoré je binárny BCH kód schopný opraviť. Potom minimálna

vzdialenosť

12 +⋅= td (103)

Definícia: Binárny BCH kód s plánovanou vzdialenosťou K,3,2=d je kód nepárnej

dĺžky

dn ≥ (104)

s generujúcimi koreňmi 132 ,,,, −dαααα K , kde α je prvok n -tého rádu v poli ( )mGF 2 .

Poznámka: Párne mocniny sú medzi generujúcimi koreňmi zbytočné: polynóm

( ) ( )nzv 2Ζ∈ má s každým koreňom iα tiež korene K,, 42 ii αα . a teda BCH kódy

s plánovanou vzdialenosťou td 2= alebo 12 += td môžeme považovať za totožné, majúce

generujúce korene 1253 ,,,, −tαααα K . Potom môžeme predpokladať, že plánovaná

vzdialenosť d je nepárne číslo a pre takýto BCH kód možno definovať jeho kontrolnú maticu.

Page 59: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-59-

( ) ( ) ( )( ) ( ) ( )

( ) ( ) ( )

=

−−−−−

1232222

1535255

1333233

132

1

1

1

1

ndddd

n

n

n

H

αααα

αααααααααααα

K

MOMMMM

K

K

K

(105)

Počet kontrolných znakov BCH kódu je

( )12

1−⋅≤− dmkn (106)

Kontrolná matica má teda

( )12

1−d (107)

riadkov nad telesom ( )mGF 2 a teda

( )12

1−⋅ dm (108)

riadkov nad telesom 2Ζ . Ak sú tieto riadky lineárne nezávislé, platí

( )12

1−⋅=− dmkn (109)

Ak sú lineárne závislé, je

( )12

1−⋅<− dmkn (110)

3.7.1.1 Príklad binárneho BCH kódu

Nech plánovaná vzdialenosť BCH kódu je 7=d a dĺžka kódu je 15=n . Generujúce

korene sú 53 ,, ααα , kde α je primitívny prvok poľa ( )16GF . Potom platí:

( ) 141 ++= xxxM , (111)

( ) 12343 ++++= xxxxxM (112)

( ) 125 ++= xxxM (113)

Potom generujúci polynóm je

( ) ( ) ( ) ( )xMxMxMxg 531 ⋅⋅= (114)

( ) ( ) ( ) ( )111 22344 ++⋅++++⋅++= xxxxxxxxxg (115)

Ide o kód s 10 kontrolnými znakmi. Tento ( )5,15 -kód opravuje trojnásobné chyby.

Definícia: Binárny BCH kód s plánovanou vzdialenosťou d má minimálnu vzdialenosť

d≥ . Dôkaz je uvedený v knihe [4].

Page 60: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-60-

Poznámka: Otvoreným problémom je spôsob, ako určiť minimálnu vzdialenosť BCH

kódu, alebo aspoň ako určiť, že pre danú dvojicu čísiel n a d je minimálna vzdialenosť BCH

kódu dĺžky n rovná plánovanej vzdialenosti d. Ďalší problém je určenie počtu informačných

a kontrólných znakov BCH kódu. Pre kódy dĺžky K,31,15,7,3=n (tvaru 12 −m ) je to celkom

jednoduché, ak plánovaná vzdialenosť neprekročí hodnotu ( ) 21 ++n .

Definícia: Binárny BCH kód dĺžky

12 −= mn (116)

a plánovanej vzdialenosti

( ) 21 ++≤ nd (117)

má ( )12

1−⋅=− dmkn kontrolných znakov a jeho generujúci polynóm je

( ) ( ) ( ) ( )xMxMxMxg d 231 −⋅⋅⋅= K (118)

Dôkaz je uvedený v knihe [4].

3.7.1.2 Kódovanie informačných znakov

BCH kód plánovanej vzdialenosti d má generujúci polynóm ( )xg . Tento polynóm je

určený súčinom všetkých minimálnych, navzájom rôznych polynómov medzi

( ) ( ) ( )xMxMxM d 231 ,,, −K

Informačné znaky potom kódujeme:

� Násobením polynómom ( )xg .

� Systematicky (pri čítaní odzadu), delením týmto polynómom

3.7.2 BCH kódy s q znakovou abecedou

Vlastnosti BCH kódov s q znakovou abecedou sú analogické s vlastnosťami binárnych

BCH kódov. Ak 12 += td , potom je kód schopný opravovať t -násobné chyby.

Definícia: q -znakový BCH kód s plánovanou vzdialenosťou K,3,2=d je kód dĺžky

dn ≥ , kde n je nesúdeliteľné s q . Kód má generujúce korene 21 ,,, −++ djjj ααα K (pre

niektoré 1,,2,1,0 +−= dnj K ), kde α je prvok n -tého rádu v poli ( )mqGF .

Poznámka: Na základe predpokladanej nesúdelnosti čísiel n a q , môžeme povedať,

že prvok α vždy existuje, napríklad v poli ( )( )nqGF ϕ .

Page 61: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-61-

Kontrolná matica q -znakového BCH kódu je

( ) ( ) ( )( ) ( ) ( )

( ) ( ) ( )

=

−−++−+−+−+

−++++

1232222

1131211

132

1

1

1

ndjdjdjdj

njjjj

njjjj

H

αααα

αααααααα

K

MOMMMM

K

K

(119)

Dosadením za 12 += td do výrazu 21 ,,, −++ djjj ααα K , potom dostávame generujúce

korene 121 ,,, −++ tjjj ααα K (pre niektoré tnj 2,,2,1,0 −= K , kde t je počet chýb).

q -znakový BCH kód s plánovanou vzdialenosťou d má potom minimálnu vzdialenosť d≥ .

3.7.3 Dekódovanie BCH kódu

Maticová metóda, pre jej časovo náročný výpočet, nie je vhodná pre veľké plánované

vzdialenosti. Uvedieme však rýchlejšiu metódu, založenú na Euklidovom algoritme. Pre

zistenie chybného miesta v zakódovanom slove určujeme tzv. lokátory chýb ( )xf a v prípade

nebinárnej kódovej abecedy pre určenie správnej hodnoty na chybnom mieste , tzv. evaluátor

chýb ( )xc .

3.7.3.1 Euklidov algoritmus

Rovnakou metódou, akou určujeme najväčšieho spoločného deliteľa dvoch celých

čísiel, môžeme určiť i najväčšieho spoločného deliteľa polynómov ( )xa0 a ( )xa1 . Tým je

podľa definície polynóm čo najvyššieho stupňa, ktorý tieto dva polynómy delí. Ak je ( )xf

najväčším spoločným deliteľom, potom je ním aj každý skalárny násobok ( )xft ⋅ , kde 0≠t .

Euklidov algoritmus môžeme popísať nasledovne.

Nech ( )xa0 a ( )xa1 sú dva nenulové polynómy.

1. Polynóm ( )xa0 delíme polynómom ( )xa1 , tak, že platí

( ) ( ) ( ) ( )xaxaxqxa 2110 +⋅= (120)

pričom

( ) ( )xaxa 12 st st < (121)

Page 62: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-62-

kde st značí stupeň polynómu. Ak ( ) 02 =xa a teda delenie vyšlo bezozvyšku, potom

najväčší spoločný deliteľ je polynóm ( )xa1 . Ak ( ) 02 ≠xa , nasledovný krok vykonáme

k krát.

2. Polynóm ( )xak 1− delíme polynómom ( )xak , tak, že platí

( ) ( ) ( ) ( )xaxaxqxa kkkk 11 +− +⋅= (122)

pričom

( ) ( )xaxa kk st st 1 <+ (123)

Ak toto delenie vyšlo bezo zvyšku a teda ( ) 01 =+ xak , potom najväčší spoločný deliteľ je

polynóm ( )xak . Ak ( ) 01 ≠+ xak , znova opakujeme delenie.

Najväčší spoločný deliteľ je teda prvý deliteľ, ktorý delí bezo zvyšku. Predpokladáme,

že stupne polynómov klesajú, ( ) ( ) ( )xaxaxa kst st st 21 >>> K (ak ( ) 1st −≠xak ), potom

deliteľ existuje.

Poznámka: V Euklidovom algoritme môžeme každý krok vyjadriť ako lineárnu

kombináciu polynómov ( )xa0 a ( )xa1 :

( ) ( ) ( ) ( ) ( ) ( )[ ]xaxuxaxvxa kk

k

k 101 ⋅−⋅−= (124)

kde polynómy ( )xuk a ( )xvk definujeme rekurentne:

( ) ( )( ) ( )( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ).,

,0,1

,1,0

1111

11

00

xvxvxqxvxuxuxqxu

xvxu

xvxu

kkkkkkkk −+−+ +⋅=+⋅=

==

==

(125)

3.7.3.2 Dekódovanie BCH kódu

Nech kód K je q -znakový BCH kód dĺžky n . kde n je nesúdeliteľné s q . Kód

opravuje t -násobné chyby a jeho plánovaná vzdialenosť je 12 += td , potom takýto kód má

generujúce korene 121 ,,, −++ tjjj ααα K , kde α je prvok rádu n v niektorom poli ( )mqGF .

Poznámka: Generujúce korene, ktorými sme vytvárali kód používame i pri

dekódovaní.

1. Vypočítame syndróm podľa

( )iji ws += α (126)

(viď kontrólna matica 3.7.2) obdržaného slova w , kde 12,,1,0 −= ti K a pre niektoré

tnj 2,,1,0 −= K (127)

Polynóm syndrómu určíme ako

Page 63: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-63-

( ) 121210

−−+++= t

t xsxssxs K (128)

Ak je syndróm nulový, k chybe nedošlo, resp. 0=e . Ak je syndróm rôzny od nuly,

pokračujeme nasledovne.

2. Aplikujeme Euklidov algoritmus pre polynómy

( ) txxa 20 = (129)

( ) ( )xsxa =1 (130)

Ak je stupeň všetkých polynómov ( )xak aspoň t , potom nastalo viac ako t chýb. Inak

nájdeme prvý index k taký, že stupeň polynómu

( ) txak <st (131)

a stupeň polynómu

( ) txak ≥−1st (132)

Potom vypočítame

( ) 00 =xu (133)

( ) 11 =xu (134)

( ) ( ) ( ) ( )xuxuxqxu rrrr 11 −+ +⋅= (135)

až po ( )xuk . Ak ( )xuk splňuje podmienku ( ) 00 =ku , nastalo viac ako t chýb. Inak

vypočítame

( )[ ] 10 −= kud (136)

a definujeme polynómy: lokátor chýb

( ) ( )[ ]xudxf k⋅= (137)

a evaluátor chýb

( ) ( ) ( )xadxc k

k ⋅⋅−= +11 (138)

Následne vykonáme deriváciu ( ) ( )xfxf &: a postupným dosadzovaním do rovnice

( ) 0=−if α (139)

pre 1,,1,0 −= ni K určíme všetky korene lokátoru chýb ( )xf . Ak sme našli korene

niii −−− ααα ,,, 21 K (teda ( ) 0=−if α ) vieme, že je potrebné opraviť zložky niii www ,,,

21K

prijatého slova w .

3. Správna hodnota sa určí podľa nasledujúceho vzťahu:

( )( )ij

ijij

ijijf

cwv

−⋅+=

ααα

& (140)

Page 64: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-64-

3.7.3.3 Príklad dekódovania BCH

Nech kód K je BCH kód nad 3Ζ (ternárny), je dĺžky 8=n a opravuje 2 chyby ( 2=t ).

Nech prijaté slovo je 12000010=w a jeho zápis v tvare polynómu je ( ) 621 xxxw ++= .

Použime pole ( )9GF .

3.7.3.3.1 Určenie syndrómov

Vypočítame syndróm v telese ( )9GF , ( )3Ζ , pre 2=t , 8=n a 0=j .

( ) 121210

−−+++= t

t xsxssxs K

Keďže 312212 =−⋅=−t , tak syndrómy počítame po 3s .

( ) ( ) 141211216000

0 ==++=++== αααws

( ) ( ) 03322121 611 =+=+++=++== ααααααws

( ) ( ) ( ) 64262222 245221212121 ααααααααα =+=+=++⋅+=++=++== ws

( ) ( ) ( ) ( ) 0662145222121 263333 =+=+++=++⋅+=++== ααααααααws

Polynóm syndrómov:

( ) 621 αxxs +=

3.7.3.3.2 Určenie pozícií, korene lokátoru chýb

( ) 420 xxxa t == , ( ) ( ) 62

1 1 αxxsxa +== .

Delenie opakujeme dovtedy, až nájdeme taký polynóm, že platí

( ) txak <st .

1. delenie: ( ) ( )xaxa 10 :

( ) ( )( )

( )4

62

62

224

122624

1

11:

α

α

α

α

αα

+−

+−

=+=+

x

x

xx

xqxxx

( )( )

( )4

622

21

422122

α

ααααα

==−

=+=+⋅==−

Zvyškom po delení je polynóm ( ) 42 α=xa . Testujme podmienku ( ) txak <st .

Kedže ( ) 20st 2 =⇒<= ktxa , Euklidov algoritmus ukončíme.

( ) 00 =xu , ( ) 11 =xu , ( ) ( ) ( ) ( ) ( ) ( ) 101 22110112 +==+⋅=+⋅= αxxqxqxuxqxuxu .

Page 65: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-65-

Ďalej vypočítame

( )[ ] 10 −= kud , ( ) ( )[ ]xudxf k⋅= a ( ) ( ) ( )xadxc k

k ⋅⋅−= +11 .

V našom prípade to bude:

( )[ ] [ ] 11100 112212 ==+== −−− αud .

Potom lokátor chýb je

( ) [ ] 111 2222 +=+⋅= αα xxxf .

Evaluátor chýb je

( ) ( ) 122211 4443 =⋅==−=⋅⋅−= αααxc .

Derivácia

( ) ( ) ( ) 6222 21: ααα xxxxfxf ==′

+=& .

Hľadáme nuly pre ( ) 0=−if α pre 1,,1,0 −= ni K .Využijeme, že 88 −− == iii αααα bude

záporná mocnina. Do vzťahu ( ) if 221 ++= αα dosadzujme i+α , potom prepočítame na

zápornú mocninu pomocou uvedeného vzorca:

( ) ( ) 320220 2221111 αααααα =+=++=+=+= ×+f

( ) 032111 41221 ==+=+=+= ×+ αααf

( ) ( ) αααααα =+=++=+=+= ×+ 32111 62222f

( ) 211111 083223 =+=+=+=+= ×+ ααααf

( ) ( ) 32104224 22211111 ααααααα =+=++=+=+=+= ×+f

( ) 0321111 4125225 ==+=+=+=+= ×+ ααααf

( ) ( ) ααααααα =+=++=+=+=+= ×+ 321111 6146226f

( ) 211111 0167227 =+=+=+=+= ×+ ααααf

Koreňmi lokátoru chýb sú teda: 51,αα . Potom miesta chýb sú:

slova prijatého 4.miesto :

slova prijatého 8.miesto :3855

7811

⇒=

⇒=+−−

+−−

ααα

ααα

3.7.3.3.3 Oprava chybných znakov

K oprave znakov využijeme uvedený vzorec

( )( )ij

ijij

ijijf

cwv

−⋅+=

ααα

&.

Pomocou neho vypočítame hodnotu znakov na chybných miestach prijatého slova.

Page 66: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-66-

Z predchádzajúcich výpočtov vieme, že ( ) ( ) 6,1 αxxfxc == & . Po dosadení do vzorca pre

opravu chybných znakov dostávame

( )

( )1

10

11

0

7

7

7

71677

3

3

3

3633

=⋅

+=

===

=⋅

+=

==

−−−

−−

αα

ααααααα

αααα

v

f

v

f

&

&

.

Potom vyslané slovo bolo

=v 12010011.

3.7.3.3.4 Skúška správnosti dekódovania

( ) 76321 xxxxxv ++++=

Overíme, že pre všetky generujúce korene tohto kódu ( 32 ,,,1 ααα ) sa ( ) 0=xv .

( ) ( ) ( ) ( ) 06111212170603000 ==++++=++++= αααααv

( ) ( ) ( ) ( )( ) ( ) ( ) 066122221

2121 76371613111

=+=+++++++=

=++++=++++=

ααααααααααααααv

( ) ( ) ( ) ( )( ) ( ) ( ) 069222212121

21216462

14126272623222

=+=++++++⋅+=++++=

=++++=++++=

αααααααα

αααααααααv

( ) ( ) ( ) ( )( ) ( ) 096221222121

2121523

21189373633333

=+=+++++⋅+=++++=

=++++=++++=

ααααααααα

αααααααααv

Keďže všetky overenia vyšli správne, dekódovanie (oprava chýb) bolo úspešné.

Page 67: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-67-

4 Bezpečný a spoľahlivý komunikačný kanál

4.1 Miera bezpečnosti komunikačnej cesty

Miera bezpečnosti komunikačnej cesty je daná stupňom náročnosti získania

prenášanej informácie treťou stranou. Teda čím väčšie úsilie musí tretia strana vynaložiť na

získanie prenášanej informácie, tým viac môžeme systém považovať za bezpečnejší. Veľkosť

potrebného úsilia závisí teda od celkového zabezpečenia. Mieru zabezpečenia je možné

zvýšiť voľbou vhodného kryptografického systému so šifrovaním pomocou verejného či

symetrického kľúča, prípadne ich kombináciou.

4.2 Miera spoľahlivosti komunikačnej cesty

Mieru spoľahlivosti komunikačnej cesty charakterizujeme chybovosťou prenosu, resp.

schopnosťou správne rozpoznať vyslané dáta na strane príjemcu. Prostredie, v ktorom sa

informácia šíri, je charakteristické šumom. Ten v konečnom dôsledku veľmi nepriaznivo

vplýva na parametre prenosu, zvyšuje výkon potrebný pre prenos informácie, znižuje rýchlosť

prenosu a podobne. Voľbou vhodného kódovania môžeme zvýšiť mieru spoľahlivosti a

kompenzovať tak rušivý vplyv šumu.

Kódovanie Dekódovanie

Šifrovanie Dešifrovanie

Odosielateľ Prijímateľ

Komunikačný kanál + šum

Tretia strana

PrijímačVysielač

Spoľahlivosť

Bezpečnosť

Obr. 13 Bezpečný a spoľahlivý komunikačný kanál.

4.3 Proxy server

Proxy server je špeciálny typ servera, umožňuje klientom nepriame pripojenie k inému

serveru. Proxy server tak predstavuje sprostredkovateľa medzi klientom a cieľovým

serverom. Voči serveru sa javí ako klient a voči klientovi ako server.

Page 68: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-68-

4.3.1 Činnosť proxy servera

Činnosť proxy servera je možno charakterizovať v nasledovných bodoch

1. Klient sa na miesto na vzdialený server, kontaktuje s proxy serverom.

2. Proxy server prevezme požiadavku klienta obsahujúcu adresu vzdialeného servera,

s ktorým by chcel klient komunikovať.

3. Proxy server sa spojí so vzdialeným serverom a vystupujúc ako klient mu odovzdá

požiadavku od svojho klienta.

4. Vzdialený server odpovie.

5. Proxy server od vzdialeného servera prevezme odpoveď a doručí ju svojmu klientovi.

Proces nastavenia klienta pre prácu s proxy serverom by mal byť podľa možnosti čo

najjednoduchší, zväčša sa nastavuje typ proxy servera, jeho adresa a port, na ktorom

komunikuje. Ak sa na strane klienta vôbec nič nenastavuje a všetky požiadavky idú

automaticky cez proxy server ide o tzv. transparentný proxy server.

Klient ServerOdpoveď

Požiadavka

Obr. 14 Situácia bez použitia proxy servera

ProxyServer

Klient ServerPožiadavka Požiadavka

OdpoveďOdpoveď

Obr. 15 Situácia s použitím proxy servera

Kedže proxy server pozná klienta, od ktorého prišla požiadavka, môže tak riadiť

prístup k informáciám a naviac pre isté služby môže získanú odpoveď nejakým spôsobom

pozmeniť či inak spracovať, uložiť a podobne. Ak viacero klientov zašle tú istú požiadavku,

proxy server môže poskytnúť odpoveď oveľa rýchlejšie.

4.3.2 Kategórie proxy serverov

Proxy servery môžeme rozdeliť do dvoch kategórií

4.3.2.1 Aplikačné proxy servery

Sú navrhnuté iba pre vybrané služby, ako napríklad http, https, ftp.... Výhodou je

ľahké nastavovanie klienta, stačí uviesť adresu proxy servera a jeho port.

Page 69: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-69-

4.3.2.2 SOCKS proxy servery

Fungujú pre ľubovoľné služby za predpokladu, že aplikácia je špeciálne upravená pre

podporu takéhoto typu proxy servera.

4.4 SOCKS protokol

SOCKS protokol je internetový protokol, ktorý umožňuje klient-serverovským

aplikáciam priehľadne využívať služby siete. Má modulárnu schému autentifikácie

a šifrovania, adresovanie je podľa IP verzie 4 alebo 6 alebo podľa doménového mena.

SOCKS je skratka zo SOCKetS. Protokol je vlastne akási medzivrstva medzi aplikačnou

a transportnou vrstvou, umožňujúca „objednanie spojenia“.

4.4.1 „Objednanie spojenia“

„Objednanie spojenia“ vyzerá nasledovne. Klient sa pripojí na proxy server a zašle

zoznam podporovaných autentifikačných metód. Server si vyberie jednu z ponúkaných

metód, alebo, ak nie je ani jedna vhodná, zašle chybové hlásenie. V závislosti od vybranej

autentifikačnej schémy prebehne prípadná vzájomná komunikácia medzi klientom

a serverom. Klient potom zašle požiadavku pre spojenie na vzdialený server. Proxy server

uskutoční spojenie na vzdialený server a zašle odpoveď klientovi. Ak prebehlo nadviazanie

spojenia úspešne, potom od tohto momentu sú všetky dáta klienta preposielané na vzdialený

server a naopak. Klient tak komunikuje so vzdialeným serverom, ako by bol k nemu priamo

pripojený.

Protokol SOCKS aktuálne vezie 5 je podrobnejšie popísaný v [16].

4.5 Tunelovací protokol

Definícia: Tunelovací protokol je sieťový protokol, ktorý zapúzdruje nejaký protokol

alebo reláciu protokolu vyššej vrstvy do protokolu na rovnakej vrstve.

4.6 Bezpečný a spoľahlivý komunikačný kanál

Skutočnosť, že klient komunikuje so vzdialeným serverom cez proxy server, ktorý tak

má prístup k obsahu posielaných správ sa z bezpečnostného hľadiska môže javiť ako

potencionálna hrozba úniku informácií. Tento jav však môžeme využiť v náš prospech. Proxy

server rozdeľme na dve časti. Na časť, ktorá prijíma požiadavky od klienta a na časť, ktorá

Page 70: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-70-

vysiela požiadavky na vzdialený server. Medzi týmito častami potom máme prístup k obsahu

komunikácie.

Klient ServerPožiadavka Požiadavka

OdpoveďOdpoveď

SOCKSproxyserver(Server)

SOCKSproxyserver(Klient)

SOCKS proxy server

Prístup k obsahu

komunikácie

Obr. 16 Prístup k obsahu komunikácie

Obsah komunikácie potom na vysielacej strane rozdeľme do tzv. balíkov. Jednotlivé

balíky zašifrujme, zakódujme a odošlime príjimacej strane. Na tejto strane sa potom balíky

rozkódujú, dešifrujú a ich zložením získame pôvodný obsah komunikácie. Klientskú časť

proxy servera prenesme čo najtesnejšie ku klientovi a serverovskú časť čo najbližšie ku

vzdialenému serveru. Potom najviac ohrozenou časťou komunikačného reťazca je práve

spojenie medzi týmito dvoma časťami. Týmto spojením však posielame iba zabezpečené

balíky. Takto sme vlastne vytvorili bezpečný a spoľahlivý komunikačný kanál.

Bezpečný a spoľahlivýkomunikačný kanál

Klient Server

SOCKS

proxy

server

(Server)

SOCKS

proxy

server

(Klient)

Klient Server

Obr. 17 Vytvorenie bezpečného a spoľahlivého komunikačného kanálu

4.6.1 Balík

Balík do ktorého zapúzdrujeme pôvodný protokol ma nasledujúci tvar:

#define MAX_DATA_SIZE 512 ... class Pack { public: unsigned char Type; int Id; int DataSize; unsigned char data[MAX_DATA_SIZE]; };

Page 71: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-71-

Môžeme ho rozdeliť na dve časti, a to na čast dátovú a na čast riadiacu. Do dátovej

časti patria nasledovné položky. MAX_DATA_SIZE predstavuje maximálnu veľkosť dát

z pôvodnej správy, ktorú môžeme vtesnať do balíka. Premenná DataSize reprezentuje

skutočnú veľkosť dát pôvodnej správy a jej hodnota by nemala presiahnúť konštantu

MAX_DATA_SIZE. Bajtové pole data[] potom predstavuje samotné dáta. Premenné Type a

Id majú riadiaci význam a patria teda do časti riadiacej. Type značí typ balíku a Id je

identifikátor balíku, resp relácie.

4.6.2 Relácie

Zostavenie bezpečného kanálu si vyžaduje nadviazanie šifrovaného spojenia, ktoré je

spojené s pripadným generovaním a výmenou šifrovacích kľúčov. Keďže zostavovať

bezpečný kanál pre každú požiadavku na spojenie klienta so vzdialeným serverom by bolo

neefektívne, zavedieme tzv. relácie. Cez zostavený kanál potom môže prebiehať viacero

spojení súčasne. Každé spojenie pomenujme reláciou a charakterizujme identifikátorom

relácie. Potom to, ktorej relácií ktorý balík patrí, určuje práve identifikátor balíku Id. Súčasný

beh viacerých spojení cez spoločný kanál je tvorený pomocou časového delenia prenosových

prostriedkov.

SocketServer

SocketPipe

SocketPipe

p2pClient

p2pPipe

P2p

SocketPipe

Node - Klient

p2pPipe

p2pServerSocketClientPipe

SocketClientPipe

SocketClientPipeP2p

Node - Server

Klient

Klient

Klient

Server

Server

Server

Obr. 18 Beh viacerých spojení súčasne

4.6.3 Dátový procesor

Medzi klientskou a serverovskou časťou teda komunikujeme pomocou balíkov. Každý

balík má rovnakú veľkosť. To aká je a i samotné šifrovanie a kódovanie obstaráva tzv. dátový

Page 72: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-72-

procesor. V našom prípade je reprezentovaný objektmi DataProcessorSend pre posielanie

a DataProcessorRecv pre príjem balíkov. Obstaráva tiež generovanie a ukladanie šifrovacích

kľúčov. Objekty sú charakterizované stavovou premennou State. Tá reprezentuje stav,

v ktorom sa nachádzajú, resp. práve používaný typ šifrovania a kódovania.

RSADecrypter ElGamalDecrypter BCHDecoder

RSAEncrypter ElGamalEncrypter BCHCoder

DataProcessorRecv

DataProcessorSend

Obr. 19 Dátový procesor

4.6.4 P2p Pipe

P2p Pipe je objekt, ktorý priamo zabezpečuje vysielanie i príjem balíkov. Vysielanie je

realizované v spolupráci s objektom DataProcessorSend, ktorý balík spracuje do vhodného

formátu pre vyslanie na komunikačný kanál. Príjem balíkov je o niečo zložitejší. Jeden zo

základných predpokladov správneho príjmu balíka je ten, že poznáme jeho príchodziu

veľkosť a typ použitého šifrovania a kódovania.. Veľkosť zistíme pomocou objektu

DataProcessorRecv a použijeme vo volaní funkcie recv(...); Prijatý balík predáme procesoru

a ten nám, ak je to možné, vráti balík v pôvodnej podobe, teda rozkódovaný a rozšifrovaný.

Takýto balík potom putuje k interpreteru balíkov, ktorý rozhodne o jeho daľšom spracovaní.

DataProcessorSend

Soket

DataProcessorRecv ...recv(...);

...send(...);

p2pPipe

Pack Interpreter

Send

Obr. 20 P2p pipe

4.6.5 Interpreter balíkov

Je jednoduchý rozhodovací algoritmus, ktorý podľa typu balíka (hodnota Type) volí

príslušný algoritmus pre jeho spracovanie.

Page 73: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-73-

4.6.6 Typy balíkov

4.6.6.1 Balíky pre tunelovací protokol

� Balíky typov 0 a 1 slúžia na prenos dát, resp. na prenos zapúzdreného protokolu.

� Balík typu 0 prenáša dáta zo strany vzdialeného servera na klientskú stranu.

� Balík typu 1 prenáša dáta z klientskej strany na stranu vzdialeného servera.

� Balík typu 2 uskutočňuje spojenie klienta na vzdialený server.

� Balík typu 10 vykonáva ukončenie spojenia iniciované zo strany vzdialeného servera,

uzátvára spojenie na strane klienta.

� Balík typu 11 vykonáva ukončenie spojenia iniciované zo strany klienta, uzatvára

spojenie na strane vzdialeného servera.

4.6.6.2 Balíky pre nastavenie RSA kryptosystému

� Balík typu 60 nastavuje RSA verejný kľúč, ktorý má vo svojej dátovej časti.

� Balík typu 61 predstavuje žiadosť o zaslanie verejného kľúča. Odpoveďou na tento balík

je balík typu 60.

� Balík typu 62 nastavuje dátový procesor pre odosielanie balíkov do módu šifrovania

RSA kryptosystémom.

� Balík typu 63 predstavuje žiadosť o nastavenie dátového procesora do módu šifrovania

RSA kryptosystémom. Prijatím tohoto balíka sa dátový procesor pre príjem správ

nastaví na mód RSA a odpoveďou je balík typu 62.

4.6.6.3 Balíky pre nastavenie ElGamal kryptosystému

� Balíky typu 70 až 75 predstavujú výmenu parametrov verejného kľúča ElGamalovho

kryptosystému.

� Balíky typu 71 a 70 zabezpečujú výmenu parametra G, kde balík typu 71 je žiadosť

o zaslanie a balík typu 70 je odpoveď.

� Podobne balíky typu 73 a 72 vymieňajú parameter Y a balíky typu 75 a 74 vymieňajú

prameter P, kde balíky s nepárnym typom sú žiadosti a balíky s párnym typom sú

odpovede.

� Balík typu 76 nastavuje dátový procesor pre odosielanie balíkov do módu šifrovania

ElGamalovým kryptosystémom.

� Balík typu 77 predstavuje žiadosť o nastavenie dátového procesora do módu šifrovania

ElGamalovým kryptosystémom. Prijatím tohoto balíka sa dátový procesor pre príjem

správ nastaví na mód ElGamal a odpoveďou je balík typu 76.

Page 74: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-74-

Poznámka: ElGamalov verejný kľúč

pPYG a === ,, αα (141)

privátny kľúč

aX = (142)

podľa 2.6.1

4.6.6.4 Ostatné balíky

� Balík typu 55 slúži na jednoduché testovanie dostupnosti spojenia.

� Balíky typov 100 až 199. U týchto balíkov sa typ redukuje o hodnotu 100 a následne sa

zasielajú odosielateľovi späť.

4.6.7 Testovanie dostupnosti

Príklad využitia balíkov typu 55, jednoduché testovanie dostupnosti. Ak chce klient

oznámiť serveru svoju dostupnosť, zašle mu balík typu 55. No ak chce klient zistiť

dostupnosť serveru, zašle balík typu 155. Server tento balík prijme, redukuje hodnotu Type na

55 a zašle ho naspäť. Server tak vlastne oznamuje svoju dostupnosť klientovi, no s tým

rozdielom, že iniciátorom bol klient.

4.6.8 Bod-to-bod verzus klient-server

Na obidvoch koncoch zostaveného komunikačného kanála je identický objekt

p2pPipe. To znamená, že obe strany môžu do určitej miery poskytovať i vyžadovať rovnaké

služby. Do určitej miery preto, že niektoré služby sú závislé i od ďaľších objektov, ktoré

zrovna nemusia byť na danej strane prítomné. Ide teda skôr o typ siete bod-to-bod (anglicky

peer-to-peer, odtiaľ aj názov objektu – p2p...), ako klient-server. Môžeme teda povedať, že

samotný komunikačný kanál je tvorený jednoduchou sieťou bod-to-bod a nad touto sieťou

beží protokol zabezpečujúci „objednanie spojenia“.

4.6.9 Tunelovanie spojenia

Predpokladajme, že máme zostavený komunikačný kanál. Potom klient, ktorý chce

komunikovať so vzdialeným serverom prostredníctvom tohto kanálu, pripojí sa na klientskú

časť a využitím protokolu SOCKS zadá pokyn pre spojenie na vzdialený server. Klientská

časť reprezentuje požiadavku na spojenie vo forme balíku typu 2, kde v jeho dátovej oblasti je

uložená adresa a port vzdialeného servera a v riadiacej oblasti je nastavený identifikátor

Page 75: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-75-

relácie a tento balík zašle serverovskej časti. Na strane servera interpreter balíkov vytvorí

spojenie na vzdialený server, nastaví rovnaký identifikátor relácie, ako má vysielacia strana

a zašle naspäť balík typu 0, v ktorého dátovej oblasti je správa o úspešnom „objednaní

spojenia“. Táto správa je vlastne poslednou správou SOCKS protokolu. Keď klient obdrží

túto správu, predpokladá úspešné zostavenie spojenia na vzdialený server, s ktorým potom

komunikuje tak, akoby bol k nemu priamo pripojený. Táto komunikácia sa zapúzdruje do

balíkov typu 0 a 1 v závislosti od smeru prenosu. Ak sa hociktorá zo strán rozhodne spojenie

ukončiť, vygeneruje sa balík typu 10 alebo 11, v závislosti od toho, ktorá strana sa rozhodla a

zašle sa strane opačnej, spojenie sa tým ukončí.

4.6.10 Zabezpečenie komunikačného kanálu

Predpokladajme, že máme zostavený komunikačný kanál a tento chceme zabezpečiť

pomocou RSA kryptosystému. Zvoľme ľubovoľnú stranu, pre príklad nech je to strana

klientská. Potom z tejto strany pomocou balíka typu 61 zašleme požiadavku na verejný kľúč

protistrany. Predpokladajme, že sme prijali balík typu 60 so správnym kľúčom. Potom

môžeme vyslať balík typu 63 a predpokladať príjem balíka typu 62. Teraz máme aktívne RSA

šifrovanie, no len jednosmerne. Kedže sme zvolili klientskú stranu, šifrujeme balíky idúce

z klientskej strany na stranu serverovskú, balíky idúce opačným smerom však zostávajú

v pôvodnej forme. Zabezpečenie i opačného smeru komunikácie by vyžadovalo zaslanie

rovnakých typov balíkov, avšak z opačnej strany, teda v našom príklade, zo strany servera.

Predpokladajme však, že okrem možnosti ovládania druhej strany pomocou balíkov, žiadna

iná nie je. Využijeme však preposielanie balíkov späť odosielateľovi. Potom pomocou

balíkov typu 161 a 163 aktivujme šifrovanie i opačným smerom. Teda výsledná postupnosť

typov balíkov pre obojsmerné zabezpečenie komunikácie pomocou RSA kryptoytému bude

61, 63, 161 a 163.

4.6.11 Realizácia komunikačného kanálu

Aplikácia zabezpečujúca bezpečný a spoľahlivý komunikačný kanál má názov node5.

Možno ju spustiť vo viacerých módoch v závislosti od parametrov, ktoré zadávame pri

spustení. Pre vytvorenie komunikačného kanálu (tunela) spustíme na jednom konci aplikáciu

zadaním node5 server, tým sme vytvorili komunikačný bod, ktorý očakáva spojenie od

ďaľšieho bodu. Ten vytvoríme zadaním node5 client na opačnom konci komunikačného

kanálu. Konkrétnejšie je to vidieť na obr. 21 a 22.

Page 76: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-76-

Obr. 21 Node5 ako server

Obr. 22 Node5 ako klient

Page 77: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-77-

5 Aplikácia pre prenos správ a súborov

Aplikácia je naprogramovaná v jazyku Java. Umožňuje dvojstrannú komunikáciu

medzi dvomi uživateľmi pomocou textových správ, ktoré môžu byť v pôvodnej forme, alebo

vo forme šifrovanej. Umožňuje tiež prenos súborov medzi komunikujúcimi užívateľmi.

Obr. 23 Hlavné okno aplikácie pre prenos správ a súborov

5.1 Šifrovanie v Jave

Šifrovanie v Jave zabezpečuje Java kryptografické rozšírenie, anglicky Java Cryptography

Extension (JCE). Je to množina balíčkov (java.security, javax.crypto), ktoré poskytujú systém

a implementácie pre šifrovanie, generovanie kľúčov, dohadovanie kľúčov a algoritmy

Message Authentication Code (MAC). Podpora pre šifrovanie zahrňuje symetrické,

asymetrické, blokové i prúdové šifry.

5.1.1 Java JCE

JCE je založené na princípe tzv. provajderov (Cryptographic Service Provider), ktorí

poskytujú konkrétne implementácie požadovaných algoritmov. V systéme ich môže byť

súčasne viac, potom by však mala byť špecifikovaná ich preferencia. JCE šandardne používa

„SunJCE“ provajdera, ktorý umožňuje nasledujúce služby:

� Implementácia DES (FIPS PUB 46-1), Triple DES a Blowfish šifrovacích

algoritmov v režimoch Electronic Code Book (ECB), Cipher Block Chaining

Page 78: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-78-

(CBC), Cipher Feedback (CFB), Output Feedback (OFB), Propagating Cipher

Block Chaining (PCBC).

� Generátory kľúčov vhodných pre algoritmy DES, Triple DES, Blowfish,

HMAC-MD5 a HMAC-SHA1.

� Implementácia algoritmu MD5 so šifrovacím algoritmom založeným na hesle

password-based encryption (PBE) DES-CBC, algoritmus definovaný v

PKCS#5.

� "Továreň na tajné kľúče" umožňujúca obojsmerný prevod medzi

nepriehľadnými objektmi kľúčov Triple DES a PBE a priehľadnou

reprezentáciou ich základného materiálu.

� Implementácia Diffie-Hellmanovej výmeny kľúčov medzi dvoma alebo

viacerými stranami.

� Generátor Diffie-Hellmanovho páru kľúčov pre generovanie páru verejného a

privátneho kľúča vhodného pre Diffie-Hellmanov algoritmus.

� Generátor parametra Diffie-Hellmanovho algoritmu.

� „Továreň“ pre kľúče Diffie-Hellman, poskytujúca obojsmerný prevod medzi

nepriehľadnými objektmi Diffie-Hellman kľúčov a priehľadnou reprezentáciou

ich základného materiálu.

� Správca parametrov pre algoritmy Diffie-Hellman, DES, Triple DES, Blowfish

a PBE.

� Implementácia hašovacích funkcií HMAC-MD5 a HMAC-SHA1

definovaných v RFC 2104.

� Implementácia zarovnávacej a vypĺňacej schémy popísanej v PKCS#5.

Nových provajderov môžeme pridávať staticky i dynamicky. Rôzne implementácie

môžu mať rozličné vlastnosti. Niektoré sú založené na softvérovej úrovni, iné na hardvérovej.

Niektoré sú platformovo nezávislé, no iné môžu byť platformovo špecifické. Zdrojový kód

provajdera môže, no i nemusí byť prístupný.

5.1.2 Zoznam kryptografických provajderov

Zobrazenie zoznamu provajderov, zabezpečujúcich kryptovanie v systéme.

Provider[] providers = Security.getProviders(); for (int i = 0; i < providers.length; i++){

String name = providers[i].getName(); double version = providers[i].getVersion(); System.out.println("Provider["+i+"]:: " + name + " " + version);

}

Page 79: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-79-

5.1.3 Generovanie kľúčov

Generovanie privátneho a verejného kľúča pre RSA šifrovací systém. Ak nezáleží na

implementácií generátora, nemusíme špecifikovať provajdera. Systém, tiež automaticky

inicializuje generátor kľúčov. Ak chceme vygenerovať viacero kľúčov, môžeme použiť ten

istý generátor.

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(512); // 512, veľkosť kľúča KeyPair kp = kpg.generateKeyPair(); PublicKey pubk = kp.getPublic(); // verejný kľúč PrivateKey prvk = kp.getPrivate(); // privátny kľúč

5.1.4 Šifrovanie

Objekt cipher nastavíme do módu šifrovania RSA s verejným kľúčom pubk.

Zavolaním metódy doFinal zašifrujeme správu inpBytes.

byte[] inpBytes Cipher cipher = Cipher.getInstance(("RSA"); cipher.init(Cipher.ENCRYPT_MODE, pubk); cipher.doFinal(inpBytes);

5.1.5 Dešifrovanie

Objekt cipher nastavíme do módu dešifrovania RSA šifry privátnym kľúčom prvk a

zavolaním metódy doFinal šifru inpBytes dešifrujeme.

byte[] inpBytes Cipher cipher = Cipher.getInstance(("RSA"); cipher.init(Cipher.DECRYPT_MODE, prvk); cipher.doFinal(inpBytes);

5.2 Sieťová komunikácia v Jave

Java Networking API (java.net) zabezpečuje rozhranie a objekty, ktoré umožňujú

adresovanie, vytváranie TCP spojení, posielanie a prijímanie datagramových paketov

pomocou UDP, lokalizovanie a identifikovanie sieťových zdrojov, bezpečnosť, autentifikáciu

a prístupové práva.

5.2.1 Adresovanie

5.2.1.1 IP adresovanie - InetAddress, Inet4Address, Inet6Address

Trieda InetAddress reprezentuje adresu dĺžky 32 alebo 128 bitov používanú

internetovým protokolom (IP). Inet4Address reprezentuje IPv4 adresu vo formáte

Page 80: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-80-

xxx.xxx.xxx.xxx. pre príklad 192.168.1.2. Pre reprezentáciu IPv6 adresy sa používa trieda

Inet6Address. Triedy Inet4Address, Inet6Address sú podtriedami triedy InetAddress.

5.2.1.2 Soketové adresovanie - SocketAddress, InetSocketAddress

SocketAddress je abstraktná soketová adresa, nezávisí od špecifikovaného protokolu.

InetSocketAddress je podtriedou SocketAddress a reprezentuje IP soketovú adresu. Tá zahŕňa

IP adresu (pre príklad 192.168.1.2) a port (pre príklad 80), prípadne meno hostiteľa

(www.tnuni.sk)a port (80), alebo prípadne iba port (80).

5.2.2 Vytváranie TCP spojenia

Triedy, ktoré zabezpečujú štandardné TCP spojenie sú ServerSocket, Socket. Pre

jednoduché spojenie medzi klientom a serverom s týmito triedami vystačíme.

ServerSocket reprezentuje soket na strane servera, ktorý čaká a načúva požiadavkám

klientov. Socket reprezentuje koncový bod komunikácie medzi serverom a klientom. Klient

vytvorí Socket a vyšle požiadavku pre komunikáciu so serverom. Keď server túto požiadavku

príjme, vytvorí Socket pre komunikáciu s klientom a ak ho neuzavrieme, pokračuje

v načúvaní ďalej.

5.2.2.1 Vytvorenie serverovského soketu

Vytvorenie serverovského soketu, načúvajúceho na porte 1234.

int port = 1234; ServerSocket serverSocket = new ServerSocket(port); while (... { Socket socket = serverSocket.accept(); } serverSocket.close();

5.2.2.2 Vytvorenie klientského soketu

Vytvorenie klientského soketu a jeho pripojenie na IP adresu 127.0.0.1 a port 1234. int port = 1234; String ip = new String("127.0.0.1"); InetSocketAddress endpoint = null; endpoint = new InetSocketAddress(InetAddress.getByName(ip), port); Socket socket = new Socket(); socket.connect(endpoint);

5.2.2.3 Pripojenie pomocou proxy servera

Java natívne podporuje pripájanie soketov pomocou proxy servera. Môžeme použiť

nasledujúce typy:

Page 81: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-81-

Proxy.NO_PROXY, pripojenie bez proxy servera.

Proxy.Type.SOCKS, pripojenie pomocou proxy servera s protokolom SOCKS.

Proxy.Type.HTTP, pripojenie pomocou proxy servera s protokolom HTTP.

int port = 3128; String ip = new String("127.0.0.1"); SocketAddress addr = null; addr = new InetSocketAddress(InetAddress.getByName(ip), port); proxy = Proxy.NO_PROXY; proxy = new Proxy(Proxy.Type.SOCKS, addr); proxy = new Proxy(Proxy.Type.HTTP, addr); ... Socket socket = new Socket(proxy); ...

5.3 Objektová serializácia

Objektová serializácia je prevedenie ľubovoľného objektu ktorý implementuje

rozhranie Serializable na postupnosť bajtov. Načítaním tejto postupnosti neskôr môžeme

obnoviť stav objektu. Umožňuje vyrovnať rozdiely medzi systémami. Využíva sa na presun

objektov v sieťovom prostredí, ukladanie objektov na diskové zariadenia, prípadne do

databázy objektov. Serializácia poskytuje podporu RMI - Remote Method Invocation -

vzdialené volanie metód. Pri serializácií sa prechádza graf objektu (sieť objektu), sledujú sa

všetky odkazy na objekty a tieto objekty sa ukladajú tiež.

Vytvorenie serializovateľnej triedy vykonáme tak, že implementujeme rozhranie

Serializable.

import java.io.Serializable; public class SerializovanaTrieda implements Serializable {

public SerializovanaTrieda() { ... }

... }

5.4 Komunikačný protokol

Komunikácia medzi dvoma uživateľmi resp. medzi dvoma aplikáciami prebieha na

úrovni objektov.

import java.io.Serializable; public class Packet implements Serializable {

public void run(SocketEndPoint socketEndPoint) { }

}

Page 82: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-82-

Trieda Packet je však iba akási abstraktná trieda, ktorá sama o sebe nič nevykonáva.

Slúži pre zjednodušenie komunikačného systému tým spôsobom, že objektové prúdy

nastavíme na vyslanie či príjem iba tejto triedy.

Výstupný objektový prúd

OutputStream outStream = socket.getOutputStream(); ObjectOutputStream objOut = new ObjectOutputStream(outStream);

Vstupný objektový prúd

InputStream inStream = socket.getInputStream(); ObjectInputStream objIn = new ObjectInputStream(inStream);

Komunikácia potom prebieha pomocou tried, ktoré sú rozšírením triedy Packet.

Napríklad trieda PacketSendData je rozšírením triedy Pack a slúži na prenos správ.

public class PacketSendData extends Packet { private byte[] byteData = null; public PacketSendData(String strData, SocketEndPoint socketEndPoint){ byteData = strData.getBytes(); ... } } public void run(SocketEndPoint socketEndPoint) { ... String str = null; if (byteData != null) { str = new String(byteData); socketEndPoint.textOut(str); } }

... }

Poznámka: Trieda SocketEndPoint slúži na vyslanie, príjem a spracovanie správ, resp.

tried Pack. Sprístupňuje triedam typu Pack metódy ostatných tried v systéme, napríklad

šifrovanie, či uloženie správ a podobne. Vačšinou sa práve v objekte tejto triedy vytvárajú

jednotlivé objekty odvodené od triedy Packet.

5.4.1 Popis komunikačných paketov

5.4.1.1 Packet

Základná trieda, od ktorej sú odvodené všetky ďalšie triedy paketov.

Page 83: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-83-

5.4.1.2 PacketSendID

Slúži pre zasielanie identifikátora komunikujúcej strany a pre jeho nastavenie na

strane opačnej. Inými slovami Alica si nastaví svoj identifikátor na svoje meno a pomocou

paketu PacketSendID ho nastaví i u Boba. Potom Bob vie, resp. predpokladá že komunikuje

s Alicou. Analogicky môže postupovať i Bob.

5.4.1.3 PacketSendMyPublicKey

Týmto paketom zasielame a nastavujeme verejný šifrovací kľúč. Týmto kľúčom sa

potom v závislosti od príznaku použitia asymetrickej kryptografie šifrujú zasielané správy.

5.4.1.4 PacketEnableAsymetricCryptography

Tento paket nastavuje príznak použitia asymetrického šifrovania. Pred tým ako

povolíme použitie asymetrickej šifry predpokladáme, že príjemca má náš verejný kľúč,

ktorým bude správy šifrovať.

5.4.1.5 PacketSendData

Paket slúží pre zasielaníe správ. Pomocou jeho konštruktoru doň vložíme správu

a pomocou volania metódy run(...) ju získame späť. Správa sa po vložení do objektu šifruje

v závislosti od príznaku použitého kryptografického systému.

5.4.1.6 PacketRequestReceivingFile

Týmto paketom zasielame popis súboru, ktorý plánujeme odosielať a na druhej strane

vytvárame soketový server načúvajúci na príchodzie spojenie. Ako odpoveď na tento paket je

paket nasledujúci.

5.4.1.7 PacketReceivingFileAccepted

Tento paket je odpoveďou na paket PacketRequestReceivingFile. Posiela ho strana,

ktorá je pripravená prijímať dáta. Paket po prijatí vytvorí soketového klienta, nadviaže

spojenie, a začne posielať súbor.

Page 84: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-84-

5.4.2 Prenos správ

Obr. 24 Alicin komunikačný terminál

Obr. 25 Bobov komunikačný terminál

Predpokladajme, že Alica s Bobom majú vytvorený spoločný objektový kanál. Potom

si pomocou paketov PacketSendID vzájomne vymenia svoje identifikátory a pomocou

paketov PacketSendData si môžu posielať správy. Ak chcú spolu komunikovať šifrovane,

navzájom si vymenia verejné kľúče (PacketSendMyPublicKey) a nastavia šifrovaný mód

komunikácie (PacketEnableAsymetricCryptography(true)). Výmena správ potom prebieha

rovnakým spôsobom, teda pomocou PacketSendData avšak v šifrovanej podobe. Prenos

objektov zabezpečujú objektové prúdy. Odosielanie, príjem a spracovanie objektov prebieha

v prostredí objektu SocketEndPoint. Alica posiela objekt volaním metódy Send(...) objektu

SocketEndPoint. Bob príjma objekt automaticky po jeho odoslaní a vyhodnocuje ho volaním

jeho metódy run(...) .

Page 85: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-85-

String msg = new String("Hello Bob!!!");

Packet packet = new PacketSendData(msg, this);

objOut.writeObject(packet);

SocketEndPoint

Alica vysiela správu Hello Bob!!!

Výstupný objektový prúd

SocketEndPoint

Bob

Vstupný objektový prúd

Packet pck = null;

pck = (Packet) objIn.readObject();

pck.run(this);

prijíma správu Hello Bob!!!

socketEndPoint.textOut(...);

Obr. 26 Posielanie správ

Poznámka: Aplikácia umožňuje komunikáciu v pôvodnej forme a v šifrovanej forme

s využitím kryptosystému RSA. Kedže kryptografia v Jave je tvorená pomocou provajderov,

ktorí poskytujú rôzne šifrovacie algoritmy, prípadné rozširenie či použitie iného šifrovacieho

systému nepredstavuje výraznejšiu zmenu aplikácie.

Poznámka: V šifrovanom móde komunikácie sa šifruje text samotnej správy, nešifruje

sa však samotný objekt, ktorý správu prenáša.

5.4.3 Prenos súborov

Prenos súborov prebieha pomocou objektov FileTransferClient a FileTransferServer.

Alica si zvolí súbor, ktorý chce poslať Bobovi. Vytvorí paket PacketRequestReceivingFile,

vloží doň popis súboru (meno, veľkosť...) a zašle Bobovi. Ten paket príjme, vytvorí objekt

FileTransferServer so soketovým serverom, ktorý načúva na vopred dohodnutom porte na

príchodzie spojenie a zašle Alici paket PacketReceivingFileAccepted. Prijatím tohto paketu

Alica vytvorí objekt FileTransferClient a pomocou soketovej komunikácie začne vysielať

súbor. Samotný prenos súboru sa uskutočňuje presunom dát medzi bajtovými prúdmi. Na

Page 86: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-86-

strane FileTransferClient je to presun medzi vstupným prúdom súboru a výstupným prúdom

soketu a na strane FileTransferServer medzi vstupným prúdom soketu a výstupným prúdom

súboru. Dáta sa prenášajú v nešifrovanej forme.

Alica Bob

Obojsmerný objektový prúd

PacketRequestReceivingFile

PacketReceivingFileAccepted

Baj tov ý prúd

FileTransfer

Client

FileTransfer

Server

Súbor

SocketEndPoint

Soket Soket

Súbor

SocketEndPoint

Obr. 27 Prenos súborov

Obr. 28 Alicin komunikačný terminál, prenos súborov

Page 87: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-87-

Obr. 29 Okno pre výber súboru

Obr. 30 Stav prenosu súboru

5.4.4 Štruktúra menu aplikácie

� Node - Menu pre základné ovládanie aplikácie. � Server Start/Stop – Aktivácia/Deaktivácia servera, touto funkciou

aktivujeme/deaktivujeme možnosť príjímať príchodzie spojenia. � Console On/Off – Zapnutie či vypnutie konzolového okna. Konzolové

okno slúži na zobrazenie rôznych systémových správ. � Exit – Ukončenie práce s aplikáciou.

� Settings – Menu pre nastavovanie vlastností aplikácie. � Node – Nastavenie identifikátora aplikácie, týmto identifikátorom sa

prezentujeme počas komunikácie druhej strrane. � Server – Nastavenie portu, na ktorom načúva server na príchodzie

spojenia. � Proxy – Nastavenie proxy servera pre odchodzie spojenie. � File Transfer – Nastavnie portu, na ktorom server načúva príchodziemu

spojeniu pri zostavovaní spojenia pre prenos súborov.

� Help – Menu pre technickú pomoc. � About – Informačné okno o aplikácií

Page 88: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-88-

5.4.5 Konzola aplikácie

Príklad konzoly aplikácie, stav po spustení aplikácie, nadviazaní spojenia medzi Alicou a Bobom, vymenením si krátkych správ a zaslaní súboru obrazok01.jpg Bobovi.

Obr. 31 Konzola aplikácie

Page 89: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-89-

Záver

Úlohou tejto práce bolo navrhnúť a naprogramovať komunikačný protokol pre

spoľahlivú a bezpečnú sieťovú komunikáciu a aplikáciu, ktorá bude tento protokol využívať

na prenos správ a súborov. V práci sme najskôr objasnili niektoré matematické pojmy a

definície a potom prešli do oblasti kryptografie. V nej sme prebrali problematiku šifrovania so

symetrickým i verejným kľúčom a zhodnotili jednotlivé výhody i nevýhody. Ďalej sme sa

zaoberali algoritmami pre kryptosystémy využívajúce techniky verejného kľúča, konkrétne

RSA, ElGamal a Menezes Vanstone kryptosystém eliptických kriviek. V oblasti kódovania

sme prebrali základné pojmy ako kódovanie, detekcia a oprava chýb a konkrétnejšie popísali

BCH kód a uviedli príklad pre dekódovanie kódu nad poľom )9(GF . V nasledujúcej časti

sme riešili návrh a realizáciu komunikačného protokolu.

Hlavnou časťou spoľahlivej a bezpečnej komunikácie je komunikačný kanál. Ten sme

vytvorili pomocou jednoduchej siete typu bod-to-bod. V tejto sieti prebieha komunikácia

pomocou tzv. balíkov. Balíky majú dve časti, riadiacu a dátovú. Riadiaca časť hovorí o tom,

čo treba vykonať s dátami v dátovej časti. Dátová časť potom predstavuje samotné dáta.

Komunikačný kanál je zabezpečený rôznymi druhmi šifrovania, v našom prípade je to RSA a

ElGamal kryptosystém. Spoľahlivosť zaisťujú BCH kódy.

Nad týmto komunikačným kanálom sme čiastočne implementovali protokol SOCKS5,

ktorý slúži na získanie zdroja dát. Navonok komunikačný kanál vystupuje ako proxy server.

Klient, ktorý chce komunikovať so vzdialeným serverom sa potom pripojí na náš proxy

server. Ak prebehlo pripojenie a zostavenie komunikačnej relácie úspešne, potom klient

komunikuje cez zabezpečený kanál so vzdialeným serverom tak, akoby bol k nemu pripojený

priamo. Navrhnutý protokol má tunelovací charakter. Komunikačný kanál teda predstavuje

tunel, ktorým prechádzajú dáta protokolu klientskej aplikácie.

V poslednej časti sme vytvorili aplikáciu, s vlastným protokolom zaisťujúcim

posielanie textových správ a prenos súborov. Aplikácia podporuje komunikáciu pomocou

proxy servera. Teda pre prepojenie dvoch takýchto aplikácií môžeme využiť náš tunelovací

protokol. Aplikácia bola vytvorená v jazyku Java, v prostredí Eclipse 3.1.1

Implementácia návrhu protokolu bola testovaná na jednom počítači pomocou

lokálnych pripojení i v prostredí siete typu LAN pomocou viacerých počítačov.

Tunelovanými protokolmi boli: vlastný protokol ukážkovej aplikácie, HTTP, HTTPS

(Mozilla Firefox/1.5.0.11), FTP (SmartFTP v2.0.1002), ICQ (ICQ(R) Version 5.10)

Page 90: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-90-

Táto práca predstavuje návrh protokolu pre bezpečnú a spoľahlivú komunikáciu.

Návrh je implementovaný v jazyku C++, v prostredí Microsoft Visual C++ 2003 s využitím

knižnice GMP [18]. Podporuje protokoly komunikujúce na nižšej vrstve pomocou TCP/IP.

Čiastočne implementuje SOCKS5 protokol, z ktorého využíva možnosť vytvoriť spojenie

pomocou IPv4 adresy, bez použitia autentifikácie. Keďže ide o návrh a nie o kompletnú

realizáciu protokolu, nie všetky chybové stavy, ktoré môžu nastať, sú ošetrené. Ošetrenie

týchto stavov, prípadne použitie iných typov šifrovania a kódovania či iné rozšírenie by

vyžadovalo pridanie ďaľších typov balíkov a prípadne i objektov, zabezpečujúcich

požadovanú funkcionalitu. Ako možné rozšírenie uveďme napríklad použitie kryptosystému

eliptických kriviek, či aplikovanie šifrovania so symetrickým kľúčom, prípadne využitie

iného typu kódovania, resp iného poľa GF.

Sieť typu bod-to-bod, nad ktorou je protokol navrhnutý, je realizovaná pomocou

protokolu TCP/IP, no v podstate by mohla byť realizovaná hocijakým iným protokolom,

určeným pre prenos dát. V našom prípade využívame BCH kód nad poľom )9(GF popísaný

v príklade 3.7.3.3, alebo v [7]. Ten má ternárny charakter a jeho využitie by bolo efektívne

skôr v systémoch s troj-stavovou reprezentáciou dát. Môžeme ho však využiť i na vytvorenie

tunela pre prenos binárnych dát cez ternárny systém.

Implementácia protokolu je tvorená pre prostredie operačného systému Windows,

konkrétne Windows XP. Je však možné ju preniesť i do iných systémov. Treba však vyriešiť

otázku tvorby vlákien a ich vzájomnej synchronizácie v danom systéme.

Keďže protokol používa šifrovanie i relácie, môžeme pomocou neho skryť nielen

obsah posielaných správ, ale i miesto, kam tieto správy idú, resp. odkiaľ prichádzajú.

Uveďme príklad: Uživateľ sa nachádza v dosahu verejného prístupového bodu do siete

internet. Pripojí sa k nemu pomocou bezdrátového pripojenia. Potom poskytovateľ služby

prístupu do siete má možnosť zistiť s akým serverom uživateľ komunikuje, prípadne má

i prístup k obsahu komunikácie. Uživateľovi však stačí mať niekde v sieti dôveryhodný

server, na ktorom beží aplikácia Node5 v móde server, resp. prístupový bod, ktorý načúva

príchodzím požiadavkám na vytvorenie komunikačného spojenia. Spustením aplikácie Node5

v klientskom móde a pripojením sa na dôveryhodný server uživateľ vytvorí druhý prístupový

bod a vznikne tak tunel. Cez tento tunel potom môže komunikovať s rôznymi servermi v sieti.

Poskytovateľ pripojenia však nemôže zistiť nič viac, len to, že uživateľ je pripojený stále na

jeden a ten istý server (uživateľov dôveryhodný server). To kam sa skutočne uživateľ pripája

však zistiť nemôže a už vôbec nemá prístup k obsahu komunikácie.

Page 91: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-91-

Zoznam skratiek a symbolov � st - Stupeň Polynómu � BK - Bezpečnostné Kódy � DTS - Dôverihodná Tretia Strana � Gcd - Greatest Commonn Divisor � GF - Galois Field � ECC - Elliptic Curve Cryptography � RSAP - RSAProblem � QRP - Quadratic Residuosity Problem � DLP - Discrete Logarithm Problem � GDLP - Generalized Discrete Logarithm Problem � DHP - Diffie-Hellman Problem � GDHP - Generalized Diffie-Hellman Problem � ECDLP - Elliptic Curve Discrete Logarithm Problem � JCE - Java Cryptography Extension � MAC - Message Authentication Code � PKCS - Public Key Cryptography Standards � RFC - Request for Comments � ECB - Electronic Code Book � CBC - Cipher Block Chaining � CFB - Cipher FeedBack � OFB - Output FeedBack � PCBC - Propagating Cipher Block Chaining � HMAC - keyed-Hash Hessage Authentication Code � PBE - Password-Based Eencryption � SHA - Secure Hash Algorithm � DES - Data Encryption Standard � MD5 - Message-Digest algorithm 5 � API - Application Programming Interface � TCP - Transmission Control Protocol � UDP - User Datagram Protocol � IP - Internet Protocol � IPv4 - Internet Protocol verzia 4 � IPv6 - Internet Protocol verzia 6 � P2P - Peer to Peer � HTTP - HyperText Transfer Protocol � HTTPS - Hypertext Transfer Protocol Secure � FTP - File Transfer Protocol � SOCKS - SOCKetS � RMI - Remote Method Invocation � IPsec - IP Security � TLS - Transport Layer Security � SSL - Secure Sockets Layer � SSH - Secure Shell � VPN - Virtual Private Network � PN - Public Network

Page 92: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-92-

Zoznam obrázkov

Obr. 1 Komunikácia dvoch strán s využitím šifrovania ...........................................................25 Obr. 2 Využitie šifrovania so zabezpečeným kanálom pre výmenu kľúča ..............................26 Obr. 3 Kompozícia fg o funkcií g a f.....................................................................................30 Obr. 4 Kompozícia fg o involúcií g a f nie je involúcia .......................................................31 Obr. 5 Šifrovanie využívajúce techniky verejného kľúča.........................................................34 Obr. 6 Schématické znázornenie použitia šifrovania s verejným kľúčom ...............................35 Obr. 7 Útok falošnou prezentáciou ...........................................................................................35 Obr. 8 Vzťah kľúčov v sieti šiestich účastníkov.......................................................................36 Obr. 9 Manažment kľúčov využívajúci DTS...........................................................................37 Obr. 10 Manažment kľúčov využívajúci techniky verejných kľúčov ......................................38 Obr. 11 Útok falošnou prezentáciou 6A aktívnym útočníkom s verejným kľúčom *e ...........39

Obr. 12 Autentifikácia verejných kľúčov pomocou DTS, symbol || znamená spojenie...........39 Obr. 13 Bezpečný a spoľahlivý komunikačný kanál. ...............................................................67 Obr. 14 Situácia bez použitia proxy servera .............................................................................68 Obr. 15 Situácia s použitím proxy servera................................................................................68 Obr. 16 Prístup k obsahu komunikácie .....................................................................................70 Obr. 17 Vytvorenie bezpečného a spoľahlivého komunikačného kanálu ................................70 Obr. 18 Beh viacerých spojení súčasne ....................................................................................71 Obr. 19 Dátový procesor...........................................................................................................72 Obr. 20 P2p pipe .......................................................................................................................72 Obr. 21 Node5 ako server .........................................................................................................76 Obr. 22 Node5 ako klient..........................................................................................................76 Obr. 23 Hlavné okno aplikácie pre prenos správ a súborov .....................................................77 Obr. 24 Alicin komunikačný terminál ......................................................................................84 Obr. 25 Bobov komunikačný terminál .....................................................................................84 Obr. 26 Posielanie správ ...........................................................................................................85 Obr. 27 Prenos súborov ............................................................................................................86 Obr. 28 Alicin komunikačný terminál, prenos súborov...........................................................86 Obr. 29 Okno pre výber súboru ................................................................................................87 Obr. 30 Stav prenosu súboru.....................................................................................................87 Obr. 31 Konzola aplikácie ........................................................................................................88

Zoznam tabuliek Tab. 1 Voľba bezpečnostného parametra t...........................................................................17 Tab. 2 Kompletná tabuľka GF(9).........................................................................................23 Tab. 3 Body eliptickej krivky 632 ++= xxy nad 11Z . .....................................................47 Tab. 4 Porovnanie problémov kryptosystémov s verejným kľúčom. ..................................52 Tab. 5 Kód 2 z 5...................................................................................................................56

Page 93: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-93-

Zoznam použitej literatúry [1] Douglas R. Stinson: Cryptography. Theory and practice. CRC Press, NY, 2005.

[2] A. Menezes, P. van Oorschot, S Vanstone: Handbook of Applied Cryptography, CRC

Press, 1996.

[3] Adámek Jiří: Coding theory and cryptography. Willey@ Sons, NY, 1991.

[4] Adámek Jiří: Kódování. SNTL Praha, 1989.

[5] Garret Birkhoff – Thomas C. Bartee: Aplikovaná algebra. Vydanie prvé. Alfa

Bratislava, 1981.

[6] S. Mac Lane – G. Birkhoff: Algebra. Vydanie druhé. Alfa Bratislava, 1973.

[7] Sibert Igor: Steganografické ukrytie tajnej správy s podporou BCH kódov a šifry AES.

Diplomová práca, Trenčín: Trenčianska Univerzita Alexandra Dubčeka v Trenčíne,

Fakulta Mechatroniky, 2006. 98s.

INTERNET

[8] Prime number http://en.wikipedia.org/wiki/Prime_number

[9] Math http://www.certicom.com/index.php?action=ecc,math

[10] RSA http://en.wikipedia.org/wiki/RSA

[11] RFC 2437 - PKCS #1: RSA Cryptography Specifications Version 2.0 http://www.faqs.org/rfcs/rfc2437.html

[12] ElGamal encryption http://en.wikipedia.org/wiki/ElGamal_encryption

[13] Elliptic Curve Cryptography -- How it Works. http://research.sun.com/projects/crypto/HowECCWorks-USLetter.pdf

[14] Proxy server http://deja-vix.sk/sysadmin/proxy.html

[15] Proxy server http://en.wikipedia.org/wiki/Proxy_server

[16] SOCKS Protocol Version 5 http://tools.ietf.org/html/rfc1928

[17] Tunneling protocol http://en.wikipedia.org/wiki/Tunneling_protocol

[18] GMP Documentation http://gmplib.org/manual/

[19] Manuály jazyka Java http://java.sun.com/reference/docs/

[20] Manuály jazyka C++ http://msdn2.microsoft.com/en-us/library/3bstk3k5.aspx

Page 94: DIPLOMOVÁ PRÁCA - diplomovka.sme.skdiplomovka.sme.sk/zdroj/3175.pdf · bezpeČnÉ a spoĽahlivÉ sieŤovÉ aplikÁcie diplomovÁ prÁca jÁn adÁmek trenČianska univerzita alexandra

FM Katedra informatiky

-94-

Zoznam príloh

1. CD médium - Diplomová práca v elektronickej podobe, zdrojové kódy programov.