• No results found

ImplementaceDNSSECdos´ıt’ov´ehoprotokoluVerseImplementationofDNSSECtoVersenetworkprotocol ZdenˇekPerutka BAKAL´AˇRSK´APR´ACE

N/A
N/A
Protected

Academic year: 2022

Share "ImplementaceDNSSECdos´ıt’ov´ehoprotokoluVerseImplementationofDNSSECtoVersenetworkprotocol ZdenˇekPerutka BAKAL´AˇRSK´APR´ACE"

Copied!
43
0
0

Loading.... (view fulltext now)

Full text

(1)

Technick´ a univerzita v Liberci

Fakulta mechatroniky, informatiky a mezioborov´ ych studi´ı

BAKAL ´ A ˇ RSK ´ A PR ´ ACE

Zdenˇek Perutka

Implementace DNSSEC do s´ıt’ov´ eho protokolu Verse

Implementation of DNSSEC to Verse network protocol

Ustav Nov´´ ych technologi´ı a aplikovan´e informatiky Vedouc´ı bakal´aˇrsk´e pr´ace: Ing. Jiˇr´ı Hn´ıdek

Studijn´ı program: Informaˇcn´ı technologie Studijn´ı obor: Informaˇcn´ı technologie

(2)

Zad´an´ı

(3)

Podˇekov´an´ı

Na tomto m´ıstˇe bych chtˇel podˇekovat zejm´ena sv´e rodinˇe a pˇr´atel˚um za podporu, sestˇre ˇS´arce za trpˇelivou pomoc s pravopisem. Velk´y d´ık patˇr´ı tak´e vedouc´ımu pr´ace, Ing.

Jiˇr´ımu Hn´ıdkovi, za konzultace a uˇziteˇcn´e rady pˇri ˇreˇsen´ı zad´an´ı.

Kontakt

E-mail: zdnek.perutka@tul.cz

(4)

Prohl´ aˇ sen´ı

Byl jsem sezn´amen s t´ım, ˇze na mou bakal´aˇrskou pr´aci se plnˇe vztahuje z´akon ˇc. 121/2000 o pr´avu autorsk´em, zejm´ena § 60 (ˇskoln´ı d´ılo).

Beru na vˇedom´ı, ˇze Technick´a univerzita v Liberci (TUL) nezasahuje do m´ych au- torsk´ych pr´av uˇzit´ım m´e bakal´aˇrsk´e pr´ace pro vnitˇrn´ı potˇrebu TUL.

Uˇziji-li bakal´aˇrskou pr´aci nebo poskytnu-li licenci k jej´ımu vyuˇzit´ı, jsem si vˇedom povinnosti informovat o t´eto skuteˇcnosti TUL; v tomto pˇr´ıpadˇe m´a TUL pr´avo ode mne poˇzadovat ´uhradu n´aklad˚u, kter´e vynaloˇzila na vytvoˇren´ı d´ıla, aˇz do jejich skuteˇcn´e v´yˇse.

Bakal´aˇrskou pr´aci jsem vypracoval samostatnˇe s pouˇzit´ım uveden´e literatury a na z´akladˇe konzultac´ı s vedouc´ım bakal´aˇrsk´e pr´ace a konzultantem.

Datum

Podpis

(5)

Anotace

Tato bakal´aˇrsk´a pr´ace se zab´yv´a rozˇs´ıˇren´ım s´ıt’ov´eho protokolu Verse, zab´yvaj´ıc´ım se real-timov´ym sd´ılen´ım dat, o podporu DNSSEC (zabezpeˇcen´ym DNS). Toto rozˇs´ıˇren´ı Verse protokolu je d˚uleˇzit´e pro zv´yˇsen´ı bezpeˇcnosti Verse protokolu.

V ´uvodu pr´ace je struˇcnˇe pops´ana podstata fungov´an´ı DNSSEC. N´aslednˇe je pˇredloˇzen struˇcn´y pˇrehled knihoven umoˇzˇnuj´ıc´ıch DNSSEC a v´ybˇer nejvhodnˇejˇs´ı knihovny pro implementaci do knihovny implementuj´ıc´ı protokol Verse.

Jedn´ım z hlavn´ıch ´uˇcel˚u pr´ace bylo vytvoˇren´ı dostateˇcnˇe komplexn´ı callback funkce, kter´a by byla schopna pˇred´avat program´atorovi Verse klienta bezpeˇcnostn´ı informace o DNSSEC a certifik´atech. Bylo tedy nutn´e aby funkce byla dostateˇcnˇe univerz´aln´ı.

Pr´ace se tak´e zab´yv´a vhodn´ym rozˇs´ıˇren´ım Verse API, tak aby bylo moˇzn´e nov´e funkce pouˇz´ıvat.

Funkˇcnost a spr´avnost rozˇs´ıˇren´eho Verse protokolu je v z´avˇereˇcn´e ˇc´asti pr´ace vy- zkouˇsena na vzorov´e aplikaci, kter´a byla novˇe rozˇs´ıˇrena za ´uˇcelem testov´an´ı nov´ych funkc´ı. Jelikoˇz se DNSSEC zat´ım v praxi pˇr´ıliˇs nepouˇz´ıv´a a nen´ı mnoho

”podepsan´ych“

dom´en, bylo testov´an´ı provedeno pˇripojen´ım pouze ke dvˇema podepsan´ym dom´en´am.

Kl´ıˇcov´a slova: DNSSEC, callback funkce, API, ldns, Verse protokol

(6)

Annotation

The thesis is focused on extension of Verse network protocol which is used for real- time data sharing. The extension should base on including a support for DNSSEC (secured DNS) which is very important in context of security enhancement.

Introduction of the thesis briefly describes the nature of the DNSSEC. Latter a brief overview of libraries which enable DNSSEC is offered following by a selection of the best library to be used for implementation into the Verse protocol library.

One of the main purposes of the study was to create a callback function complex enough which would be able to submit security information about DNSSEC and cer- tificates to a programmer of Verse client, keeping in mind that the function has to be sufficiently universal. The propriate extension of Verse API is also included so that it would be possible to use the new functions.

Functionality of the extended Verse protocol was checked on a sample application in the final parts of the thesis. A sample application already written was also extended in order to test new functions. Testing was proceeded by connecting to two signed and one unsigned domains.

Key words: DNSSEC, callback function, API, ldns, Verse protocol

(7)

Obsah

Prohl´aˇsen´ı 4

Anotace 5

Annotation 6

Seznam symbol˚u a zkratek 9

1 Uvod´ 10

1.1 Verse protokol . . . 10

1.2 DNSSEC . . . 10

1.2.1 Princip DNS . . . 11

1.2.2 Princip DNSSEC . . . 12

1.3 Linuxov´e n´astroje pro pr´aci s DNS . . . 13

1.4 Linuxov´e konfiguraˇcn´ı sooubory . . . 13

2 Knihovny umoˇzˇnuj´ıc´ı DNSSEC 14 2.1 LIBEPP-NICBR . . . 14

2.2 Libsresolv . . . 14

2.3 DNSruby . . . 14

2.4 DNSjava . . . 14

2.5 DNSpython . . . 15

2.6 DNSSEC Toolkit . . . 15

2.7 Net::DNS::SEC . . . 15

2.8 Ldns . . . 16

3 Realizace 17 3.1 API . . . 17

3.2 Callback funkce . . . 17

3.3 Certifik´aty . . . 18

(8)

3.5 Struktura pro ukl´ad´an´ı callback funkc´ı . . . 19

3.6 Registraˇcn´ı funkce . . . 20

3.7 Faleˇsn´y pˇr´ıkaz . . . 21

3.8 Ovˇeˇren´ı DNS z´aznamu . . . 22

3.9 Ovˇeˇren´ı TLS certifik´atu . . . 23

3.10 Rozˇs´ıˇren´ı Verse API . . . 24

3.11 Vzorov´a aplikace . . . 25

4 Testov´an´ı 27 4.1 Podepsan´e dom´eny . . . 27

4.2 Neexistuj´ıc´ı dom´ena . . . 28

4.3 Nepodepsan´a dom´ena . . . 28

4.4 Lok´aln´ı test pˇripojen´ı . . . 29

4.5 Nedostatky, moˇzn´a budouc´ı vylepˇsen´ı . . . 32

5 Z´avˇer 33

Reference 34

Pˇr´ıloha A - Uk´azky zdrojov´ych k´od˚u 39

Pˇr´ıloha B - Informace k pˇriloˇzen´emu CD 43

(9)

Seznam symbol˚ u a zkratek

AD Authenticated Data

API Application Programming Interface BSD Berkeley Software Distribution DNS Domain Name System

DNSSEC Domain Name System Security Extension EPP Extensible Provisioning Protocol

ID jedineˇcn´y identifik´ator IP Internet Protocol

IPv4 Internet Protocol version 4 IPv6 Internet Protocol version 6 NSEC Next Secure

NSEC3 Next Secure 3 RA Recursion Available RD Recursion Desired RR Resource Record SVN Subversion TC Truncated

