Hoppa yfir í efnið

Hvað er dulritun?

Í þessum kafla ætlum við að kynnast dulritun (e. cryptography) og spyrja einfaldra en mikilvægra spurninga: Hvernig getum við sent leynileg skilaboð? Hvernig getum við séð hvort einhver hafi breytt gögnum? Og hvernig getum við vitað hver sendi okkur skilaboð?

Við byrjum á stóru myndinni. Við þurfum ekki að kunna þungar formúlur eða skrifa heilt dulritunarsafn til að skilja grundvallaratriðin. Það kemur síðar. Fyrst ætlum við að byggja upp orðaforða og innsæi.

Ekki örvænta

Dulritun getur litið út eins og blanda af stærðfræði, leynilegum táknum og mjög löngum tölum. Við tökum þetta í litlum skrefum. Í þessum fyrsta kafla er mikilvægara að skilja hvaða vandamál við erum að leysa en nákvæmlega hvernig allar aðferðirnar virka.

Leynileg skilaboð í gegnum ótraust umhverfi

Ímyndum okkur að Anna vilji senda Bjarna skilaboð yfir internetið. Skilaboðin geta farið í gegnum marga netþjóna og netbúnað áður en þau komast til Bjarna. Flestir þeirra eru líklega traustir, en við getum ekki gengið út frá því að allir séu það.

Ef Anna sendir skilaboðin sem venjulegan texta gæti einhver sem kemst yfir gögnin lesið þau:

Anna → „Hittumst klukkan fjögur“ → Bjarni
                 ↑
              Hlerari

Við skulum kalla óboðna lesandann Marta. Hún þarf ekki endilega að vera einhver ákveðin manneskja; hún getur verið forrit, netþjónn eða hver sá sem fær aðgang að gögnunum.

Ein lausn væri að setja skilaboðin í læstan kassa. Anna læsir kassanum, sendir hann til Bjarna og Bjarni opnar hann með lykli. Í tölvuheiminum er þetta ekki bókstaflegur kassi, heldur ferli sem breytir gögnum samkvæmt ákveðnum reglum.

Sýnidæmi: ferðalag skilaboða

Við skulum gefa hlutunum nöfn:

Ferlið lítur þá svona út:

Ódulritaður texti
        │
        │  dulritunaralgrím + dulritunarlykill
        ▼
Dulritaður texti  ──────► í gegnum internetið
        │
        │  dulráðningarlykill
        ▼
Ódulritaður texti

Í einfaldasta tilvikinu nota Anna og Bjarni sama leyndarmálið til að læsa og opna kassann. Síðar sjáum við að hægt er að nota tvö tengd lykilpör, en við þurfum ekki að hafa áhyggjur af því strax.

Vissir þú?

Orðið cryptography kemur úr grísku orðunum kryptós, „falinn“, og gráphein, „að skrifa“. Dulritun er því í bókstaflegri merkingu falin skrift — þó nútímaleg dulritun sé miklu meira en að skipta út stöfum.

Þrjú mismunandi markmið

Þegar við segjum að við viljum „tryggja gögn“ er það ekki alltaf sama verkefnið. Oft er talað um þrjú ólík markmið.

Trúnaðarstig: hver má lesa?

Trúnaðarstig (e. confidentiality) snýst um að gögn séu aðeins aðgengileg þeim sem eiga að fá að sjá þau.

Dæmi:

  • Anna sendir Bjarna persónulegt skilaboð.
  • Nemandi sendir umsókn sem á ekki að vera sýnileg öllum.
  • Vafri sendir aðgangsorð til vefþjóns.

Dulritun er oft notuð til að vernda trúnaðarstig gagna. Hún kemur þó ekki í veg fyrir að einhver sjái skilaboð hafi verið send eða hversu stór þau eru. Hún felur fyrst og fremst innihaldið.

Heilleiki gagna: hefur einhver breytt þeim?

Heilleiki gagna (e. data integrity) snýst um að gögn haldist rétt og óbreytt.

Ímyndum okkur að Anna sendi Bjarna skilaboðin:

Fundurinn er klukkan 16:00.

Ef Marta breytir þeim í:

Fundurinn er klukkan 18:00.

þá hafa skilaboðin misst heilleika sinn, jafnvel þótt enginn óviðkomandi hafi lesið þau.

Leynd er ekki það sama og heilleiki

