Perspektiverende Datalogi 2014 Uge 39 Kryptologi Dette dokument beskriver en række opgaver. Diskutter opgaverne i små grupper, under vejledning af jeres instruktor. Tag opgaverne i den rækkefølge de optræder. Når alle grupper har haft rimelig tid til at finde et forslag til en løsningen, så vælger jeres instruktor en gruppe som præsenterer deres forslag til en løsning for resten af klassen. Det er fint hvis I ikke nåede alle delopgaver en (*)-markering, men hvis I gjorde, så præsenter endeligt også jeres løsning af disse stjerne-opgaver. Diskutter hinandens løsninger. Opgave 1: Visuel Kryptografi Til denne opgave skal I henvende jer til jeres instruktor og få udleveret tre slides, mærket NØGLE, CIFFERTEKST1 og CIFFERTEKST2. Først en lynhurtig reminder: et kryptosystem er en metode, der ud fra en nøgle til enkryptering og en klartekst kan producere en ciffertekst. Der skal desuden være en metode, som ud fra en passende nøgle til dekryptering og cifferteksten kan reproducere den oprindelige klartekst. Et kryptosystem er sikkert hvis det er svært og helst umuligt at få noget som helst at vide om klarteksten ud fra cifferteksten, medmindre man har dekrypteringsnøglen, naturligvis. Visuel kryptografi er opfundet af Adi Shamir fra Weizmann Institute of Science. Det er en teknik der tillader at kryptere billeder, så dekrypteringen kan foregå, simpelthen ved at bruge det blotte øje. Spørgsmål 1.1. Prøv at placere ciffertekst 1 ovenpå nøglen (de skal placeres meget nøjagtigt over hinanden). Hvad ser I? Teknikken virker således: man tænker på det oprindelige billede som en samling sorte eller hvide firkanter, kaldet pixels. Hver af disse deles op i 4 mindre firkanter, kaldet underpixels. Man laver så både nøgle og ciffertekst med det samme antal pixels som det oprindelige billede, men hvor hver pixel nu består af 2 sorte og 2 hvide underpixels. Man vælger mellem flg. 2 mønstre A B
Ciffertekst og nøgle konstrueres som følger. For hver pixelposition vælges der til nøglen fuldstændig tilfældigt mellem A og B. Til cifferteksten: for hver pixelposition, hvis det oprindelige billede er hvidt her, så vælg det samme mønster som nøglen, hvis det er sort, så vælg det modsatte af det der er i nøglen. Det man udnytter er naturligvis, at A lagt ovenpå B er helt sort, mens A ovenpå A eller B ovenpå B er gråt, eller ser i alt fald gråt ud på afstand. Så når man lægger nøgle og ciffertekst ovenpå hinanden, så ser man det oprindelige sort/hvide billede i en sort/grå udgave. Spørgsmål 1.2 Argumentér for, at hvis man ser en ciffertekst, men ikke kender nøglen, så har man overhovedet ingen ide om hvilket billede der er krypteret. Systemet er imidlertid kun sikkert hvis nøglen bruges én gang, m.a.o., hvis man sender to forskellige ciffertekster, lavet ud fra den samme nøgle, så vil man kunne få information om begge de billeder der er sendt, alene ud fra cifferteksterne. Spørgsmål 1.3 Læg ciffertekst 2 ovenpå nøglen. Hvad ser I denne gang? Spørgsmål 1.4 Læg de to ciffertekster ovenpå hinanden. Hvad ser I? Og hvorfor? Spørgsmål 1.5(*) Prøv at designe et udvidet system, der gør flg.: når man ser på cifferteksten og på nøglen hver for sig, så ser man et billede på dem begge (ikke nødvendigvis det samme). Ikke desto mindre, hvis man lægger dem ovenpå hinanden, så er begge billeder væk, og man ser i stedet et nyt billede, som der før ingen spor var af, hverken i ciffertekst eller nøgle. Hint: man er nødt til i visse tilfælde at bruge pixels med 3 sorte og en hvid underpixel. Argumenter (uformelt) for at jeres udvidede system er sikkert. Opgave 2: Traditionel (Symmetrisk) Kryptering Flg., ikke særlig avancerede krypteringsmetode, siges at have været brugt af den romerske kejser Julius Cæsar, og er derfor kendt under navnet Cæsar substitution. Vi beskriver den her som den ville virke hvis man bruger den til at kryptere meddelelser skrevet i det engelske alfabet, hvor der er 26 bogstaver. Den hemmelige nøgle er et tal k, valgt mellem mulighederne 0,1,2,, 25. Man krypterer nu hvert bogstav i teksten for sig, ved at forskyde alfabetet cyklisk med k pladser, dvs. hvert bogstav erstattes med det bogstav der er k pladser længere henne i alfabetet hvis dette bringer os forbi det sidste bogstav (z), så begynder vi forfra med a. Eksempel Hvis k=3 (vi skriver krypterede bogstaver med stort): a b c... w x y z D E F... Z A B C
Hvis man skal bryde kryptosystemer, er det tit en god hjælp at kende noget til hvordan den tekst der er krypteret opfører sig statistisk. På engelsk ved man f.eks. at de enkelte bogstaver forekommer med omtrent flg. sandsynligheder a b c d e f g h i j k l m.082.015.028.043.127.022.020.061.070.002.008.040.024 n o p q r s t u v w x y z.067.075.019.001.060.063.091.028.010.023.001.020.001 I store træk er denne fordeling ikke særlig forskellig fra de fleste vesteuropæiske sprog. Her kommer et eksempel på en engelsk tekst, der er krypteret med Cæsar substitution. Teksten er delt op i grupper af 5 bogstaver for at gøre det lettere at få overblik, men det har ikke noget med den oprindelige opdeling i ord at gøre. BMPBE EUXXQ MKXFX ERBGM XKXLM BGZMH LXXBY TGRHG XPBEE UKXTD MAXVH WXXOX GMAHZ AMAXM XQMPT LGHMV AHLXG MHLAH PTMRI BVTEY KXJNX GVRHY EXMMX KL Spørgsmål 2.1 Find klarteksten. Skriv mindst de første par ord af den, og lidt om hvordan I fandt løsningen En lidt mere avanceret form er generel substitution, hvor man erstatter bogstaverne efter en helt vilkårlig, men fast regel. F.eks.: a kan erstattes med Y, b med C, d med Q, osv. Her kan man tænke på nøglen som en tabel der viser hvilke bogstaver der svarer til hinanden. Eneste begrænsning er at man ikke kan erstatte f.eks. både c og d med X, for så kan man ikke rekonstruere den oprindelige tekst. Der er naturligvis langt flere muligheder for nøglen end ved Cæsar substitution: a kan erstattes med et vilkårligt bogstav, b også med et vilkårligt bogstav, dog skal det jo være forskelligt fra det man bruger for a, osv. Spørgsmål 2.2 Hvis vi bruger det engelske alfabet, hvor mange muligheder er der så for valg af nøgle i en generel substitution? Forestil jer at I får givet en ciffertekst og prøver at bryde den ved at prøve samtlige mulige nøgler, indtil I finder en, der giver en meningsfuld klartekst. Hvis det tager jer 1 minut at prøve en nøgle, hvor mange dage ville hele angrebet så tage i værste fald? På trods af hvad svaret på 2.2 måske kunne antyde, kan generel substitution ikke desto mindre brydes forholdsvis let! Spørgsmål 2.3 Kom med et par ideer til hvordan I ville bryde en generel substitution. Hvad er det første I ville gøre? Og derefter?
Spørgsmål 2.4(*) Find klarteksten (på engelsk) svarende til flg. ciffertekst, konstrueret med generel substitution. Hint: F svarer til w, og ordet wheelbarrow forekommer i klarteksten. Beskriv hvordan I brød cifferteksten. EMGLO SUDCG DNCUS WYSFH NSFCY KDPUM LWGYI COXYS IPJCK QPKUG KMGOL ICGIN CGACK SNISA CYKZS CKXEC JCKSH YSXCG OIDPK ZCNKS HICGI WYGKK GKGOL DSILK GOIUS IGLED SPWZU GFZCC NDGYY SFUSZ CNXEO JNCGY EOWEU PXEZG ACGNF GLKNS ACIGO IYCKX CJUCI UZCFZ CCNDG YYSFE UEKUZ CSOCF ZCCNC IACZE JNCSH FZEJZ EGMXC YHCJU MGKUC Y Spørgsmål 2.5(*) Allerede for adskillige hundreder år siden forslog en franskmand ved navn Vigenaire noget, der kunne løse problemet med at frekvenser af bogstaver kan ses i cifferteksten. Han foreslog at bruge T forskellige Cæsar substitutioner. Så nøglen består altså af T tal k 1, k 2,...k T. Lad os sige at klarteksten består af bogstaverne m 1, m 2, m 3,. Så krypterer vi m 1 med nøglen k 1 ved hjælp af Cæsar substitution, altså m 1 erstattes med bogstavet k 1 pladser længere henne i alfabetet. Vi krypterer m 2 med nøglen k 2, osv., indtil vi har krypteret m T med nøglen k T. Herefter begynder vi forfra med k 1, og krypterer m T+1 med k 1, osv. Et ofte forekommende bogstav som e vil nu blive taget under behandling af forskellige nøgler, og vil derfor blive krypteret til forskellige bogstaver i cifferteksten. Så med et tilstrækkeligt stort T kan man få en næsten helt flad frekvensfordeling i cifferteksten. Find en metode til ikke desto mindre at bryde Vigenaire s kryptosystem. Hint: start med at argumentere for at det ville være let nok, hvis vi bare kendte T. Find dernæst en metode til at finde T. Opgave 3. En-vejs Funktioner og Public-Key kryptering. Symmetrisk eller konventionel kryptering som I har set i den foregående opgave har naturligvis udviklet sig meget. Man har i dag systemer som kan bruges i praksis, og som ingen har været i stand til at bryde. Ikke desto mindre har alle symmetriske systemer et fundamentalt problem: man kan ikke sende noget som helst inden man har aftalt hvilken nøgle man bruger. I gamle dage var det måske til at leve med at man skulle mødes først og aftale nøglen, men hvis man skal kommunikere sikkert med en tilfældig netbutik i USA, så går den naturligvis ikke! Ved første øjekast kunne det imidlertid se ud som om der er et uløseligt problem her: hvis to personer Alice og Bob aldrig har mødt hinanden før, hvordan skulle de så kunne udveksle en meddelelse som ingen andre kan se? Symmetrisk kryptering virker fordi ingen andre end Alice og Bob kender nøglen. Men hvis der ikke er nogen hemmelig nøgle fra starten, og fjenden kan se alt hvad du sender, hvordan kommer du så i gang? Her er en lille hjernevrider, som illustrerer at det ikke er så umuligt endda: Spørgsmål 3.1 Bob vil gerne sende en hemmelig meddelelse M til Alice. Bob har en kasse, der kan låses med hængelås, og en hængelås med tilhørende nøgle. Alice har også
en hængelås med tilhørende nøgle. Alice og Bob har ikke mulighed for at mødes og udveksle låse eller nøgler på forhånd (ellers ville det jo være alt for let). Eneste mulighed er putte noget i kassen og sende den med posten. Det er garanteret at Postvæsenet altid afleverer kassen til den, den er adresseret til. Men hvis kassen ikke er låst kan de godt finde på at åbne den og se på indholdet eller manipulere med det. Find en metode Bob kan bruge til at sende M til Alice, så ingen andre kan få fat i M. I må kun bruge kassen og de låse og nøgler Alice og Bob har fra starten. Vi antager naturligvis, at det ikke er muligt at åbne en hængelås eller bryde ind i en låst kasse uden at have den nøgle der hører til. Hint: I skal bruge begge hængelåse. Spørgsmål 3.1 kunne også have været løst hvis vi havde været villige til at antage mere pålidelighed hos Postvæsenet, og noget som ikke er helt rimeligt når vi bruger hængelåse, men som giver mening hvis vi bruger digital information: antag at Alice fremstiller en enorm mængde kopier af en bestemt hængelås, hvor hun er den eneste der har den tilhørende nøgle. Og antag videre, at hun deponerer et helt lager af dem hos Post Danmark, som vil udlevere den rigtige hængelås til hvem som helst der spørger efter en kopi af Alice s hængelås. Nu kunne Bob bare gå på posthuset, og sende en kasse til Alice, låst med netop hendes hængelås. Alice er jo den eneste der kan låse op. Det her virker fordi en hængelås er en slags mekanisk envejs-funktion : hvem som helst kan smække en hængelås, men den er straks sværere at åbne igen, med mindre man har nøglen. Altså, det er nemt den ene vej, men svært i den modsatte retning. Det er sådan public-key kryptografi virker: hver person har to nøgler, en privat og en offentlig. Hængelåsen svarer til Alice s offentlige nøgle, mens nøglen der kan åbne den er hans private nøgle. Pointen er nu, løst sagt, at der findes matematiske funktioner der opfører sig på samme måde: givet et input og en beskrivelse af funktionen er det let at beregne funktionsværdien på dette input. Men det er svært at komme den anden vej med mindre man har adgang til noget ekstra inside information. Derfor kan vi erstatte hængelåsen med digital information, der beskriver hvordan man beregner funktionen. Mens den private nøgle fortæller hvordan man nemt kommer tilbage. Her er en illustration af en beregning der kun er let den ene vej. Det er ikke så svært at multiplicere 3 og 5 og få 15. Det modsatte kaldes at faktorisere, og her består problemet i at skrive et heltal som produkt af to mindre tal. Så hvis opgaven er 21, så er svaret 3,7 (det er snyd at sige 1, 21 J ). Spørgsmål 3.2 Udfør flg. forsøg: vælg to personer fra holdet, og udstyr dem med blyant og papir eller hver sin lommeregner, så længe I kun bruger de 4 regningsarter (hvis der er en indbygget faktoriseringsfunktion er det snyd at bruge den!). Vælg også en tidtager. Den ene forsøgsperson ganger tal sammen, den anden faktoriserer. Når I er klar, får I en liste med opgaver udleveret ved instruktoren. Begge personer skal på 5 minutter løse så mange opgaver som muligt. Præsentationen af denne opgave består af at få de andre hold til at rapportere deres tal. Skriv dem op på tavlen i to kolonner. Hvad er mønstret.
Den asymmetri I formentlig har set her, bliver forstørret enormt op, når tallene bliver rigtig store: selv med de hurtigst kendte metoder tager det flere millioner år at faktorisere tal der er 500 cifre eller mere, dvs. det er i praksis umuligt. Til gengæld tager det på en anstændig computer få hundrededele af et sekund at gange to tal med 250 cifre sammen, og få et 500 cifre langt tal. Dette er basis for det mest anvendte public-key system, RSA. Til RSA vælger Alice først to store primtal p og q, og ganger dem sammen. Resultatet kaldes n =pq. Så vælges et tal e, og den offentlige nøgle er så parret (n,e). Den kan Alice fx offentliggøre i en (digital) telefonbog. Til sidst bruger Alice p, q og e til at beregne et hemmeligt tal d på en særlig måde, som det fører for vidt at forklare her. Den private nøgle er nu parret (n,d). Bemærk selvom hvem som helst kan få n og e at se, så kan ingen andre end Alice finde ud af hvad p og q er hvis ellers vi har valgt tilstrækkelig store tal og derfor kan man heller ikke finde d. (n,d) er min private nøgle. Ingen andre kender d, for de kan ikke faktorisere n. Som alle andre kender jeg Alice s offentlige nøgle (n,e). Alice Bob Baby Eksempel Vi kunne have p=3 og q=11. Det ville give n=33. Det viser sig så, at vi f.eks. kan bruge e=7 og d=3. M Let Svært, med mindre man kender den private nøgle C
De meddelelser vi kan sende, er tal mellem 0 og n-1, altså tallene fra 0 til 32 i eksemplet. Givet en offentlig nøgle (n,e) kan man enkryptere et tal M ved at gøre flg: man ganger M med sig selv e gange, så man får M e. Til sidst dividerer man med n og finder resten ved denne division. Denne rest er resultatet, cifferteksten om man vil. Vi skriver det således: C = M e mod n Hvilket altså er notation for tallet man får ved at opløfte M til e te potens, dividere med n og finde resten. Man dekrypterer et krypteret tal C ved at beregne C d mod n Så tallene e og d er altså på snedig vis valgt præcis sådan, at hvis man starter med et vilkårligt M, beregner C= M e mod n, og derefter C d mod n, så kommer man altid tilbage til M. Derfor er den funktion, der afbilder M i M e mod n præcis sådan en envejsfunktion som vi var ude efter før. Hvis man skal kunne regne sig baglæns fra M e mod n til M, så skal man kende d, og det kræver at man kan faktorisere n hvilket i praksis er umuligt. Selvfølgelig ikke når n er 33, men når tallene er store nok... Spørgsmål 3.3 Brug eksemplet ovenfor med offentlig nøgle (33,7) og private nøgle (33,3). Enkrypter meddelelserne 2 og 5. Check at dekryptering virker som forventet. Spørgsmål 3.4(*) Faktisk er reglen for at finde d ud fra p,q, og e at man skal vælge d sådan at ed er 1 modulo (p-1)(q-1), altså når man dividerer ed med (p-1)(q-1), så får man 1 til rest. I eksemplet med n=33 er (p-1)(q-1) jo 20, og vi påstod at med e=3 skal vi have d=7. Og ed= 21 giver jo netop 1 til rest når man dividerer med 20. Hvad skulle d være hvis vi havde valgt e=11? (Hint: svaret ligger altid mellem 1 og (p-1)(q-1), og har ingen primfaktorer fælles med (p-1)(q-1)). Bryd RSA nøglen n= 323, e=5 ved at faktorisere n og finde det tilhørende d. Beskriv hvad du gjorde. Spørgsmål 3.5(*) Et godt kryptosystem brugt forkert kan meget vel føre til usikre systemer. Her er et eksempel: lad os sige at Bob bestemmer sig til at sende en meddelelse til Alice ved hjælp af RSA på flg. måde: Bob laver hvert bogstav i klarteksten om til et tal på sædvanlig måde: A bliver til 0, B bliver til 1, osv. Vi antager at han bruger det engelske alfabet, så han får tal fra 0 til 25 ud af dette. Hvert bogstav krypterer han nu for sig ved at bruge Alices offentlige nøgle (n,e), så han sender altså et tal for hvert bogstav i klarteksten. Beskriv hvordan denne krypteringsmetode let kan brydes. Dekrypter nedenstående ciffertekst, som er krypteret med den beskrevne metode, og offentlig nøgle (18721,25), uden at faktorisere 18721. Beskriv hvad du gjorde. 365, 0, 4845, 14930, 2608, 2608, 0. Opgave 4: Digitale Signaturer De foregående opgaver har handlet om at holde data hemmelige. I praksis er det mindst lige så vigtigt at sørge for at data er autentiske. Når jeg modtager en meddelelse, hvordan kan jeg så vide at den faktisk er sendt af den person den ser ud til at komme fra, og ikke er blevet manipuleret med undervejs? Denne form for sikkerhed er indlysende vigtig, når man fx sender meddelelser til sin bank om at overføre penge til andre. Det er ikke svært at komme i tanker om folk der kunne have en interesse i at lave om på beløbet eller
angivelsen af hvem der skal modtage pengene. Hvis det handler om dokumenter på papir, kan afsenderen sætte sin underskrift på. Hvis det derimod er et elektronisk dokument, har vi brug for det digitale modstykke til en underskrift, altså en digital signatur. Det er ikke helt ligetil at lave en system til digitale signaturer, der virker og også er sikkert: Spørgsmål 4.1 Alice vil gerne skrive under på en e-mail. Hun scanner sin håndskrevne underskrift ind, og hæfter den ved mailen når hun sender den. Heldigvis har hun nogle venner der tager det perspektiverende datalogikursus ved Århus Universitet, som kan fortælle hende hvorfor det er en ualmindelig ringe ide. Hvad siger de til hende? En underskrift er nødt til at afhænge af meddelelsen. Derfor viser flg. sig at være en god ide: for at skrive under på en meddelelse M skal Alice gøre noget ved M, som ingen andre kunne have gjort. Det kan vi sørge for at hun kan, hvis hun har en hemmelig nøgle SA til et public-key krypterings-system, hvor alle andre kender den offentlige nøgle PA. Det kunne fint være RSA nøgler som dem vi så i opgave 3. Lidt notation: hvis man enkrypterer meddelelse M med den offentlige nøgle PA, så vil vi kalde det resultat (ciffertekst) man får PA(M). Tilsvarende, hvis man dekrypterer en ciffertekst C med den hemmelige nøgle SA, så får man en klartekst vi vil kalde for SA(C). Ethvert public-key system har den egenskab, at hvis man først enkrypterer M med den offentlige nøgle, og så dekrypterer med den hemmelige nøgle, så kommer man tilbage til den samme meddelelse man startede med, altså med den notation vi lige indførte før: M= SA(PA(M)). Vi vil nu forlange at der gælder det samme selvom man bruger nøglerne i den omvendte rækkefølge, altså RSA har heldigvis præcis denne egenskab. M= PA(SA(M)). Så normalt er det altså meningen at SA skal bruges til at behandle krypterede data med, men her vender vi tingene på hovedet: vi lader Alice bruge sin hemmelige nøgle på meddelelsen M. Det kommer der et eller andet stykke data S ud af, sikkert uforståeligt nonsens, men det gør ikke noget. Ideen er nu at bruge S som Alices underskrift på M. Spørgsmål 4.2 Alice sender et glødende kærlighedsbrev M til Bob, og vedlægger også sin underskrift S= SA(M). Hvordan kan Bob bruge Alices offentlige nøgle PA til at verificere underskriften? Alices værste fjende Eva er vild med Bob og ville utrolig gerne erstatte M med en meddelelse M' hvor Alice siger farvel for altid til Bob. Argumenter (uformelt) for hvorfor det ikke er muligt for Eva.
Spørgsmål 4.3 Brug baby eksemplet fra opgave 3, hvor vi havde en offentlig RSA nøgle n=33, e=3 og med hemmelig nøgle d=7. Hvad er underskriften på meddelelsen M=2? Ovenfor har vi stiltiende antaget at Bob allerede har den offentlige nøgle han skal bruge for at kontrollere Alices underskrift. I praksis er den nøgle naturligvis nødt til at komme et eller andet sted fra, f.eks. kan det være Bob på sin maskine har en database hvor han kan slå offentlige nøgler op for dem han kommunikerer med stort f set det samme som telefonnummerlisten i en mobiltelefon. Spørgsmål 4.4 Antag at Bob opbevarer offentlige nøgler i en database som beskrevet ovenfor på sin PC. Alice og Bob er stadig forelskede, og Eva er præcis lige så jaloux som før. Bob har offentlige nøgler for både Alice og Eva på sin liste. En mørk og storfuld nat bryder Eva ind på Bobs PC, og får adgang til at se og evt. manipulere med Bobs liste med offentlige nøgler uden at Bob opdager noget. Beskriv hvad hun kan gøre for at ødelægge forholdet mellem Alice og Bob. Drag en generel konklusion omkring hvordan offentlige signatur nøgler skal behandles. Spørgsmål 4.5(*) Vi påstod ovenfor at RSA har den egenskab der er nødvendig for digitale underskrifter: det er lige meget i hvilken rækkefølge vi bruger den offentlige og den hemmelige nøgle, vi kommer altid tilbage til den meddelelse vi startede med. Husk, at a mod n står for den rest man får når man divider a med n. Man kan vise at der for vilkårlige tal a,b gælder at ((a mod n) b) mod n = (ab) mod n. Med andre ord, når man ganger en flok tal sammen og slutter med at dividere med n og tage resten, så er det lige meget om man også gør det én eller flere gange undervejs, slutresultatet bliver alligevel det samme. Brug dette til at vise, at der for RSA gælder, at PA(SA(M)) = SA(PA(M)). Opgave 5: Identifikation En af de mest fundamentale opgave man skal kunne løse i et sikkert computer system er at identificere de folk der prøver at komme i kontakt med systemet. I har sikkert alle sammen prøvet at logge jer på et system eller en Web side, og er blevet bedt om brugernavn og password. Den metode til identifikation bygger naturligvis på en antagelse om, at det kun er mig der kender mit password. Men hvis jeg hver gang skal identificere mig ved at sende mit password til den anden side, så kan hvem som helst der aflytter nettet samle mit password op og derefter udgive sig for mig. Det er ikke svært i praksis at aflytte kommunikation, og der er masser af eksempler på at det er blevet gjort. Her er en ide til en metode, der ikke udleverer privat information: lad os sige at Alice gerne vil identificere sig overfor Bob, og lad os også sige at Alice har en offentlig nøgle PA og en privat nøgle SA. Det kunne være RSA nøgler som dem vi så i Opgave 3. Den offentlige nøgle kan hvem som helst bruge til at enkryptere, og Bob kender den
naturligvis lige så vel som alle andre. Den private nøgle kender kun Alice, så hun er den eneste der kan dekryptere. Så hvis Bob ude i verden møder en person, der faktisk er i stand til at dekryptere meddelelser der er enkrypteret med PA, så må det jo være Alice! Så hvad med flg. metode: Bob Alice Bob vælger en meddelelse M tilfældigt blandt en endelig mængde S af muligheder. M enkrypteres med PA, og resultatet C sendes til Alice C M Alice dekrypterer C ved hjælp af SA, og sender resultatet M til Bob Bob modtager en meddelelse, og checker at den er identisk med det M han valgte før. Hvis ja, accepterer han, og tror på at han taler med Alice. Ellers afviser han. Spørgsmål 5.1. Lad os sige at krypteringen er fuldstændig sikker, dvs. hvis man ser en ciffertekst og ikke lige hedder Alice, så har man overhovedet ingen ide om hvad klarteksten er. Hvis nu Alice s gamle fjende Eva forsøger at udgive sig for Alice, hvor stor sandsynlighed har hun så for at få Bob til at acceptere? Bemærk at vi må antage at hun kender mængden af muligheder S, som Bob vælger M fra. Selvom Bob kan være tilfreds med denne metode, er det jo ikke sikkert Alice kan. Fra hendes synspunkt er det vigtigt at der ikke bliver afsløret privat information. Det kan godt se ud som om der heller ikke er noget problem her: Bob får dekrypteret den ciffertekst han selv har lavet, så når Alice sender M til ham, så ved Bob allerede hvad der vil blive sagt. Så Bob får ikke noget at vide, han ikke vidste i forvejen. Men er det nu rigtigt? Hvad hvis Bob ikke følger reglerne? Hvad nu hvis Bob har samlet en ciffertekst Y op på nettet som en eller anden har sendt til Alice. Så kan Bob sende Y til Alice i stedet for C og få den dekrypteret ganske gratis! Det dur naturligvis ikke. Løsningen består i at sørge
for at Alice ikke afslører svaret (M) før hun er sikker på at Bob også kender M allerede. Vi beskriver for nemheds skyld løsningen ved hjælp af kasser og nøgler: Bob Bob vælger en meddelelse M tilfældigt blandt en mængde S af muligheder. M krypteres med PA, og resultatet C sendes til Alice C M Alice Alice dekrypterer C ved hjælp af SA, og sender resultatet M til Bob, i en låst kasse Efter at Bob har modtaget den låste kasse, sender han M til Alice M Alice modtager en meddelelse og checker at det er den samme som hun puttede i kassen lige før. Hvis ja, sender hun nøglen til kassen til Bob, ellers stopper hun. Bob forsøger at åbne kassen. Hvis nøglen ikke passer, eller hvis indholdet ikke er det rigtige M, afviser han, ellers tror han på han taler med Alice I virkeligheden vil vi naturligvis erstatte kassen og nøglen med noget passende kryptering, men det er ret ligegyldigt for analysen her. Spørgsmål 5.2 Argumenter for, at hvis vi bruger denne metode i stedet for den første, så har Eva ikke større sandsynlighed end før for at snyde Bob, hvis hun prøver at udgive sig for Alice. Spørgsmål 5.3 Argumenter for at med denne metode vil Bob, ligegyldigt hvad han stiller op, enten få intet at vide eller også få noget at vide, han allerede vidste i forvejen.
Hint: når Bob skal sende klarteksten M, så er der 2 muligheder: enten sender han det rigtige, altså den klartekst der faktisk svarer til C, eller også noget forkert. Se på de to muligheder hver for sig. Dette er et eksempel på noget der hedder zero-knowledge beviser: Alice påstår hun kender sin egen hemmelige nøgle og overbeviser Bob om at påstanden er sand i alt fald hinsides al rimelig tvivl. Men herudover får han får intet som helst nyt at vide. Spørgsmål 5.4(*) Kom med et konkret forslag til hvordan man kan erstatte kasse og nøgler ovenfor med noget passende kryptering. Argumenter (uformelt) for at forslaget dur. Opgave 6: Sikre Flerpartsberegninger Indtil videre har vi kigget på problemstillinger med bare to parter som ønsker at dele en hemmelighed m. En anden del af kryptografien, kaldet sikre flerpartsberegninger, kigger på problemstillingen hvor flere parter ønsker at regne på deres samlede data for at udtrække fx noget statistik, men hvor ingen af parterne vil røbe deres private data. Et vigtigt værktøj kaldes secret sharing. Secret sharing tillader at gemme en hemmelig værdi på et antal servere sådan at alle servere skal hackes for at hemmeligheden lækker. Her er et eksempel med tre servere og hvor der regnes modulo 10. Alice vil gemme en hemmelighed s=5. Hun vælger tre tilfældige tal a, b og c, som summer til s modulo 10, fx a=8, b=3 og c=4. Så gemmer hun a på server 1, b på server 2 og c på server 3. Senere kan kun så hente værdierne igen og genberegne s. Indtil da er værdien sikker medmindre alle tre servere hackes. Spørgsmål 6.1. Betragt flg. to tilfælde: Alice har gemt a=2 på server 1, har gemt b=7 på server 2 og har gemt c=5 på server 3. Hvad er den tilsvarende hemmelighed s? Alice har gemt hemmelighed s=6. På server 1 er der gemt a=4 og på server 2 er der gemt b=7. Hvilket c er der gemt på server 3? Spørgsmål 6.2. En hacker er brudt ind på server 1 og server 2 og har set at Alice har gemt a=8 hhv. b=5. Hun overvejer hvad Alices hemmelighed mon er. For hver af de mulige værdier af c=0,1,,9 som kunne være gemt på server 3, angiv hvilken værdi af s der svarer til denne værdi af c. Hvilken egenskab bemærker du ved de ti mulige værdier for s? Brug observationen til at konkludere at hackeren ikke har lært noget som helst om s ved at se at a=8 og b=5.
Spørgsmål 6.3.(*) Betragt flg. tabel som beskriver en situation hvor Alice har distribueret s=5 og hvor Bob har distribueret s=7. s a b c Alice 5 8 3 4 Bob 7 6 9 2 Sum mod 10 2 4 2 6 Server 1 holder værdierne 8 hhv. 6. Server 2 holder værdierne 3 hhv. 9, og server 3 holder værdierne 4 hhv. 2. Hvis hver server adderer sine dele modulo 10 så får de hhv. 4, 2 og 6. Disse værdier viser sig at være en distribuering af 2, da 4+2+6=2 mod 10. De oprindelige hemmeligheder distribueret af Alice og Bob var 5 og 7, og 5+7 er også lig 2 modolu 10. Argumentér for at dette ikke er et tilfælde. Brug denne observation til at beskrive et system hvorved et antal personer kan bruge tre servere til at beregne summen af deres løn på en sådan måde at ingen persons løn lækkes til de andre personer eller til nogen af serverne. I må antage at der er perfekt sikre kanaller mellem alle serverne, dvs., serverne kan sende værdier til hinanden uden at andre kan se hvad der bliver sendt. På samme vis må I antage at serverne kan sende sikkert til og modtage sikkert fra alle personerne. Argumentér for at jeres løsning er korrekt. Argumentere uformelt for at jeres løsning også er sikker, hvor sikker her betyder at ingen person kan lære noget som helst om hvad en anden persons løn er (udover at lære hvad summen af lønninger er), selv hvis hun bryder ind i to af serverne efter protokollen har kørt og ser hvad disse to servere har sendt og modtaget. Spørgsmål 6.4.(*) Antag at Alice og Bob har delt to hemmeligheder s og t mellem tre servere, som fx 5 og 7 i den ovenstående tabel. Beskriv en protokol som tillader de tre servere at beregne en secret sharing af s gange t modulo 10 på en sikker måde. Argumentér for korrekthed og argumentér uformelt for sikkerhed. Antag at serverne kan tale sikkert sammen og lad sikkerhed af systemet betyde at ingen individuel server lærer noget som helst nyt om hvad hemmelighederne er. Afleveringsopgave Aflevér et velpræsenteret, velargumenteret løsningsforslag for en af flg. (sæt) af opgaver: Opgave 1.5 Opgave 2.4 Opgave 2.5 Opgave sæt 3.4+3.5 Opgave 4.5 Opgave 6.3 Opgave 6.4 Med velpræsenteret menes at afleveringen er skrevet på et letlæseligt og korrekt dansk eller engelsk, og at den siger det der skal siges og ikke mere. Med velargumenteret menes at I ud over et løsningsforslag også giver argumenter for hvordan I kom frem til dette
løsningforslag og hvorfor I mener det er et korrekt løsningsforslag. En korrekt løsning uden argumenter er ikke en velargumenteret aflevering.