TCP Transmission Control Protocol TLS Transport Layer Security TSIG Transaction Signature TTL Time To Live

UDP User Datagram Protocol

(10)

1 Uvod ´

Uvodem bude struˇ´ cnˇe pops´an Verse protokol a vysvˇetlena podstata pr´ace DNSSEC.

D´ale budou vysvˇetleny i dalˇs´ı pojmy, t´ykaj´ıc´ı se pr´ace na rozˇs´ıˇren´ı Verse protokolu.

1.1 Verse protokol

Verse je s´ıt’ov´y protokol typu klient-server. Je urˇcen pro real-timov´e sd´ılen´ı dat mezi grafick´ymi aplikacemi.

P˚uvodn´ı Verse protokol byl vyv´ıjen Uni-Verse konsorciem v r´amci 6. r´amcov´eho pro- gramu Evropsk´e unie. Do konsorcia patˇrilo nˇekolik v´yznamn´ych univerzit a v´yzkumn´ych instituc´ı jako KTH, Fraunhoufer Institut, Helsinky University of Technology, Interactive Institute a Blender Foundation. Verse protokol byl od poˇc´atku navrhov´an pro efektivn´ı real-timov´e sd´ılen´ı dat, pˇredevˇs´ım mezi grafick´ymi aplikacemi a mˇel ambici st´at se univerz´aln´ım protokolem pro komunikaci mezi grafick´ymi aplikacemi. Po ukonˇcen´ı fi- nancov´an´ı od Evropsk´e unie v´yvoj protokolu ustal a ten se bohuˇzel z mnoha d˚uvod˚u nakonec nerozˇs´ıˇril [1].

V souˇcasn´e dobˇe vyv´ıj´ı Ing. Jiˇr´ı Hn´ıdek novou verzi Verse protokolu, kter´a m´a b´yt robustnˇejˇs´ı a pˇredevˇs´ım snadnˇeji implementovateln´a do souˇcasn´ych i budouc´ıch aplikac´ı.

Protokol je implementov´an v jazyce C.

1.2 DNSSEC

DNSSEC [2] je bezpeˇcnostn´ım rozˇs´ıˇren´ım protokolu DNS [3], pouˇz´ıvan´eho pro pˇreklad dom´enov´ych jmen na IP [4] adresy. DNSSEC zajiˇst’uje, ˇze informace o IP adrese nebyla podvrˇzena, tedy ˇze nebyla poskytnuta jin´a IP adresa, neˇz je skuteˇcn´a adresa serveru. Pˇri n´avrhu DNSSEC byl kladen maxim´aln´ı d˚uraz na zpˇetnou kompati- bilitu, protoˇze d´ıky tomu jsou aplikace implementuj´ıc´ı DNSSEC schopny komunikovat s aplikacemi pouˇz´ıvaj´ıc´ı pouze p˚uvodn´ı DNS.

(11)

1.2.1 Princip DNS

Jedn´a se o hierarchick´y syst´em. Poˇc´ıtaˇc m´a nastavenu IP adresu DNS serveru, re- sovleru, kter´y provozuje typicky poskytovatel internetu. Pokud je zad´ano dom´enov´e jm´eno nˇejak´eho serveru (napˇr. www.tul.cz), se kter´ym m´a b´yt komunikov´ano, poˇc´ıtaˇc poˇsle dotaz na resolver. T´ım je zah´ajeno rekurzivn´ı dotazov´an´ı. DNS server se spoj´ı s koˇrenov´ym (root) serverem, kter´y sice informaci o konkr´etn´ıch jm´enech nem´a, ale jako odpovˇed’ poˇsle IP adresu DNS serveru pro dom´enu cz. Kter´y odeˇsle IP adresu name serveru tul.cz a ten uˇz odeˇsle IP adresu webov´eho serveru www.tul.cz. Tuto informaci pak DNS server pˇrepoˇsle poˇc´ıtaˇci, ze kter´eho byl odesl´an dotaz.

Pˇredevˇs´ım bˇehem komunikace mezi resolverem a jednotliv´ymi name servery, vznik´a ˇsance na podvrˇzen´ı DNS informace [5].

DNS servery si nalezen´e IP adresy ukl´adaj´ı do cache, tak aby pˇri opˇetovn´em dotazu na stejnou dom´enu nebylo nutn´e znovu se rekurzivnˇe dotazovat. Tazateli je pak odesl´an z´aznam uloˇzen´y v lok´aln´ı cache serveru. To je moˇzn´e d´ıky poli TTL, kter´e znaˇc´ı jak dlouho je moˇzn´e DNS z´aznam pouˇz´ıvat. Pole TTL je obsaˇzeno v kaˇzd´em z´aznamu [6]. Ovˇsem pokud je v hlaviˇcce dotazu nastaven pˇr´ıznak RD, znamen´a to, ˇze tazatel poˇzaduje rekurzivn´ı dopt´av´an´ı. Server pak do odpovˇedi nastav´ı pˇr´ıznak RA znaˇc´ıc´ı, ˇze je ochotn´y rekurzivn´ı dopt´av´an´ı prov´est a provede jej [7].

Stejn´ym zp˚usobem jako server cachuje DNS z´aznamy i poˇc´ıtaˇc, ze kter´eho je pos´ıl´an dotaz. V Linuxu je moˇzn´e cache vypr´azdnit restartov´an´ım d´emona Nscd, staraj´ıc´ıho se o spr´avu DNS cache. Staˇc´ı zadat /etc/init.d/nscd restart.

Komunikace DNS prob´ıh´a skrz port 53 transportn´ıch protokol˚u UDP [8] a TCP [9]. D´ıky jednoduchosti protokolu UDP je bˇeˇzn´y dotaz pos´ıl´an pomoc´ı tohoto pro- tokolu stejnˇe jako odpovˇed’. Pokud je odpovˇed’ delˇs´ı neˇz 512 Byt˚u, odeˇsle se pouze ˇc´asteˇcn´a odpovˇed’ s pˇr´ıznakem TC v hlaviˇcce. Tento pˇr´ıznak signalizuje, ˇze se nejedn´a o kompletn´ı odpovˇed’. V pˇr´ıpadˇe ˇze tazatel potˇrebuje celou odpovˇed’, poˇsle stejn´y dotaz tentokr´at skrze TCP protokol a je mu pomoc´ı stejn´eho protokolu posl´ana kompletn´ı odpovˇed’ [10].

(12)

1.2.2 Princip DNSSEC

DNSSEC vyuˇz´ıv´a digit´aln´ı podpis [11], kter´y je v dneˇsn´ı dobˇe bˇeˇzn´ym prostˇredkem pro ovˇeˇren´ı autenticity informac´ı. Pro dom´enu, kter´a m´a b´yt podeps´ana, je vygenerov´an priv´atn´ı a k nˇemu n´aleˇz´ıc´ı veˇrejn´y kl´ıˇc, funguje zde tedy princip asymetrick´e ˇsifry, kdy data zaˇsifrovan´a priv´atn´ım kl´ıˇcem lze deˇsifrovat veˇrejn´ym kl´ıˇcem. Priv´atn´ı kl´ıˇc je nutn´e drˇzet v tajnosti a jsou j´ım podepisov´any DNS informace. Zat´ımco pomoc´ı veˇrejn´e kl´ıˇce je ovˇeˇrov´ana pravost tˇechto podpis˚u. Veˇrejn´y kl´ıˇc je nahr´an do z´onov´eho souboru nadˇrazen´e dom´eny [12].

Veˇrejn´e kl´ıˇce jsou pak podepisov´any stejn´ym zp˚usobem. Tedy v nadˇrazen´e dom´enˇe je opˇet vygenerov´an priv´atn´ı a veˇrejn´y kl´ıˇc. Priv´atn´ım kl´ıˇcem jsou podeps´any veˇrejn´e kl´ıˇce z´ony a veˇrejn´y kl´ıˇc, kter´y je opˇet uloˇzen o ´uroveˇn v´yˇs a slouˇz´ı k ovˇeˇren´ı pravosti podpisu.

Takto se postupuje aˇz ke koˇrenov´emu serveru. V praxi by tak mˇelo staˇcit m´ıt d˚uvˇeryhodn´y veˇrejn´y kl´ıˇc ke koˇrenov´e dom´enˇe, s jehoˇz pomoc´ı je moˇzn´e smˇerem dol˚u v hierarchii postupnˇe ovˇeˇrovat d˚uvˇeryhodnost vˇsech z´aznam˚u. Z˚ust´av´a tak zachov´ana p˚uvodn´ı hierarchick´a struktura DNS.

