Kryptografi

«Kryptograf» omdirigerer hit. For bandet med samme navn, se Kryptograf (band).
Kryptografi er læren om språklige og matematiske teknikker for å sikre informasjon mot innsyn eller modifikasjon, som oftest i forbindelse med kommunikasjon. Ordet kommer fra gresk: kryptos («skjult») og graphein («skrive»). Det greske verbet kryptein betyr å skjule.
Dechiffrere (fra fransk dechiffrere) betyr opprinnelig å lese eller tyde chifferskrift (det vil si kryptert tekst), men brukes i våre dager mer i betydningen å forklare noe som er utydelig eller dunkelt.
Den historisk mest interessante delen av kryptografi er kryptering, som består i å prøve å gjøre en melding uleselig for andre enn de som er ment å motta den. Moderne kryptografi omfatter også teknikker for å kunne verifisere at en melding ikke har blitt endret siden den ble sendt, eller at den har blitt sendt av en autorisert sender; dette brukes blant annet i systemer som elektronisk signatur og digitale penger.


== Ikke databaserte systemer ==
Den tidligste kjente form for kryptering var egyptiske skribenter som ca. 1900 f.kr. byttet ut hieroglyfene med andre.
En annen tidlig krypteringsmetode var Cæsar-metoden som ble brukt ca. 50 år f.kr. Den gikk ut på å forflytte alle bokstavene i alfabetet et visst antall plasser. Det vil si om nøkkelen er 3, så vil bokstaven «a» bli erstattet med «d», «b» med «e», «c» med «f», osv. Ordet  «viktig» blir da kryptert til «ylnwlj». Cæsar brukte denne metoden når han sendte meldinger til sine generaler.
Metoden er ikke særlig sikker og antall nøkkelkombinasjonen er bare 29 (i det norske alfabetet). Antall nøkkelkombinasjoner er en viktig egenskap ved en krypteringsmetode. 
Antallet må være så høyt at det ikke er praktisk mulig å løse krypteringen ved hjelp av prøv-og-feil metoden (brute force).
Likevel for en som ikke hadde noen form for kjennskap til kryptoanalyse var metoden tilstrekkelig for å beskytte meldingene.


=== Substitusjonschiffer ===
Monalfabetisk
I denne typen kryptering bytter man ut en bokstav med en annen. Da vil for eksempel «a», bytte plass med «j», «b» med «y», «c» med «f» etc.
I utgangspunktet er antall nøkler i det norske språk (29 bokstaver) formidabelt. Kombinasjonene er 29*28*27*26..1 (ned til 1).
Dette gir milliarder av nøkler. Likevel er krypteringen lett å løse ved hjelp av frekvensanalyse.
Den har likevel vært mye i bruk gjennom tidene. Som en enkel form for kryptering hvor man ikke vil at en tjener eller andre skal lese innholdet, var den som regel sterk nok. I kombinasjon med andre krypteringsmetoder kan den bli sterk, se Enigma. Et eksempel på et svært svakt monoalfabetisk substitusjonschiffer er ROT13.

Polyalfabetisk
Svakheten ved en monoalfabetisk kryptering er at bokstaven alltid er den samme. Bokstaven a vil alltid være for eksempel j, slik som i eksemplet over. Om man derimot ved første forekomst av bokstaven «a» erstattet denne  med «j» og neste gang erstattet «a» med «y», vil det bli mye vanskeligere å knekke krypteringen siden «a» kan opptre som enten j eller y.
Et chiffersystem hvor flere tegn representerer et tegn, kalles polyalfabetisk. Den franske diplomaten Vigenère (1523–1596), introduserte det polyalfabetiske substitusjonschifferet.  Dette var en kraftig forbedring i forhold til krypteringsmetodene som eksisterte. Faktisk ble metoden brukt under andre verdenskrig og som reserveløsning i dag. Likevel ble den ikke brukt i alle sammenhenger fordi den var langsommere og vanskeligere i bruk.