Gögn geta verið leynd en samt breytt, eða óbreytt en samt opinber. Dulritun ein og sér tryggir ekki alltaf hvort gögn hafi verið breytt. Seinna lærum við um tætiföll, skilaboðaauðkenningu og stafrænar undirskriftir sem hjálpa við það verkefni.

Auðkenning: hver sendi þetta?

Auðkenning (e. authentication) snýst um að ganga úr skugga um hver eða hvað stendur að baki skilaboðum.

Ef Bjarni fær skilaboð frá „Önnu“ vill hann ekki aðeins vita hvort einhver hafi lesið þau. Hann vill líka vita hvort skilaboðin komu í raun frá Önnu eða hvort Marta er að þykjast vera hún.

Við getum því spurt þrjár ólíkar spurningar:

Spurning Markmið
Getur óviðkomandi lesið innihaldið? Trúnaðarstig
Hefur einhver breytt innihaldinu? Heilleiki gagna
Komu gögnin frá réttum aðila? Auðkenning

Æfing: hvaða markmið er þetta?

Æfing 1

Hvaða markmið er mikilvægast í hverju dæmi? Veldu úr trúnaðarstigi, heilleika gagna og auðkenningu.

  1. Vefur vill koma í veg fyrir að aðgangsorð sjáist á leiðinni til hans.
  2. Forrit vill ganga úr skugga um að uppfærsluskrá hafi ekki breyst eftir að hún var gefin út.
  3. Bjarni vill vita hvort skilaboð sem bera nafn Önnu hafi í raun komið frá henni.
  4. Nemandi vill senda kennara læknisvottorð sem aðrir nemendur eiga ekki að geta lesið.
Lausn við æfingu 1
  1. Trúnaðarstig. Aðgangsorðið á að vera ólæsilegt öðrum en réttum viðtakanda og vefþjóninum.
  2. Heilleiki gagna. Hér er ekki endilega verið að fela skrána. Markmiðið er að taka eftir breytingum.
  3. Auðkenning. Bjarni vill vita hver sendi skilaboðin. Heilleiki gæti líka skipt máli, en aðalspurningin er um uppruna.
  4. Trúnaðarstig. Aðalatriðið er að óviðkomandi geti ekki lesið innihaldið. Í raunverulegu kerfi gæti heilleiki líka verið mikilvægur.

Kóðun er ekki dulritun

Þegar texti lítur ólæsilega út er freistandi að kalla hann „dulkóðaðan“. Það er þó ekki alltaf rétt. Stundum er textinn aðeins kóðaður (e. encoded).

Kóðun breytir gögnum í annað form svo hægt sé að geyma þau eða senda þau í kerfi sem gerir ákveðnar kröfur. Kóðunin á ekki að fela gögnin og þarf yfirleitt ekkert leyndarmál.

Sýnidæmi: Base64

Strengurinn:

U2VjcmV0

lítur dálítið leyndardómsfullur út. En þetta er Base64-kóðun á textanum Secret.

Til að sjá muninn skulum við fylgja ferlinu:

  1. Sendandinn breytir Secret í Base64.
  2. Viðtakandinn afkóðar Base64 með sömu opinberu reglunum.
  3. Enginn lykill þarf að vera leyndur.
  4. Hver sem er getur gert sömu umbreytingu til baka.

Þess vegna gefur Base64 enga leynd. Það er gagnlegt þegar gögn þurfa að komast í gegnum textakerfi, en það verndar ekki leynileg skilaboð.

Vissir þú?

Base64 birtist víða í tölvukerfum: í tölvupósti, vefslóðum, JSON-gögnum og jafnvel í myndum sem eru settar beint inn í HTML. Það lítur stundum út eins og dultexti, en er í raun bara þægileg framsetning á hráum gögnum.

Æfing: kóðað eða dulritað?

Æfing 2

Flokkaðu hvert dæmi sem kóðun, dulritun, tætifall eða þjöppun.

  1. U2VjcmV0 er breytt aftur í Secret með Base64.
  2. Texta er breytt með leyndum lykli og aðeins sá sem hefur lykilinn á að geta lesið hann.
  3. Skrá er sett í ZIP-skrá til að hún taki minna pláss.
  4. Lykilorð er breytt í fasta lengd af tölum og frumtextanum er ekki ætlað að vera hægt að endurgera.
