MATEMATIK I SÄKERHETENS TJÄNST OM KODNING OCH KRYPTERING 1



Relevanta dokument
Den mest väsentliga skillnaden mellan

NÅGOT OM KRYPTERING. Kapitel 1

RSA-kryptering och primalitetstest

Primtal, faktorisering och RSA

Offentlig kryptering

Utdrag från Verklighetens Kvadratrötter: Sida 1 en bok om matematikens användningsområden skriven av Marcus Näslund. Mer info:

MA2047 Algebra och diskret matematik

Kryptering och primtalsfaktorisering

Grundfrågor för kryptosystem

Krypteringteknologier. Sidorna ( ) i boken

Några satser ur talteorin

Grundläggande kryptering & chiffer

Grundläggande krypto och kryptering

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

Kryptografi: en blandning av datavetenskap, matematik och tillämpningar

TALTEORI FÖR ALLA 1 Juliusz Brzezinski

repetitionskoder blockkoder Felrättande koder

Krypteringens historia och användningsområden

Matematikens Element. Vad är matematik. Är detta matematik? Anders Fällström Institutionen för matematik och matematisk statistik Umeå universitet

Att forcera Caesar-krypto är inte så svårt. Antalet möjliga nycklar är bara

ÄNDLIGT OCH OÄNDLIGT AVSNITT 4

Kryptering HEMLIG SKRIFT SUBSTITUTION STEGANOGRAFI KRYPTOGRAFI

Kryptering. Av: Johan Westerlund Kurs: Utveckling av webbapplicationer Termin: VT2015 Lärare: Per Sahlin

Efternamn förnamn pnr programkod

Övning 6 - Tillämpad datalogi 2012

Metoder för sekretess, integritet och autenticering

RSA-kryptografi för gymnasiet. Jonas Gustafsson & Isac Olofsson

Lösningsförslag till övningsuppgifter, del V

KOMBINATORIK. Exempel 1. Motivera att det bland 11 naturliga tal finns minst två som slutar på samma

Hemligheternas Matematik

Kryptografi: en blandning av datavetenskap, matematik och tillämpningar

Föreläsning 7. Felrättande koder

MATEMATIKENS SPRÅK. Avsnitt 1

Kryptering & Chiffer Del 2

POLYNOM OCH POLYNOMEKVATIONER

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 14 augusti, 2002

Kryptering. Krypteringsmetoder

Vektorgeometri för gymnasister

Kryptografi - När är det säkert? Föreläsningens innehåll. Kryptografi - Kryptoanalys. Kryptering - Huvudsyfte. Kryptografi - Viktiga roller

Hjalpmedel: Inga hjalpmedel ar tillatna pa tentamensskrivningen. 1. (3p) Los ekvationen 13x + 18 = 13 i ringen Z 64.

DIGITAL KOMMUNIKATION

Moderna krypteringssystem

Hela tal LCB 1999/2000

x 23 + y 160 = 1, 2 23 = ,

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

Datasäkerhet. Petter Ericson

Övningshäfte 3: Polynom och polynomekvationer

Lösning till tentamensskrivning i Diskret Matematik, SF1610 och 5B1118, torsdagen den 21 oktober 2010, kl

Dagens föreläsning. Datasäkerhet. Tidig historik. Kryptografi

2 (6) k 0 2 (7) n 1 F k F n. k F k F n F k F n F n 1 2 (8)

Kryptoteknik. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)

Algebra och kryptografi Facit till udda uppgifter

Objektorienterad Programkonstruktion. Föreläsning 16 8 feb 2016

Introduktion till krypteringsmetoderna RSA och Merkle-Hellman

PRIMTALEN, MULTIPLIKATION OCH DIOFANTISKA EKVATIONER

Explorativ övning 4 ÄNDLIGT OCH OÄNDLIGT. Övning A

Lösning till tentamensskrivning på kursen Diskret Matematik, moment B, för D2 och F, SF1631 och SF1630, den 1 juni 2011 kl

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 11 april, 2002

256bit Security AB Offentligt dokument