DNSSEC ˇreˇs´ı i moˇznost podsouv´an´ı faleˇsn´ych informac´ı o neexistenci dom´eny po- moc´ı z´aznamu typu NSEC [13] obsahuj´ıc´ıho jm´eno podepsan´e dom´eny, n´asleduj´ıc´ı podle abecedy. Pokud je server dotazov´an na neexistuj´ıc´ı dom´enu, jako odpovˇed’ poˇsle infor- mace o podepsan´e dom´enˇe, kter´a by t´eto neexistuj´ıc´ı dom´enˇe pˇredch´azela v abecedˇe. Po- kud dotazovan´a dom´ena v abecedˇe leˇz´ı mezi jm´enem poskytnut´eho z´aznamu a jm´enem v jeho NSEC z´aznamu, dom´ena skuteˇcnˇe neexistuje. Napˇr. uvaˇzujme existenci dom´en aa a ba, pˇri dotazu na neexistuj´ıc´ı dom´enu ab poˇsle server jako odpovˇed’ informace o dom´enˇe aa, jej´ıˇz NSEC z´aznam obsahuje ba. Z toho je patrn´e, ˇze je informace o ne- existenci dom´eny vˇerohodn´a. D´ıky NSEC z´aznam˚um je vˇsak snadn´e vytv´aˇret mapu z´ony, coˇz je zneuˇziteln´e pro c´ılen´ı jin´ych typ˚u ´utok˚u.

Tento probl´em byl odstranˇen zaveden´ım z´aznamu NSEC3 [14], kter´y neobsa- huje jm´eno n´asleduj´ıc´ı dom´eny. Obsahuje vˇsak haˇs jm´ena toho z´aznamu, haˇs jm´ena n´asleduj´ıc´ıho z´aznamu a parametry haˇsovac´ı funkce. Jednotliv´e haˇse jsou ˇrazeny abe- cednˇe, princip ovˇeˇrov´an´ı je tak velmi podobn´y, pokud haˇs leˇz´ı v intervalu mezi

(13)

dvˇema haˇsi v NSEC3, dom´ena neexistuje. Jelikoˇz spoˇc´ıt´an´ı p˚uvodn´ıho jm´ena z haˇse je v´ypoˇcetnˇe velmi n´aroˇcn´e, je sestaven´ı mapy z´ony pomoc´ı NSEC3 prakticky nemoˇzn´e [15].

V praxi tuto validaci dopis˚u pomoc´ı veˇrejn´ych kl´ıˇc˚u prov´ad´ı tzv. validuj´ıc´ı resolver, kter´y ovˇeˇr´ı autenticitu informac´ı. Pokud podpis souhlas´ı, nastav´ı v hlaviˇcce odpovˇedi takzvan´y AD pˇr´ıznak (Authenticated Data). To znaˇc´ı, ˇze zpr´ava nebyla podvrˇzena [16].

1.3 Linuxov´ e n´ astroje pro pr´ aci s DNS

Nejbˇeˇznˇejˇs´ımi n´astroji pro pr´aci s DNS v Linuxu jsou host a dig. V obou pˇr´ıpadech se jedn´a o konzolov´e n´astroje. Jejich pomoc´ı je moˇzn´e dotazovat se DNS server˚u, pouˇzit´ım r˚uzn´ych pˇrep´ınaˇc˚u lze dotazy bl´ıˇze specifikovat. Napˇr´ıklad nastavit typ do- tazu, verzi IP adresy kterou chceme z´ıskat, atd.

1.4 Linuxov´ e konfiguraˇ cn´ı sooubory

Nejd˚uleˇzitˇejˇs´ım konfiguraˇcn´ım souborem je /etc/resolv.conf, ve kter´em jsou nasta- veny IP adresy DNS server˚u v textov´e podobˇe: nameserver [IP adresa]. V tomto souboru lze tak´e pˇriˇradit poˇc´ıtaˇc do dom´eny (domain [dom´ena]).

Dalˇs´ım souborem je soubor /etc/hosts, v nˇemˇz jsou uloˇzeny statick´e DNS z´aznamy ve tvaru [IP adresa] [dom´ena].

(14)

2 Knihovny umoˇ zˇ nuj´ıc´ı DNSSEC

Tato ˇc´ast pr´ace pojedn´av´a o nˇekter´ych knihovn´ach umoˇzˇnuj´ıc´ıch DNSSEC. Je v n´ı tak´e zd˚uvodnˇena volba knihovny pouˇzit´e pro rozˇs´ıˇren´ı Verse protokolu.

2.1 LIBEPP-NICBR

Jedn´a se o C++ knihovnu, kter´a tak´e ˇc´asteˇcnˇe implementuje protokol EPP, pouˇz´ıvan´y pro komunikaci mezi registr´atory dom´en a dom´enov´ymi registry [17].

Knihovna je vyv´ıjena na platformˇe FreeBSD 5.4 [18]. Knihovna vˇsak bez probl´em˚u funguje i na Linuxu [19] a Mac OS X [20].

Knihovna je kvalitnˇe a celkem pˇrehlednˇe zdokumentov´ana n´astrojem doxygen [21] a jej´ı zdrojov´e k´ody jsou tak´e solidnˇe okomentov´any. Knihovna je poskytov´ana pod BSD like licenc´ı [22].

2.2 Libsresolv

Knihovna Libsresolv je vyv´ıjena francouzsk´ym institutem IRISA [23]. Je to rozˇs´ıˇren´ı programu BIND, coˇz je nejpouˇz´ıvanˇejˇs´ı program implementuj´ıc´ı DNS server. Dok´aˇze validovat DNS informace a zobrazovat cokoliv je obsaˇzeno v DNS odpovˇedi. Knihovna je poskytov´ana pod BSD like licenc´ı. Vyˇzaduje knihovnu OpenSSL [24].

2.3 DNSruby

DNSruby je knihovna napsan´a v interpretovan´em skriptovac´ım jazyce Ruby [25], vyv´ıjen´a spoleˇcnost´ı Nominet UK, kter´a nab´ız´ı kompletn´ı implementaci DNSSEC. Na ofici´aln´ıch str´ank´ach nab´ız´ı dokumentaci [26]. Knihovna je licencov´ana Apache Licenc´ı verze 2.0 [27].

2.4 DNSjava

DNSjava je knihovna implementuj´ıc´ı DNSSEC v jazyce Java [28], vyv´ıjen´a od roku 1999 Brianem Wellingtonem v r´amci spoleˇcnosti Nominum. Knihovna je poskytov´ana

(15)

pod BSD licenc´ı. Implementuje dotazy, pˇresmˇerov´av´an´ı na jin´e z´ony a dynamick´e up- datov´an´ı. M˚uˇze b´yt vyuˇzita v klientsk´em programu a v minim´aln´ı m´ıˇre tak´e pro server [29]. Implementuje tak´e TSIG [30], jeˇz je alternativou k DNSSEC [31]. Zdrojov´e k´ody t´eto knihovny jsou ˇr´adnˇe okomentov´any a je tak´e k dispozici pˇrehledn´a dokumentace vytvoˇren´a n´astrojem Javadoc [32].

2.5 DNSpython

DNSpython je knihovna implementuj´ıc´ı DNSSEC v interpretovan´em jazyce Python [33], je vyv´ıjena od roku 2003 Bobem Halleym, takt´eˇz ze spoleˇcnosti Nominum. Rozd´ıl oproti DNSjava je v´ıce m´enˇe pouze v jazyce, ve kter´em je implementov´ana. Co se t´yˇce dotaz˚u, z´on a updatov´an´ı DNSpython poskytuje stejn´e moˇznosti jako DNSjava, zdrojov´e k´ody jsou takt´eˇz velmi dobˇre zdokumentov´any [34]. Knihovna je dod´av´ana pod BSD like licenc´ı.

2.6 DNSSEC Toolkit

Jedn´a se o jednoduch´y n´astroj psan´y v jazyce C, kter´y umoˇzˇnuje napsat jak pro- gramy pro resolver, tak tak´e jednoduch´e n´astroj pro ovˇeˇren´ı. V bal´ıku ke staˇzen´ı Tool- kitu jsou i pˇr´ıklady implementace nˇekter´ych n´astroj˚u. Vyv´ıj´ı jej Olivier Courtay z ENST Bretagne [35]. Je distribuov´ana pod BSD licenc´ı.

2.7 Net::DNS::SEC

Jedn´a se o rozˇs´ıˇren´ı knihovny Net::DNS, vyv´ıjen´e Michaelem Fuhrem. Tato knihovna je ps´ana v skriptovac´ım jazyce Perl [36]. Umoˇzˇnuje pouˇz´ıt t´emˇeˇr jak´ykoliv DNS dotaz.

Nez´avis´ı na ˇz´adn´e knihovnˇe v C, ale pro zv´yˇsen´ı rychlosti je moˇzn´e jej slinkovat s kni- hovnou libsresolv. Vyv´ıj´ı ji Olaf Kolkman [37]. Knihovna je k dispozici pod upravenou BSD licenc´ı.

(16)

2.8 Ldns

Knihovnu ldns vyv´ıj´ı od roku 2005 Nizozemsk´a v´yzkumnick´a skupina NLnet Labs.