=== Andre verdenskrig ===
Som ved andre teknologier, fikk andre verdenskrig stor betydning for utviklingen av kryptografi. På denne tiden begynte man å gå over til maskinell kryptering – å kryptere for hånd var tidkrevende og tildels en usikker fremgangsmåte. Flere typer elektromekaniske innretninger, slik som den berømte Enigma, så dagens lys.
Tyskland, som okkuperte store områder over store avstander, hadde et ekstra stort behov for effektiv kryptering. I tillegg til Enigma utviklet de også Lorenz chiffer-systemet, et krypteringssystem for fjernskriver. Lorenz brukte hjul slik som Enigma, for så å bruke XOR (eksklusiv eller) til å kryptere meldingene i ECB modus (se under databaserte systemer). Man greide også å utvikle ekte digitale systemer, for eksempel SIGSALY, et amerikansk krypteringssystem beregnet på å kryptere tale. SIGSALY ble brukt av toppledere i de allierte landene, spesielt mellom USA og England.
Kryptoanalysen gjennomgikk også en revolusjon, og det var nettopp dette som førte til at den første programmerbare digitale datamaskinen, Colossus, ble tatt i bruk (1944). Den ble med stort hell brukt til å knekke de tyske lorenz-meldingene. Ironisk nok greide svensken Arne Beurling å knekke de tyske meldingene mellom Norge og Tyskland med papir og penn, på bare to uker.


== Databaserte systemer ==


=== Symmetrisk kryptering ===

Ved symmetrisk kryptering bruker man samme nøkkel både ved kryptering og dekryptering av data. Krypteringsmetoden er som regel meget sterk. Problemet er distribusjonen av nøkler. Det er en risiko for at en nøkkel kan komme på avveie, eller at man ikke er i stand til å utveksle nøkler.
Symmetrisk kryptering algoritmer kan bli inndelt i Blokk Chiffer eller Strøm Chiffer. I Strøm Chiffer så blir bytene i meldingen kryptert en av gangen, mens i Blokk Chiffer så blir en blokk med bytes tatt og kryptert som en enhet.
Data Encryption Standard eller DES er den mest kjente databaserte krypteringsmetoden. Den ble introdusert i 1975 av IBM, basert på en tidligere algoritme (Lucifer), konstruert av Horst Feistel. Nøkkelen var på 56 bits, en litt svak nøkkel. Årsaken til at nøkkelen ble på 56 bits, var at NSA, USAs sikkerhetstjeneste, ikke ville ha en altfor sterk algoritme.
Med 56 bits fikk man likevel en ganske sterk kryptering, men ikke så sterk at NSA ikke kunne dekryptere den om nødvendig.
Selv om 56 bits DES fortsatt er i bruk, er den i dag altfor svak (2006). Et cluster av datamaskiner kan knekke krypteringen i løpet av noen timer (brute force).
For fortsatt å kunne bruke hardware lagd for DES, innførte man en ny variant kalt trippel DES.
I trippel DES blir informasjonen kryptert 3 ganger, styrken er på effektive 112 bits.
Trippel DES har milliarder av flere kombinasjoner enn 56 bits DES.
Den er foreløpig heller ikke knekket ved brute force.
DES tilhører kategorien Blokk Chiffer; de fleste symmetriske krypteringssystemer er basert på denne teknikken. I en blokk chiffer (algoritme) deles  informasjonen opp i blokker som så gjennomgår krypteringsprosessen.
I DES bruker man blokker på 64 bits, disse blir delt i to nye blokker på 32 bits.
Disse blokkene kalles høyre og venstre, disse blokkene blir kryptert (Exclusive OR) med 48 bits nøkler i et feistel nettverk. DES kjører 64 bits-blokkene 16 runder før den er ferdig med krypteringen.


=== Blokk-metoder ===