SJÄLVSTÄNDIGA ARBETEN I MATEMATIK

Programmeringsolympiaden 2010 Kvalificering

σ 1 = (531)(64782), τ 1 = (18)(27)(36)(45), τ 1 σ 1 = (423871)(56).

Vektorgeometri för gymnasister

Matematik 5 Kap 2 Diskret matematik II

.I Minkowskis gitterpunktssats

18 juni 2007, 240 minuter Inga hjälpmedel, förutom skrivmateriel. Betygsgränser: 15p. för Godkänd, 24p. för Väl Godkänd (av maximalt 36p.

Javadoc. Internet, WorldWideWeb, HTML, och Java. Webbläsarkomponenten. JEditorPane p. HyperlinkListener. Javadoc exempel:

Nämnarens kryptoskola fördjupning. Enkel transposition

Detta ger oss att kanalkapaciteten för den ursprungliga kanalen är C = q 1 C 1 + q 2 C C =1 h ( ) 0.30.

Byggmästarkrypto lärarsida

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

Lösningsförslag till tentamensskrivning i SF1610 Diskret Matematik för CINTE 30 maj 2018, kl

En introduktion till några klassiska chiffer

Matematik 3000 Diskret Matematik

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik

1 De fyra fundamentala underrummen till en matris

Föreläsninsanteckningar till föreläsning 1: Introduktion

Skydd för känsliga data

Explorativ övning 5 MATEMATISK INDUKTION

DEL I. Matematiska Institutionen KTH

Aritmetisk kodning. F (0) = 0 Exempel: A = {1, 2, 3} k=1. Källkodning fö 5 p.1/12

Shannon-Fano-Elias-kodning

Låt n vara ett heltal som är 2 eller större. Om a och b är två heltal så säger vi att. a b (mod n)

F2 Datarepresentation talbaser, dataformat och teckenkodning

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Reed-Solomon-koder i ett McElieces kryptosystem

Lösning till tentamensskrivning i Diskret Matematik för CINTE och CMETE, m fl, SF1610, tisdagen den 2 juni 2015, kl

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

E-legitimationer. Jonas Wiman. LKDATA Linköpings Kommun.

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

Mer om analytisk geometri

S =(s e )modn. s =(S d )modn. s =(s e ) d mod n.

För att använda sifferkrypto använder man en rektangel om 5 gånger 6 bokstäver.

Erik Östergren lärarutbildningen, 5hp HT 2015

4. Bestäm alla trippler n 2, n, n + 2 av heltal som samtliga är primtal. 5. Skriv upp additions- och multiplikationstabellen för räkning modulo 4.

ARITMETIK 3. Stockholms universitet Matematiska institutionen Avd matematik Torbjörn Tambour

DEL I. Matematiska Institutionen KTH

PGP håller posten hemlig

, S(6, 2). = = = =

Transkript:

1 MATEMATIK I SÄKERHETENS TJÄNST OM KODNING OCH KRYPTERING 1 Juliusz Brzezinski Säkerhet i tekniska sammanhang associeras mycket ofta med säkra hus, säkra bilar, säkra broar, säkra telefonförbindelser och överhuvudtaget med nästan all teknik som vi använder i vardagliga situationer. Det är faktiskt matematik ibland enkel ibland mycket komplicerad som oftast ger sitt bidrag till vår säkerhet i alla dessa sammanhang. Idag vill jag dock ta upp två mycket aktuella områden där matematiska teorier spelar en dominerande roll när det gäller mycket viktiga säkerhetsfrågor. Man kan säga att matematiken själv skapar och garanterar säkerhet. Dessa två områden är kodning och kryptering och bägge bygger på och utvecklas tack vare ett mycket gammalt, mycket klassiskt och mycket vitalt område inom matematiken som kallas talteori. Kodningsteorin tillämpas på felkorrigering vid dataöverföring, medan krypteringsteorin används i samband med olika säkerhetssystem vid datakommunikation. Låt mig börja med algebraisk kodningsteori som ligger något närmare mina personliga intressen. I många kommunikationssystem översätter man information till följder av nollor och ettor. Antag att man vill sända två meddelanden A och B. Det enklaste sättet är att översätta: A 0, B 1. Överföringen sker med hjälp av t ex ledningar eller radiovågor eller på något annat sätt. Resultatet kan bli att beroende på störningar i kommunikationskanalen nollan förvandlas till en etta eller tvärtom. Finns det någon möjlighet att skydda sig mot en sådan störning? En möjlig lösning är att upprepa A och B till exempel två gånger dvs A 00, B 11. 1 prel. version 010507, vetenskapsfestivalen den 7 maj 2001

2 Om den mottagna sekvensen är nu 01 eller 10 så kan man konstatera att det har inträffat ett fel. Med andra ord kan man upptäcka ett fel. Låt oss gå vidare och upprepa A och B tre gånger dvs (1) A 000, B 111. Situationen har förbättrats avsevärt. Om det inträffar högst ett fel i A eller B så får man följande sekvenser av signaler: A 000, 100, 010, 001, B 111, 011, 101, 110. Nu kan man inte bara upptäcka högst ett fel utan också korrigera det. Om man nämligen har högst ett fel i A så får man en sekvens ur övre raden, däremot ger högst ett fel i B alltid en sekvens ur nedre raden. Detta betyder att högst ett fel i A kan aldrig leda till en sekvens som är ett resultat av högst ett fel i B. Om man får en sekvens ur övre raden och man antar att det har inträffat högst ett fel så kan man korrekt avläsa meddelandet som A. På samma sätt kan man sluta sig till B om man får en sekvens ur nedre raden. Detta är det enklaste exemplet på en felkorrigerande kod. Rent allmänt kan man beskriva situationen på följande sätt: Man har en mängd av meddelanden X och en metod att översätta dessa meddelanden till sekvenser av 0 och 1 som kallas kodord. Alla dessa kodord som vi kan beteckna med C kallas för en kod. Varje sekvens av 0 och 1 (inte nödvändigtvis ett kodord) kallar man för en vektor. I vårt exempel består X av två meddelanden, koden C är 000 och 111. Det finns dessutom 6 vektorer av längden 3 som inte är kodord: 100, 010, 001, 110, 101, 011. Vad är det som gör att koden i vårt exempel kan korrigera 1 fel? Svaret är att högst ett fel i ett av kodorden inte kan sammanblanda den resulterande vektorn med de vektorer som man får då högst ett fel inträffar i ett annat kodord. Hur kan man uttrycka den egenskapen i matematiska termer? Man kan säga att två olika kodord måste skilja sig på minst tre olika ställen. Detta är just den förutsättning som garanterar att ett fel i det ena kodordet inte kan ge upphov till en vektor som är ett resultat av ett fel i ett annat kodord. Vi summerar:

3 En kod korrigerar 1 fel om varje par av kodord skiljer sig på minst tre olika ställen. Innan vi konstruerar mera effektiva koder låt oss bara tänka en stund på möjligheten att kunna korrigera två fel då man sänder två meddelanden. Om som tidigare är dessa meddelanden A och B så kan vi översätta: A 00000, B 11111. Högst två fel i första kodordet 00000 ger högst två ettor, högst två fel i andra kodordet 11111 ger minst tre ettor. Alltså tolereras två fel av denna kod meddelandet kan rekonstrueras även om två fel inträffar. Om vi däremot gjorde så att A 0000, B 1111, så kunde två fel i A ge samma resultat som två fel i B (t ex 0011). Detta visar att genom repetition av meddelanden kan man i princip korrigera ett godtyckligt antal fel. I praktiska sammanhang testar man vanligen olika kanaler och vet vilket antal fel bör korrigeras för att kanalen skall vara tillförlitlig. Vi skall begränsa oss till koder som korrigerar 1 fel. T ex har våra vanliga miniräknare en inbyggd kod som korrigerar ett fel den berömda Hammingkoden som vi diskuterar om en liten stund. Vår metod att skicka bara två korta meddelanden ja och nej och upprepa varje tre eller fem gånger ter sig inte speciellt effektiv. I praktiska sammanhang måste man skicka många och ofta långa meddelanden. Även om tekniken kan förbättras avsevärt är huvudidèen detsamma: om man har flera meddelanden måste dessa översättas till kodord (dvs sekvenser av nollor och ettor) på ett sådant sätt att olika kodord måste ligga tillräckligt långt ifrån varandra. Om man t ex vill kunna rätta (högst) ett fel så måste kodorden skilja sig på minst tre olika ställen. Om detta villkor gäller så kan inte ett fel i ett av kodorden ge samma sekvens som ett fel i ett annat kodord. Kan man konstruera koder på ett mera intelligent sätt? Som exempel låt oss betrakta 4 meddelanden A, B, C, D. Vi skall också numrera våra meddelanden med nollor och ettor. Två meddelanden A och B kunde vi beteckna med 0 och 1, och vår repetitionskod som korrigerar

4 1 fel kan vi då skriva som: 0 000, 1 111. Om vi har fyra meddelanden kan vi anteckna dessa med 00, 01, 10 och 11. Vi vill konstruera en kod som korrigerar ett fel. Därför vill vi välja de fyra kodorden så att två godtyckliga kodord skiljer sig på minst 3 ställen. Att repetera varje meddelande tre gånger skulle ge sekvenser av längden 6 dvs A = 0 0 0 0 0 0 0 0 B = 0 1 0 1 0 1 0 1 C = 1 0 1 0 1 0 1 0 D = 1 1 1 1 1 1 1 1 Kan man göra samma sak bättre? Kan vi konstruera 4 kortare kodord som också ligger tillräckligt långt ifrån varandra? Låt oss försöka med sekvenser av längd 5 i stället för 6: a b a b c d e A = 0 0 0 0 0 0 0 B = 0 1 0 1 0 1 1 C = 1 0 1 0 1 0 1 D = 1 1 1 1 1 1 0 Vi väljer c, d, e så att c = a, d = b och e = a + b. Vi summerar ettor och nollor enligt den binära aritmetikens lagar dvs enligt additionstabellen: + 0 1 0 0 1 1 1 0 Nu kan vi jämföra alla de fyra sekvenserna som svarar mot A, B, C, D och konstaterar lätt att två godtyckliga av dessa 4 sekvenser skiljer sig på minst tre olika ställen. På det sättet har vi fått en 1 fel korrigerande kod. Låt oss observera att de första två symbolerna i varje kodord betecknar vårt meddelande. De övriga 3 räknas ut i den binära aritmetiken i enlighet med visa bestämda regler. Dessa kontrollsymboler påminner om kontrollsiffran i våra personnummer (den sista siffran som kan beräknas med hjälp av de föregående kan användas till att upptäcka att personnumret inte är korrekt).

5 Kodorden ovan är uppbygda med hjälp av 3 kontrollsiffror c, d, e som räknas med hjälp av de föregående på ett bestämt sätt. Vi kan inte beskriva principer för den konstruktionen i detta korta föredrag, men det är just algebraiska kunskaper, och i synnerhet den binära aritmetikens egenskaper som ligger bakom den konstruktionen. Innan vi går vidare till Hamminkoden som är ännu mera effektiv låt oss uppskatta den vinst som vi har gjort i förhållande till repetitionskoden med kodorden av längden 6. Om vi sänder fyra meddelanden så behöver vi skicka 20 signaler (0 eller 1) då vi använder den sista koden. Repetitionskoden kräver i stället 24 signaler. Det är inte så stor vinst, men om tänker sig en lång sekvens av t ex på 10 000 meddelanden som delas i 2500 paket med fyra meddelanden per paket så blir vinsten 10 000 signaler. Den troligen mest berömda av alla 1 fel korrigerande koder är Hamminkoden som föreslagits år 1949 av den amerikanske matematikern Hamming och startade utvecklingen av den algebraiska kodningsteorin. Idag är teorin mycket omfattande och flera matematiker i hela världen arbetar med olika konstruktioner av effektiva koder som har stora tillämpningar i samband med säker dataöverföring. En av de första tillämpningarna var användning av algebraiska koder vid dataöverföring mellan avlägsna satelliter och markstationer på Jorden. Här är det en blid av planetens Mars yta som sändes år 1972 från satelliten Mariner 9. Då använde man en algebraisk kod som heter Reed Muller koden. (ev bilden från Mariner) En av de enklaste Hammingkoder korrigerar ett fel och kan se ut så här:

6 a b c d a b c d e f g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1. Här är a, b, c, d våra informationssymboler (dvs a, b, c, d betecknar olika meddelanden (sammanlagt 16 stycken) och e, f, g är kontrollsiffrorna som räknas ut på följande sätt e = a + b + d, f = a + c + d, g = b + c + d. Hammingsrecept på kontrollsymbolerna är mycket enkel att förklara, men tidramarna tillåter inte en vidare diskussion just nu. Hamminkoden är verkligen mycket effektiv. Om vi skulle repetera varje meddelande 3 gånger så hade vi använt 16 12 = 192 signaler (nollor och ettor). Samma effekt får man genom att använda 16 7 = 112 signaler. Om man har 10000 meddelanden uppdelade i 625 block om 16 meddelanden per block så blir vinsten 70 625 = 43750 signaler i förhållande till repetitionskoden! Mera om algebraiska koder kan man läsa i flera bra läroböcker. Jag kommer att lägga ut en kort stencil under adressen: http://www.math.chalmers.se/ jub/vetenskap.2001 Låt mig nu berätta i några ord om kryptering som är en mycket gammal teori med rötter långt tillbaka i vår civilisations historia. Det finns en mycket intressant bok av Simon Singh som i den svenska upplagan heter Kodboken. Boken (trots sin titel som kan associeras med kodningsteori) handlar just om kryptering. Den inleds med en berättelse som börjar onsdagen

7 den femtonde oktober 1586 då Maria Stuart ställdes inför domstolen för att dömas för högförräderi. I sina kontakter med konspiratörerna mot den regerande drottningen Elisabet använde hon en chifferskrift som domaren lyckades dechiffrera. Men egentligen börjar krypteringteorins historia mycket tidigare. Redan för 4000 år sedan i Egypten använde man mycket enkla krypteringssystem. Senare under antikens tid i Grekland och Rom för 2500 år sedan använde man olika typer av hemliga skrifter för att upprätthålla kommunikation mellan militära förband. Den mest berömda är troligen Julius Caesars chiffer ( Caesarkrypto ) som är en form av en cirkulär translation av ett vanligt alfabet ett antal platser till höger eller till vänster. För en ganska lång tid sedan ingick i den amerikanska armèns utrustning en speciell krypteringssnurra som användes för att praktiskt kunna utnyttja Caesarkrypto: (BILD med CAESARKRYPTO, SNURRA) Caesars berömda fras: VENI, VIDI, VICI ( Jag kom, jag såg, jag segrade ) krypteras med hjälp av denna till BKTO, BOJO, BOIO. Jag har inte tid för att kunna redogöra för krypteringsteorins historia som är mycket rik och lång. Därför låt mig hänvisa till Simon Singhs bok som är en ganska bra referens även om boken fick en del negativ kritik för några historiska felaktigheter. I varje fall är den mycket intressant liksom Singhs första bok om Fermats sista sats som är en av de mest intressanta böcker om matematik som har skrivits. Boken fanns på bestseller-listan i England under flera veckor och nu finns i en svensk pocket -upplaga. Om man vill bekanta sig med allmänna termer och en mycket kortfattad beskrivning av kryptologi är artikeln i Nationalencyklopedin att rekommendera. En bra historisk bok är David Kahn s The Codebreakers utgiven av Scribner år 1996. En riktig bra lärobok är A. Menezes, P. van Oorschot och S. Vanstones Handbook of Applied Cryptology utgiven av CRC Press som är tillgänglig på nätet under adressen www.cacr.math.uwaterloo.ca/hac (BILDER litteratur om kryptering, Arne Beurling, Enigma) Det gemensamma draget hos alla krypteringssystem som användes fram till slutet av 1970 talet var att de var symmetriska. Varje krypteringssystem kan uppfattas på följande sätt: e / / klartext kryptotext / / osäker kanal kryptotext / d klartext En funktion (dvs ett recept) som beskriver övergången från klartext till

8 kryptotext betecknas här med e och kallas krypteringsnyckel, medan den omvända funktionen från kryptotext till klartext betecknas här med d och kallas dekrypteringsnyckeln. Dessa beteckningar kommer från de engelska termerna encryption och decryption. Man säger att krypteringsmetoden är symmetrisk om det är enkelt att bestämma dekrypteringsmetoden (dekkrypteringsnyckeln) då krypteringsmetoden (krypteringsnyckeln) är känd. Man kallar mycket ofta sådana metoder för en-nyckel system eller privat nyckel system eller för konventionella system. Caesarskrypto är ett enkelt exempel om man vet att kryptering innebär att man skiftar varje bokstav tre platser åt höger i alfabetet så vet man att dekryptering kan genomföras genom att skifta varje bokstav tre platser åt vänster i samma alfabet. Symmetriska krypteringsmetoder har flera fördelar, men de har en stor nackdel man måste utbyta kryperings och dekrypteringsnyckel innan kommunikation kan etableras. Detta innebär mycket stora risker. År 1976 publicerade två matematiker Whitfield Diffie and Martin Hellman ett 10 sidigt arbete med titeln New directions in cryptography i IEEE Transections on Information Theory. I detta arbeta introducerade författarna en idè om så kallade envägsfunktioner och asymmetriska krypteringssystem. Den nya tekniken kallades för Öppen nyckel kryptosystem ( public key cryptography ) och i Diffi Hellmans arbete byggde på så kallade diskreta logaritmer. Asymmetriska krypteringssystem eliminerar behovet av ett utbyte av krypterings och dekryperingsnycklar. På det sättet revolutionerade Diffie Hellmans idè hela kryptologin. Den har fått en mycket stor betydelse för dagens kommunikationssystem som kräver hög säkerhetsnivå vid dataöverföring. Idèn öppnade vägen för användning av kryptologin inte bara av militärer, spioner och diplomater utan av var och en av oss i olika vardagliga sammanhang när vi tar ut våra pengar från bankautomater, när vi loggar in på en dator eller betalar med våra kreditkort genom internet. Det intressanta är att Diffie Hellmans idè var snarare teoretisk än praktisk när den publicerades. Två år senare kom tre matematiker Ron Rivest, Adi Shamir och Leonard Adleman med den första praktiska konstruktionen av ett öppet krypteringssystem som idag kallas för RSA krypto. RSA metoden publicerades år 1978 i ett kort arbete med titeln A method for obtaining digital signatures and public key cryptosystems i Communications av the ACM. Låt mig beskriva RSA metoden och samtidigt förklara vad man menar med envägsfunktioner, diskreta logaritmer och ett asymmetriskt krypteringssys-

9 tem. Utgångspunkten för Diffi Hellmans metod var tanken på att krypteringssystem skall byggas så att det är mycket lätt att kryptera och mycket svårt att dekryptera. Det är rentav så att alla får veta hur man krypterar (känner till krypteringsnyckeln), men enbart den som skall ta emot meddelanden vet hur man dekrypterar (känner till dekrypteringsnyckeln). Dessa omständigheter gör att metoder av den typen kallas asymmetriska. Den regel som säger hur man krypterar kallas för en envägsfunktion därför att i praktiken måste det vara mycket svårt att rekonstruera den andra vägen från den krypterade texten till klartexten. Låt oss betrakta ett exempel. Vi betecknar meddelanden med 1,2,3,4,5,6,7,8,9,10. Vår krypteringsfunktion definieras så att man krypterar meddelandet x till resten av 7 x vid division med med 11. Detta innebär att 1 7 2 5 3 2 4 3 5 10 6 4 7 6 8 9 9 8 10 1 dvs man krypterar 1 till 7 (därför att resten vid division av 7 1 med 11 är 7, 2 till 5 (därför att resten vid division av 7 2 = 49 med 11 är 5 osv. Man kan säga att det är mycket lätt att kryptera, men det är mycket svårare att dekryptera: om vi t ex vet det krypterade meddelandet är 4. Vad är klartexten? Vi måste lösa ekvationen 7 x = 4. Det är inte helt banalt att beräkna x även om det är inte svårt att göra det just i vårt exempel. Man kan säga att krypteringen är enkel, medan dekrypteringen är svår. Om man ersätter 11 med ett mycket stort tal blir uppgiften mycket svår. Talet x kallas just diskreta logaritmen av 4 (i bas 7 modulo 11). Namnet kommer från vanliga logaritmer i bas 10 som är lösningar till ekvationer 10 x = ett positivt tal. RSA krypto bygger på en liknande princip. En person som brukar kallas Alice, vilket förkortas till A, vill ta emot meddelanden. Hon väljer två stycken mycket stora primtal p och q (vanligen med c:a 150 siffror). Primtalen är

10 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 47,... dvs positiva heltal som saknar delare större än 1 och mindre än talet självt. Alice räknar därefter N = pq och dessutom väljer ett heltal e som inte delar p 1 och q 1. Hon publicerar N och e som är krypteringsnyckeln, men behåller hemligt både p och q. Hon publicerar också en ordbok som säger att A skall översättas till t ex 10, B till 11, C till 12, osv. Alice måste också beräkna sin dekrypteringsnyckeln som hon behåller för sig själv. Denna nyckeln är ett tal d sådant att ed skall ge resten 1 vid division med både p 1 och q 1. Det är mycket lätt att beräkna d och flera datorprogram gör sådana beräkningar ögonblickligt. Låt oss anta nu att en annan person, som vi kallar Bo och förkortar till B, vill skicka ett meddelande x till A. Bo räknar ut resten vid division av x e med N och skickar till Alice. Alice räknar då resten vid division av (x e ) d med N och får tillbaka meddelandet x dvs (x e ) d = x. En sats som visades av Pierre de Fermat under 1600 talet garanterar att (x e ) d = x dvs garanterar att Alice kan förvandla den krypterade texten i klartext. Vår tid tillåter inte att jag ger ett bevis av denna sats. Låt oss betrakta ett mycket konkret exempel. Alice väljer p=61, q=101 så N=pq=61 101=6161. Alice väljer t ex e=17 som inte delar p 1 = 60 och q 1 = 100. Alice räknar ut d så att ed ger resten 1 vid division med p 1 = 60 och q 1 = 100. Hon kan välja d = 353 ty ed = 17 353 = 6001 ger resten 1 vid dessa divisioner. Alice publicerar N=6161, e=17 (och en ordbok t ex A = 10, B = 11, C = 12, D = 13, E = 14,..., I =18,..., K = 20,..., M = 22,..., T = 29,..., Z = 35). Primtalen p, q och d är hemliga. Kryptera: MATEMATIK MA = 2210 [2210 17 ] 6161 =4013 TE = 2914 [2914 17 ] 6161 =135 MA = 2210 [2210 17 ] 6161 =4013

11 TI = 2918 [2918 17 ] 6161 =1527 K = 20 [20 17 ] 6161 =4487 Dekryptera: 4013 135 4013 1527 4487 4013 [4013 353 ] 6161 =2210 = MA 135 [135 353 ] 6161 =2914 = TE 4013 [4013 353 ] 6161 =2210 = MA 1527 [1527 353 ] 6161 =2918 = TI 2487 [4487 353 ] 6161 =20 = K Varför är RSA metoden så effektiv att den används mycket flitigt i moderna kommunikationssystem? Svaret är att det är mycket svårt och idag inte möjligt att beräkna d då N och e är kända (om talen p och q är tillräckligt stora). ed skall ge resten 1 vid division med både p 1 och q 1. Om man känner till dessa tal är det mycket lätt att beräkna d. För att komma åt p 1 och q 1 måste man känna till p och q. Man utgår ifrån att dessa två tal endast kan beräknas om man kan uppdela talet N = pq i dess primfaktorer p och q. Denna beräkning dvs uppdelning av N i primfaktorer är mycket komplicerad och tar mycket lång tid. De bästa kända metoderna kräver c:a 5 N räkneoperationer. Om t ex p och q har 100 siffror så har N c:a 200 siffror och antalet räkneoperationer som behövs för att faktoruppdela talet N är 10 40. Om man antar att en räkneoperation tar 1µs så krävs det 10 40 µs 3 10 26 år för att genomföra beräkningarna för N (10 6 datorer var och en kapabel att utföra en räkneoperation på 1µs skulle behöva 3 10 26 år för dessa beräkningar). Trots det betraktas idag val av primtal med 100 siffror som inte helt säkra och man väljer snarare primtal med 150. RSA metoden kan användas för att skicka meddelanden från en godtycklig antal personer till en person (eller mellan godtycklig antal personer som annonserar sina krypterinngsnycklar). Detta system har mycket stora fördelar, men det har också en stor brist eftersom Alice och Bo har inte kontakt med varandra, kan Alice inte vara säker på att meddelandet hon har fått kommer just från Bo. Rent teoretiskt är det möjligt att någon annan, säg fienden F som uppger sig för Alice, skickar sin nyckel e till Bo. Bo tror att detta är Alice nyckel och skickar sitt meddelande. Meddelandet läses av F (med hjälp av F s dekrypteringsnyckeln d ) och skickas vidare till Alice genom att använda Alices korrekta nyckel e. Detta visar att systemet kräver

12 äkthetsbevisning Alice måste kunna vara övertygad om att meddelandet kom direkt från Bo. Det visar sig att även detta problem kan lösas med hjälp av RSA tekniken i form av så kallade digitala signaturer. Vi har inte tid att diskutera den tekniken noggrannare här, men den bygger på att varje part underskriver sina krypterade meddelanden med en lämplig signatur. Om t ex Bo skickar ett krypterat meddelande x så skickar han också sin signatur som är S(x) d b, där d b betecknar Bos dekrypteringsnyckel. Signaturen S(x) är ett sätt, känt för alla användare av systemet, att tilldela varje (krypterat) meddelande x ett tal (t ex en relativt kort följd av 0 och 1). Nu är det så att värdet d b endast är känt för Bo det är hans hemliga dekrypteringsnyckeln. Alice tar Bos offentliga krypteringsnyckeln e b och räknar ut (S(x) d b) e b = S(x). När Alice ser att hon verkligen får S(x) så betyder det att enbart Bo kunde skicka det krypterade meddelandet x eftersom enbart han har tillgång till d b och enbart han kunde beräkna S(x) d b. Konstruktionen av digitala signaturer som beror på meddelanden är också ett intressant matematiskt problem som har flera lösningar och som vi tyvärr inte kan diskutera närmare här. Funktioner S som tilldelar meddelanden talen S(x) kallas vanligen hasch funktioner. De måste uppfylla vissa specifika villkor för att kunna användas som signaturer. Låt oss avsluta med ett exempel av en digital signatur (fast inte särskilt praktiskt). Vi antar, som i exemplet på RSA kryptering, att p=61, q=101 (dvs N =pq=61 101=6161) och e=17. Dekrypteringsnyckeln var d = 353. Nu är det artikelns författare som vill signera avslutningen av denna text. Om vi accepterar Alices ordbok så är JB lika med 1911. Signaturen blir alltså [1911 353 ] 6161 = 5865. Exponenten 353 är hemlig och min (tidigare Alices) krypteringsnyckeln bestående av e = 17 och N = 6161 är allmänt känd så att alla kan identifiera mig som författaren om de räknar ut [5865 17 ] 6161 (vilket ger 1911 dvs JB).