Knihovna je ps´ana v jazyce C. Umoˇzˇnuje kompletnˇe vyuˇz´ıvat DNS dotazy. Kompletnˇe implementuje DNSSEC, jak ovˇeˇrov´an´ı, tak podepisov´an´ı, kromˇe toho tak´e implementuje TSIG. Podporuje IPv4 i IPv6 a obsahuje n´astroj

”Drill“, vytvoˇren´y pro ladˇen´ı DNS dotaz˚u [38].

Knihovna je vyv´ıjena pˇredevˇs´ım pro platformy Linux a FreeBSD, avˇsak ´uspˇeˇsnˇe funguje i na platform´ach Mac OS X a Solaris [39]. Knihovna vyˇzaduje knihovnu Libtool [40], pro funkˇcnost DNSSEC knihovna vyˇzaduje knihovnu OpenSSL a pro funkˇcnost nˇekter´ych uk´azkov´ych aplikac´ı knihovnu libpcap [42].

Tato knihovna byla vybr´ana k pouˇzit´ı pˇri realizaci zad´an´ı bakal´aˇrsk´e pr´ace, jelikoˇz poskytuje veˇskerou potˇrebnou funkˇcnost, kter´a je vyˇzadov´ana, hlavnˇe kompletn´ı pod- poru DNSSEC. D´ıky tomu, ˇze je naps´ana stejnˇe jako Verse protocol v jazyce C, je rychlejˇs´ı neˇz knihovny psan´e v jin´ych jazyc´ıch. Dalˇs´ı v´yhodou je jej´ı velmi dobr´a do- kumentace, jeˇz d´ıky dodateˇcn´ym tutori´al˚um a vzorov´ym program˚um, pˇredˇc´ı kvalitu jin´ych dobˇre dokumentovan´ych knihoven. Knihovna je um´ıstˇena ve standartn´ıch repo- sit´aˇr´ıch Linuxov´ych distribuc´ı a je tak snadno dosaˇziteln´a, licence umoˇzˇnuje voln´e ˇs´ıˇren´ı a ´upravy [41].

Nˇekter´e knihovn´ı funkce pouˇzit´e v knihovnˇe Verse protokolu budou bl´ıˇze pops´any v kapitole 3.8.

(17)

3 Realizace

V t´eto ˇc´asti je pops´ana vlastn´ı realizace zad´an´ı a s n´ı souvisej´ıc´ı teorie, jsou v n´ı t´eˇz uk´azky zdrojov´ych k´od˚u.

Samotn´y Verse protokol je moˇzno st´ahnout na adrese https://dev.nti.tul.cz/repos/verse2/. DNSSEC verze protokolu se nach´az´ı na pˇriloˇzen´em CD a postup kompilace je pops´an v pˇr´ıloze. Verse protokol pouˇz´ıv´a k nav´az´an´ı spojen´ı a autentizaci uˇzivatele protokol TCP a k vlastn´ımu pˇrenosu dat protokol UDP.

Jako v´yvojov´e prostˇred´ı bylo pouˇzito Eclipse [43]. Jedn´a se o Open source prostˇred´ı, kter´e podporuje mnoho programovac´ıch jazyk˚u vˇcetnˇe C. Jako syst´em pro zpr´avu verz´ı bylo pouˇzito Subversion (SVN) [44]. SVN se skl´ad´a ze serverov´e ˇc´asti, kde jsou uloˇzeny vˇsechny verze zdrojov´ych k´od˚u a z klientsk´e ˇc´asti, jeˇz je integrov´ana v Eclipse. Pomoc´ı klientsk´e ˇc´asti jsou nahr´av´any na server nov´e verze a stahov´any aktualizace od jin´ych v´yvoj´aˇr˚u.

3.1 API

Application Programming Interface (API) je rozhran´ı pro programov´an´ı aplikac´ı.

Jo to soubor funkc´ı a konstant nˇejak´e knihovny, kter´e pˇri implementaci t´eto knihovny m˚uˇze program´ator pouˇz´ıvat v aplikaci.

3.2 Callback funkce

Callback funkce je pouˇz´ıv´ana v pˇr´ıpadˇe, kdy pˇri bˇehu nˇekter´e z knihovn´ıch funkc´ı, nastane ud´alost, u kter´e chceme, aby j´ı oˇsetˇril program´ator aplikace implementuj´ıc´ı tuto knihovnu. K tomu se vyuˇz´ıvaj´ı takzvan´e registraˇcn´ı funkce, kter´e maj´ı za ´ukol uloˇzit ukazatel na funkci, kter´a v aplikaci obsluhuje danou ud´alost. Tak aby bylo moˇzn´e v knihovn´ı funkci volat funkci, definovanou v aplikaci implementuj´ıc´ı tuto knihovnu.

Registraˇcn´ı funkce m´a jedin´y vstupn´ı parametr a t´ım je ukazatel na funkci s pˇresnˇe dan´ymi vstupn´ımi parametry. Tato funkce je zahrnuta v API knihovny. V knihovnˇe

(18)

Obr´azek 1: Vol´an´ı callback funkce do knihovny.

Kdyˇz pak v knihovn´ı funkci nastane ud´alost, kterou chce program´ator knihovny nechat oˇsetˇrit program´atorem aplikace, zavol´a se funkce, uloˇzen´a na m´ıstˇe, kam ukazuje ukazatel z´ıskan´y d´ıky registraˇcn´ı funkci. Vykon´a se callback funkce a pot´e se pˇr´ıpadnˇe d´ale pokraˇcuje ve vykon´av´an´ı programu. Viz. Obr´azek 1.

3.3 Certifik´ aty

Digit´aln´ı certifik´aty (d´ale TLS certifik´aty) slouˇz´ı k ovˇeˇren´ı d˚uvˇeryhodnosti ´uˇcastn´ıka komunikace, se kter´ym je komunikov´ano prostˇrednictv´ım ˇsifrovan´eho spojen´ı. Verse protokol pouˇz´ıv´a TLS [45] ˇsifrov´an´ı. Certifik´aty funguj´ı na principu digit´aln´ıho podpisu, kdy veˇrejn´ym kl´ıˇcem vydan´ym certifikaˇcn´ı autoritou, jsou podepisov´any veˇrejn´e kl´ıˇce

´

uˇcastn´ık˚u ˇsifrovan´e komunikace. Funguje zde hierarchick´y pˇrenos d˚uvˇery.

(19)

3.4 Um´ıstˇ en´ı nov´ ych funkc´ı

DNS informaci bylo nutn´e ovˇeˇrit jeˇstˇe pˇred nav´az´an´ım TCP spojen´ı. O nav´az´an´ı to- hoto spojen´ı se staraj´ı funkce v souboru vc tcp connect.c. Do nˇej byla um´ıstˇena funkce pro ovˇeˇren´ı DNS informace i funkce pro ovˇeˇren´ı TLS certifik´atu. Funkce pro verifikaci DNS byla nazv´ana vc verify dns a jej´ı vol´an´ı muselo probˇehnout jeˇstˇe pˇred vol´an´ım funkce vc create client stream conn, kter´a se star´a o vlastn´ı nav´az´an´ı TCP spojen´ı a TLS handshake. Totu funkci bylo nutn´e upravit tak, aby bylo moˇzn´e j´ı pˇredat adresy, jeˇz byly z´ısk´any pˇri pˇredchoz´ım DNS dotazov´an´ı.

K tomu byla vytvoˇrena v souboru vc tcp connect.h struktura Addr data, jeˇz je na n´asleduj´ı uk´azce zdrojov´eho k´odu. Jelikoˇz v odpovˇedi od DNS serveru obvykle b´yv´a v´ıce IP adres, struktura obsahuje IP adresu v textov´e formˇe a ukazatel na struk- turu Addr data, jeˇz je odkazem na n´asleduj´ıc´ı adresu.

3.5 Struktura pro ukl´ ad´ an´ı callback funkc´ı

Jako prvn´ı krok bylo nutn´e upravit jiˇz existuj´ıc´ı strukturu pro ukl´ad´an´ı callback funkc´ı. Bylo potˇreba ji rozˇs´ıˇrit o dalˇs´ı funkci, kter´a slouˇz´ı k pˇred´av´an´ı bezpeˇcnostn´ıch dat. Jedn´ım z hlavn´ıch poˇzadavk˚u na tuto funkci byla dostateˇcn´a univerz´alnost, aby se dala pouˇz´ıt nejenom k zobrazen´ı DNS informac´ı, ale byla schopna zobrazit napˇr´ıklad i informace o TLS certifik´atu.

Ukl´ad´an´ı callback funkc´ı je ve Verse protokolu ˇreˇseno v souborech: v func storage.c a v hlaviˇckov´em souboru v func storage.h. V souboru v func storage.c je pouze inicia- lizaˇcn´ı funkce initFuncStorage. Do t´e bylo nutn´e pˇridat pouze ˇr´adek inicializuj´ıc´ı novou bezpeˇcnostn´ı funkci.

(20)

