Banner   

Topics:  Fotografi    Rejseliv    Lidt af hvert    Teknikhjørnet    Scrapbogen    Pulterkammeret    Site Map    


Indhold:

-Overordnede-
IT

-Sideordnede-
Ubuntu 14.04.1
Java Blues
Kryptering
CPU sikkerhed
Om denne site

Kort om digital signatur og kryptering i al almindelighed

- og GnuPG i særdeleshed.

Al den mistro

Lige siden der var mere end to mennesker på denne klode har der tilsyneladende været et ønske om at kunne kommunikere uden at nogen uvedkommende kunne 'kikke med'. Hvordan man op gennem historien har søgt at løse dette problem er faktisk en uhyre interessant historie i sig selv. Jeg må dog henvise interesserede til den righoldige litteratur på området, idet jeg her blot giver kort omtale teknikker til digital signering og kryptering, sådan som det kan være aktuelt i PC-verdenen.

Hvad er kryptering?

Man kan sige, at det er den proces, hvorved en såkaldt nøgle samt en meddelelse i klartekst sammenregnes til en ny kodet meddelelse. Den kodede (krypterede) meddelelse kan ikke læses (dekodes) uden adgang til nøglen. Dekryptering foregår som det modsatte regnestykke, hvorved den oprindelige meddelelse atter fremkommer.

Med dagens kraftige PC'ere findes programmer, der både kan bruges til genering af nøgler og til kryptering og dekryptering.

Symmetrisk kryptering

I ovenstående definition på hvad kryptering er, er der gjort den stiltiende antagelse at der kun benyttes en nøgle, som altså både afsender og modtager skal være i besiddelse af. Det skaber jo et problem. Når to eller flere parter overhovedet har (eller føler de har) et behov for at sende kodede meddelelser til hinanden, så er jo givetvis fordi de ikke har en sikker kommunikationsvej mellem sig. Og hvis de ikke har det, hvordan skal de så kunne udveksle nøgler? Catch 22...

Det var jo så her at kurerer, skæg og blå briller, tasker lænket til håndled, spioners hastige fortæring af kodeark før pågribelse og mere af samme skuffe var inde i billedet.

At en kodenøgle principielt bør udskiftes før hver ny meddelelse der sendes, gør jo blot problemet værre. Hvis en nøgle bruges for længe, og evt. medlyttere dermed får mulighed for at opsamle mange meddelser kodet med samme nøgle, så bliver det stadig lettere og lettere for disse skumle personer at knække koden, d.v.s at bestemme nøglen.

Asymmetrisk kryptering

Problemerne ved symmetrisk kryptering blev faktisk først løst omkring 1976. To kreative herrer udviklede en matematisk metode, der førte frem til, hvad der kaldes den asymmetriske kryptering.

I stedet for en genererer man nu to nøgler. Dette sammen med de anvendte krypterings- og dekrypteringsmetoder betyder, at en meddelelse krypteret med den ene nøgle kun kan dekrypteres med den anden - eller omvendt.

Vi lader lige billedet stå lidt: en meddelelse krypteret med den ene nøgle kun kan dekrypteres med den anden - eller omvendt.

Heraf betegnelsen asymmetrisk kryptering.

Praktisk brug

Lad os forestille os Alice og Bob, som har noget sammen. Af en eller anden grund hedder de to altid Alice og Bob i artikler om dette emne - så den tradition tør jeg ikke bryde.

Med brug af et passende program (GnuPG er et eksempel på et sådant) genererer de hver 2 nøgler: En privat og en offentlig. Den private eller hemmelige nøgle skal være virkelig privat - Den må aldrig komme uden for hjemmets fire vægge! Aldrig! Den offentlige nøgle derimod - ja, den er virkelig offentlig. Alice og Bob kunne for den sags skyld ha' den stående i telefonbogen, hvis den slags var muligt.

Eks. 1:

Nu vil Alice godt sende en meddelelse til Bob som kun han skal kunne læse. Det foregår på følgende måde:

  1. Alice krypterer meddelelsen med Bobs offentlige nøgle. Den kender hun jo, da den som sagt er offentlig.
  2. Eftersom den eneste nøgle i verden, der nu kan dekode meddelelsen er Bobs hemmelige nøgle, så er det jo kun Bob der kan læse meddelelsen.

Presto! Og det lader sig altså gøre, uden at det på noget tidspunkt har været nødvendigt at overføre 'hemmelige' kodenøgler parterne imellem.

Eks. 2:

Bob har noget betydningsfuldt at sige til verden, men det er meget vigtigt at alle, der ser meddelelsen (Alice m.fl.) kan være sikre på, at meddelelsen virkelig kommer fra Bob og ikke fra en eller anden svindler, der foregiver at være Bob. Fremgangsmåden er:

  1. Bob koder meddelelsen med sin hemmelige nøgle. Og den er det kun ham, der kender.
  2. Alle kan nu dekode meddelelsen med Bobs offentlige nøgle. Enhver der gør det ved, at eftersom Bobs offentlige nøgle kan dekode meddelelsen, så må den nødvendigvis være kodet med Bobs hemmelige nøgle - og den har kun Bob. Altså må Bob være forfatteren.

Ganske fikst ikke? Bare vent - der er mere...

Digital signatur - underskrift

