Hvað er dulritun?
Í þessum kafla ætlum við að kynnast dulritun (e. cryptography) og sjáum hvernig hún gerir okkur kleift að
- senda leynileg skilaboð,
- sjá hvort einhver hafi breytt gögnum, og
- vita hver sendi okkur skilaboð.
Nútíma dulritun er í eðli sínu flókið fyrirbæri. Til að kryfja hana til mergjar þarf góðan stærðfræðigrunn. Dulritun mætti þannig kalla fræðilegasta hluta gagnaglíma. Við byrjum þó á að fjalla um klassíska dulritun, sem felur ekki í sér flókna stærðfræði, auk þess að byggja upp orðaforða og innsæi.
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 annan netbúnað áður en þau komast til Bjarna. Megnið af þessum búnaði er líklega áreiðanlegur, en við getum ekki gengið út frá því að hann sé það allur.
Ef Anna sendir skilaboðin sem texta gæti einhver sem kemst yfir gögnin lesið þau.
┌──────┐ ┌────────┐
│ Anna │──„Hittumst klukkan fjögur“──►│ Bjarni │
└──────┘ │ └────────┘
│
▼
┌───────────┐
│ Eva │
│ (hlerari) │
└───────────┘
Við skulum kalla óboðna lesandann (hlerarann) Evu. 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.
Vissir þú?
Í kennslubókum og greinum um dulritun um allan heim er hefð fyrir því að nota sömu sögupersónurnar til að útskýra hugtök. Sendandinn heitir yfirleitt Alice, viðtakandinn Bob og hlerarinn (e. eavesdropper) heitir Eve. Á íslensku gætum við kallað þau Önnu, Bjarna og Evu.
Það liggur beinast við að setja gögnin í læstan kassa. Anna læsir kassanum, sendir hann til Bjarna og Bjarni opnar hann með lykli. Þetta er nákvæmlega hugmyndin á bak við dulritun, þ.e. ferli sem umbreytir gögnum á þann hátt að þau eru ólesanleg fyrir þá sem ekki hafa aðgang að lyklinum sem þarf til að lesa þau.
Skilgreiningar
Við skulum byrja á því að gefa þessum ferlum og gögnum nöfn:
- Textinn sem Anna vill senda kallast ódulritaður texti (e. plaintext eða cleartext).
- Aðferðin sem breytir textanum kallast dulritunaralgrím (e. encryption algorithm).
- Leyndarmálið eða lykillinn sem stýrir aðferðinni kallast dulritunarlykill (e. encryption key).
- Útkoman úr aðferðinni kallast dulritaður texti eða dulrit (e. ciphertext).
- Að breyta dulritaða textanum aftur í ódulritaðan texta kallast dulráðning (e. decryption).
Ferlið lítur þá svona út:
flowchart LR
P1["Ódulritaður texti"] -->|"dulritunaralgrím<br/>+ dulritunarlykill"| C["Dulritaður texti<br/>(fer yfir Internetið)"]
C -->|"dulráðningarlykill"| P2["Ódulritaður texti"]
Í einfaldasta tilvikinu nota Anna og Bjarni sama leyndarmálið til að dulrita og dulráða. Síðar sjáum við að hægt er að nota tvö tengd lyklapö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, þó að nútímadulritun geri miklu meira en að skipta út stöfum.
Fjögur mismunandi markmið
Markmið dulritunar er að „tryggja gögn“. Hvaða merkingu það hefur fer eftir samhenginu, en oft er talað um fjögur ólík markmið dulritunar.
Leynd
Leynd eða trúnaður (e. confidentiality) snýst um að gögn séu aðeins aðgengileg þeim sem eiga að fá að sjá þau.
Flestir sýsla með trúnaðargögn á hverjum degi, svo sem persónuleg skilaboð, gögn á læstum vefsvæðum eins og Innunni og Heilsuveru. Einnig gæta kerfin sem við vinnum með upp á leynd gagna, eins og þegar vafri sendir lykilorð til vefþjóns.
Dulritun er hægt að nota til að tryggja leynd gagna. Það er þó mikilvægt að athuga að dulritun er ekki eina leiðin til þess og ekki alltaf sú ákjósanlegasta heldur. Dulritun nýtist best við að tryggja leynd gagna sem gætu ratað í rangar hendur, hvort sem það eru skilaboð sem send eru yfir Internetið eða harður diskur í tölvu, sem hægt er að lesa beint sé tölvunni stolið.
Dulritun kemur heldur ekki í veg fyrir að einhver sjái að skilaboð hafi verið send eða hversu stór þau eru. Hún felur fyrst og fremst innihaldið.
Heilleiki gagna
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 Eva 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 (e. hash functions), skilaboðaauðkenningu og stafrænar undirskriftir (e. digital signatures) sem hjálpa við það verkefni.
Auðkenning
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 Eva er að þykjast vera hún.
Óhrekjanleiki
Óhrekjanleiki (e. non-repudiation) tryggir að ef aðili sendir tiltekin skilaboð eða framkvæmir aðgerð, þá geti hann ekki seinna meir neitað því að hafa gert það.
Ef Anna sendir Bjarna stafrænt undirritaðan samning tryggir óhrekjanleikinn að Anna geti ekki seinna haldið því fram að Eva hafi falsað samninginn.
Hægt er að setja fram þessi fjögur markmið með eftirfarandi spurningum:
| Spurning | Markmið |
|---|---|
| Getur óviðkomandi lesið innihaldið? | Leynd |
| Hefur einhver breytt innihaldinu? | Heilleiki gagna |
| Komu gögnin frá réttum aðila? | Auðkenning |
| Getur sendandinn neitað gjörðum sínum eftir á? | Óhrekjanleiki |
Æfing: hvaða markmið er þetta?
Æfing 1
Hvaða markmið er mikilvægast í hverju dæmi? Veldu úr leynd, heilleika gagna og auðkenningu.
- Vefur vill koma í veg fyrir að aðgangsorð sjáist á leiðinni til hans.
- Forrit vill ganga úr skugga um að uppfærsluskrá hafi ekki breyst eftir að hún var gefin út.
- Bjarni vill vita hvort skilaboð sem bera nafn Önnu hafi í raun komið frá henni.
- Nemandi vill senda kennara læknisvottorð sem aðrir nemendur eiga ekki að geta lesið.
Lausn við æfingu 1
- Leynd. Aðgangsorðið á að vera ólæsilegt öðrum en réttum viðtakanda og vefþjóninum.
- Heilleiki gagna. Hér er ekki endilega verið að fela skrána. Markmiðið er að taka eftir breytingum.
- Auðkenning. Bjarni vill vita hver sendi skilaboðin. Heilleiki gæti líka skipt máli, en aðalspurningin er um uppruna.
- Leynd. 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 út fyrir að vera handahófskenndur er freistandi að draga þá ályktun að hann sé „dulritaður“. Það er þó ekki alltaf raunin. Eins og við höfum kynnst áður, getur textinn einfaldlega verið kóðaður (e. encoded).
Kóðun umbreytir gögnum í annað form svo hægt sé að geyma þau eða senda þau í kerfi sem gerir ákveðnar kröfur. Markmið kóðunar er ekki að fela gögnin.
Tætifall er ekki dulritun
Tætifall 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ð“ eða „dulráðið“. Það er gagnlegt til dæmis til að
- athuga hvort skrá hafi breyst,
- bera saman gögn án þess að geyma frumgögnin beint,
- auðkenna notendur með lykilorði, án þess að geyma lykilorðin sjálf.
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.
- Við reiknum tætigildi af skránni sem við sóttum.
- Við berum okkar niðurstöðu saman við uppgefna niðurstöðu.
- Ef þær eru ólíkar hefur skráin annaðhvort skemmst eða einhver breytt henni.
- 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 eru reglurnar sem breyta gögnunum. Dulritunarlykillinn er leyndarmálið sem velur tiltekna niðurstöðu innan þessara reglna.
Ef við berum þetta saman við hengilás má segja að
- 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 kemst að því, hvort sem það er með bakhönnun (e. reverse engineering) eða gagnaleka.
Kerckhoffs-reglan (e. Kerckhoffs's principle)
Auguste Kerckhoffs skrifaði á 19. öld að dulmálskerfi (e. cryptosystem) ætti að vera öruggt þótt allt kerfið, nema lykillinn, sé opinbert.
Hvað þarf að vera leyndarmál?
Segjum að Anna og Bjarni noti sama dulritunaralgrím. Eva 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 Eva ekki að geta lesið skilaboðin. Ef lykillinn lekur skiptir litlu máli hversu vel algrímið er hannað: Eva 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.
Hvað dulritun leysir ekki
Dulritun er öflugt verkfæri, en hún er ekki töfrabragð.
- 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 lykil.
- 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.