Det er flere metoder for å kryptere blokkene i et blokkchiffer-system. De fire vanligste er:
Electronic Code Book (ECB)
Et relativt enkelt og hurtig system. Her blir hver enkel blokk eller tegn kryptert med XOR 
(eksklusiv eller) for å produsere chifferteksten. Når man skal dekryptere, gjentar man bare prosessen for å hente fram klarteksten. Systemet er helt sikkert om krypteringsnøkkelen er tilfeldig valgt og er like lang som teksten, da har man et engangschiffer.
I de aller fleste tilfeller bruker man en mindre nøkkel for å lage flere nøkler, noe som svekker systemet. Eventuelle svakheter og mønster i nøklene synes lett i chiffermeldingen.   
For at dette systemet skal være sikkert, må man bare kryptere med samme nøkkel én gang.
Under andre verdenskrig gjorde tyske Lorenzoperatører flere tabber, bl.a. å kryptere samme melding to ganger. ECB anbefales kun brukt som system dersom informasjonen er liten eller om man har mulighet til å bytte nøkkel ved ny kryptering.
Cipher Block Chaining (CBC) 
Ligner på ECB ved at man krypterer blokkene med XOR, men i stedet blir resultatet av krypteringen kryptert på nytt med neste blokk og neste nøkkel. Ved denne metoden vil klarteksten bli blandet med nøkkelen, slik at man produserer et chiffer som ikke bare er avhengig av nøkkelen, men også klarteksten.
Cipher Feedback Mode (CFB) 
Ligner på CBC, her blir resultatet ført tilbake i en selvsynkroniserende strøm av chiffer.
Output Feedback Mode (OFB)
Lik CFB, men synkron. Dette beskytter bedre  mot  feil i overføringen, bl.a. fordi feilrettingssystemer kan brukes før og etter krypteringen.


=== Asymmetrisk kryptering ===
Se også utdypende artikkel om Asymmetrisk krypteringAsymmetrisk kryptering kalles også offentlig nøkkel-kryptering. Man benytter to nøkler, én privat (hemmelig) og én offentlig nøkkel.
Fordelen er at om Per ønsker å sende en beskjed til Kari, kan han bruke Karis offentlige nøkkel til å kryptere meldingen med.
Kari, som også har den hemmelige nøkkelen, kan dekryptere meldingen. Selv om for eksempel Eva fanger opp meldingen og er i besittelse av den offentlige nøkkelen, kan hun ikke dekryptere meldingen.
Fordelen med dette systemet er at man slipper problemet med nøkkeldistrubusjon, man trenger ikke å være redd for at nøkler skal komme på avveie. Per trenger jo ikke å få noen hemmelig nøkkel av Kari før han skal sende meldingen. 
Den offentlige nøkkelen kan hvem som helst få, Kari kan legge den på sin hjemmeside eller maile den uten at dette er noen risiko.
Asymmetriske nøkler kan også brukes til signering. Dersom Kari krypterer en melding med sin hemmelige nøkkel, kan alle som har hennes offentlige nøkkel dekryptere og lese meldingen. Dersom meldingen faktisk er lesbar og gir mening, er Kari den eneste som kan ha signert meldingen.


=== Digitale signaturer ===
En digital signatur har som hovedformål å verifisere at en spesifikk person har produsert dataene som foreligger.
En banksjef sender en e-post til en ansatt om at vedkommende skal overføre 10000 kr til en gitt konto. For å være helt sikker på at meldingen faktisk kom fra banksjefen kan e-postmeldingen signeres.
En annen oppnådd effekt med signering er integritet. Det betyr at innholdet ikke er modifisert. Hvis en
angriper på nettverket snapper opp emailen til den bankansatte og endrer kontonummeret vil signatursjekken
gi feilmelding.
For å generere en signatur kan hele meldingen krypterisk med symmetrisk krypering der nøkkel er kjent av sender
og avsender. Men en mer elegant måte er å produsere en sjekksum av meldingen og signere denne isteden. Signaturen kan legges ved som emailvedlegg og meldingen kan sendes ukryptert.
Fordi hver enkelt par avsender og mottaker må dele en symmetrisk nøkkel må n mennesker dele n (n -1) / 2 nøkkler og det blir mange nøkler.
Med asymmetrisk kan avsender bruke sin private nøkkel til å signere en sjekksum av meldingen.


