{"id":383,"date":"2019-02-04T21:15:05","date_gmt":"2019-02-04T21:15:05","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/?post_type=chapter&#038;p=383"},"modified":"2019-04-08T16:34:58","modified_gmt":"2019-04-08T16:34:58","slug":"silmaring-krupteerimine","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/chapter\/silmaring-krupteerimine\/","title":{"raw":"Silmaring: Kr\u00fcpteerimine","rendered":"Silmaring: Kr\u00fcpteerimine"},"content":{"raw":"Autor: Kristjan Krips\r\n<h2 class=\"vspace\">Sissejuhatus<\/h2>\r\n<p class=\"vspace\">Selle n\u00e4dala silmaringi materjalis teeme l\u00fchikokkuv\u00f5tte sellest, mis on <strong>kr\u00fcpteerimine<\/strong> ja miks seda vaja l\u00e4heb. Ajaloo osas mainisime masinat nimega Enigma, mida kasutati Teise maailmas\u00f5ja ajal militaars\u00f5numite kaitsmiseks pealtkuulajate eest. Enigma oli masin, mis v\u00f5imaldas andmeid kr\u00fcpteerida ning seega neid kaitsta kolmandate osapoolte eest (n\u00e4iteks sakslaste andmete kaitsmist inglaste eest). Enigma muutis masinasse sisestatud andmeid nii, et masinast v\u00e4ljuvad andmed olid kolmandale osapoolele loetamatud.<\/p>\r\n\r\n<div class=\"vspace\"><\/div>\r\n<div class=\"img imgcaption\">\r\n\r\n[caption id=\"attachment_384\" align=\"aligncenter\" width=\"300\"]<img class=\"size-medium wp-image-384\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/enigma-300x286.jpg\" alt=\"\" width=\"300\" height=\"286\" \/> Enigma. <a href=\"https:\/\/www.mediawiki.org\/wiki\/File:Four-rotor-enigma.jpg\">Allikas<\/a>[\/caption]\r\n\r\n<\/div>\r\n<h2 class=\"vspace\">Kodeerimine<\/h2>\r\n<p class=\"vspace\">On oluline t\u00e4hele panna, et Enigma puhul polnud tegu andmete lihtsa <strong>kodeerimisega<\/strong>, sest kodeeritud andmeid on kerge taastada. Lihtne kodeerimise n\u00e4ide on <strong>morsekood<\/strong>, mis muudab kindla eeskirja alusel andmeid ning v\u00f5imaldab neid selle sama eeskirja alusel taastada.<\/p>\r\n<p class=\"vspace\"><strong>Kr\u00fcpteerimine<\/strong> erineb kodeerimisest selle poolest, et andmete t\u00f6\u00f6tlemisel kasutatakse <strong>v\u00f5tit<\/strong>, mist\u00f5ttu kolmas osapool ei saa ilma v\u00f5tit omamata kr\u00fcpteeritud andmetest esialgset taastada.<\/p>\r\n\r\n<div class=\"vspace\"><\/div>\r\n<div class=\"img imgcaption\">\r\n\r\n[caption id=\"attachment_385\" align=\"aligncenter\" width=\"300\"]<img class=\"wp-image-385\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/morse.png\" alt=\"\" width=\"300\" height=\"387\" \/> Morse on n\u00e4ide kodeerimisest. <a href=\"https:\/\/www.mediawiki.org\/wiki\/File:International_Morse_Code.svg\">Allikas<\/a>[\/caption]\r\n\r\n<\/div>\r\n<h2 class=\"vspace\">Kr\u00fcpteerimine<\/h2>\r\n<p class=\"vspace\">T\u00e4nap\u00e4eval on kr\u00fcpteerimine p\u00f5hiline viis digitaalsete andmete kaitsmiseks. Kr\u00fcpteerimise abil kaitstakse telefonik\u00f5nesid pealtkuulamise eest ning meditsiiniandmeid ja \u00e4risaladusi lekkimise eest. Muuhulgas kasutatakse kr\u00fcpteerimist tasuliste telekanalite edastamisel, wifi v\u00f5rgu kaitsmisel, HTTPS protokolli kasutavate veebilehtedega suhtlemisel, digiallkirjastamisel ja e-h\u00e4\u00e4letamisel. Kr\u00fcpteeritud \u00fchenduse kasutamine on \u00fcks oluline meetod turvalise internetipanga teenuse pakkumisel. Kuna kr\u00fcpteerimine m\u00f5jutab meid iga p\u00e4ev, siis v\u00f5ib tekkida k\u00fcsimus, kuidas ikkagi kr\u00fcpteerimine toimib ning kas r\u00fcndajal on v\u00f5imalik kr\u00fcpteeritud s\u00f5numeid lahti murda.<\/p>\r\n\r\n<h2 class=\"vspace\">S\u00fcmmeetriline kr\u00fcpteerimine<\/h2>\r\n<p class=\"vspace\">K\u00f5ige lihtsam on kr\u00fcpteerimist ette kujutada nii, et on olemas <strong>kr\u00fcpteerimisalgoritm<\/strong> (eeskiri), mis saab sisendiks <strong>andmed<\/strong> ja <strong>kr\u00fcpteerimisv\u00f5tme<\/strong> ning annab v\u00e4ljundiks <strong>kr\u00fcpteeritud andmed<\/strong>. Nende kr\u00fcpteeritud andmete taastamiseks on vaja kasutada <strong>dekr\u00fcpteerimise<\/strong> (lahtikr\u00fcpteerimise) <strong>v\u00f5tit<\/strong> ning ilma vastava v\u00f5tmeta pole v\u00f5imalik andmeid esialgsel kujul taastada. Juhul kui kr\u00fcpteerimisv\u00f5ti ja dekr\u00fcpteerimisv\u00f5ti on samad, siis on tegu s\u00fcmmeetrilise kr\u00fcpteerimisalgoritmiga. Niisuguseid algoritme kasutatakse suurte andmehulkade kr\u00fcpteerimiseks, hea n\u00e4ide on k\u00f5vakettal v\u00f5i m\u00e4lupulgal olevate andmete kaitsmine.<\/p>\r\n\r\n<div class=\"vspace\"><\/div>\r\n<div class=\"img imgcaption\">\r\n\r\n[caption id=\"attachment_386\" align=\"aligncenter\" width=\"472\"]<img class=\"wp-image-386 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine.png\" alt=\"\" width=\"472\" height=\"200\" \/> Kr\u00fcpteerimine ja dekr\u00fcpteerimine[\/caption]\r\n\r\n<\/div>\r\n<p class=\"vspace\">N\u00fc\u00fcd v\u00f5ib tekkida k\u00fcsimus, et mis on see <strong>v\u00f5ti<\/strong>, mida kr\u00fcpteerimisel ja dekr\u00fcpteerimisel kasutatakse. Vastav v\u00f5ti on m\u00f5nes m\u00f5ttes sarnane tavalise lukuv\u00f5tmega \u2014 v\u00f5tit tuleb valvata, et sellest koopiat ei tehtaks, ja v\u00f5tit tuleb kaitsta kadumise eest, et v\u00f5\u00f5rad v\u00f5tit kasutada ei saaks. Lisaks sellele tuleb v\u00f5tit enda jaoks s\u00e4ilitada, et tagada juurdep\u00e4\u00e4s v\u00f5tmega suletud hoiukohtadele v\u00f5i ruumidele. Oluline on m\u00e4rkida, et ka kr\u00fcpteeritud andmetele on v\u00f5imalik juurde p\u00e4\u00e4seda ainult vastavat v\u00f5tit kasutades. V\u00f5ti on kahends\u00fcsteemis arv ehk siis \u00fchtedest ja nullidest koosnev jada. T\u00e4nap\u00e4evaste s\u00fcmmeetriliste kr\u00fcpteerimiss\u00fcsteemide korral on v\u00f5tmed enamasti 128-bitised v\u00f5i 256-bitised ehk siis \u00fchtede ja nullide jadad pikkusega 128 v\u00f5i 256 m\u00e4rki. On v\u00e4ga oluline, et kr\u00fcpteerimisel kasutatav v\u00f5ti oleks juhuslikult genereeritud, sest kr\u00fcpteerimise tugevus s\u00f5ltub nii kr\u00fcpteerimisalgoritmi kui ka v\u00f5tme tugevusest.<\/p>\r\n<p class=\"vspace\">Samas toob juhuslike bitijadade kasutamise n\u00f5ue endaga kaasa kaks probleemi:<\/p>\r\n\r\n<ol>\r\n \t<li>Esimene probleem seisneb selles, et juhuslike v\u00f5tmete genereerimine ei ole lihtne, sest arvutid ei suuda p\u00e4ris juhuslikke arve genereerida.<\/li>\r\n \t<li>Teine probleem on seotud sellega, et inimesed ei ole v\u00f5imelised meelde j\u00e4tma pikki nende jaoks seosetuid bitijadasid.<\/li>\r\n<\/ol>\r\n<p class=\"vspace\">Seet\u00f5ttu kr\u00fcpteeritakse v\u00f5ti enamasti <strong>parooliga<\/strong>, mida on inimesel lihtsam meelde j\u00e4tta, ning kr\u00fcpteeritud v\u00f5ti salvestatakse kas eraldi failina, lisatakse kr\u00fcpteeritud faili p\u00e4isesse v\u00f5i hoitakse eraldiseisval kiibil.<\/p>\r\n<p class=\"vspace\">Andmete kr\u00fcpteerimiseks on vaja valida sobiv <strong>kr\u00fcptos\u00fcsteem<\/strong>. Kr\u00fcptos\u00fcsteem koosneb:<\/p>\r\n\r\n<ul>\r\n \t<li>v\u00f5tme genereerimise algoritmist,<\/li>\r\n \t<li>andmete kaitsmiseks m\u00f5eldud kr\u00fcpteerimisalgoritmist ja<\/li>\r\n \t<li>andmete taastamiseks m\u00f5eldud dekr\u00fcpteerimisalgoritmist.<\/li>\r\n<\/ul>\r\n<p class=\"vspace\">Kr\u00fcptos\u00fcsteemi valikul tuleks l\u00e4htuda selle <strong>turvalisusest<\/strong>. T\u00e4nap\u00e4eval on s\u00fcmmeetrilise kr\u00fcpteerimise korral standardlahenduseks AES-i (Advanced Encryption Standard) kasutamine. AES kr\u00fcpteerib andmeid 128-bitiste plokkide kaupa, t\u00e4psemat infot AES-i toimimise kohta leiate vastavalt Wikipedia lehelt: <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Advanced_Encryption_Standard\" target=\"_blank\" rel=\"noopener\">https:\/\/en.wikipedia.org\/wiki\/Advanced_Encryption_Standard<\/a>.<\/p>\r\n<p class=\"vspace\">AES-i pakutavat kr\u00fcpteeringut peetakse murdmatuks. See t\u00e4hendab, et isegi superarvutid ei suuda AES-i abil kr\u00fcpteeritud andmeid lahti murda, sest leitud pole \u00fchtegi olulist kr\u00fcptograafilist viga ning k\u00f5ikide erinevate v\u00f5tmete proovimiseks kuluks miljoneid aastaid. See kehtib ainult vastava s\u00fcsteemi korrektsel kasutamisel, mis t\u00e4hendab seda, et v\u00f5ti on genereeritud juhuslikult ning see ei leki. Juhul kui AES v\u00f5tme kaitsmiseks kasutatav <strong>parool on l\u00fchike<\/strong>, n\u00e4iteks kaheksa s\u00fcmboli pikkune, siis on v\u00f5imalik k\u00f5ikv\u00f5imalike l\u00fchikeste paroolide proovimise teel vastav parool \u00fcsna kiiresti \u00fcles leida ning seega andmed dekr\u00fcpteerida. Samuti on vaikimisi eelduseks, et kr\u00fcpteerimistarkvara on kirjutanud <strong>spetsialistid<\/strong>, et see ei lekitaks infot kr\u00fcpteeritavate andmete v\u00f5i v\u00f5tmete kohta. Kr\u00fcptoalgoritmide programmeerimine ei ole lihtne, sest info v\u00f5ib lekkida v\u00e4ga erinevatest kohtadest, n\u00e4iteks protsessori energiatarbimise kaudu.<\/p>\r\n\r\n<h2 class=\"vspace\">S\u00fcmmeetrilise kr\u00fcpteerimisega seotud probleemid<\/h2>\r\n<p class=\"vspace\">S\u00fcmmeetriline kr\u00fcpteerimine v\u00f5imaldab andmeid kaitsta, kuid probleemiks osutub kr\u00fcpteeritud andmete <strong>jagamine teiste osapooltega<\/strong>. Kuna s\u00fcmmeetrilise kr\u00fcpteerimise korral kasutatakse kr\u00fcpteerimiseks ja dekr\u00fcpteerimiseks sama v\u00f5tit, siis oleks kr\u00fcpteeritud andmete jagamisel <strong>vaja edastada ka v\u00f5ti<\/strong>.<\/p>\r\n<p class=\"vspace\">N\u00fc\u00fcd tekib k\u00fcsimus, et kui turvaline on v\u00f5tme jagamine ja edastamine. On oluline t\u00e4hele panna, et kui v\u00f5tit ja kr\u00fcpteeritud andmeid edastatakse koos, siis saab pealtkuulaja juurdep\u00e4\u00e4su kr\u00fcpteeritud andmetele ning seega poleks andmed kaitstud. Seega oleks v\u00f5tme edastamiseks vaja <strong>turvatud sidekanalit<\/strong>. Samas, kui suhtluspartnerite vahel on juba olemas turvatud sidekanal, siis ei olegi enam vajadust andmeid eraldi kr\u00fcpteerida.<\/p>\r\n<p class=\"vspace\">Mida teha olukorras, kus suhtluspartnerite vahel ei ole turvatud sidekanalit ning nad peavad edastama konfidentsiaalseid andmeid? V\u00f5imalik on kasutada kahte <strong>erinevat ebaturvalist sidekanalit<\/strong> (n\u00e4iteks edastatakse parool k\u00e4sitsi \u00fcmbrikus), lootuses, et pealtkuulaja ei saa m\u00f5lemat kanalit pealt kuulata ning seet\u00f5ttu ei saa juurdep\u00e4\u00e4su kas kr\u00fcpteeritud andmetele v\u00f5i siis v\u00f5tmele. Samas ei paku niisugune s\u00fcsteem suhtluspartneritele kindlust, et nende saadetud konfidentsiaalsed andmed j\u00e4\u00e4vad salajaseks.<\/p>\r\n<p class=\"vspace\">Isegi kui \u00f5nnestub leida turvaline viis v\u00f5tme edastamiseks, siis tekib teine probleem. Nimelt on vaja iga s\u00f5numi jaoks genereerida uus v\u00f5ti, sest juhul kui suhtluspartner lekitab v\u00f5tme (n\u00e4iteks portaal ei turva paroole piisavalt h\u00e4sti), siis saaksid kolmandad osapooled j\u00e4rgmisi s\u00f5numeid lugeda. See omakorda tekitab vajaduse <strong>turvalise v\u00f5tmehalduse<\/strong> jaoks.<\/p>\r\n<p class=\"vspace\">Neid probleeme saab lahendada <strong>avaliku v\u00f5tme kr\u00fcptograafia ehk as\u00fcmmeetrilise kr\u00fcptograafia<\/strong> abil.<\/p>\r\n\r\n<div class=\"vspace\"><\/div>\r\n<div class=\"img imgcaption\">\r\n\r\n[caption id=\"attachment_387\" align=\"aligncenter\" width=\"168\"]<img class=\"size-full wp-image-387\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/secret.jpg\" alt=\"\" width=\"168\" height=\"113\" \/> <a href=\"http:\/\/www.123rf.com\/stock-photo\/malay_script.html?mediapopup=22837508\">Allikas<\/a>[\/caption]\r\n\r\n<\/div>\r\n<h2 class=\"vspace\">As\u00fcmmeetriline kr\u00fcpteerimine<\/h2>\r\n<p class=\"vspace\"><strong>As\u00fcmmeetrilise kr\u00fcpteerimise<\/strong> ehk <strong>avaliku v\u00f5tme kr\u00fcpteerimise<\/strong> korral kasutatakse kahte v\u00f5tit \u2014 <strong>avalikku ja salajast v\u00f5tit<\/strong>. Need v\u00f5tmed genereeritakse korraga ning nad on omavahel seotud nii, et avalik v\u00f5ti ei lekita informatsiooni salajase v\u00f5tme kohta. V\u00f5tmete genereerimine peab olema <strong>juhuslik<\/strong>.<\/p>\r\n<p class=\"vspace\">Nii nagu nimigi \u00fctleb, on \u00fcks v\u00f5ti avalik ning seda v\u00f5ib k\u00f5igiga jagada. Samas tuleb salajast v\u00f5tit kaitsta lekkimise eest. As\u00fcmmeetrilise kr\u00fcpteerimise korral on k\u00f5igil osapooltel enda <strong>v\u00f5tmepaarid<\/strong>. N\u00e4iteks on k\u00f5igil <strong>Eesti ID-kaardi<\/strong> omanikel kiibis v\u00f5tmepaar. Samuti on k\u00f5igil HTTPS pakkuvatel veebilehtedel oma v\u00f5tmepaar.<\/p>\r\n<p class=\"vspace\"><strong>Avalikku v\u00f5tit kasutatakse andmete kr\u00fcpteerimiseks ning vastavat salajast v\u00f5tit kasutatakse andmete dekr\u00fcpteerimiseks.<\/strong> Seega v\u00f5imaldab as\u00fcmmeetrilise kr\u00fcptograafia kasutamine lihtsamat v\u00f5tmevahetust, sest avalikku v\u00f5tit saab edastada ebaturvalise sidekanali abil. Kui on vaja suhtluspartnerile saata konfidentsiaalseid andmeid, siis k\u00f5igepealt on vaja k\u00fcsida suhtluspartneri avalikku v\u00f5tit ning siis saab seda kasutada, et konfidentsiaalseid andmeid kr\u00fcpteerida. Kuna kr\u00fcpteerimiseks kasutati suhtluspartneri avalikku v\u00f5tit, siis saab vastavalt kr\u00fcpteeritud andmeid dekr\u00fcpteerida ainult see sama suhtluspartner, sest ainult temal on juurdep\u00e4\u00e4s sobivale salajasele v\u00f5tmele.<\/p>\r\n<p class=\"vspace\">Selgituseks v\u00f5tame n\u00e4ite, kus Kristjan tahab Taunole saata kr\u00fcpteeritult salajast faili. Selleks peab:<\/p>\r\n\r\n<ol>\r\n \t<li>Tauno jagama Kristjaniga enda avalikku v\u00f5tit. N\u00e4iteks on ID-kaardi kiibis v\u00f5tmepaar (avalik ja privaatne v\u00f5ti) ja Tauno jagab Kristjaniga ID-kaardi avalikku v\u00f5tit. See pole probleem, sest ID-kaardi avalikud v\u00f5tmed ongi vabalt jagatavad.<\/li>\r\n \t<li>Seej\u00e4rel Kristjan kr\u00fcpteerib faili, kasutades Tauno ID-kaardi avalikku v\u00f5tit ning saadab kr\u00fcpteeritud faili Taunole.<\/li>\r\n \t<li>N\u00fc\u00fcd ei j\u00e4\u00e4 Taunol muud \u00fcle, kui kasutada ID-kaardi kiibil olevat privaatset v\u00f5tit ja saabki esialgsele failile kenasti ligi.<\/li>\r\n<\/ol>\r\n<p class=\"vspace\">Tegelikult k\u00fcll kasutatakse suuremate andmete kr\u00fcpteerimiseks alati s\u00fcmmeetrilist kr\u00fcptograafiat ning seega selles olukorras <strong>h\u00fcbriids\u00fcsteemi<\/strong>, kus genereeritakse s\u00fcmmeetriline v\u00f5ti, sellega kr\u00fcpteeritakse fail ja v\u00f5ti ise kr\u00fcpteeritakse siis vastava avaliku v\u00f5tmega.<\/p>\r\n<p class=\"vspace\">Juhul kui aga v\u00f5tmeid kasutatakse vastupidi, siis on tegemist <strong>digiallkirjastamisega<\/strong>. Sellisel juhul kr\u00fcpteeritakse andmed salajase v\u00f5tmega ning seda saab teha ainult salajase v\u00f5tme omanik. Digiallkirja kontrollimiseks kasutatakse vastavat avalikku v\u00f5tit ning seda saavad teha k\u00f5ik, kellel on juurdep\u00e4\u00e4s vastavale avalikule v\u00f5tmele.<\/p>\r\n\r\n<div class=\"vspace\"><\/div>\r\n<div class=\"img imgcaption\">\r\n\r\n[caption id=\"attachment_388\" align=\"aligncenter\" width=\"472\"]<img class=\"wp-image-388 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine2.png\" alt=\"\" width=\"472\" height=\"198\" \/> Kr\u00fcpteerimine ja dekr\u00fcpteerimine salajase ja avaliku v\u00f5tmega[\/caption]\r\n\r\n<\/div>","rendered":"<p>Autor: Kristjan Krips<\/p>\n<h2 class=\"vspace\">Sissejuhatus<\/h2>\n<p class=\"vspace\">Selle n\u00e4dala silmaringi materjalis teeme l\u00fchikokkuv\u00f5tte sellest, mis on <strong>kr\u00fcpteerimine<\/strong> ja miks seda vaja l\u00e4heb. Ajaloo osas mainisime masinat nimega Enigma, mida kasutati Teise maailmas\u00f5ja ajal militaars\u00f5numite kaitsmiseks pealtkuulajate eest. Enigma oli masin, mis v\u00f5imaldas andmeid kr\u00fcpteerida ning seega neid kaitsta kolmandate osapoolte eest (n\u00e4iteks sakslaste andmete kaitsmist inglaste eest). Enigma muutis masinasse sisestatud andmeid nii, et masinast v\u00e4ljuvad andmed olid kolmandale osapoolele loetamatud.<\/p>\n<div class=\"vspace\"><\/div>\n<div class=\"img imgcaption\">\n<figure id=\"attachment_384\" aria-describedby=\"caption-attachment-384\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-384\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/enigma-300x286.jpg\" alt=\"\" width=\"300\" height=\"286\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/enigma-300x286.jpg 300w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/enigma-768x732.jpg 768w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/enigma-1024x975.jpg 1024w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/enigma-65x62.jpg 65w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/enigma-225x214.jpg 225w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/enigma-350x333.jpg 350w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/enigma.jpg 1033w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-384\" class=\"wp-caption-text\">Enigma. <a href=\"https:\/\/www.mediawiki.org\/wiki\/File:Four-rotor-enigma.jpg\">Allikas<\/a><\/figcaption><\/figure>\n<\/div>\n<h2 class=\"vspace\">Kodeerimine<\/h2>\n<p class=\"vspace\">On oluline t\u00e4hele panna, et Enigma puhul polnud tegu andmete lihtsa <strong>kodeerimisega<\/strong>, sest kodeeritud andmeid on kerge taastada. Lihtne kodeerimise n\u00e4ide on <strong>morsekood<\/strong>, mis muudab kindla eeskirja alusel andmeid ning v\u00f5imaldab neid selle sama eeskirja alusel taastada.<\/p>\n<p class=\"vspace\"><strong>Kr\u00fcpteerimine<\/strong> erineb kodeerimisest selle poolest, et andmete t\u00f6\u00f6tlemisel kasutatakse <strong>v\u00f5tit<\/strong>, mist\u00f5ttu kolmas osapool ei saa ilma v\u00f5tit omamata kr\u00fcpteeritud andmetest esialgset taastada.<\/p>\n<div class=\"vspace\"><\/div>\n<div class=\"img imgcaption\">\n<figure id=\"attachment_385\" aria-describedby=\"caption-attachment-385\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-385\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/morse.png\" alt=\"\" width=\"300\" height=\"387\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/morse.png 450w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/morse-233x300.png 233w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/morse-65x84.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/morse-225x290.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/morse-350x451.png 350w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-385\" class=\"wp-caption-text\">Morse on n\u00e4ide kodeerimisest. <a href=\"https:\/\/www.mediawiki.org\/wiki\/File:International_Morse_Code.svg\">Allikas<\/a><\/figcaption><\/figure>\n<\/div>\n<h2 class=\"vspace\">Kr\u00fcpteerimine<\/h2>\n<p class=\"vspace\">T\u00e4nap\u00e4eval on kr\u00fcpteerimine p\u00f5hiline viis digitaalsete andmete kaitsmiseks. Kr\u00fcpteerimise abil kaitstakse telefonik\u00f5nesid pealtkuulamise eest ning meditsiiniandmeid ja \u00e4risaladusi lekkimise eest. Muuhulgas kasutatakse kr\u00fcpteerimist tasuliste telekanalite edastamisel, wifi v\u00f5rgu kaitsmisel, HTTPS protokolli kasutavate veebilehtedega suhtlemisel, digiallkirjastamisel ja e-h\u00e4\u00e4letamisel. Kr\u00fcpteeritud \u00fchenduse kasutamine on \u00fcks oluline meetod turvalise internetipanga teenuse pakkumisel. Kuna kr\u00fcpteerimine m\u00f5jutab meid iga p\u00e4ev, siis v\u00f5ib tekkida k\u00fcsimus, kuidas ikkagi kr\u00fcpteerimine toimib ning kas r\u00fcndajal on v\u00f5imalik kr\u00fcpteeritud s\u00f5numeid lahti murda.<\/p>\n<h2 class=\"vspace\">S\u00fcmmeetriline kr\u00fcpteerimine<\/h2>\n<p class=\"vspace\">K\u00f5ige lihtsam on kr\u00fcpteerimist ette kujutada nii, et on olemas <strong>kr\u00fcpteerimisalgoritm<\/strong> (eeskiri), mis saab sisendiks <strong>andmed<\/strong> ja <strong>kr\u00fcpteerimisv\u00f5tme<\/strong> ning annab v\u00e4ljundiks <strong>kr\u00fcpteeritud andmed<\/strong>. Nende kr\u00fcpteeritud andmete taastamiseks on vaja kasutada <strong>dekr\u00fcpteerimise<\/strong> (lahtikr\u00fcpteerimise) <strong>v\u00f5tit<\/strong> ning ilma vastava v\u00f5tmeta pole v\u00f5imalik andmeid esialgsel kujul taastada. Juhul kui kr\u00fcpteerimisv\u00f5ti ja dekr\u00fcpteerimisv\u00f5ti on samad, siis on tegu s\u00fcmmeetrilise kr\u00fcpteerimisalgoritmiga. Niisuguseid algoritme kasutatakse suurte andmehulkade kr\u00fcpteerimiseks, hea n\u00e4ide on k\u00f5vakettal v\u00f5i m\u00e4lupulgal olevate andmete kaitsmine.<\/p>\n<div class=\"vspace\"><\/div>\n<div class=\"img imgcaption\">\n<figure id=\"attachment_386\" aria-describedby=\"caption-attachment-386\" style=\"width: 472px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-386 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine.png\" alt=\"\" width=\"472\" height=\"200\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine.png 472w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine-300x127.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine-65x28.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine-225x95.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine-350x148.png 350w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><figcaption id=\"caption-attachment-386\" class=\"wp-caption-text\">Kr\u00fcpteerimine ja dekr\u00fcpteerimine<\/figcaption><\/figure>\n<\/div>\n<p class=\"vspace\">N\u00fc\u00fcd v\u00f5ib tekkida k\u00fcsimus, et mis on see <strong>v\u00f5ti<\/strong>, mida kr\u00fcpteerimisel ja dekr\u00fcpteerimisel kasutatakse. Vastav v\u00f5ti on m\u00f5nes m\u00f5ttes sarnane tavalise lukuv\u00f5tmega \u2014 v\u00f5tit tuleb valvata, et sellest koopiat ei tehtaks, ja v\u00f5tit tuleb kaitsta kadumise eest, et v\u00f5\u00f5rad v\u00f5tit kasutada ei saaks. Lisaks sellele tuleb v\u00f5tit enda jaoks s\u00e4ilitada, et tagada juurdep\u00e4\u00e4s v\u00f5tmega suletud hoiukohtadele v\u00f5i ruumidele. Oluline on m\u00e4rkida, et ka kr\u00fcpteeritud andmetele on v\u00f5imalik juurde p\u00e4\u00e4seda ainult vastavat v\u00f5tit kasutades. V\u00f5ti on kahends\u00fcsteemis arv ehk siis \u00fchtedest ja nullidest koosnev jada. T\u00e4nap\u00e4evaste s\u00fcmmeetriliste kr\u00fcpteerimiss\u00fcsteemide korral on v\u00f5tmed enamasti 128-bitised v\u00f5i 256-bitised ehk siis \u00fchtede ja nullide jadad pikkusega 128 v\u00f5i 256 m\u00e4rki. On v\u00e4ga oluline, et kr\u00fcpteerimisel kasutatav v\u00f5ti oleks juhuslikult genereeritud, sest kr\u00fcpteerimise tugevus s\u00f5ltub nii kr\u00fcpteerimisalgoritmi kui ka v\u00f5tme tugevusest.<\/p>\n<p class=\"vspace\">Samas toob juhuslike bitijadade kasutamise n\u00f5ue endaga kaasa kaks probleemi:<\/p>\n<ol>\n<li>Esimene probleem seisneb selles, et juhuslike v\u00f5tmete genereerimine ei ole lihtne, sest arvutid ei suuda p\u00e4ris juhuslikke arve genereerida.<\/li>\n<li>Teine probleem on seotud sellega, et inimesed ei ole v\u00f5imelised meelde j\u00e4tma pikki nende jaoks seosetuid bitijadasid.<\/li>\n<\/ol>\n<p class=\"vspace\">Seet\u00f5ttu kr\u00fcpteeritakse v\u00f5ti enamasti <strong>parooliga<\/strong>, mida on inimesel lihtsam meelde j\u00e4tta, ning kr\u00fcpteeritud v\u00f5ti salvestatakse kas eraldi failina, lisatakse kr\u00fcpteeritud faili p\u00e4isesse v\u00f5i hoitakse eraldiseisval kiibil.<\/p>\n<p class=\"vspace\">Andmete kr\u00fcpteerimiseks on vaja valida sobiv <strong>kr\u00fcptos\u00fcsteem<\/strong>. Kr\u00fcptos\u00fcsteem koosneb:<\/p>\n<ul>\n<li>v\u00f5tme genereerimise algoritmist,<\/li>\n<li>andmete kaitsmiseks m\u00f5eldud kr\u00fcpteerimisalgoritmist ja<\/li>\n<li>andmete taastamiseks m\u00f5eldud dekr\u00fcpteerimisalgoritmist.<\/li>\n<\/ul>\n<p class=\"vspace\">Kr\u00fcptos\u00fcsteemi valikul tuleks l\u00e4htuda selle <strong>turvalisusest<\/strong>. T\u00e4nap\u00e4eval on s\u00fcmmeetrilise kr\u00fcpteerimise korral standardlahenduseks AES-i (Advanced Encryption Standard) kasutamine. AES kr\u00fcpteerib andmeid 128-bitiste plokkide kaupa, t\u00e4psemat infot AES-i toimimise kohta leiate vastavalt Wikipedia lehelt: <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Advanced_Encryption_Standard\" target=\"_blank\" rel=\"noopener\">https:\/\/en.wikipedia.org\/wiki\/Advanced_Encryption_Standard<\/a>.<\/p>\n<p class=\"vspace\">AES-i pakutavat kr\u00fcpteeringut peetakse murdmatuks. See t\u00e4hendab, et isegi superarvutid ei suuda AES-i abil kr\u00fcpteeritud andmeid lahti murda, sest leitud pole \u00fchtegi olulist kr\u00fcptograafilist viga ning k\u00f5ikide erinevate v\u00f5tmete proovimiseks kuluks miljoneid aastaid. See kehtib ainult vastava s\u00fcsteemi korrektsel kasutamisel, mis t\u00e4hendab seda, et v\u00f5ti on genereeritud juhuslikult ning see ei leki. Juhul kui AES v\u00f5tme kaitsmiseks kasutatav <strong>parool on l\u00fchike<\/strong>, n\u00e4iteks kaheksa s\u00fcmboli pikkune, siis on v\u00f5imalik k\u00f5ikv\u00f5imalike l\u00fchikeste paroolide proovimise teel vastav parool \u00fcsna kiiresti \u00fcles leida ning seega andmed dekr\u00fcpteerida. Samuti on vaikimisi eelduseks, et kr\u00fcpteerimistarkvara on kirjutanud <strong>spetsialistid<\/strong>, et see ei lekitaks infot kr\u00fcpteeritavate andmete v\u00f5i v\u00f5tmete kohta. Kr\u00fcptoalgoritmide programmeerimine ei ole lihtne, sest info v\u00f5ib lekkida v\u00e4ga erinevatest kohtadest, n\u00e4iteks protsessori energiatarbimise kaudu.<\/p>\n<h2 class=\"vspace\">S\u00fcmmeetrilise kr\u00fcpteerimisega seotud probleemid<\/h2>\n<p class=\"vspace\">S\u00fcmmeetriline kr\u00fcpteerimine v\u00f5imaldab andmeid kaitsta, kuid probleemiks osutub kr\u00fcpteeritud andmete <strong>jagamine teiste osapooltega<\/strong>. Kuna s\u00fcmmeetrilise kr\u00fcpteerimise korral kasutatakse kr\u00fcpteerimiseks ja dekr\u00fcpteerimiseks sama v\u00f5tit, siis oleks kr\u00fcpteeritud andmete jagamisel <strong>vaja edastada ka v\u00f5ti<\/strong>.<\/p>\n<p class=\"vspace\">N\u00fc\u00fcd tekib k\u00fcsimus, et kui turvaline on v\u00f5tme jagamine ja edastamine. On oluline t\u00e4hele panna, et kui v\u00f5tit ja kr\u00fcpteeritud andmeid edastatakse koos, siis saab pealtkuulaja juurdep\u00e4\u00e4su kr\u00fcpteeritud andmetele ning seega poleks andmed kaitstud. Seega oleks v\u00f5tme edastamiseks vaja <strong>turvatud sidekanalit<\/strong>. Samas, kui suhtluspartnerite vahel on juba olemas turvatud sidekanal, siis ei olegi enam vajadust andmeid eraldi kr\u00fcpteerida.<\/p>\n<p class=\"vspace\">Mida teha olukorras, kus suhtluspartnerite vahel ei ole turvatud sidekanalit ning nad peavad edastama konfidentsiaalseid andmeid? V\u00f5imalik on kasutada kahte <strong>erinevat ebaturvalist sidekanalit<\/strong> (n\u00e4iteks edastatakse parool k\u00e4sitsi \u00fcmbrikus), lootuses, et pealtkuulaja ei saa m\u00f5lemat kanalit pealt kuulata ning seet\u00f5ttu ei saa juurdep\u00e4\u00e4su kas kr\u00fcpteeritud andmetele v\u00f5i siis v\u00f5tmele. Samas ei paku niisugune s\u00fcsteem suhtluspartneritele kindlust, et nende saadetud konfidentsiaalsed andmed j\u00e4\u00e4vad salajaseks.<\/p>\n<p class=\"vspace\">Isegi kui \u00f5nnestub leida turvaline viis v\u00f5tme edastamiseks, siis tekib teine probleem. Nimelt on vaja iga s\u00f5numi jaoks genereerida uus v\u00f5ti, sest juhul kui suhtluspartner lekitab v\u00f5tme (n\u00e4iteks portaal ei turva paroole piisavalt h\u00e4sti), siis saaksid kolmandad osapooled j\u00e4rgmisi s\u00f5numeid lugeda. See omakorda tekitab vajaduse <strong>turvalise v\u00f5tmehalduse<\/strong> jaoks.<\/p>\n<p class=\"vspace\">Neid probleeme saab lahendada <strong>avaliku v\u00f5tme kr\u00fcptograafia ehk as\u00fcmmeetrilise kr\u00fcptograafia<\/strong> abil.<\/p>\n<div class=\"vspace\"><\/div>\n<div class=\"img imgcaption\">\n<figure id=\"attachment_387\" aria-describedby=\"caption-attachment-387\" style=\"width: 168px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-387\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/secret.jpg\" alt=\"\" width=\"168\" height=\"113\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/secret.jpg 168w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/secret-65x44.jpg 65w\" sizes=\"auto, (max-width: 168px) 100vw, 168px\" \/><figcaption id=\"caption-attachment-387\" class=\"wp-caption-text\"><a href=\"http:\/\/www.123rf.com\/stock-photo\/malay_script.html?mediapopup=22837508\">Allikas<\/a><\/figcaption><\/figure>\n<\/div>\n<h2 class=\"vspace\">As\u00fcmmeetriline kr\u00fcpteerimine<\/h2>\n<p class=\"vspace\"><strong>As\u00fcmmeetrilise kr\u00fcpteerimise<\/strong> ehk <strong>avaliku v\u00f5tme kr\u00fcpteerimise<\/strong> korral kasutatakse kahte v\u00f5tit \u2014 <strong>avalikku ja salajast v\u00f5tit<\/strong>. Need v\u00f5tmed genereeritakse korraga ning nad on omavahel seotud nii, et avalik v\u00f5ti ei lekita informatsiooni salajase v\u00f5tme kohta. V\u00f5tmete genereerimine peab olema <strong>juhuslik<\/strong>.<\/p>\n<p class=\"vspace\">Nii nagu nimigi \u00fctleb, on \u00fcks v\u00f5ti avalik ning seda v\u00f5ib k\u00f5igiga jagada. Samas tuleb salajast v\u00f5tit kaitsta lekkimise eest. As\u00fcmmeetrilise kr\u00fcpteerimise korral on k\u00f5igil osapooltel enda <strong>v\u00f5tmepaarid<\/strong>. N\u00e4iteks on k\u00f5igil <strong>Eesti ID-kaardi<\/strong> omanikel kiibis v\u00f5tmepaar. Samuti on k\u00f5igil HTTPS pakkuvatel veebilehtedel oma v\u00f5tmepaar.<\/p>\n<p class=\"vspace\"><strong>Avalikku v\u00f5tit kasutatakse andmete kr\u00fcpteerimiseks ning vastavat salajast v\u00f5tit kasutatakse andmete dekr\u00fcpteerimiseks.<\/strong> Seega v\u00f5imaldab as\u00fcmmeetrilise kr\u00fcptograafia kasutamine lihtsamat v\u00f5tmevahetust, sest avalikku v\u00f5tit saab edastada ebaturvalise sidekanali abil. Kui on vaja suhtluspartnerile saata konfidentsiaalseid andmeid, siis k\u00f5igepealt on vaja k\u00fcsida suhtluspartneri avalikku v\u00f5tit ning siis saab seda kasutada, et konfidentsiaalseid andmeid kr\u00fcpteerida. Kuna kr\u00fcpteerimiseks kasutati suhtluspartneri avalikku v\u00f5tit, siis saab vastavalt kr\u00fcpteeritud andmeid dekr\u00fcpteerida ainult see sama suhtluspartner, sest ainult temal on juurdep\u00e4\u00e4s sobivale salajasele v\u00f5tmele.<\/p>\n<p class=\"vspace\">Selgituseks v\u00f5tame n\u00e4ite, kus Kristjan tahab Taunole saata kr\u00fcpteeritult salajast faili. Selleks peab:<\/p>\n<ol>\n<li>Tauno jagama Kristjaniga enda avalikku v\u00f5tit. N\u00e4iteks on ID-kaardi kiibis v\u00f5tmepaar (avalik ja privaatne v\u00f5ti) ja Tauno jagab Kristjaniga ID-kaardi avalikku v\u00f5tit. See pole probleem, sest ID-kaardi avalikud v\u00f5tmed ongi vabalt jagatavad.<\/li>\n<li>Seej\u00e4rel Kristjan kr\u00fcpteerib faili, kasutades Tauno ID-kaardi avalikku v\u00f5tit ning saadab kr\u00fcpteeritud faili Taunole.<\/li>\n<li>N\u00fc\u00fcd ei j\u00e4\u00e4 Taunol muud \u00fcle, kui kasutada ID-kaardi kiibil olevat privaatset v\u00f5tit ja saabki esialgsele failile kenasti ligi.<\/li>\n<\/ol>\n<p class=\"vspace\">Tegelikult k\u00fcll kasutatakse suuremate andmete kr\u00fcpteerimiseks alati s\u00fcmmeetrilist kr\u00fcptograafiat ning seega selles olukorras <strong>h\u00fcbriids\u00fcsteemi<\/strong>, kus genereeritakse s\u00fcmmeetriline v\u00f5ti, sellega kr\u00fcpteeritakse fail ja v\u00f5ti ise kr\u00fcpteeritakse siis vastava avaliku v\u00f5tmega.<\/p>\n<p class=\"vspace\">Juhul kui aga v\u00f5tmeid kasutatakse vastupidi, siis on tegemist <strong>digiallkirjastamisega<\/strong>. Sellisel juhul kr\u00fcpteeritakse andmed salajase v\u00f5tmega ning seda saab teha ainult salajase v\u00f5tme omanik. Digiallkirja kontrollimiseks kasutatakse vastavat avalikku v\u00f5tit ning seda saavad teha k\u00f5ik, kellel on juurdep\u00e4\u00e4s vastavale avalikule v\u00f5tmele.<\/p>\n<div class=\"vspace\"><\/div>\n<div class=\"img imgcaption\">\n<figure id=\"attachment_388\" aria-describedby=\"caption-attachment-388\" style=\"width: 472px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-388 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine2.png\" alt=\"\" width=\"472\" height=\"198\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine2.png 472w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine2-300x126.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine2-65x27.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine2-225x94.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/02\/krypteerimine2-350x147.png 350w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><figcaption id=\"caption-attachment-388\" class=\"wp-caption-text\">Kr\u00fcpteerimine ja dekr\u00fcpteerimine salajase ja avaliku v\u00f5tmega<\/figcaption><\/figure>\n<\/div>\n","protected":false},"author":12,"menu_order":4,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-383","chapter","type-chapter","status-publish","hentry"],"part":127,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/users\/12"}],"version-history":[{"count":3,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/383\/revisions"}],"predecessor-version":[{"id":427,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/383\/revisions\/427"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/parts\/127"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/383\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/media?parent=383"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapter-type?post=383"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/contributor?post=383"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/license?post=383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}