Informatikbog HHX

  • 🗚
  • 🔍︎
  • Kryptering #

    Dette kapitel handler om sikkerhed i forbindelse med lagring og transmission af data over internettet.

    Man transmitterer data, f.eks. når man

    • bruger et website,
    • sender en email,
    • skriver en besked på messenger,
    • ringer op med telefonen.

    Emnet kryptering er et teknisk aspekt af it-sikkerhed.

    De menneskelige aspekter af it-sikkerhed behandles i kapitlerne privatliv og personoplysninger.

    Dette kapitel forklarer

    1. hvad det betyder, at en kommunikationskanal er sikker,
    2. XOR-kryptering,
    3. one-time pads,
    4. symmetriske nøgler,
    5. kryptering med asymmetriske nøgler,
    6. digitale signaturer og
    7. digitale certifkater.

    Hvad er kryptering? #

    Kryptering er en transformation af data til en form, som kun kan forstås af dem, som har fået tildelt adgang.

    At tildele en person adgang kaldes med et teknisk ord for autorisation.

    Kryptering kan også anvendes til at bekræfte identitet.

    At bekræfte identitet eller ægthed kaldes med et teknisk ord for autentifikation.

    Kryptering kan sammenlignes med en boks, som man lægger en besked ned i og låser med en nøgle.

    Det er kun dem, som er i besiddelse af nøglen, som kan åbne boksen og læse beskeden.

    Kryptering har oprindeligt været anvendt til militære formål og i handelsforhold, hvor man vil forhindre fjenden (eller konkurrenterne) i at læse ens hemmeligheder.

    I dag har alle gavn af kryptering, da vi transmitterer personlige oplysninger over internettet og forventer, at de oplysninger holdes hemmelige.

    CIA-triaden #

    CIA-triaden er en model, som kan anvendes, når man taler om formålene med kryptering.

    CIA er en forkortelse for de engelske ord Confidentiality, Integrity og Availability. På dansk: fortrolighed, integritet og tilgængelighed.

    Fortrolighed #

    Fortrolighed handler om garanti for at beskeder ikke læses af andre end de autoriserede parter, mens de transmitteres mellem afsender og modtagere.

    Kryptering anvendes først og fremmest til at sikre fortrolighed.

    Integritet #

    Integritet handler om garanti for at beskeder ikke kan ændres, mens de transmitteres mellem afsender og modtager.

    Integritet handler også om garanti for autenticiteten af informationer.

    At noget er autentisk betyder, at det er ægte.

    Om information er ægte afhænger af identiteten af afsenderen af informationen.

    Information som kommer fra en anden, end den man tror, er enten falsk eller forfalsket.

    Kryptering kan anvendes til at sikre integritet, f.eks. ved hjælp af digitale signaturer.

    Tilgængelighed #

    Tilgængelighed handler, om at man har adgang til data, når man har brug for det.

    Kryptering kan ikke hjælpe med at sikre tilgængelighed af data.

    Terminologi #

    Beskeder #

    Når man taler om kryptering er det almindeligt at kalde de data, som man transformerer fra den ene form til den anden, for en besked.

    Krypteringsmetode #

    En krypteringsmetode er et system, som består af to algoritmer, der gør det modsatte af hinanden:

    1. Transformation af ukrypteret input til krypteret output kaldes kryptering og
    2. transformation af krypteret input til ukrypteret output kaldes dekryptering.

    Krypteringsmetoder kaldes også for chiffre.

    En effektiv chiffer er ubrydelig, hvis nøglen holdes hemmelig, selvom »fjenden« kender metoden. Dette kaldes »Kerchhoffs princip«.

    Der findes mange metoder til at kryptere informationer. I dette kapitel beskrives XOR-kryptering.

    Nøgler #

    En nøgle er data, som man kombinerer med en krypteringsmetode for at kryptere en besked.

    Nøgler holdes hemmelige for at beskytte de krypterede informationer.

    En nøgle kan sammenlignes med en lang adgangskode, som er tilfældigt sammensat af computeren.

    Klartekst #

    Input til krypteringsalgoritmen kaldes klartekst.

    Klartekst er ukrypteret og kan læses uden videre. Teksten på dette website er »klartekst«.

    Output fra dekrypteringsalgoritmen er også klartekst.

    Chiffertekst #

    Output fra krypteringsalgoritmen kaldes chiffertekst.

    Chiffertekst er krypteret og kan kun læses af dem, som kan dekryptere chifferteksten til klartekst.

    Input til dekrypteringsalgoritmen er også chiffertekst.

    XOR-kryptering #

    XOR-kryptering er en simpel krypteringsmetode, som gør brug af eksklusive disjunktioner.

    En disjunktion kan også udtrykkes som »det ene eller det andet«.

    Hvis man har filosofi som valgfag, stifter man måske bekendtskab med disjunktioner og konjunktioner i form af sandhedstabeller.

    Denne »sandhedstabel« beskriver hvordan en krypteringsalgoritme baseret på eksklusiv disjunktion fungerer:

    XOR-kryptering

    Tabellen viser hvad output (chifferteksten) er for en enkelt bit af klarteksten og nøglen.

    Output af XOR-operationen er balanceret: Sandsynligheden for at output er 0 eller 1 er ½.

    Det medfører, at hvis man vælger nøglen fuldstændig tilfældigt, vil chifferteksten fremstå uden noget synligt mønster for alle dem, som ikke kender nøglen.

    krypteringsfunktion: XOR

    One-time pads #

    Hvis man bruger en metode som XOR-kryptering med en uendelig lang række af tilfældigt valgte krypteringsnøgler, så har man en one-time pad (OTP).

    Billedet nedenfor viser en side fra en kodebog, som spioner brugte i gamle dage:

    NSA DIANA one-time pad

    One-time pads er beviseligt ubrydelige, hvis man kan holde alle informationer om nøglerne skjult.

    One-time pads er ikke praktisk anvendelige til kryptering i stor stil, som man gør det på internettet, fordi det er umuligt at udveksle så mange nøgler i komplet hemmelighed.

    One-time pads giver en høj grad af fortrolighed. Sikker kryptering giver også sikkerhed for integritet.

    Frekvensanalyse #

    Hvis man ikke har en uendelig lang række af tilfældigt valgte nøgler, så er det en løsning at genbruge nøgler.

    Når man genbruger en nøgle til at kryptere forskellige dele af klarteksten, så bliver krypteringen til en substitutionalgoritme.

    Substitutionsalgoritmer giver chiffertekster, som består af tegn og ord med samme statistiske fordeling som på klartekstsproget.

    For at bryde en substitutionschiffer analyserer man tekst skrevet på det sprog, som den krypterede besked er skrevet på og tæller hyppigheden af de enkelte ord.

    Ved at tælle hyppighederne af tegn i de krypterede beskeder, kan man matche tegn fra chiffertekst til klartekst.

    Substitutionsalgoritmer giver nogen fortrolighed, men er nemme at bryde.

    Symmetriske nøgler #

    Moderne krypteringsmetoder er nærmest ubrydelige og anvender teknikker til at transformere en kort hemmelig nøgle til en uendelig lang hemmelig nøgle.

    Når man udveksler en kort hemmelig nøgle til at starte med, kalder man det kryptering med symmetriske nøgler. Den samme nøgle bruges til både at kryptere og dekryptere.

    Man kalder det også kryptering med hemmelige nøgler.

    Så længe man benytter en sikker krypteringsalgoritme og den hemmelige nøgle er hemmelig, så kan fjenden (eller konkurrenten) ikke læse de beskeder, som man sender og modtager.

    Sætningen ovenfor udtrykker det man kalder Kerchhoffs princip, som er et vigtigt kryptografisk princip: metoden skal være sikker, selvom den er almindeligt kendt, hvis bare nøglen er hemmelig.

    Kryptering med symmetriske nøgler kan være effektivt, men metoden kræver at man på forhånd udveksler en hemmelig nøgle. Det kan være svært over internettet, hvor man f.eks. vil sende ₿itcoins til en webshop i Kina.

    Kryptering med symmetriske nøgler kan give en høj grad af fortrolighed.

    Kryptering med symmetriske nøgler kan også give garanti for integritet og ægthed ved hjælp af HMAC-koder.

    Asymmetriske nøgler #

    Kryptering med asymmetriske nøgle er et moderne system, som løser problemet med at distribuere symmetriske nøgler mellem alle dem, som vil kommunikere med hinanden over internettet.

    I stedet for en hemmelig nøgle, så anvender krypteringsmetoden unikke nøglepar, som hver side af kommunikationskanalen selv genererer.

    Den ene del af nøgleparret er en offentlig nøgle. Den anden del af nøgleparret er en privat nøgle.

    Hvis man krypterer en besked med den private nøgle, kan man kun dekryptere med den offentlige nøgle.

    Og omvendt, hvis man krypterer med den offentlige nøgle, kan man kun dekryptere med den private nøgle.

    Kryptering med offentlige nøgler kaldes også asymmetrisk kryptering, fordi man bruger forskellige nøgler til at kryptere og dekryptere.

    Den offentlig kendte nøgle kan man sende over internettet uden at bekymre sig om, hvem som kender den.

    For at sende en krypteret besked til en modtager skal man kun kende hendes offentlige nøgle.

    Det løser problemet med distribution af nøgler mellem mange parter og over usikre kommunikationskanaler.

    Den private nøgle skal holdes hemmelig. Så længe den private nøgle er hemmelig, kan man bruge den til at kryptere beskeder og bevise ens identitet

    Til kryptering anvender man i praksis hybridsystemer, hvor de asymmetriske nøgler kun anvendes til at finde frem til en fælles symmetrisk nøgle.

    Asymmetriske nøgler giver samme garanti for fortrolighed som symmetriske nøgler og giver sammen med certifikater en høj grad af sikkerhed for integritet og ægthed.

    Digitale fingeraftryk #

    Et fingeraftryk er et "digitalt spor", som er knyttet til en besked.

    Fingeraftrykket er en funktion, som afbilder en uendelig stor definitionsmængde over på en endeligt stor værdimængde.

    Det betyder, at funktionens input er en besked fortolket som en talrække af vilkårlig længde og output er en talrække af en bestemt længde, f.eks. en række på 32 tal.

    Et digitalt fingeraftryk kaldes også en hash-værdi og den funktion, som beregner hash-værdien, kaldes en hash-funktion. Ordet »hash« kommer af det franske ord for »at hakke noget (i små stykker)«.

    En hash-funktion er en kryptografisk hash-funktion, hvis

    1. det er svært (grænsende til det umulige) at finde tilbage til input, hvis man kun har output og
    2. output er jævnt fordelt over hele hash-funktionens værdimængde, uanset hvad input er, og
    3. det er svært (grænsende til det umulige) at finde en anden input værdi, som giver den samme output værdi.
    hash-funktion: SHA-256

    Selvom digitale fingeraftryk anvendes sammen med kryptering, så er det ikke det samme som kryptering. Man kan ikke dekryptere et fingeraftryk.

    Digitale signaturer #

    En signatur er en underskrift.

    En digital signatur er ligesom en fysisk underskrift; den giver sikkerhed for afsenderens identitet.

    Sikkerhed for afsenderens identitet kalder man ægthed eller autenticitet.

    Man signerer en besked ved at kryptere beskedens fingeraftryk med den private nøgle.

    Modtageren af en besked kan så selv beregne beskedens fingeraftryk, dekryptere signaturen med afsenderens offentlige nøgle og sammenligne de to fingeraftryk. Hvis de er ens, så har afsenderen af beskeden bevist, at hun er i besiddelse af den private nøgle, som hører sammen med den offentlige nøgle.

    Man kan også bevise ægthed ved brug af symmetriske nøgler til at danne hash-baserede beskedautentificeringskoder (HMAC). Princippet er det samme som en signatur: Man krypterer et fingeraftryk med en hemmelig (symmetrisk) nøgle og verificerer ved at dekryptere og udregne fingeraftrykket igen.

    Digitale certifikater #

    En digitalt certifikat er fingeraftrykket af en offentlig nøgle, som er signeret af en troværdig tredjepart (TTP).

    Det er nogen gange ikke nok at kunne bevise, at man er i besiddelse af en bestemt privat nøgle.

    F.eks. er det vigtigt for indehaveren af en webshop at kunne bevise at et bestemt nøglepar bruges til at kryptere trafikken mellem kunder og webshoppen.

    Webshopindehaveren sender sin offentlige nøgle til en TTP, beviser sin identitet på en eller anden måde og får et certifikat tilbage med TTP'ens signatur af webshopindehaverens offentlige nøgle og webshoppens navn, som han installerer i sin webshop. Når en kunde besøger webshoppen, tjekker browseren automatisk, om certifikatet er gyldigt og passer med webshopnavnet.

    Alle browsere har indbygget en liste med offentlige nøgler fra TTP'er, som bruges til at verificere certifikaters ægthed og gyldigheden af det, f.eks. i forhold til en udløbsdato.

    Det er brugerens opgave at tjekke om det certificerede navn på et website, som hun besøger, er "det rigtige" navn.

    For eksempel kan websitenavnene www.goolge.com og www.google.com ligne hinanden, men der er stor forskel på, hvilke informationer man vil sende til de to websites.

    Informationssøgning #

    XOR på Wikipedia https://en.wikipedia.org/wiki/XOR_gate