Envejskoder

Fra SPJDRpedia

Envejskoder er koder, der kun kan oversættes en vej. Det lyder måske lidt underligt, men den slags koder bruges faktisk meget ofte i dag. Når du taster en adgangskode ind på en hjemmeside, bliver den ofte sendt igennen en envejskode, inden den bliver gemt. Når du så vil logge ind igen, gentager hjemmesiden envejskrypteringen og sammenligner resultatet med den krypterede udgave af adgangskoden, som tidligere er blevet gemt. På den måde gemmer de ikke din adgangskode, men kun den krypterede udgave af den.

Envejskodens stærke side er netop, at den kun kan oversætte én vej. Det betyder, at hvis hackere ulovligt tiltvinger sig adgang til den database, hvor hjemmesiden opbevarer din adgangskode, får de kun fat i noget ubrugelig og uforståelig kode. Fordi envejskoden kun virker én vej, kan hackerne ikke oversætte koden baglæns og derved få fingre i adgangskoden.

Telefonbogen

En telefonbog er faktisk en ret god envejskode, så længe vi ikke blander computere ind i problemet. Du kan for eksempel kryptere et bogstav ved at finde et fornavn i telefonbogen, der starter med bogstavet, og så nedskrive vedkommendes telefonnummer. Det er let at gå fra bogstav til nummer, men meget svært at gå den anden vej. På den måde kan du kryptere en hel tekst med telefonnumre.

Her er det forholdsvis let at kryptere teksten (selvfølgelig lidt svært hvis du skal finde navne, der begynder med for eksempel Q, X, Æ, Ø og Å). Men det er en umulig opgave at oversætte beskeden tilbage, fordi man skal lede hele telefonbogen igennem for at finde hvert af numrene. Og det tager meeeeget lang tid.

Principperne i Envejskoder

Der findes flere måder at bygge en envejskode på. Alle koder er i princippet envejskoder, indtil de bliver brudt. Der findes to almindelige måder en envejskode kan fungere på:

Forsimpling

En envejskode kan bruge forsimpling. Lad os tage et eksempel: Tag dit kodeord og ombyt A med 1, B med 2, C med 3, osv. Så tager du tværsummen ved at lægge tallene sammen. Ordet KODE kan for eksempel reduceres til K+O+D+E = 11+15+4+5 = 35.

Vi har altså reduceret et langt ord til ét tal. Men det er ikke en sikker kode. Hvis vi brugte tværsummen til at gemme kode-ord, ville alle kodeord med den samme tværsum låse vores hjemmeside op. Og hvis hackere får adgang til tværsummen, kan de hurtigt finde på et kodeord med samme tværsum. Derfor er tværsummen ikke en sikker envejskode.

I stedet kan du bruge denne slags envejskode som en hjælp til at huske selve koden. Tag som eksempel ordet KODE og husk derudovertværsummen 35. Bliver man i tvivl, om man husker kodeordet rigtigt, kan man udregne tværsummen og se om resultatet passer.

Kompliceret forsimpling

Vi kan godt lave en mere kompliceret forsimpling for at gøre envejskoden mere sikker. Vi kan for eksempel skrive vores kode op i et gitter

D E T T E 
E R E N H
E M M E L
I G K O D
E - - - -

Når vi erstatter med tal får vi:

4  5 20 20  5
5 18  5 14  8 
5 13 13  5 12
9  7 11 15  4
5  0  0  0  0 

Hvis vi nu tager tværsummen både på vandret og lodret, får vi:

 4  5 20 20  5 | 52
 5 18  5 14  8 | 50
 5 13 13  5 12 | 48
 9  7 11 15  4 | 46
 5  0  0  0  0 | 05
--------------
28 43 49 36 29

Tager vi også diagonalsummerne med, kan vi skrive resultatet op som "28,43,49,36,29,52,50,48,46,05,50,44". Nu har vi altså reduceret en besked på 21 bogstaver til en kode på 12 to-cifrede tal. Ikke prangende. Til gengæld er det nu blevet lidt sværere, at bygge en tekst, der har de samme tværsummer, som den oprindelige tekst.

Kryptering

En anden metode bruger en kendt kode til at lave engangskoden. Vi kunne for eksempel bruge Vigenèrekoden. For at vores envejskode ikke skal kunne brydes så let, må vi ikke bruge en fast nøgle. I stedet kan vi bruge selve beskeden som nøgle. Er man specielt snedig, kan man "salte" nøglen ved at tilføje forskellige tekst-stykker. Hvis vi skal kryptere "DETTE ER EN HEMMELIG KODE", kan vi først tilføje de hemmelige tekst-stykker "BADEN" og "POWELL" så nøglen bliver "BADENDETTE ER EN HEMMELIG KODEPOWELL".

Når vi har krypteret vores tekst med nøglen, er der intet, der forhindrer os i at gentage processen. Sålænge vi sikrer os at den samme kodetekst altid bliver til den samme envejskode, kan vi gå ligeså meget amok i kryptering som vi lyster.

Det er faktisk på den måde at moderne envejskoder virker. Ved at gentage processen rigtig mange gange, bliver det en svær matematisk opgave at udregne den oprindelige tekst. Jo sværere opgaven er, jo sikrere er koden.

Virkelige envejskoder

På engelsk kaldes en envejskode også en "hash", og det er det ord man bruger i computerverdenen når man taler om envejskoder.

Før i tiden var den mest anvendte envejskode MD5, men den blev brudt, og nu om dage kan man finde den oprindelige klartekst uden alt for mange beregninger. Blandt de mere kendte er algoritme-familien SHA udviklet af det amerikanske NSA.

Udvikler man software anbefales det[1] i dag at bruge mere komplicerede hashing-funktioner kendt som bcrypt og PBKDF2.

Public key-kryptering

Envejskoder kan også bruges til Public key-kryptering. Her begynder man med at lave to nøgler: En offentlig nøgle og en privat nøgle.

Den offentlige nøgle lægger du ud til fælles brug, og alle kan så bruge den nøgle til at sende dig krypterede beskeder. Pointen er, at man bruger en bestemt kode, hvor man ikke kan dekryptere beskeden ved bare at bruge den offentlige nøgle. I stedet skal man bruge den private nøgle, som kun du har adgang til.

Her er krypteringen med den offentlige nøgle altså en slags envejskode, fordi man kun kan kryptere teksten, men ikke dekryptere den igen!

I modsætning til andre envejskoder, er informationen ikke gået tabt, fordi du netop kan dekryptere beskeden, hvis du kender den private nøgle.

Henvisninger

Ad puzzle lock.svg Koder og Hemmelig skrift
Begreber Chiffer, Ombytningskode,Transposition, Steganografi, Klartekst, Nøgle.
Mono-alfabetiske koder Morsekode, Frimurerkode, A-K kode, Tigerkode, Kodeordskode, Alternativt tegnsæt, Bacons kode, Mobilkode.
Poly-alfabetiske koder Vigenerekode
Polygrafe koder Playfairchiffer, To-kvadrat-chiffer, Fire-kvadrat-chiffer.
Inspiration Uløste koder, To-lås kryptering, Engangsblok, Envejskoder, Sprogkode.
Kodebrydning Kodebrydning, Frekvensanalyse.