Envejskoder

Fra SPJDRpedia
Skift til: Navigation, Søgning

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 dem 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 der tidligere er blevet gemt. På den måde gemmer de ikke din adgangskode. Kun den krypterede udgave af den.

Envejskodens stærke side er netop, at den kun kan oversætte en 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 en vej kan hackerne ikke oversætte koden baglæns og derved få fingre i adgangskoden.

Indholdsfortegnelse

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. 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å:

Reduktion af kompleksitet

En envejskode kan reducere kompleksiteten. Det lyder svært, men det er faktisk ikke så kompliceret. 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. Det er denne forsimpling, som vi kalder reduktion af kompleksitet. Mange ord har den samme tværsum, og kender man proceduren, er det let at konstruere ord med en specifik tværsum. Derfor er tværsummen ikke en sikker envejskode.

Udover at forsøge at huske selve koden, kan man også huske tværsummen. Bliver man i tvivl, om man har husket rigtigt, kan man udregne tværsummen og se om resultatet passer.

I stedet for bare at tage tværsummen, kan vi gøre noget mere kompliceret. 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 noget sværere, at bygge en tekst der har de samme tværsummer, som den oprindelige tekst.

Kryptering

For at sikre at man ikke kan bygge en anden tekst, der har samme reducerede envejskode, kan man vælge først at kryptere teksten. For at koden er sikker, skal det helst ske uden en fast nøgle. Istedet kan man bruge teksten selv som nøgle. Er man specielt snedig, kan man "salte" nøglen ved at tilføje forskellige tekst-stykker. Skal vi for eksempel kryptere "DETTE ER EN HEMMELIG KODE", kan vi 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.

Kendte hashes

Før i tiden var den mest anvendte envejskode MD5, men den blev brudt, så man nu kan 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 ligger 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!

Men 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

  1. http://www.codinghorror.com/blog/2012/04/speed-hashing.html
Ad puzzle lock.svg Koder og Hemmelig skrift
Begreber Chiffer, Ombytningskode,Transposition, Steganografi, Klartekst, Nøgle.
Monoalfabetiske chiffre Morsekode, Frimurerkode, A-K kode, Tigerkode, Kodeordskode, Alternativt tegnsæt, Bacons kode, Mobilkode.
Polyalfabetiske chiffre Vigenerekode
Polygrafe chiffre Playfairchiffer, To-kvadrat-chiffer, Fire-kvadrat-chiffer.
Inspiration Uløste koder, To-lås kryptering, Engangsblok, Envejskoder, Sprogkode.
Kodebrydning Kodebrydning, Frekvensanalyse.
Personlige værktøjer
Navnerum

Varianter
Handlinger
Navigation
Værktøjer