=== Hybridsystem ===
Asymmetrisk og symmetrisk krypering brukes samtidig for å oppnå autentisering, integritet og ulesbart innhold for andre. Først signeres en sjekksum av innholdet. Deretter genereres en midlertidig sesjonsnøkkel og innhold og signatur blir krypert med denne. Deretter brukes mottakers offentlige nøkkel til å kryptere sesjonsnøkkelen.
Mottaker bruker sin private nøkkel til å dekryptere sesjonsnøkkelen og bruker den til å dekryptere innholdet. Deretter kan signatur sjekkes.


=== Sjekksum funksjon ===
En sjekksum funksjon konverterer data av hvilken som helst lengde til data med en bestemt lengde. Samme inndata vil produsere lik sjekksum hver gang.
Et eksempel er MD5 funksjonen;

Md5('foobar') == 3858f62230ac3c915f300c664312c63f

En sjekksum av en fil er nyttig for å detektere bit feil i overføring.


=== Kvantekryptering ===
Se også utdypende artikkel om KvantekryptografiKrypteringsmetode basert på Heisenbergs usikkerhetsrelasjon.
Først beskrevet av studenten Stephen Wiesner på slutten av 60-tallet.
Prinsippet løser et alvorlig problem med kryptering, nemlig utvekslingen av nøkler.
I tillegg åpnes det en mengde andre muligheter.
En egenskap ved kvantemekanikken er prinsippet at ved å måle eller registrere en tilstand, utelukker man muligheten for flere observasjoner.
Dette utnyttes i Kvantekryptering. Ved å sende informasjon fra punkt a til b, vet man at så lenge B kan lese informasjonen fra A (og motsatt), er det helt umulig for andre å tyvlytte.
Om noen tyvlytter, vil informasjonen plutselig bli uleselig.
En mengde nesten uvirkelige andre muligheter ved kvantekryptering finnes.
Et eksempel er en beskjed som inneholder to meldinger. Ved å velge å lese en av beskjedene blir det umulig å lese den andre.
Kvantepenger, penger som ikke kan forfalskes.
Det har nå blitt konstruert overføringssystemer som bruker fotoner for å utveksle symmetriske krypteringsnøkler.
Da er man ikke avhengig av asymmetrisk (PKI) kryptering for å utveksle nøkler, noe som styrker krypteringen betydelig, siden symmetrisk kryptering som regel er betydelig sterkere en asymmetrisk.


=== Framtiden ===
Dagens databaserte kryptering er meget sikker, i alle fall for det private kommersielle markedet.
Det er ikke kjent at noen kriminell organisasjon har knekt nøkler på 112 bits (trippel DES) eller andre kraftigere systemer.
I en verden hvor informasjon og kommunikasjon spiller en større rolle, blir sikringen av informasjonen viktigere.
I Norge og Europa har vi prinsipielt fri tilgang til kryptering, dette i motsetning til mange andre land.
Det er ikke sikkert det fortsetter å være slik. Politiets viktigste metoder for å bekjempe kriminalitet og terrorisme er avlytting. Dessverre er kryptering et toegget sverd, det kan beskytte, men samtidig også misbrukes.
Et engelsk forslag som stadig dukker opp, er "key escrow". Et system hvor en tredje part oppbevarer nøkler, og hvor myndighetene må ha rettens kjennelse for å få nøkkelen.
For å få lov til å benytte sterk kryptering må man til gjengjeld gi en kopi til denne tredje parten. 
Likevel innser de fleste at man ikke kan hindre utbredelsen av kryptering, hverken i form av lovverk eller ved å hindre eksport. Samtidig er kryptering en nødvendighet i dagens moderne samfunn. En betingelse for all e-handel, men kanskje en nødvendighet for å bevare frihet og demokrati.


== Se også ==
Kryptoanalyse
Kryptografihistorie
Engangsnøkkel


== Eksterne lenker ==
SECOQC, et europeisk prosjekt for å utvikle kvantekryptering  Arkivert 27. september 2007 hos Wayback Machine.
Tom McCune's PGP Page Arkivert 15. august 2006 hos Wayback Machine.