liv´e callback funkce. Bylo ji nutn´e rozˇs´ıˇrit o ukazatel na funkci s vhodn´ymi parametry.

Tato funkce byla nazv´ana security info. Jej´ımi parametry jsou ID relace, dom´enov´e jm´eno serveru, IP adresa serveru, textov´y v´ysledek a status v´ysledku. N´asleduje uk´azka zdrojov´eho k´odu (rozˇs´ıˇren´ı VFuncStorage).

3.6 Registraˇ cn´ı funkce

Jak jiˇz bylo v ´uvodu zm´ınˇeno, registraˇcn´ı funkce slouˇz´ı k uloˇzen´ı callback funkce do struktury pro ukl´ad´an´ı callback funkc´ı. V protokolu Verse jsou tyto funkce, pro klient- skou ˇc´ast aplikace definov´any v souboru vc connection.c.

Nov´a registraˇcn´ı funkce byla nazv´ana register security info a jej´ım vstupn´ım para- metrem je ukazatel na funkci, jeˇz m´a parametry jako callback funkce. V tˇele funkce jeˇstˇe nad ˇr´adkem, ve kter´em je ukazatel pˇriˇrazen k pˇr´ısluˇsn´e funkci ve struktuˇre VFuncSto- rage, je vol´an´ı funkce init VC CTX. Tato funkce inicializuje strukturu VC CTX, v n´ıˇz se nach´az´ı mimo jin´e pr´avˇe struktura VFuncStorage. Inicializaˇcn´ı funkce je oˇsetˇrena tak, ˇze pokud je struktura jiˇz inicializov´ana, znovu se inicializovat nebude. N´asleduje zdrojov´y k´od registraˇcn´ı funkce.

(21)

3.7 Faleˇ sn´ y pˇ r´ıkaz

Faleˇsn´y pˇr´ıkaz se liˇs´ı od bˇeˇzn´eho pˇr´ıkazu t´ım, ˇze nen´ı pos´ıl´an po s´ıti a slouˇz´ı k vol´an´ı callback funkc´ı, kdeˇzto bˇeˇzn´e pˇr´ıkazy jsou vyuˇz´ıv´any pro komunikaci mezi klientem a serverem.

Faleˇsn´e pˇr´ıkazy jsou zaˇrazov´any do fronty. Kaˇzd´y pˇr´ıkaz m´a svoj´ı frontu, takˇze bylo nutn´e vytvoˇrit nejen nov´y faleˇsn´y pˇr´ıkaz, ale tak´e novou frontu a strukturu k ukl´ad´an´ı dat, pro tento pˇr´ıkaz.

Tyto pˇr´ıkazy a struktury pro ukl´ad´an´ı dat k tˇemto pˇr´ıkaz˚um, jsou definov´any ve hlaviˇckov´em souboru v command.h. V tomto souboru bylo nutno definovat kon- stantu pro nov´y faleˇsn´y pˇr´ıkaz. Nazv´ana byla FAKE CMD SECURITY INFO a byla j´ı pˇriˇrazena hodnota 3. Struktura pro ukl´ad´an´ı bezpeˇcnostn´ıch dat byla nazv´ana Secu- rity Data. Jej´ı atributy v podstatˇe kop´ıruj´ı parametry callback funkce, pouze tu chyb´ı ˇc´ıslo relace a kv˚uli kompatibilitˇe s ostatn´ımi Verse pˇr´ıkazy, je tu nav´ıc ID pˇr´ıkazu.

N´asleduje uk´azka zdrojov´eho k´odu struktury pro ukl´ad´an´ı bezpeˇcnostn´ıch dat.

Fronty pˇr´ıkaz˚u jsou definov´any v souboru v dataqueue.c. O vytvoˇren´ı front se star´a inicializaˇcn´ı funkce v queue init. V n´ı bylo opˇet nutn´e pˇridat pˇr´ıkaz FAKE CMD SECURITY INFO.

Velikost prvku (item size) je nastavena na velikost struktury Security Data, parame- try adresy (addr offset a addr size) jsou nastaveny na nulu, jelikoˇz se jedn´a o faleˇsn´y, tedy offline pˇr´ıkaz. Haˇsovac´ı funkce (hash function) je nastavena na blind hash func,

(22)

Naˇc´ıt´an´ı pˇr´ıkaz˚u z callback funkc´ı je prov´adˇeno zavol´an´ım funkce verse callback update um´ıstˇen´e v souboru vc connection.c. Tato funkce byla rozˇs´ıˇrena o naˇcten´ı fronty bezpeˇcnostn´ıch pˇr´ıkaz˚u (uk´azka k´odu v pˇr´ıloze A).

Funkce m´a jedin´y vstupn´ı parametr, j´ımˇz je ID relace. Funkce proch´az´ı vˇsemi re- lacemi. Jakmile naraz´ı na poˇzadovanou relaci, zaˇcne postupnˇe z front pˇr´ıkaz˚u naˇc´ıtat jednotliv´e pˇr´ıkazy. Prvn´ı na ˇradˇe je fronta, kter´a byla pˇrid´ana v r´amci t´eto pr´ace, tedy fronta pro bezpeˇcnostn´ı pˇr´ıkazy. Jsou-li ve frontˇe pˇr´ıkazy, jsou postupnˇe naˇcteny, a je vol´ana pˇr´ısluˇsn´a callback funkce, uloˇzen´a ve VFuncStorage. N´asleduje uk´azka k´odu inicializace fronty faleˇsn´ych pˇr´ıkaz˚u.

3.8 Ovˇ eˇ ren´ı DNS z´ aznamu

Jak jiˇz bylo zm´ınˇeno v ´uvodu kapitoly, o ovˇeˇren´ı DNS z´aznamu se star´a funkce vc verify dns, um´ıstˇen´a v souboru vc tcp connect.c. Funkce m´a jako vstupn´ı parametr ukazatel na strukturu VSession, jeˇz obsahuje informace o aktu´aln´ı relaci, a v´ystupn´ı pa- rametr ukazatel na strukturu Security Data, tedy strukturu pro faleˇsn´y pˇr´ıkaz. Funkce vrac´ı strukturu Addr data, v n´ıˇz jsou uloˇzeny IP adresy, z´ıskan´e pˇri DNS dotazech. Viz.

n´asleduj´ıc´ı uk´azka zdrojov´eho k´odu.

Pˇri vykon´av´an´ı funkce jsou nejprve z´ısk´any a ovˇeˇreny adresy IPv4, uk´azka zdro- jov´eho k´odu v pˇr´ıloze A. Pot´e IPv6 a d´ale je faleˇsn´y pˇr´ıkaz s patˇriˇcn´ymi daty pˇrid´an do fronty pˇr´ıkaz˚u a jsou vr´aceny IP adresy, z´ıskan´e dotazy na DNS server.

(23)

V t´eto funkci je vyuˇz´ıv´ano funkc´ı knihovny Ldns, jako prvn´ı ldns resolver new frm file. Pomoc´ı t´eto funkce se nastavuje, jak´eho DNS serveru se chceme dotazovat.V´ystupn´ım parametrem je struktura ldns resolver, v n´ıˇz je konfi- gurace DNS. Vstupn´ı parametr je soubor, z nˇehoˇz maj´ı b´yt informace naˇcteny. Pokud je zad´ano NULL je pouˇzit soubor /etc/grub.conf. Pokud vˇse probˇehne v poˇr´adku funkce vrac´ı LDNS STATUS OK. V opaˇcn´em pˇr´ıpadˇe funkce vr´at´ı chybov´y k´od.

Dalˇs´ı pouˇzitou funkc´ı je ldns dname new frm str, vracej´ıc´ı strukturu ldns rdf a se vstupn´ım parametrem ukazatelem na znak (char). Tato funkce vytv´aˇr´ı z textov´eho ˇretˇezce informace o dom´enˇe, kter´e jsou pouˇz´ıv´any jako parametr DNS dotaz˚u.

Funkce ldns resolver set dnssec m´a vstupn´ı parametry ldns resolver a bool. Jej´ı po- moc´ı se nastavuje zda m´a b´yt zapnuta podpora DNSSEC.

Dalˇs´ı funkc´ı je ldns resolver query, pos´ılaj´ıc´ı dotazy na DNS server. Vrac´ı struk- turu ldns pkt reprezentuj´ıc´ı DNS zpr´avu a m´a pˇet vstupn´ıch parametr˚u, struktury ldns resolver, a ldns rdf, druh z´aznamu, tˇr´ıdu dotazu a pˇr´ıznak. Pomoc´ı tˇechto pa- rametr˚u je moˇzn´e pˇresnˇe specifikovat dotaz, tedy na jak´y server m´a b´yt dotaz posl´an a jak´y druh z´aznamu je poˇzadov´an (napˇr. adresa IPv4). Ve Verse protokolu byl u dotazu pouˇzit pˇr´ıznak RD, tedy po DNS serveru je poˇzadov´ano rekurzivn´ı dopt´av´an´ı.