Hvad er egentlig formålet med en underskrift? Det er vel at sikre at forfatteren virkelig er den han/hun giver sig ud for, og at meddelelsen ikke er blevet ændret på sin vej fra afsender til modtager.

Tænk lige på eks. 2 igen. Her var Bobs meddelelse til verden sådan set offentlig. Alle med adgang til de fornødne programmer kunne læse den og sikre sig, at Bob virkelig var ophavsmanden. Men man kunne måske godt ønske sig, at meddelelsen var læselig for alle - også de, der evt. ikke havde krypteringsprogrammer installeret. Har man ikke det, vil man ganske vist ikke kunne sikre sig den digitale signaturs ægthed; men læse meddelelsen kan man.

Altså: Hvad nu hvis kun den digitale signatur krypteres, men den egentlige tekst er læselig for alle? Det er just teknikken bag den digitale signatur.

Vi skal med andre ord ha' lavet en signatur. Det foregår ved, at selve meddelelsen sendes ind i et program, der så baseret på meddelelsens datastrøm (som enhver computerfil kan betragtes som) udregner et tal som vil være unikt for netop denne meddelelse. Dette tal betegnes i fagsproget som en 'hash-værdi' eller 'hash-value'. Uden at det har noget som helst med pusher street på Christania at gøre. Denne 'hash-værdi' kan betragtes som et unikt 'fingeraftryk' af den oprindelige meddelelse.

Selv den mindste ændring af meddelelsen vil give et helt forskelligt fingeraftryk. Det er denne egenskab, der sikrer, at enhver nok så lille ændring i meddelelsen straks kan opdages.

Hvis vi stoppede her med at tilføje en sådan signatur (hash-værdi eller fingeraftryk), så ville enhver, der vidste hvordan, jo ret let kunne ændre meddelelsen og derpå indsætte en ny signatur. Denne ville jo passe med den ændrede meddelelse, og så var vi lige vidt.

Jamn' kan man så ikke kryptere signaturen? Netop! Det er lige det, man gør.

Hvis nu Alice vil sende en meddelelse, hvor læserne skal kunne sikre sig, at meddelelsen vitterlig kommer fra Alice, og at den ikke er blevet ændret, siden hun signerede den, så er proceduren:

Eks. 3:

  1. Alice (eller rettere det program, hun bruger) genererer en hash-værdi for meddelelsen. Signaturen krypterer hun med sin private nøgle og inkluderer den i meddelelsen.
  2. Modtagerne kan nu uden videre læse den ukrypterede meddelelse - og nogen vil måske lade sig nøje med det.
  3. Men har man f.eks. GnuPG programmet installeret, så kan man desuden
    • dekode signaturen med Alices offentlige nøgle. Så ved man, at Alice er forfatteren.
    • udregne en ny hash-værdi og sammenligne med den dekodede. Er de ens, så ved vi også, at meddelelsen ikke er blevet ændret undervejs.

Voila! - Vi har opnået det, vi ønskede med signaturen.

Det er lettere, end det lyder.

Når man læser alle disse forklaringer, så får man måske det indtryk, at det hele er meget kompliceret. Det er det på sin vis også - men der findes flere programmer som udgør en slags mellemlag mellem den egentlige krypterings- og signerings software og de gængse e-mail programmer. Det indebærer, at de ovenfor omtalte procedurer (når først det hele er installeret), kan udføres med nogle få velvalgte kommandoer, eller med ditto museklik, hvis man er mere til det.

"Seahorse" er et eksempel på grafisk program til brugerfladen GNOME. Der findes også "KPGP" til KDE. En brugervejledning til den grundlæggende krypteringsmaskine kan findes her.

Så i praksis er det slet ikke så slemt, som det måske lyder.

Ingen ulemper overhovedet?

Jo - der en. Hvis Bob skal sende en kodet meddelelse til Alice, så skal han bruge hendes offentlige nøgle som beskrevet i eks. 1 ovenfor. Sikkeheden beror jo på, at det virkelig er Alices offentlige nøgle og ikke en falsk nøgle, der er plantet af en eller anden skummel person, der ønsker af læse med.

I GnuPG sammenhæng søges dette løst ved, at der er mulighed for at 'signere' andres nøgler og derved bekræfte, at de nu også tilhører den påståede ejermand.

Hvis f.eks. Alice ikke kender Charlie særlig godt, men har brug for hans offentlige nøgle, så kan man forestille sig, at Bob (som Alice har tillid til), har signeret Charlies offentlige nøgle. Når Alice ser det, kan hun føle sig overbevist om, at nøglen er Charlies.

Dette system kaldes ofte "The Web of Trust" (et netværk af tillid) i GnuPG verdenen.

En anden mulighed er at en af alle parter anerkendt myndighed eller firma opbevarer alle offentlige nøgler. Den pågældende myndighed har, da de fik overdraget nøglen sikret sig,at den tilhører den påståede ejermand. Når myndigheden er overbevist om ejerens identitet, kan denne myndighed så signere nøglen.

Afhængig af tillid til - eller mangel på samme - til centralt styrede systemer samt afhængig af, hvor paranoid man er, så kan man foretrække det ene eller det andet system; som jo sådan set ikke udelukker hinanden.

Marts 2010

'De Lyse Sider' senest opdateret: Wed Oct 4 11:44:23 2017