Envejskoder

      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.

      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.

      ↑Gå et afsnit tilbage

      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 et tal. Det er denne forsimpling, som vi kalder reduktion af kompleksitet. Mange ord har den samme tværsum, og kender man proceuren, er det ikke svært 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å kryds og tværs 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 enejskoder 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.

      ↑Gå et afsnit tilbage

      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.

      ↑Gå et afsnit tilbage

      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 tabt, fordi du netop kan dekryptere beskeden, hvis du kender den private nøgle.

      ↑Gå et afsnit tilbage
      Senest ændret 21. januar 2014 kl. 00:06