Vˇerohodnost dat je kontrolov´ana funkc´ı ldns pkt ad, jeˇz kontroluje, zda odpovˇed’

obsahuje pˇr´ıznak AD. Ten znaˇc´ı, ˇze jsou data obsaˇzen´a v paketu autentick´a. Vstupn´ım parametrem je struktura ldns pkt. Funkce vrac´ı true, pokud paket pˇr´ıznak obsahuje.

V opaˇcn´em pˇr´ıpadˇe vrac´ı false.

Z odpovˇedi bylo potˇreba vybrat poˇzadovan´e RR z´aznamy, k ˇcemuˇz slouˇz´ı funkce ldns pkt rr list by type vracej´ıc´ı strukturu ldns rr list. Vstupn´ımi parametry jsou ldns pkt, typ z´aznamu a sekce paketu, z n´ıˇz maj´ı b´yt z´aznamy vybr´any. Posledn´ı pouˇzitou funkc´ı je ldns rdf2str, kter´a pˇrev´ad´ı IP adresu z bin´arn´ıho form´atu do tex- tov´eho.

3.9 Ovˇ eˇ ren´ı TLS certifik´ atu

(24)

rametr m´a ukazatel na strukturu vContext, jeˇz obsahuje mimo jin´e strukturu VSession, pouˇzitou pro pˇredchoz´ı funkci. Ale hlavnˇe obsahuje strukturu VStreamConn, kter´a ob- sahuje informace o TLS spojen´ı a je z n´ı tedy moˇzno z´ıskat TLS certifik´at serveru.

V´ystupn´ım parametrem je stejnˇe jako u pˇredchoz´ı funkce ukazatel na strukturu Secu- rity Data, na n´asleduj´ı uk´azce zdrojov´eho k´odu je hlaviˇcka funkce vc verify cert.

K ovˇeˇren´ı TLS certifik´atu jsou pouˇzity funkce knihovny OpenSSL. Prvn´ı z nich je funkce SSL get peer certificate pouˇzit´a k z´ıskan´ı certifik´atu serveru. Jej´ım vstupn´ım parametrem je struktura SSL a vrac´ı strukturu X509, kter´a pˇredstavuje TLS certifik´at.

Z t´eto struktury, jsou pomoc´ı funkc´ı X509 get subject name a X509 NAME oneline z´ısk´any informace o certifik´atu v textov´a podobˇe, ty jsou pak pˇred´any bezpeˇcnostn´ı callback funkci.

Nejd˚uleˇzitˇejˇs´ı funkc´ı ve vc verify cert je SSL get verify result. Tato funkce se star´a o vlastn´ı ovˇeˇren´ı certifik´atu. Jako vstupn´ı parametr m´a strukturu SSL a vrac´ı chybov´e k´ody, ty jsou pˇred´any bezpeˇcnostn´ı callback funkci. Podle chybov´eho k´odu je doplnˇena textov´a informace upˇresˇnuj´ıc´ı chybu a ta je tak´e pˇred´ana bezpeˇcnostn´ı callback funkci.

Pokud je certifik´at v poˇr´adku, funkce vr´at´ı 0. Bezpeˇcnostn´ı callback funkci je pak pˇred´an k´od SECURITY CERT OK.

3.10 Rozˇ s´ıˇ ren´ı Verse API

Verse API je definov´ano v souboru verse.h. Bylo jej nutn´e rozˇs´ıˇrit pˇredevˇs´ım o re- gistraˇcn´ı funkci register security info. Tak aby program´ator pouˇz´ıvaj´ıc´ı knihovnu Verse protokolu mohl zaregistrovat pˇr´ısluˇsnou callback funkci. D´ale bylo Verse API rozˇs´ıˇreno o konstanty, jeˇz jsou pouˇz´ıv´any jako chybov´e k´ody pro bezpeˇcnostn´ı funkci, viz n´asleduj´ıc´ı uk´azka zdrojov´eho k´odu.

(25)

3.11 Vzorov´ a aplikace

Jako vzorov´a aplikace byla pouˇzita konzolov´a aplikace

”Example of Verse client“, ˇcili pˇr´ıklad Verse klienta. Ta byla jiˇz naps´ana Ing. Jiˇr´ım Hn´ıdkem. Bylo samozˇrejmˇe nutn´e ji rozˇs´ıˇrit o konkr´etn´ı implementaci callback funkce, viz. n´asleduj´ı uk´azka zdrojov´eho k´odu.

Vstupn´ımi parametry funkce jsou pochopitelnˇe ID relace, jm´eno serveru, IP adresa, potaˇzmo adresy, v textov´e formˇe, textov´a informace a v´ysledn´y status ovˇeˇrov´an´ı. Funkce bˇehem sv´eho vykon´av´an´ı vyp´ıˇse do konzole informace o relaci a informace o DNS, potaˇzmo o certifik´atu. Pokud status neobsahuje SECURITY DNS OK nebo SECU- RITY CERT OK, je uˇzivatel dot´az´an, zda m´a program pokraˇcovat v pˇripojov´an´ı se k serveru, V opaˇcn´em pˇr´ıpadˇe program pokraˇcuje automaticky.

(26)

Bylo tak´e nutn´e zaregistrovat tuto funkci, pomoc´ı registraˇcn´ı funkce, jeˇz byla pˇrid´ana do Verse API. To je provedeno v n´asleduj´ıc´ı uk´azce zdrojov´eho k´odu. T´ım bylo dosaˇzeno funkcionality vzorov´e aplikace, potˇrebn´e k demonstrov´an´ı funkˇcnosti zmˇen, proveden´ych ve Verse protokolu.

(27)

4 Testov´ an´ı

Jelikoˇz nebyla moˇznost nainstalovat Verse server na serveru, kter´y m´a pode- psanou dom´enu, testov´an´ı funkˇcnosti na vzorov´e aplikaci, konkr´etnˇe ovˇeˇren´ı DNS z´aznamu, probˇehlo bez vlastn´ıho pˇripojen´ı k Verse serveru. Avˇsak k vlastn´ımu otes- tov´an´ı funkˇcnosti verifikace DNS z´aznamu nen´ı pˇripojen´ı k Verse serveru nutn´e. Staˇc´ı pokusit se pˇripojit pomoc´ı klientsk´eho programu k jin´ym server˚um. DNS z´aznam je totiˇz ovˇeˇrov´an jeˇstˇe pˇred vlastn´ım nav´az´an´ım komunikace ze serverem.

V m´em pˇr´ıpadˇe probˇehlo testov´an´ı pˇripojen´ım k podepsan´ym server˚um www.nic.cz a www.dnssec.cz a nepodepsan´emu serveru www.tul.cz. Test pˇripojen´ı k Verse serveru byl proveden lok´alnˇe a to pro IPv4 (localhost) i pro IPv6 (localhost6). Rovnˇeˇz bylo otestov´ano zad´an´ı neexistuj´ıc´ı adresy.

4.1 Podepsan´ e dom´ eny

Prvn´ı test probˇehl pˇripojen´ım vzorov´e aplikace k serveru www.nic.cz, viz. n´asleduj´ıc´ı uk´azka.

Na screenshotu jsou vidˇet zobrazen´e informace o relaci: jej´ı ˇc´ıslo, jm´eno serveru a IP adresy. V tomto pˇr´ıpadˇe jedna IPv4 a dvˇe IPv6. D´ale je vyps´ana informace o tom, ˇze DNS z´aznamy jsou validn´ı. D´ıky tomu aplikace pokraˇcuje pokusem pˇripojit se k portu 12345 (na nˇem naslouch´a Verse server), serveru www.nic.cz. Spojen´ı samozˇrejmˇe nelze nav´azat, jelikoˇz na serveru www.nic.cz Verse server nainstalov´an a spuˇstˇen nen´ı. Ob- dobn´y v´ysledek vznikne i pˇri pokusu pˇripojit se k serveru www.dnssec.cz (n´asleduj´ı uk´azka). S t´ım rozd´ılem, ˇze zde byla z´ısk´ana pouze jedna adresa IP verze 6.

(28)

4.2 Neexistuj´ıc´ı dom´ ena

Ve tˇret´ım pˇr´ıpadˇe probˇehlo zad´an´ı neexistuj´ıc´ı dom´eny (na uk´azce n´ıˇze), tak aby bylo demonstrov´ano, ˇze knihovna Verse protokolu i po pˇrid´an´ı nov´e funkce po t´eto ud´alosti, z˚ustane stabiln´ı.

Na obr´azku jsou samozˇrejmˇe oproti pˇredchoz´ım pˇr´ıpad˚um zmˇeny. Nen´ı zobrazena ˇz´adn´a IP adresa a je vyps´ana informace o tom ˇze server nebyl nalezen. Aplikace se tak´e dotazuje, zda se m´a pokusit pokraˇcovat v navazov´an´ı spojen´ı.

4.3 Nepodepsan´ a dom´ ena