Lausn við æfingu 2
  1. Kóðun. Base64 notar opinberar reglur og engan leynilykil.
  2. Dulritun. Leyndur lykill er notaður og markmiðið er að fela innihaldið.
  3. Þjöppun. Markmiðið er að minnka stærð gagna, ekki fela þau.
  4. Tætifall. Útkoman hefur fasta gerð eða lengd og aðferðin er yfirleitt einátta. Við lærum meira um tætiföll síðar.

Einfalt próf

Ef allir sem þekkja aðferðina geta breytt gögnunum aftur án leyndarmáls er líklegt að um kóðun sé að ræða, ekki dulritun. Þetta er þó aðeins fljótleg vísbending; raunveruleg kerfi geta verið flóknari.

Tætifall er ekki dulritun

Tætifall (e. hash function) tekur gögn af hvaða stærð sem er og býr til stutt tætigildi (e. hash value) sem virkar eins konar fingrafar gagnanna. Ef við breytum jafnvel einum staf á frumtextanum ætti tætigildið að breytast verulega.

„halló“       ──►  tætigildi A
„halló!“      ──►  tætigildi B

Tætigildið er ekki ætlað til að geyma skilaboð sem við getum svo „afkóðað“. Það er gagnlegt til dæmis til að:

  • athuga hvort skrá hafi breyst,
  • bera saman gögn án þess að geyma frumgögnin beint,
  • geyma lykilorð á öruggari hátt þegar notuð er viðeigandi aðferð.

Ekki geyma lykilorð með einfaldri dulritun

Ef vefur þarf að geyma lykilorð á hann yfirleitt ekki að geyma þau þannig að hægt sé að dulráða þau síðar. Við förum nánar yfir örugga meðhöndlun lykilorða og tætifalla í seinni kafla.

Sýnidæmi: skrá og fingrafar

Ímyndum okkur að við sækjum skrá og fáum líka tætigildi frá þeim sem gaf hana út.

  1. Við reiknum tætigildi af skránni sem við sóttum.
  2. Við berum okkar niðurstöðu saman við uppgefna niðurstöðu.
  3. Ef þær eru ólíkar hefur skráin annaðhvort skemmst eða einhver breytt henni.
  4. Ef þær eru eins höfum við sterka vísbendingu um að gögnin séu þau sömu.

Þetta segir okkur þó ekki sjálfkrafa hver gaf skrána út. Til þess þarf einnig auðkenningu, til dæmis stafræna undirskrift.

Lykillinn skiptir máli

Dulritunaralgrím er reglurnar sem breyta gögnunum. Dulritunarlykillinn er leyndarmálið sem velur tiltekna niðurstöðu innan þessara reglna.

Við getum líkt þessu við hengilás:

  • hengilásinn er dulritunaralgrímið,
  • lykillinn sem opnar hann er dulritunarlykillinn,
  • læsti kassinn er dulritaði textinn.

Í raunverulegri dulritun eiga reglurnar sjálfar yfirleitt að vera þekktar. Ef kerfi er aðeins öruggt vegna þess að enginn veit hvernig það virkar, þá er það viðkvæmt um leið og einhver skoðar forritið.

Kerckhoffs-reglan

Auguste Kerckhoffs skrifaði á 19. öld að dulmálskerfi ætti að vera öruggt þótt allt kerfið, nema lykillinn, sé opinbert. Þetta hljómar kannski undarlega, en það er mjög gagnlegt: sérfræðingar geta skoðað og prófað aðferðina áður en við treystum henni.

Sýnidæmi: hvað þarf að vera leyndarmál?

Segjum að Anna og Bjarni noti sama dulritunaralgrím. Marta veit:

  • hvaða algrím þau nota,
  • hvernig skilaboðin eru send,
  • hvaða útgáfu af forritinu þau nota.

Ef dulritunarlykillinn er enn leyndur ætti Marta ekki að geta lesið skilaboðin. Ef lykillinn lekur skiptir litlu máli hversu vel algrímið er hannað: Marta getur notað lykilinn til að dulráða gögnin.

Þetta er ástæðan fyrir því að við tölum mikið um lykilstjórnun í dulritun. Að velja gott algrím er aðeins hluti af verkefninu; við þurfum líka að búa til, geyma, senda og skipta um lykla á öruggan hátt.

Æfing: hvað myndir þú verja?

