3. Moderne krypteringsmetoder 3.1 Konventionelle systemer De systemer, vi indtil nu har beskrevet, har alle den egenskab, at der ikke er nogen principiel forskel på enkrypterings- og dekrypteringsalgoritmen. Kender man den ene, kenderman også den anden. Sådanne systemer kaldes 1eonuentionelle kryptosystemer eller secret-key systemer. Vi kan tænke på denne metode som en god gammeldags rigellås, hvor der ingen principiel forskel er på at låse og låse op. Til begge operationer kræves den samme nøgle. Et konventionelt kryptosystem I 1977 blev det i dag mest udbredte konventionelle kryptosystem udviklet. Kryptosystemet, der kaldes DES, en forkortelse for Data Encryption Standard, blev udviklet afibm i samarbejde med National Bureau ofstandards i USA. DES anvendes kun til civil kryptering og er langt det mest udbredte system. Specielt er DES meget brugt i bankverdenen, også i DANKORT systemet. DES er fuldstændigt specificeret i en offentlig tilgængelig publikation, så h ver enkelt brugers eneste sikkerhed ligger i en hemmeligholdt nøgle. I DES anvendes en blanding afde to traditionelle krypteringsteknikker, substitution og transposition, der individuelt ikke yder ret megen sikkerhed; men i den kombination, hvori de udnyttes i DES, producerer de en kryptotekst, 50
som faktisk gør en kryptoanalyse særdeles svær. Den stort set eneste mulighed for at bryde DES systemet, der trods ihærdige anstrengelser kendes, er at foretage en udtømmende søgning, selvom en ny teknik differensanalyse - har reduceret kompleksiteten en anelse. Det vil føre alt for vidt at komme ind på algoritmen i alle enkeltheder, men et par detaljer skal dog omtales. I DES enkrypteres der ikke bogstav for bogstav, som vi er vant til, men blokke på 8 bogstaver (egentlig 64 bits) ad gangen. Der vælges en nøgle, og ud fra denne afledes yderligere 16 nøgler. Hver blok enkrypteres ved, at en krypteringsproces gennemløbes 16 gange, hvor der efter hvert gennemløb skiftes nøgle. Dekryptering kan foretages ved blot at gennemløbe hele DES algoritmen en gang til, men med de 16 afledte nøgler i omvendt rækkefølge. Den måde, hvorpå man afleder de 16 nøgler og danner kryptoteksten, er i princippet meget enkel, så enkel, at det er muligt at gøre det ved håndkraft, men det er et meget kedsommeligt og tidskrævende arbejde, der hovedsagelig består af trivielle bit manipulationer. Det betyder, at skal man bruge DES kryptosystemet, er man nødt til at have en computer til at klare enkrypte-ringen og dekrypteringen. Det eneste svaghedspunkt, der er blevet anført i den omfattende litteratur om DES, er, at hele sikkerheden beror på en valgt 56-bit nøgle. Der er således kun 2 56 nøglemuligheder, og det er i dag på grænsen af, hvad de allerkraftigste computere kan klare på rimelig tid ved udtømmende søgning. 3.2 Alice & Bob på scenen Som et beskrivelsesværktøj til de handlinger, der finder sted ved udveksling af meddelelser, introducerer vi begrebet protokoller: En protokol er en følge af handlinger, der involverer to eller flere personer, og som udfører en opgave. For at sætte kød og blod på benytter man ofte Alice og Bob i forbindelse med kryptologiske protokoller. Alice vil igangsætte alle protokoller, og Bob vil være modtageren. Lad os se på en uformel ikke-kryptologisk protokol, 51
hvor Alice bestiller en flaske af husets vin på en restaurant, hvor Bob er tjeneren. Opgaven, protokollen skal udføre, er at skaffe Alice en flaske vin til maden: (1) Alice bestiller en flaske af husets vin ved Bob (2) Bob henter flasken og viser Alice etiketten (3) Alice nikker (4) Bob åbner flasken, snuser til proppen og hælder en bundskjuler op i Alices glas (5) Alice smager på vinen og nikker (6) Bob hælder mere vin i glasset og stiller flasken foran Alice Protokollen skal følges fra start til slut. Hver handling skal være tilendebragt, før den næste handling påbegyndes. Det giver næppe vin til maden, hvis Alice afgiver sit nik i (3), før tjeneren henter flasken (2). Protokoller kræver endvidere: Alle involverede parter skal kende protokollen, rækkefølgen af de enkelte handlinger og indvillige i at følge protokollen. Protokollen skal være entydig og fuldstændig. Dvs. der må ikke være mulighed for misforståelser, og der skal være en handling for enhver mulig situation, der kan opstå. Der skal mindst være to deltagere i en protokol. En person kan alene udføre en række handlinger, der udfører en opgave, fx at åbne en flaske vin, men det er ikke nogen protokol. En anden person skal drikke vinen for at gøre handlingerne til en protokol. Hvad skal vi med protokoller? I dagligdagen er der et væld af uformelle face-to-face protokoller, der er kendt og accepteret af allc. Uformelle, fordi der sagten kan forekomme små afvigelser uden at den opgave, der skal udføres via protokollen, mislykkes. Fx kunne man forestille sig, at Bob smagte vinen til, før han skænkede i Alices glas. Alice ville alligevel få vin til maden, ganske vist i\ke helt så meget. Nu til dags, hvor mere og mere m nneskelig interaktion overtages af computere, er der behov for formelle protokoller, simpelthen fordi computere ikke besidder den menneskelige fleksibilitet. Ofte vil den mindste afvigelse fra protokollen resultere i, at ingen opgave bliver udført. 52
I analysen af kryptologiske protokoller får vi brug for personer, der ikke er direkte involveret i protokollen, men som angriber protokollen enten passivt eller aktivt (betydningen fremgår senere). Hvis der er tale om et passivt angreb, kalder vi angriberen Eve (Eavesdropper: lurer), og en aktiv angriber kalder vi Mallory (Malicious : ondskabsfuld). Protokol for et konventionelt kryptosystem (1) Alice og Bob enes om et kryptosystem (2) Alice og Bob enes om en nøgle (3) Alice enkrypterer sin klartekstmeddelelse ved hjælp af algoritmen og nøglen. (4) Alice sender kryptoteksten til Bob (5) Bob dekrypterer kryptoteksten med den samme algoritme og nøgle og læser det. Eve sidder mellem Alice og Bob og lytter med. Hvis hun kun får fat i transmissionen i (4) kan hun forsøge sig med en kryptoanalyse afkryptoteksten. Får Eve også fat i (1) og (2), kan hun det samme som Bob, nemlig dekryptere meddelelsen i (4). I alle gode kryptosystemer er kendskab til systemets indretning ingen hemmelighed, så (1) kan foregå i fuld offentlighed. Men i de samme gode systemer hviler hele sikkerheden på nøglen, og netop det gør nøgleudveksling så vigtig. Nøgler må altså udveksles i dybeste hemmelighed. De er lige så værdifulde, som alle de meddelelser, de enkrypterer, er tilsammen. Nøglen må hemmeligholdes før, under og efter protokollen - i modsat fald er meddelsen ikke længere sikker. Hvis nøglen findes ved kryptoanalyse, gættes eller afsløres på anden vis, kan Eve læse alle meddelelser, der transmitteres. Hvad værre er, hun kan udgive sig som værende en af de involverede parter i protokollen og skabe falske meddelelser, men så er hun ikke passiv længere. Hvad kan MallOl"y lave af ulykker? Eksempelvis kunne man tænke sig, at Mallory uden at kende den konkrete klartekst har kendskab til strukturen af teksten og derfor er i stand til fx at slette en enkrypteret sætning uden at kende det konkrete indhold, således at der intet spor efterlades, eller at han ved hjælp af tidligere tapning er i stand til at indføje ekstra information. Endelig kunne en mulighed være, at Mallory blot forvansker data- 53
strømmen, således at det, der dekrypteres i den anden ende, er meningsløst, hvilket måske ikke bemærkes, hvis modtageren blot er en database. Hvad med Alice? Hvad kan hun gøre for at ødelægge protokollen? Hun kan fx give nøglen til Eve, der så kan læse al kommunikation. Men det er ikke et problem ved protokollen, idet der på intet tidspunkt er noget, der forhindrer Alice i at give Eve klarteksten. Bob kan naturligvis gøre det samme. Protokollen forudsætter, at Alice og Bob er sammensvorne. 3.3 Behov for datasikkerhed I århundreder havde anvendelse af kryptografi kun et formål: At beskytte den information, der blev udvekslet mellem to sammensvorne, så tredie person ikke havde adgang til informationen, altså at sikre hemmeligholdelse, eller konfidentialitet, som det kaldes. Når der er tale om moderne kommunikation, for eksempel datatransmission og datalagring, er konfidentialitet kun et blandt flere krav, man må interessere sig for. De krav, vi kan være interesserede i, deles traditionelt op i autenticitet, konfidentialitet og integritet. Autenticitet Her er spørgsmålet, hvorvidt Bob nu også kan være sikker på, at Alice er den, hun giver sig ud for. Der kan her være tale om flere gradsforskelle. Normalt dækker udtrykket autenticitet blot det, at Alice kan bevise overfor Bob, at hun er Alice, hvilket ingen anden kan. En skærpelse er identifikation, hvor vi endvidere kræver, at Bob ikke kan bruge Alices bevis til selv at udgive sig som værende Alice. Da et konventionelt system er karakteriseret ved, at afsender og modtager deler samme nøgle, dvs. at de begge kan både enkryptere og dekryptere, er det altså umuligt at opnå identifikation med et konventionelt system, idet det principielt ikke er muligt for en tredie part at skelne mellem afsenderen Alice og modtageren Bob. Specielt kan det ikke bevises, at Alice har sendt en krypteret meddelelse til Bob - Bob kunne selv have produceret den. En subtil skærpelse afidentifikation er den situation, hvor Bob end ikke kan bevise over for sig selv, at han er Alice, altså hvor det ikke er muligt for Bob 54
alene at give blot et eksempel på en imaginær kommunikation, hvori Alice teoretisk set kunne have deltaget. Vi taler så om en digital signatur. En digital signatur er således erstatningen for en sædvanlig underskrift ved datatransmission. Den er bindende, da den kun kan frembringes af ejeren (Alice). I modsætning til almindelige gammelkendte underskrifter kan en digital signatur ikke eftergøres. Det viste sig ved en række banebrydende artikler af matematikere og dataloger i slutningen af 70'erne og begyndelsen af 80'erne, at dette kan opnås ved anvendelse af rent talteoretiske metoder, resultater, som indtil da havde været opfattet som et typisk grundforskningsområde uden nogen forudsigelig praktisk anvendelse. Konfidentialitet Herved forstås, at det skal være muligt for Alice og Bob at udveksle data på enkrypteret form, således at kryptoteksten, som Alice sender til Bob, kan dekrypteres igen hos Bob til den oprindelige klartekst, men at tredie person (Eve), ikke er i stand til at dekryptere på nogen måde (uden samarbejde fra Alice eller Bob). Integritet Integritet er opnået, hvis den klartekst, der enkrypteres i den ene ende, er den samme som den klartekst, der kommer frem ved dekryptering i den anden ende, eller i hvert fald, hvis dette ikke lykkes, så ved at det i det mindste er sikret, at modtageren opdager det. Det er vigtigt at gøre sig klart, at konfidentialitet i sig selv på ingen måde sikrer integritet. Ved datatransmission vil der vel altid være et ønske om integritet, mens man i visse situationer derudover kan være mere eller måske udelukkende interesseret i autenticitet, fx i forbindelse med en ordreafgivelse eller en økonomisk transaktion, såsom betaling fra en bankkonto. Gælder det derimod betaling af fx vægtafgift, er der vel ikke noget stort ønske om konfidentialitet, men der må være vished for i den anden ende, hvem pengene kommer fra. 55
3.4 Public key kryptosystemer Hvis en hel gruppe af personer skal kunne sende enkrypterede meddelelser til en bestemt person, Bob, skal alle i gruppen først udveksle nøgler med Bob, for at det konventionelle system skal kunne fungere. Man kan naturligvis ikke bruge identiske nøgler, idet det dels vil bevirke, at alle i gruppen kan læse de meddelelser, der er bestemt for Bob, og dels også vil give mulighed for at afsende falske meddelelser. Hvis alle i gruppen - lad os sige, der er N personer - skal kunne sende enkrypterede meddelelser til hinanden med et konventionelt system, skal der laves K(N,2) =N(N - 1)/2 nøgler. En gruppe på 10 personer kræver således 45 nøgler, og en gruppe på 100 personer kræver 4950 nøgler. I et moderne samfund, hvor elektronisk post er blevet en del afdagligdagen med et øget krav om sikkerhed til følge, er det uhensigtsmæssigt at benytte det konventionelle system. Det, man har brug for, er en slags elektronisk konvolut, som enhver meddelelse kan lægges i, som kan lukkes og sendes til en adressat, som skal være den eneste, der kan åbne konvolutten. Mere raffineret ville det være, hvis systemetvar således indrettet, at enhver person kunne vælge sig en "smæklås" for elektroniske konvolutter. Disse smæklåse offentliggøres i et kryptokatalog a la telefonbogen. Enhver der vil sende en krypteret meddelelse til Bob, slår da op i kryptokataloget, finder Bobs smæklås (dvs. metode til enkryptering), og enkrypterer med denne. Bob er nu (forhåbentlig) den eneste, der kan dekryptere meddelelsen, idet Bob er den eneste, som kender nøglen til smæklåsen (udfra kendskab til konstruktion af smæklåsen). Det var intet mindre end en sensation, da amerikanerne Whitfield Diffie og Martin Hellman i artiklen "New Directions in Cryptography" (976) pi-æsenterede et forslag til, hvorledes man kunne designe systemer med matematiske smæklåse. De definerede et kryptosystem, som de kaldte et public key kryptosystem og specificerede en række betingelser, som skal være opfyldte. Til forskel fra et konventionelt kryptosystem bruger et public key kryptosystem to forskellige nøgler. Den nøgle, P K (P for Public), som afsenderen skal benytte, er offentlig tilgængelig, men modtagerens nøgle, SK (S for Secret), er hemmelig. 56
Protokollen, der skal følges, ser således ud: Cl) Alice og Bob enes om et public key kryptosystem (2) Bob sender sin offentlige nøgle, P B, til Alice (3) Alice enkrypterer sin meddelelse med Bobs offentlige nøgle og sender den til Bob (4) Bob dekrypterer meddelelsen med sin hemmelige nøgle SB' Vi kan forfine protokollen, hvis vi antager, at Alice og Bob benytter samme system, og at der findes en pålidelig database med brugernes offentlige nøgler. Databasen skal vedligeholdes af en såkaldt certifikationsmyndighed, hvis principielle ansvar er at stå inde for brugernes identitet: (1) Alice slår Bobs offentlige nøgle, P B, op i databasen (2) Alice enkrypterer sin meddelelse med Bobs offentlige nøgle og sender den til Bob (3) Bob dekrypterer meddelelsen med sin hemmelige nøgle SB' Fordelen ved den sidste protokol er, at Bob først tager del, når han dekrypterer brevet. Det er i store træk den samme protokol, der benyttes, når man modtager et almindeligt brev med posten. Vi antager som tidligere, at kryptoteksten sendes via ubeskyttede kommunikationslinjer, således at en opponent vil kende både kryptotekst og nøglen P K, men ikke SKo Desuden antager vi, at både enkrypterings- og dekrypteringsalgoritmerne er offentligt kendte. Skematisk ser Diffie og Hellmans public key kryptosystem således ud: (Meddelelse) (offentlig nøgle transmission) 57
Med et public key system har vi opnået, at afsender og modtager ikke deler nogen hemmelig nøgleinformation, at al kommunikation kun involverer offentlige nøgler, og ingen hemmelig nøgle nogensinde bliver sendt. Vi kan tænke på et public key system som en smæklås, hvor alle og enhver kan låse, men kun den, der har nøglen, kan låse op. Et public hey 111yptosystem Som nævnt opstillede Diffie og Hellman en række betingelser, som et public key kryptosystem skal opfylde. Disse er (i en lidt ændret version): (1) Konstruktionen af nøglerne PJ< og SJ< skal være let. (2) Afsenderen A skallet kunne foretage krypteringen ved hjælp afp K og klarteksten M. (3) Modtageren B skallet kunne retablere klarteksten ved hjælp af den hemmelige nøgle SK og kryptoteksten. (4) Hvis en opponent prøver at bestemme den hemmelige nøgle SJ< udfra kendskab til PK,vil han stå overfor et beregningsmæssigt svært problem. (5) Kender en opponent den offentlige nøgle P K og en kryptotekst, skal bestemmelsen af klarteksten give et beregningsmæssigt svært problem. Ved et beregningsmæssigtsvært problem vil vi forstå en opgave, der nokkan løses, men som en computer ikke er i stand til atløse inden for en overskuelig tid - måske hundrede år, måske en milliard år ailiængig af det ønskede sikkerhedsniveau. Vi præciserer dette i afsnit 3.8. 58
3.5 Elektroniske dokumenter Det er ofte blevet påstået, at brugen afcomputere vil spare en masse papir. Ligeså ofte er dette blevet tilbagevist med det argument, at udskrifterne har en tendens til at vokse ukontrollabelt. Dermed er det blevet ved drømmen. Problemet er måske, at vi ikke rigtig tror på indholdet afet dokument, med mindre vi holder det i hånden. Vi kan så gemme det i en skuffe eller på en hylde i stedet for på en diskette eller et bånd, og så føler vi virkelig, at vi er herre over situationen. Nu er vi imidlertid ved at blive tvunget til at acceptere papirløse eller elektroniske meddelelser, og nye generationer vil få et helt andet forhold til det, vi kalder dokumenter. Revolutionen er den, at en række informationer, som tidligere blev anbragt på et stykke træfrit papir med en fin underskrift med fyldepen - og måske et par stempler for at være helt sikker - nu bliver transmitteret over et netværk uden nogensinde at have set skyggen afet stykke papir. Der er tale om handelsdokumenter forbundet med køb og salg, home-banking, toldformularer, handel med værdipapirer, etc. Alt sammen meget fint, og her kunne vi jo egentlig godt stoppe, hvis vi ikke stod tilbage med nogle store problemer: Hvordan sikrer vi, at alle parterer enige om, hvad det præcise indhold af et elektronisk dokument er? Er det den kopi, der ligger hos modtageren eller hos afsenderen, eller skal det ligge hos en uvildig tredjepart? Med andre ord: Hvordan definerer vi et elektronisk dokument? Hvordan sikrer vi, at afsenderen ikke kan nægte at have afsendt et dokument? Hvordan sikrer vi os, at modtageren ikke kan nægte at have modtaget et fuldstændigt identisk elektronisk dokument? For at lave en brugbar definition afet elektronisk dokument er vi nødt til at være en smule tekniske. I forbindelse med elektronisk kommunikation er al information repræsenteret binært, altså som sekvenser af O'er og l-taller (bits). Sådanne sekvenser vil vi kalde meddelelser. 59
Meddelelser skal kunne oversættes til bogstaver og tegn efter nogle ganske bestemte regler, man er enedes om (fx ASCII koder - se appendiks 1). Hvis det er muligt at læse den tekst, der således fremkommer, taler vi om en ineningsfuld meddelelse. Etelektronisk dokument kan herefter defineres som en bitkombination, der, sammen med et sæt regler, kan oversættes til en meningsfuld meddelelse. Det er vigtigt at bemærke, at langt de fleste bitkombinationer ikke giver anledning til nogen meningsfuld meddelelse, hvis de oversættes efter reglerne. Nøjagtig på samme måde giver langt de fleste bogstavkombinationer på dansk ikke ord, der findes i det danske sprog. 3.6 Digital signatur Traditionelle underskrifter med fyldepen har - eller i det mindste forventes at have - en række egenskabet, vi gerne vil have overført til digitale signaturer, dvs. underskrift af elektroniske dokumenter: en underskrift er autentisk - den kan kun frembringes af ejeren en underskrift kan ikke eftergøres en underskrift er en del afet dokument og kan ikke kan overflyttes til et andet dokument - dvs. en underskrift kan ikke genbruges et underskrevet dokument kan ikke ændres man kan ikke løbe fra sin underskrift Med et konventionelt kryptosystem til rådighed kan digital signatur kun opnås ved tilstedeværelsen af en uvildig tredjepart, som al kommunikation skal gå igennem. Antag, at vi har et public key kryptosystem til vor disposition. Hver enkelt bruger vælger et par af nøgler (P, S), h vor P er den offentlige nøgle og S er den hemmelige nøgle. Den offentlige nøgle registreres hos en såkaldt certifikationsmyndighed (CA, Certification Authority), hvis principielle ansvar er at stå inde for brugernes identitet. 60
Vi har allerede set, hvorledes hemmeligholdelse kan ske med et public key kryptosystem: Hvis Alice ønsker at sende en meddelelse (M) til Bob, så den hemmeligholdes undervejs, rekvirerer Alice Bobs offentlige nøgle hos CA og sender kryptoteksten C = PB(M), hvor PB(M) betegner meddelelsen Menkrypteret med nøglen P B' Kun Bob kan dekryptere C til noget meningsfyldt, da kun Bob kender SB og SB(C) = M. Læg mærke til, at Bob ingen garanti har for, at Alice er Alice. Enhver kunne jo udgive sig for Alice. Når Alice vælger sit nøglepar (PA' S), er det ligegyldigt, hvilken nøgle Alice offentliggør, og hvilken hun hemmeligholder. SA kan også bruges til enkryptering, men kun af Alice, idet kun hun kender SAo Hvis Alice enkrypterer et elektronisk dokument X med nøglen SA' altså laver kryptoteksten Y = SA(X), og sender det til Bob, kan Bob checke, at meddelelsen kommer fra Alice, idet Bob blot kan dekryptere meddelelsen med P A (som er offentlig). Hvis den tekst, PA(Y), der kommer frem, er meningsfuld, må SA have været anvendt. Da kun Alice kan enkryptere således, at PAkan dekrypteres til noget meningsfyldt, må Alice altså være afsenderen. Det, Alice har gjort ved at enkryptere et dokument X med sin hemmelige nøgle, er, at Alice har sat sin digitale signatur på X. Der er imidlertid en meget afgørende forskel på principperne ved traditionelle signaturer og digitale signaturer: En digital signatur er en kryptering af en klartekst. Til forskel fra traditionelle signaturer er det ikke således, at en digital signatur efterfølger en meddelelse, som fx kunne være en bindende kontrakt. Selve krypteringen af klarteksten er derimod signaturen. Endvidere er det vigtigt at gøre sig klart, at en digital signatur ikke er en kryptering i den forstand, at den skjuler noget, alle skulle jo helst være i stand til at checke signaturen! Signaturen er desuden bindende, da den kun kan frembringes af "ejeren". Protokollen til digital signatur ser således ud: 61
(1) Alice enkrypterer meddelelsen med sin hemmelige nøgle og sætter derved sin digitale signatur på meddelelsen (2) Alice sender den enkrypterede meddelelse til Bob (3) Bob dekrypterer meddelelsen med Alices offentlige nøgle og verificerer derved signaturen Da enhver (Eve) normalt antages at kunne tappe en sådan enkrypteret meddelelse, skal følgende være opfyldt: Signaturen skal gøres unik, fx ved i meddelelsen at indføje et tidsstempel. Hvis der, teoretisk set, kunne være flere brugere, som kunne have modtaget signaturen, skal det klart fremgå afklarteksten, hvem den er henvendt til. Tænk blot på, hvad der ellers kan ske, hvis Alice sender en digitalt underskrevet check til Bob uden tidsstempel og uden angivelse af, hvem checken er til. Med et public key kryptosystem kan både hemmeligholdelse og digital signatur opnås på en gang: Hvis Alice ønsker at sende M til Bob, så Bob har vished for, at meddelelsen kommer fra Alice, samtidig med at kun Bob, afalle, kan dekryptere, sender Alice kryptoteksten P B(SA(M)). Det er vigtigt, at der først krypteres med SA og dernæst med P B' således at det ikke er en kryptotekst, Alice sætter sin digitale signatur på. Hermed kan vi faktisk løse alle de problemer, der blev rejst i afsnit 3.3. Det kan altså i princippet lade sig gøre at udvikle systemer, som på en gang yder fuld autenticitet og hemmeligholdelse. 62
3.7 Historien om Alice og Bob Bob og Alice er meget forelskede i hinanden. Men Bob er rejst til udlandet for at arbejde, og nu kan han ikke holde det ud mere. Han savner Alice og vil giftes med hende. I baggrunden lurer en dunkel skikkelse fra Bobs fortid... T Jf& mm DI& 0& '\ Tr~l'>rPf.R vig MIN HAN]), PIN ~0J'; (}(l(),~ Il' Alke sidder i Onnmark...01' Hob i el :lnde! EF-land. DL' har hver 'jin [ermin;)! og kryplcrin,esudsl.'1'r Rob.~krivl:r el glcfcjcnur kærlighrdsbrev.....og sender etel lil Alict. Brevel et krypierti, med Alice's orrcnlli~(' no~lc Alice modtager brc\'cl, som hun håber er fra Bob. og dckryplcrer del med sin egen h{'m~ nh'lige nøgle Dorril hlh lyllt'1 med på linien, men kan ikke dt-kryptere kærlighedsbrevel (hun (,1 sk{'r o,eså Bob!) Alice er i tvivi. Er brevel virk{'li~ fra Bob? Sa Alice ringt't Iii Uoh.. Enhver kunne i \'irkeligllcden ho\'c sendt den kryplerrde besked - ulle jo kenc1er Alice's offentlige lio~le! 63 Rob elsker \'irkclig,\tiet'. <;:i han kr)"jh<'rrr br('"\('l i~(,"il. nll med sin CI:t'n ht'mll1~li~r no.a1r...
...og Alk\'. dt,kryplcrer med bunkcndr: h.lli':rtt' - o~ Hob's ohcnlh~c no~h' Nu holr hun \'ishe:d, Ol': bordtl rsn~er t'()r BQb. Han har jo ~Il sin digitaje signalllr pi..tt~le~ka b:hil buddel Mr:n en rs(t lru{'r den u(q~:e Iykh: forlovt.l ~~n -;kullr: h::jve vren-( hemm~lir - og Doni( I)'Uer nll'.d og Ulppt!r linjt:n rfx fx 1/ bb ~ ) - :/, k. D c ~c~ >" -.,G' -- (J{)@ W Hun 5u~ndrr jo Qg,så Bob'.:; ol'l'en(lige nø.tje og kiln d(:kryp(en~ 02 (æsi': :t:~lcsbbslil. btjddel find værn: er: Hun kan n~1 ogsj. trem' isr Bob' ~ d i~i(~lc' ",i~na(ut pi ec ægtesk:.ab!>(ilbud, ::;OI1l hon pa~l:~r er mhcnd~! Rob har nu lærl. :II næste g::m~, han rrem ~cnde( el æ~(r:5k3bhilhud...bl h... n dalt'tf' del o~.::km ~, hv~nl d('n udkll.tn{' ~C~ Og iøvti~1 - hvis han '\:lll\(idi;.t \'il holde ~il lilbud llcmmcligl_..... ~l( h~ll ~kal kr~'ptrrc o;in dlgil:th:: :>is:n\tlur med Ali,'{"'~ lil'r('nlh~{' nl)ji:lc' Hvh Dorrit "U l~li~'r mc'd, f j, hlln ",n 1:H'l:1!" nl!:'o;e.. "-lier: dd'r)'llh'rt'r ('ør!>1 den digilalc ~i~n:tlur m~'d,in egen hemmdigc ntl~ic', ~:\. kan hun dckr~'plert' b(t'n( m('d 60b', ortt:ntli~\' nugle ()~ la'~(' ::C:\!.[C':"okah-:hlblld Ild...nm hun IlIt v\'fj. C'r fra ham.....o~ hvi" hllll ('lin, \'11 h:l ham, L::lll tit' I~'n 1}'kL.('li~l III dereo; d;i'l:.{'" t'ndr,o01 1n:U16 0;2. kolli' - Ud{ n;ll UlIrrll \'C'et (kl~
5.6 RSA i praksis Det er klart, at RSA-enkryptering og dekryptering med så store tal, som vi så i forrige afsnit, bliver en temmelig langsom affære. Selvom det ved fornuftig programmering kan udføres forbavsende hurtigt, når hastigheden aldrig den, hvormed man med et godt konventionelt system som DES kan enkryptere en meddelelse - RSA er ca. 100 gange langsommere. Det ideelle ville være at kombinere de to systemers gode sider: Digitale signaturer og sikker nøgleudveksling i RSA kombineret med hurtigheden i DES. Drejer det sig blot om hemmeligholdelse, klares det elegant ved at benytte nedenstående protokol, kaldet RSA digital enuelope: (l) Alice vælger en tilfældig DES-nøgle (56 bits nøgle), som hun enkrypterer meddelsen med. (2) Alice RSA-enkrypterer DES-nøglen med Bobs offentlige nøgle Ps (3) Alice sender den DES-enkrypterede tekst og den RSA-enkrypterede nøgle til Bob. (4) Bob dekrypterer DES-nøglen med sin hemmelige nøgle SB og dekrypterer meddelelsen med den fremkomne DES-nøgle. Ønsker Alice at sætte sin digitale signatur på meddelelsen, bliver det straks noget vanskeligere. For at slippe for at sende hele meddelelsen gennem RSA møllen skal hun vha. en såkaldt hash-funktion (se p. 113) skabe et ekstrakt - et digitalt fingeraftryk - af meddelelsen. Alice enkrypterer herefter ekstraktet med sin hemmelige RSA-nøgle (SA) og sender det krypterede ekstrakt sammen med meddelelsen til Bob. Når Bob modtager brevet, dekrypterer han ekstraktet med Alices offentlige RSA-nøgle (PA) og laver herefter et ekstrakt af den modtagne meddelelse med den samme hash-funktion, som Alice benyttede. Hvis de to ekstrakter er identiske, har Bob verificeret signaturen og er sikker på, at meddelelsen er fra Alice. 112
Hash-funktioner skal være offentligt kendte, og hvis signaturer af digitale fingeraftryk skal kunne fungere, må der stilles nogle ret delikate krav til den hash-funktion, der skaber det digitale fingeraftryk. Men hvad er en hash-funktion? Vi forestiller os, at vores meddelelse er oversat i binær form (fx ved brug af ASCII-koden). En hash-funktion tager som input en binær streng (en meddelelse) af variabel længde og afleverer et output af fast længde. En meget simpel hash-funktion kunne tænkes lavet ved at XOR're (se p. 142) alle input bytes med hinanden (se hosstående illustration): Vi ser, at ligegyldig hvor lang meddelelsen er, vil denne hash-funktion aflevere en output streng på 8 bits. Det er let at se, at meddelelsen "Vi ses kl. 21" vil producere nøjagtig den samme hashværdi. Funktionen er derfor ikke velegnet til digitale signaturer, da det er let ændre i en meddelelse uden at ændre hashværdien. Det er desuden let at producere forskellige meddelelser med samme hashværdi: Da det kun er muligt at skabe 2 8 = 256 forskellige hashværdier, skal vi blot ved en udtømmende søgning (i værste fald) prøve med 257 forskellige meddelelser for at finde 2, der har den samme hashværdi. Meddelelse: Vi ses kl. 12 v 01010110 01101001 00100000 s 01110011 e 01100101 s 01110011 00100000 k 01101011 l 01101100 00101110 00100000 l 00110001 2 00110010 hashværdi: 01010000 Det, vi skal bruge til digitale fingeraftryk, er en envejs hash-funktion, hvor det er let at bestemme hashværdien af en meddelelse, men hvor det er praktisk umuligt at producere en meddelelse, der har en given hash-værdi. For at sikre mod udtømmende søgning betyder dette, at længden af hashværdien skal være rimelig stor - typisk 128 eller 160 bits, svarende til hhv. 10 38 eller 10 48 mulige hashværdier. Og ikke nok med det, selvom vi kender en meddelelse med tilhørende hashværdi, skal det være praktisk umuligt at ændre i meddelelsen, uden at hashværdien også ændres. I gode hash-funktioner vil ca. halvdelen af bittene i hashværdien ændres, hvis blot en bit ændres i meddelelsen (avalanche effekt). En anden central egenskab for gode hash-funktioner er, at det er et svært problem at finde to meddelelser Ml og M2, således at deres hash-værdier 113
er ens. Det betyder, at en underskrift på en hash-værdi af en meddelelse er lige så overbevisende som en underskrift på selve meddelelsen. Selvom vi ikke skal gå i detaljer med konstruktion af gode envejs hashfunktioner, kan vi roligt fastslå, at det er et arbejde for de virkelig professionelle. Mange hash-funktioner er blevet foreslået for kort efter at blive erklæret for sårbare overfor et eller andet angreb, og dermed ubrugelige. Indtil videre har Rivest's 12S-bits hash-funktion MD5 (MD for message digest) fra 1992 modstået alle angreb, og er som følge heraf et af de mest benyttede. Der findes dog også en standard på området, idet ISO har standardiseret metoder til at bygge en 12S-bits hash-funktion ud fra DES. Om man vælger den ene eller den anden, har man opnået, at hvad som helst kan underskrives med en eneste RSA operation. Vi kan herefter præcisere protokollen til digitale signaturer af digitale fingeraftryk: (1) Alice skaber en hashværdi af sin meddelelse med en envejs hashfunktion (2) Alice enkrypterer hashværdien med sin hemmelige RSA nøgle (3) Alice sender meddelelsen og den signerede hashværdi til Bob (4) Bob dekrypterer den signerede hashværdi med Alices offentlige RSAnøgle og skaber hashværdien af meddelelsen med den samme envejs hash-funktion, som Alice benyttede. Hvis de to fremkomne værdier er identiske, er signaturen verificeret. 5.7 Pretty Good Privacy - PGP PGP er et program til beskyttelse af e-mail, udviklet efter de principper, der er beskrevet i afsnit 5.6. Den første implementation afpgp, der så dagens lys i 1991, blev placeret som frit tilgængelig software på en computer på MIT (Massachusetts Institute og Technology). I løbet af ingen tid var programmet spredt over den ganske verden: "it just blows across the border like dandelion seeds blowing in the wind", som Phil Zimmermann, konstruktøren af PGP, så poeb!3k udtrykker di='t 114