Dalˇs´ı test probˇehl obdobnˇe, jako pˇredchoz´ı, tedy pokusem o pˇripojen´ı k serveru, tentokr´at k dom´enˇe, kter´a sice existuje, ale nen´ı podeps´ana. Zvolena byla dom´ena www.tul.cz, v´ysledek je na dalˇs´ı uk´azce.

V´ysledek je podobn´y jako u prvn´ıch dvou test˚u. Jsou opˇet vyps´any informace o re- laci, vˇsak tentokr´at je DNS z´aznam neautentick´y. Aplikace se tud´ıˇz dot´aˇze, zda m´a pokraˇcovat v pˇripojov´an´ı se k serveru. Po kladn´e odpovˇedi se pˇripojen´ı k portu 12345 opˇet nepodaˇr´ı, Verse server zde nen´ı nainstalov´an.

(29)

4.4 Lok´ aln´ı test pˇ ripojen´ı

Dalˇs´ı testy uˇz prob´ıhaly lok´alnˇe. Bylo potˇreba spustit Verse server, jeˇz naslouch´a na portu 12345, nejprve pˇripojen´ım skrze IP verze 4, a pot´e skrze IP verze 6. V obou pˇr´ıpadech je hl´aˇsena neautentick´a adresa, jelikoˇz localhost ani localhost6 nejsou po- deps´any. Po vol´an´ı funkce pro ovˇeˇren´ı certifik´atu, je hl´aˇsena dalˇs´ı chyba a to self signed certifik´at, tedy certifik´at podepsan´y s´am sebou. Je opˇet zvoleno pokraˇcovat. Po zad´an´ı uˇzivatelsk´eho jm´ena a hesla se aplikace ´uspˇeˇsnˇe pˇrihl´as´ı k Verse serveru. N´asleduje uk´azka spuˇstˇen´ı Verse serveru, pot´e pˇripojen´ı pˇres IPv4 a IPv6.

(30)
(31)
(32)

4.5 Nedostatky, moˇ zn´ a budouc´ı vylepˇ sen´ı

Tato ˇc´ast pr´ace pojedn´av´a o moˇzn´ych budouc´ıch vylepˇsen´ıch a o nedostatc´ıch souˇcasn´e implementace. Ide´aln´ı nen´ı ˇze je v knihovnˇe protokolu Verse po ovˇeˇren´ı DNS informac´ı vol´ana funkce verse callback update. Ta by mˇela b´yt vol´ana pouze vnˇe knihovny, ovˇsem z d˚uvodu vˇcasn´eho pˇred´an´ı informac´ı o DNS skrze callback funkci je vol´ana uvnitˇr knihovny, rozhodnˇe tedy stoj´ı za ´uvahu, jak to v budoucnu ˇreˇsit.

Takt´eˇz stoj´ı za ´uvahu zda, pˇr´ıpadnˇe jak´ym zp˚usobem v budoucnu nedodefinovat, ˇci nepˇredefinovat konstanty pouˇz´ıvan´e v bezpeˇcnostn´ı callback funkci. V t´e jsou nyn´ı kromˇe konstant definovan´ych ve verse.h, pouˇz´ıv´any i chybov´e k´ody knihovny OpenSSl (tato knihovna je v souˇcasn´e dobˇe nutn´a ke kompilaci knihony Verse protokolu).

(33)

5 Z´ avˇ er

Tato bakal´aˇrsk´a pr´ace popisuje rozˇs´ıˇren´ı Verse protokolu o DNSSEC. Souˇc´ast´ı pr´ace je struˇcn´a reˇserˇse o knihovn´ach umoˇzˇnuj´ıc´ıch DNSSEC, pro samotnou implementaci pak byla vybr´ana knihovna ldns.

Do knihovny Verse protokolu byly implementov´any funkce ovˇeˇruj´ıc´ı autenticitu DNS z´aznamu a TLS certifik´at. D´ale byl pˇrid´an bezpeˇcnostn´ı faleˇsn´y pˇr´ıkaz a callback funkce.

Byly pˇrid´any, nebo upraveny struktury, jako struktura pro ukl´ad´an´ı callback funkc´ı, IP adres a struktura faleˇsn´eho pˇr´ıkazu. Tak´e byly upraveny nˇekter´e jiˇz existuj´ıc´ı funkce.

C´ılem pr´ace bylo tak´e vhodn´e rozˇs´ıˇren´ı Verse API. To bylo rozˇs´ıˇreno o nˇekter´e kon- stanty a registraˇcn´ı funkci, registruj´ıc´ı bezpeˇcnostn´ı callback funkci. D´ıky tomu je moˇzn´e registrovat callback funkci a pouˇz´ıvat pˇr´ısluˇsn´e konstanty v aplikac´ıch implementuj´ıc´ıch Verse protokol.

Jako vzorov´a aplikace byla vyuˇzita jiˇz existuj´ıc´ı klientsk´a aplikace. Ta byla rozˇs´ıˇrena o bezpeˇcnostn´ı callback funkci. Na rozˇs´ıˇren´e vzorov´e aplikaci pak prob´ıhalo testov´an´ı funkˇcnosti implementace DNSSEC.

Testov´an´ı vzorov´e aplikace bylo ´uspˇeˇsn´e, adresy podepsan´ych dom´en byli spr´avnˇe vyhodnoceny jako autentick´e, naopak adresa nepodepsan´e dom´eny byla vyhodnocena jako neautentick´a. Test pˇripojen´ı k lok´alnˇe spuˇstˇen´emu Verse serveru byl tak´e ´uspˇeˇsn´y.

(34)

Reference

[1] HN´IDEK, Jiˇr´ı. S´ıt’ov´y protokol pro grafick´e aplikace.

Liberec, 2011. 171 s. Dizertaˇcn´ı pr´ace. Technick´a univerzita v Liberci.

[2] Ietf.org [online]. 1999 [cit. 2011-05-18]. Domain Name System Security Ex- tensions RFC 2535.

Dostupn´e z WWW: http://datatracker.ietf.org/doc/rfc2535/.

[3] Ietf.org [online]. 1987 [cit. 2011-05-18]. Domain names - implementation and specification RFC 1035.

Dostupn´e z WWW: http://datatracker.ietf.org/doc/rfc1035/.

[4] Ietf.org [online]. 1981 [cit. 2011-05-18]. Internet Protocol RFC 791.

Dostupn´e z WWW: http://datatracker.ietf.org/doc/rfc791/.

[5] Nic.cz [online]. 2011 [cit. 2011-05-18]. O DNSSEC.

Dostupn´e z WWW: http://www.nic.cz/dnssec/.

[6] Domain Name System. In Wikipedia : the free encyclopedia [online]. St. Pe- tersburg (Florida) : Wikipedia Foundation, [cit. 2011-05-18]. Dostupn´e z WWW:

http://cs.wikipedia.org/wiki/Domain Name System.

[7] SUR ´Y, Ondˇrej. DNSSEC a DNS zpr´ava pod drobnohledem. DNSSEC a bezpeˇcn´e DNS [online]. 2008, 4, [cit. 2011-05-18].

Dostupn´y z WWW: http://www.root.cz/clanky/dnssec-a-dns-zprava-pod- drobnohledem/.

[8] Ietf.org [online]. 1980 [cit. 2011-05-18]. User Datagram Protocol RFC 768.

Dostupn´e z WWW: http://datatracker.ietf.org/doc/rfc768/.

[9] Ietf.org [online]. 1981 [cit. 2011-05-18]. Transmission Control Protocol RFC 793.

Dostupn´e z WWW: http://datatracker.ietf.org/doc/rfc793/.

(35)

[10] ˇS ˇTASTN ´Y, Petr. Dns-info.cz [online]. 2007 [cit. 2011-05-18]. Komunikace pˇres UDP a TCP - DNS.

Dostupn´e z WWW: http://www.dns-info.cz/dns/protokol-tcp-udp.html.

[11] Ietf.org [online]. 2001 [cit. 2011-05-18]. Electronic Signature Policies RFC 3125.

Dostupn´e z WWW: http://datatracker.ietf.org/doc/rfc3125/.

[12] SATRAPA, Pavel. Vˇerohodn´e DNS ˇcili DNSSEC.

Lupa.cz [online]. 26. 5. 2005, [cit. 2011-05-11]. Dostupn´y z WWW:

http://www.lupa.cz/clanky/verohodne-dns-cili-dnssec/

[13] Ietf.org [online]. 2005 [cit. 2011-05-18]. Resource Records for the DNS Secu- rity Extensions RFC 4034.

Dostupn´e z WWW: http://datatracker.ietf.org/doc/rfc4034/.

[14] Ietf.org [online]. 2008 [cit. 2011-05-18]. DNS Security (DNSSEC) Hashed Au- thenticated Denial of Existence RFC 5155.

Dostupn´e z WWW: http://datatracker.ietf.org/doc/rfc5155/.

[15] SATRAPA, Pavel. Lupa.cz [online]. 2008 [cit. 2011-05-18]. NSEC3 – DNSSEC, kter´y nic nevyzrad´ı. Dostupn´e z WWW:

http://www.lupa.cz/clanky/nsec3nbspndash-dnssec-ktery-nic-nevyzradi/.

[16] SUR ´Y, Ondˇrej. Jak funguje DNSSEC?

Seri´al DNSSEC a bezpeˇcn´e DNS [online]. 29. 12. 2008, ˇc. 4, [cit. 2011-05-11].

Dostupn´y z WWW: http://www.root.cz/serialy/dnssec-a-bezpecne-dns/

[17] Registro.br [online]. 2010 [cit. 2011-05-11]. Libepp-nicbr.

Dostupn´e z WWW: http://registro.br/epp/index-EN.html

[18] Www.cz.freebsd.org [online]. 2011 [cit. 2011-05-19]. Projekt FreeBSD.

Dostupn´e z WWW: http://www.cz.freebsd.org/cs/.

(36)

[19] Www.linux.cz [online]. 2011 [cit. 2011-05-19].

Cesk´ˇ e str´anky syst´emu GNU/Linux. Dostupn´e z WWW:

http://www.linux.cz/.

[20] Apple.com [online]. 2011 [cit. 2011-05-19]. Apple - Mac OS X.

Dostupn´e z WWW: http://www.apple.com/cz/macosx/.

[21] Registro.br [online]. 2010 [cit. 2011-05-11]. Libepp-nicbr.

Dostupn´e z WWW: http://registro.br/epp/docs-EN.html

[22] Linfo.org [online]. 2004 [cit. 2011-05-19]. BSD License Definition.

Dostupn´e z WWW: http://www.linfo.org/bsdlicense.html.

[23] Idsa.irisa.fr [online]. 2004 [cit. 2011-05-11]. Projet IDsA.

Dostupn´e z WWW: http://idsa.irisa.fr/index.php?page=libsresolv%5C&lang=en [24] Openssl.org [online]. 2011 [cit. 2011-05-19]. OpenSSL.

Dostupn´e z WWW: http://www.openssl.org/.

[25] Ruby-lang.org [online]. 2011 [cit. 2011-05-19]. Ruby Programming Language.

Dostupn´e z WWW: http://www.ruby-lang.org/en/.

[26] Dnsruby.rubyforge.org [online]. 2011 [cit. 2011-05-11]. RDoc Documentation.

Dostupn´e z WWW: http://dnsruby.rubyforge.org/

[27] Apache.org [online]. 2004 [cit. 2011-05-19]. Apache License, Version 2.0.

Dostupn´e z WWW: http://www.apache.org/licenses/LICENSE-2.0.

[28] Www.java.com [online]. 2011 [cit. 2011-05-19]. Java.

Dostupn´e z WWW: http://www.java.com/en/.

[29] Dnsjava.org [online]. 2011 [cit. 2011-05-11]. Dnsjava.

Dostupn´e z WWW: http://www.dnsjava.org/

[30] Ietf.org [online]. 2000 [cit. 2011-05-19]. Secret Key Transaction Authenti- cation for DNS (TSIG) RFC 2845.

Dostupn´e z WWW: http://datatracker.ietf.org/doc/rfc2845/.

(37)

[31] Tsig. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, [cit. 2011-05-11].

Dostupn´e z WWW: http://cs.wikipedia.org/wiki/Tsig [32] Dnsjava.org [online]. 2011 [cit. 2011-05-11]. Dnsjava.

Dostupn´e z WWW: http://www.dnsjava.org/dnsjava-current/doc/

[33] Python.org [online]. 2011 [cit. 2011-05-19]. Python Programming Language.

Dostupn´e z WWW: http://www.python.org/.

[34] www.dnspython.org [online]. 2011 [cit. 2011-05-11]. Dnspython home page.

Dostupn´e z WWW: http://www.dnspython.org/

[35] Dnssec.net [online]. 2011 [cit. 2011-05-11]. DNSSEC Software, DNSSEC Tools, DNSSEC Utilities.

Dostupn´e z WWW: http://www.dnssec.net/software

[36] Perl.org [online]. 2011 [cit. 2011-05-19]. The Perl Programming Language.

Dostupn´e z WWW: http://www.perl.org/.

[37] Www.net-dns.org [online]. 2011 [cit. 2011-05-11]. NET::DNS.

Dostupn´e z WWW: http://www.net-dns.org/

[38] Nlnetlabs.nl [online]. 2011 [cit. 2011-05-11]. Ldns.

Dostupn´e z WWW: http://www.nlnetlabs.nl/projects/ldns/

[39] Oracle.com [online]. 2011 [cit. 2011-05-19]. Oracle Solaris. Dostupn´e z WWW:

http://www.oracle.com/cz/products/servers-storage/solaris/index.html.

[40] Gnu.org [online]. 2010 [cit. 2011-05-19]. GNU Libtool.

Dostupn´e z WWW: http://www.gnu.org/software/libtool/.

[41] Nlnetlabs.nl [online]. 2006 [cit. 2011-05-19]. License.

Dostupn´e z WWW: http://nlnetlabs.nl/svn/ldns/trunk/LICENSE.

(38)

[43] Eclipse.org [online]. 2011 [cit. 2011-05-19]. Eclipse.

Dostupn´e z WWW: http://www.eclipse.org/.

[44] Apache.org [online]. 2011 [cit. 2011-05-19]. Subversion.

Dostupn´e z WWW: http://subversion.apache.org/.

[45] Ietf.org [online]. 1999 [cit. 2011-05-19]. The TLS Protocol Version 1.0 RFC 2246.

Dostupn´e z WWW: http://datatracker.ietf.org/doc/rfc2246/.

(39)

Pˇ r´ıloha A - Uk´ azky zdrojov´ ych k´ od˚ u

Zkr´ acen´ a funkce verse callback update

(40)

Z´ısk´ an´ı a ovˇ eˇ ren´ı DNS z´ aznamu IPv4

(41)

Zmˇ eny IPv6 oproti IPv4

(42)

Ovˇ eˇ ren´ı TLS certifik´ atu

(43)

Pˇ r´ıloha B - Informace k pˇ riloˇ zen´ emu CD

K bakal´aˇrsk´e pr´aci je pˇriloˇzeno CD se zdrojov´ymi k´ody Verse protokolu. Pro

´

uspˇeˇsnou instalaci je nutn´e m´ıt nainstalov´an modul PAM a knihovny OpenSSL a ldns.

Knihovnu ldns je moˇzno st´ahnout na adrese www.nlnetlabs.nl/projects/ldns/.

Verse klient ani server nen´ı nutn´e instalovat, staˇc´ı je pouze zkop´ırovat na disk, pˇr´ıpadnˇe sestavit pouˇzit´ım pˇr´ıkazu make. Pˇred spuˇstˇen´ım serveru je nutn´e nastavit seznam uˇzivatel˚u a uloˇzit jej do adres´aˇre ./config, jako users.csv. V tomto adres´aˇri je pˇr´ıklad seznamu users.csv.example, staˇc´ı jej tedy pˇrejmenovat, pˇr´ıpadnˇe editovat.

Verse server se pak spouˇst´ı ./bin/verse server. Klient je spouˇstˇen ./bin/verse client adresa. Zad´an´ım ./bin/verse client -h je vyps´ana n´apovˇeda.

References

Related documents

Hodnocen´ı navrhovan´e vedouc´ım bakal´aˇrsk´e pr´ace: velmi dobře minus Hodnocen´ı navrhovan´e oponentem bakal´aˇrsk´e pr´ace:?. Pr˚ ubˇ eh obhajoby bakal´ aˇrsk´

Student byl seznámen s posudky vedoucího a oponenta bakalářské práce, následně odpovídal na otázky položené v posudcích?.

Hodnocen´ı navrhovan´ e vedouc´ım bakal´ aˇ rsk´ e pr´ ace: výborně minus Hodnocen´ı navrhovan´ e oponentem bakal´ aˇ rsk´ e pr´ ace: výborně?. Pr˚ ubˇ eh obhajoby bakal´

Hodnocen´ı navrhovan´ e vedouc´ım bakal´ aˇ rsk´ e pr´ ace: výborně minus Hodnocen´ı navrhovan´ e oponentem bakal´ aˇ rsk´ e pr´ ace: výborně minus.. Pr˚ ubˇ eh

Seznámení s posudkem Reakce studenta na posudek odpovídala úrovni a odbornosti Diskuse komise a studenta k tematu BP. Student věcně a odborně odpovídal na dotazy jednotlivých

Které spotřební zvyklosti a módní trendy ovlivňují současnou poptávku po cestovním

Konkrétně studentka zjišťovala, jakou formou komunikují pedagogové mateřských škol s dětmi, jejichž úroveň verbální komunikace je na nedostatečné úrovni a jaké

Můžete uvést nějaké konkrétní důvody, proč některé nemocnice vedou zdravotnickou dokumentaci pouze v papírové podobě kvůli legislativě České republiky, viz kapitola 2.1.4,