Æfing 3

Anna setur dulritunarforrit á vefinn svo allir geti skoðað frumkóðann. Hún segir: „Þetta er öruggt því enginn veit nákvæmlega hvernig forritið virkar.“

  1. Hvað er veikt við þessa röksemd?
  2. Hvað ætti að vera leyndarmál í vel hönnuðu dulmálskerfi?
  3. Hvað gerist ef lykillinn lekur?
Lausn við æfingu 3
  1. Röksemdin byggir á því að leyna aðferðinni. Það er hættulegt því kerfið hefur ekki verið prófað af öðrum og veikleiki í frumkóðanum gæti eyðilagt allt öryggið.
  2. Lykillinn á að vera leyndarmálið. Dulritunaralgrímið má vera opinbert og ætti helst að vera vel rannsakað.
  3. Sá sem fær lykilinn getur oft dulráðið gögnin eða búið til ný gögn sem líta út fyrir að vera frá réttum aðila. Þess vegna þarf að meðhöndla lykla eins og mjög viðkvæm aðgangsorð — og oft enn varlegar.

Hvað dulritun leysir ekki

Dulritun er öflugt verkfæri, en hún er ekki töfrasproti.

  • Hún verndar ekki lykil sem notandi skrifar á miða við hliðina á tölvunni.
  • Hún auðkennir ekki sjálfkrafa hverjum skilaboðin eiga að berast.
  • Hún tryggir ekki að forritið sem notar dulritun sé laust við villur.
  • Hún kemur ekki í veg fyrir að notandi sé blekktur til að gefa upp lykilinn.
  • Hún leysir ekki öll vandamál um aðgengi, afritun eða tiltækileika.

Góð dulritun er því hluti af stærra kerfi. Við þurfum líka örugg forrit, trausta uppsetningu, góða lykilstjórnun og notendur sem vita hvað þeir eru að samþykkja.

Fróðleikur: Enigma var ekki sigruð af einum einstaklingi

Þegar talað er um að Alan Turing hafi „brotist inn í Enigma“ gleymist stundum að pólskir stærðfræðingar, þar á meðal Marian Rejewski, unnu mikilvægt frumkvöðlastarf áður en stríðið hófst. Dulritunarsaga sýnir aftur og aftur að framfarir verða til með samvinnu margra — og að góð greining á aðferðinni skiptir meira máli en leynileg töfrabrögð.

Samantekt

Í þessum kafla lærðum við að:

  • dulritun notar reglur og lykla til að vernda gögn,
  • ódulritaður texti er gögnin áður en þau eru dulrituð,
  • dulritaður texti er útkoman sem á að vera ólæsileg án réttra upplýsinga,
  • dulráðning breytir dulrituðum gögnum aftur í fyrra form,
  • kóðun er ekki það sama og dulritun,
  • tætifall er ekki það sama og dulritun,
  • við getum hugsað um þrjú markmið: trúnaðarstig, heilleika gagna og auðkenningu,
  • vel hönnuð dulritun byggir á leynd lykilsins, ekki á því að leyna algríminu,
  • dulritun er aðeins einn hluti af stærra öryggiskerfi.

Í næsta kafla ætlum við að nota þessi hugtök á einfaldar klassískar dulritunaraðferðir. Þar fáum við að prófa okkur áfram með stafi, mynstur og skilaboð áður en stærðfræðin kemur inn í myndina.

Lokaverkefni

Skrifaðu eitt dæmi úr daglegu lífi þar sem hvert af eftirfarandi skiptir máli:

  • trúnaðarstig,
  • heilleiki gagna,
  • auðkenningu.

Útskýrðu síðan í einni setningu hvers vegna kóðun ein og sér væri ekki nóg í fyrsta dæminu.

Möguleg lausn
  • Trúnaðarstig: Ég sendi lækninum persónulegar upplýsingar og vil ekki að aðrir geti lesið þær.
  • Heilleiki gagna: Ég sæki forrit og vil vita að enginn hafi breytt því á leiðinni.
  • Auðkenning: Ég tengist vef og vil vita að hann sé í raun vefur bankans.

Kóðun ein og sér væri ekki nóg í fyrsta dæminu því allir sem þekkja kóðunarreglurnar gætu breytt gögnunum aftur í læsilegt form. Þar þarf leyndarmál, það er að segja dulritunarlykil.