Introduktion till krypteringsmetoderna RSA och Merkle-Hellman

Relevanta dokument
NÅGOT OM KRYPTERING. Kapitel 1

Grundfrågor för kryptosystem

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

Offentlig kryptering

RSA-kryptering och primalitetstest

Primtal, faktorisering och RSA

Krypteringteknologier. Sidorna ( ) i boken

MA2047 Algebra och diskret matematik

Kryptering HEMLIG SKRIFT SUBSTITUTION STEGANOGRAFI KRYPTOGRAFI

Metoder för sekretess, integritet och autenticering

Några satser ur talteorin

Grundläggande krypto och kryptering

Grundläggande kryptering & chiffer

Den mest väsentliga skillnaden mellan

Kryptering. Krypteringsmetoder

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

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

Kryptering och primtalsfaktorisering

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

256bit Security AB Offentligt dokument

Krypteringens historia och användningsområden

Att använda kryptering. Nyckelhantering och protokoll som bygger på kryptering

Kryptering & Chiffer Del 2

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

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

Blockkedjor. en introduktion för datavetare. Rikard Hjort, 24 maj 2019

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

Datasäkerhet. Petter Ericson

Föreläsning 10. Grundbegrepp (1/5) Grundbegrepp (2/5) Datasäkerhet. olika former av säkerhet. Hot (threat) Svaghet (vulnerability)

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

Övning 6 - Tillämpad datalogi 2012

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

Writing with context. Att skriva med sammanhang

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

Skydd för känsliga data

Hemligheternas Matematik

Säker lagring av krypteringsnycklar

Övning 6. Komprimering, kryptering, dokumentering & testning

Abstract. 1. Inledning

Föreläsninsanteckningar till föreläsning 3: Entropi

Att stödja starka elever genom kreativ matte.

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

Säkerhet. Säker kommunikation - Nivå. Secure . Alice wants to send secret message, m, to Bob.

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

PGP håller posten hemlig

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

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

Modul 3 Föreläsningsinnehåll

Nämnarens kryptoskola fördjupning. Enkel transposition

Sats 2.1 (Kinesiska restsatsen) Låt n och m vara relativt prima heltal samt a och b två godtyckliga heltal. Då har ekvationssystemet


Föreläsning 10 Datasäkerhet grundbegrepp datasäkerhet i nätet. Säkerhet. Grundbegrepp (1/5) Modern telekommunikation

Styrteknik: Binära tal, talsystem och koder D3:1

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

Kravspecifikation Fredrik Berntsson Version 1.1

Adding active and blended learning to an introductory mechanics course

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

Föreläsning 7. DD2390 Internetprogrammering 6 hp

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

Algebra och kryptografi Facit till udda uppgifter

Moderna krypteringssystem

EIT060 Datasäkerhet - Projekt 2. Jacob Ferm, dt08jf0 Johan Paulsson, dt08jp8 Erik Söderqvist, dt08es8 Magnus Johansson, dt08mj9 26 februari 2011

En introduktion till några klassiska chiffer

Hela tal LCB 1999/2000

Stad + Data = Makt. Kart/GIS-dag SamGIS Skåne 6 december 2017

Estetisk- Filosofiska Fakulteten Svenska. Susanna Forsberg. En skola för alla. att hjälpa barn med ADHD och Aspergers syndrom. A School for Everyone

Elektroniska signaturer - säker identifiering?

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

Protokollbeskrivning av OKI

Att dela en hemlighet

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

Ökat personligt engagemang En studie om coachande förhållningssätt

inte följa någon enkel eller fiffig princip, vad man nu skulle mena med det. All right, men

Tentamen i Kryptologi 1DT

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

Kvalitetsarbete I Landstinget i Kalmar län. 24 oktober 2007 Eva Arvidsson

ENKEL Programmering 3

Kryptering. Wearable Computers D 10p. Namn: Josef Israelsson Datum: Lärare: Björne Lindberg Ulf Brydsten Lars Karlsson

Mathematical Cryptology (6hp)

Teknikprogrammet Klass TE14A, Norrköping. Jacob Almrot. Självstyrda bilar. Datum:

Gesäll provet Internetprogrammering I. Författare: Henrik Fridström. Personnummer: Skola: DSV

Introduktion till protokoll för nätverkssäkerhet

Second handbook of research on mathematics teaching and learning (NCTM)

Lösningar till utvalda uppgifter i kapitel 5

Make a speech. How to make the perfect speech. söndag 6 oktober 13

Datasäkerhet och integritet

Utvärdering SFI, ht -13

State Examinations Commission

Om oss DET PERFEKTA KOMPLEMENTET THE PERFECT COMPLETION 04 EN BINZ ÄR PRECIS SÅ BRA SOM DU FÖRVÄNTAR DIG A BINZ IS JUST AS GOOD AS YOU THINK 05

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)

Workplan Food. Spring term 2016 Year 7. Name:

E V - C E R T I F I K AT: VA R F Ö R A N V Ä N D A D E N S TA R K A S T E S S L AUTENTISERINGSPROCESS?

Ett säkert Internet. Betalningsformer för säkra transaktioner över Internet. Författare: Anders Frånberg. Examensarbete I, 10p Vårterminen - 00

Projektmodell med kunskapshantering anpassad för Svenska Mässan Koncernen

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

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

Join the Quest 3. Fortsätt glänsa i engelska. Be a Star Reader!

Kommentar till bilderna. Att spara hörsel för framtiden. Bara det värdefulla är vi beredda att skydda! Hörseln vad kan vi förstå?!

Krypteringsprogrammet Kryptogamen

DNSSec. Garanterar ett säkert internet

Transkript:

Fakulteten för teknik- och naturvetenskap Avdelningen för matematik Nadia Ehsas Introduktion till krypteringsmetoderna RSA och Merkle-Hellman Introduction to the Encryption Methods RSA and Merkle-Hellman Examensarbete 15 hp, kandidatnivå Matematik Datum: 2011-04-29 Handledare: Igor Gachkov Examinator: Håkan Granath Karlstads universitet 651 88 Karlstad Tfn 054-700 10 00 Information@kau.se www.kau.se

Sammanfattning Den här uppsatsen handlar om ämnet kryptografi, som innebär bland annat konsten att göra värdefull information oläslig för alla som inte har nyckeln att återskapa den. Kryptografi är ett oerhört viktigt ämne för vårt samhälle idag, både på individs- och riksnivå. Även om det flesta av oss inte inser det direkt, så är faktiskt kryptografin dagligen en del av varje individs liv, inte minst när vi skickar mejl och betalar räkningar via Internet. Därför är det inte så svårt att inse hur oerhört viktigt det är att forska kring och utveckla denna lära. Med mitt arbete vill jag bland annat få svar på följande frågor: Hur tillämpar man krypteringen i praktiken? Vilka svagheter finns det och vilka säkerhetsproblem som kan förknippas med krypteringsalgoritmerna? Varför anses RSA vara en stark krypteringsalgoritm och hur kan man utföra attack mot RSA? Dessutom vill jag undersöka Merkle-Hellmans algoritmen, som bygger på en annan krypteringsmetod jämfört med RSA. Metoden som jag tillämpar för att besvara alla dessa frågor bygger främst på att hitta trovärdiga källor, både i form av Internetsidor och i form av böcker. Under arbetets gång gör jag även några små krypteringsförsök i form av olika exempel, som komplettering till den teori jag skriver om. Lite kort kan man säga att bland alla krypteringsalgoritmer som finns, så är RSA den mest flitigt använda asymmetriska krypteringsalgoritmen idag. Detta beror främst på två saker: metoden är mer eller mindre lätt att applicera i praktiken och jämfört med många andra krypteringsalgoritmer så är RSA en ganska säker krypteringsmetod. Säkerheten bygger främst på att hittills har ingen lyckats att hitta någon riktig dekrypteringsmetod. Genombrottet inom faktoriseringsproblemet sägs innebära att RSA och många andra liknande asymmetriska algoritmer skulle bli knäckta och därmed bli helt värdelösa. Förutom skyddet mot själva insynen kan krypteringstekniken användas även för att skapa elektroniska signaturer. Fördelen med detta är att man säkert kan identifiera komponenter och användare. Således kan man lätt kontrollera den elektroniska informationens trovärdighet och angriparen har inte en chans att skicka informationen under en falsk identitet. 2

Den oerhört snabba datoriseringen, med alla kraftfulla processorer, har gjort att gamla krypteringssätt har blivit osäkra. Därför pågår ständigt ny forskning där man försöker utveckla starkare och snabbare krypteringsalgoritmer. Sammanfattningsvis, är krypteringen oerhört viktig för informationssäkerheten eftersom rätt hanterad är metoden det enda säkra sättet att skydda känslig information från obehöriga. Abstract In this essay we discuss some aspects of the cryptography science, which includes the art of making valuable information unreadable for anyone who doesn t have the key to re-create it. Cryptography is an extremely important topic for our society today, both at individual and national level. Although most of us may not realize it right away, cryptography is actually daily the part of every individual's life; even when we, for instance, send emails and pay bills via the Internet. Therefore, it is not hard to realize how important it is to research and develop this theory. With my work I want to answer for instance the following questions: How do you apply encryption methods in practice? What are the weaknesses and the vulnerabilities that may be associated with encryption algorithms? Why is RSA considered to be a strong encryption algorithm and how you can perform attacks against RSA? In addition, I want to examine Merkle-Hellman algorithm, which is based on a different encryption method than RSA. The method that I apply for answering these questions is based primarily on finding trustworthy sources, both in terms of Internet sites and in terms of books. During the work, I also make some encryption attempts, as a supplementing to the theory I write about. In short, we can say that RSA is the most widely used asymmetric encryption algorithm among all encryption methods that are available today. This is mainly due to two things: method is more or less easy to apply in practice and compared to many other encryption algorithms RSA is a safe encryption method. The security is based primarily on the fact 3

that so far has nobody been able to find any real decryption method. The breakthrough in the problem of factorization is said to mean that RSA and many other similar asymmetric algorithms would be cracked, and thus become completely worthless. In addition, the encryption technology can also be used in order to create electronic signatures. The advantage of this feature is that one can safely identify components and users. Thus, one can easily verify the electronic information s credibility, and the attacker has no chance to send the information under a false identity. The extremely rapid computerization, with all powerful processors available, has made the old encryption methods unsafe. Therefore, new researches are constantly in progress, all attempting to develop stronger and faster encryption algorithms. In summary, the science of cryptology is incredibly important for the information security; because rightly used this method is the only secure way to protect sensitive information from unauthorized access. 4

Innehållsförteckning SAMMANFATTNING... 2 ABSTRACT... 3 INNEHÅLLSFÖRTECKNING... 5 1 INTRODUKTION... 6 1.1 BAKGRUND... 6 1.1.1 Varför behövs kryptering?... 6 1.1.2 Användning av kryptografi... 7 1.2 MÅL MED DENNA UPPSATS... 7 2. VIKTIGA BEGREPP... 9 2.1 KRYPTOLOGI... 9 2.2 OLIKA TYPER AV KRYPTON... 9 2.2.1 Substitutionskrypton... 9 2.2.2. Transpositionskrypton... 10 2.3 SYMMETRISKA OCH ASYMMETRISKA KRYPTOSYSTEM... 11 3. RSA ALGORITMEN... 12 3.1 GENERERING AV PRIMTAL... 12 3.2 KRYPTERING MED RSA... 14 3.2.1 Teori... 14 3.2.2 RSA i praktiken.... 17 3.2 VARFÖR ANSES RSA VARA EN STARK KRYPTERINGS ALGORITM?... 20 3.4 FORCERA RSA... 22 3.4.1 Scenario 1... 23 3.4.2 Scenario 2... 26 3.4.3 Scenario 3... 29 3.4.4 Attack vid användning av gemensam modulo... 30 4 MERKLE-HELLMANS KAPPSÄCKS-METOD... 34 4.1 MERKLE-HELLMAN... 34 4.1.1 Grunderna för Merkle-Hellman algoritmen... 34 4.1.2 Kryptering med Merkle-Hellman... 37 4.1.3 Dekryptering av Merkle-Hellman:s krypto... 38 5 SLUTSATS... 41 APPENDIX:... 42 KÄLLOR:... 58 BILAGA PROGRAMMERA I MINIRÄKNARE... 59 5

1 Introduktion 1.1 Bakgrund 1.1.1 Varför behövs kryptering? De flesta människor världen över är idag mycket beroende av tele- och datanätet. Vi är vana vid att det ska vara bekvämt och snabbt att exempelvis skicka elektroniska mail, betala räkningar, boka biljetter eller till och med delta i konferenser på distans. Utan dessa tillgångar skulle livet utan tvekan försvåras betydligt idag. Men de underbara verktygen är inte helt perfekta. Det finns en hel del säkerhetsproblem som kan förknippas med dem. Som några exempel kan man nämna följande problem: - Informationen som sänds via nätet kan avlyssnas, vilket kanske inte ens upptäcks av vare sig sändare eller mottagare. - Informationen som överförs via dessa medium kan modifieras av obehöriga, och inte heller detta kanske upptäcks av mottagare. - Angripare kan ha otillbörlig åtkomst till resurser. Om ett godtyckligt system saknar skydd mot en person som försöker koppla upp sig, finns det risk att den personen otillbörligt använder sig av detta systems resurser. Det kan exempelvis röra sig om ett försök att göra dataintrång någon annanstans. 1 Människan har, under alla tider, velat skydda sig mot sådana angripare och det är så kryptografin föddes. Ordet kryptera kommer av grekiskans kryptos och det kan översättas som dold eller gömd. Kryptering är konsten att göra informationen oläslig för alla som inte har nyckeln att återskapa den. Den värdefulla informationen ska helt enkelt se meningslöst ut för alla obehöriga. Genom att kryptera kan man exempelvis ändra ordet student till 3abi#5p. Förutom skyddet mot själva insynen kan krypteringstekniken användas också för att skapa elektroniska signaturer och därmed även för säker identifiering av komponenter och användare. Således, kan man lätt kontrollera den elektroniska informationens trovärdighet och angriparen har inte en chans att skicka informationen under en falsk 1 http://www.itkommissionen.se 6

identitet. På så sätt är det också relativt lätt att upptäcka i fall ett meddelande har blivit förvanskad under överföringsprocessen. 2 Således, krypteringen är oerhört viktig för informationssäkerheten eftersom rätt hanterad är metoden det enda säkra sättet att skydda känslig information från obehöriga. 1.1.2 Användning av kryptografi Krypteringen användes förr mest av militären. Nuförtiden har även privatpersoner, företag och organisationer tillgång till resursen. Men även idag anses krypteringen som ett känsligt område i många länder. I vissa av dem, bland annat i USA, är starka krypteringsalgoritmer förbjudna och får inte exporteras. I Sverige däremot är användningen av krypteringsmetoden fri och regeringens politik är att varje användare ska ha rätt att välja sådan teknik på egen hand och efter egna behov. 3 Den oerhört snabba datoriseringen, med alla kraftfulla processorer, har gjort att gamla krypteringssätt har blivit osäkra. Därför pågår ständigt ny forskning där man försöker utveckla starkare och snabbare krypteringsalgoritmer. 1.2 Mål med denna uppsats Mitt främsta mål med denna uppsats är att fördjupa mina kunskaper inom kryptografi ämnet. Jag vill veta vad läran handlar om och få en inblick i de allmänna principerna som kryptografin använder sig av. Att gå igenom de vanligaste termerna och kunna använda dem på ett korrekt sätt, att undersöka vilka olika typer av kryptering det existerar och veta hur de fungerar ingår också i mina mål. Jag har för avsikt att göra uppsatsen så lättläslig som möjligt, därför ska jag försöka vara väldigt tydlig med mina förklaringar. Man behöver inte vara någon expert inom kryptografi ämnet för att kunna följa de olika avsnitten i denna uppsats. Men det antas att läsaren har de grundläggande matematiska kunskaper som undervisas på universitetsnivå; detta är viktigt eftersom man måste kunna förstå matematiken bakom de olika uträkningarna som görs under arbetets gång. Vill man ha en snabb repetition kan man ta en titt på Appendix längst bak i denna uppsats. De viktigaste och mest grundläggande begreppen tas upp där, som man måste känna till om man ska jobba med krypteringen. 2 Schneier s.16 3 http://www.itkommissionen.se 7

RSA är idag den mest kända och mest flitigt använda krypteringsmetoden i hela världen. Därför faller det naturligt för mig att undersöka bland annat just denna algoritm. Att se vad det är för principer som används bakom den och ta reda på svårighetsgraden av RSA i praktiken står också på önskelistan. Varför har RSA blivit så populär och varför sägs RSA vara säkrare än andra krypteringsmetoder är två andra frågor som jag vill ge svar på. Dessutom ska jag undersöka den så kallade Merkle-Hellmans algoritm, som bygger på en annan krypteringsalgoritm jämfört med RSA. Det blir intressant att se hur dessa två krypteringsmetoder skiljer sig från varandra. Under arbetets gång ska jag göra några små krypteringsförsök i form av olika exempel till den teori som jag kommer att skriva om. Och jag har även för avsikt att skriva ett litet program i miniräknaren som ska underlätta alla de nödvändiga uträkningarna som måste göras under själva krypteringen. Det är inte heller så svårt att inse hur oerhört viktigt det är att känna till svagheter hos sitt verk för att kunna ha en chans att skydda sig mot en oönskad attack. Därför har jag som mitt sista mål att ta reda på vad det är som behövs för att forcera ett RSA krypto och om möjligt visa exempel på detta. 8

2. Viktiga begrepp 2.1 Kryptologi Innan vi går vidare, ska vi försöka klargöra några termer. Först har vi begreppet krypto som betyder algoritm, eller metod, för att förvanska meddelanden så att obehöriga inte kan läsa dem. Sedan har vi begreppet kryptologi som i sin tur delas in i två delområden: - Kryptografi, som handlar om hur man döljer ett meddelandets budskap för obehöriga, genom att på något förbestämt sätt förvanska detta meddelande. Då säger man att man krypterar ett meddelande. - Kryptoanalys, vilket är precis motsatsen till kryptografi. Denna del av kryptologi undersöker hur man forcerar, eller knäcker, ett krypto. Det kallas att dekryptera ett meddelande. Detta är precis vad de obehöriga försöker göra om de inte har tillgång till de hemliga nycklarna som kan återskapa den ursprungliga informationen. 4 2.2 Olika typer av krypton 2.2.1 Substitutionskrypton Kryptografi har sin historia ca 4000 år tillbaka då Egyptierna var första med att använda metoden. 5 En mycket enkel kryptering, eller omvandling av texten, som användes flitigt förr i tiden kallas för substitutionskrypton. Det innebär helt enkelt att man ersätter varje tecken i det känsliga meddelandet med ett antal andra tecken enligt en förutbestämd tabell, som både sändare och mottagare kommer överens om. Antag till exempel att man använder sig av ett alfabet på 28 bokstäver, då existerar det ca 300 000 000 000 000 000 000 000 000 000 möjliga nycklar. Om en angripare försöker forcera kryptot blir det praktiskt omöjligt för honom eller henne att testa alla möjliga kombinationer! 6 4 Schneier s.15 5 http://www.cyberinfo.se 6 http://w3.msi.vxu.se 9

Exempelvis: a-r, b-q, c-å, d-j, e-y, f-e, g-w, h-z, i-ä, j-u, k-p, l-m, m-a, n-g, o-v, p-s, q-n, r-h, s-i, t-f, u-k, v-x, w-o, x-l, y-d, z-t, å-c, ä-b. Då kan ordet Hello skrivas som ZYMMV. Även Julius Ceasar använde sig av substitutionskrypton. 7 Men istället för någon given tabell innebar hans krypteringsmetod att flytta framåt bokstäverna med tre; det vill säga A flyttas till D, K till N och så vidare. Denna metod fungerade bra på hans tid men lär absolut inte fungera idag. Det enklaste sättet att knäcka en sådan kryptering är att använda sig av en så kallad språkanalys, eller frekvensanalys, där man bland annat tittar på upprepade tecken och vanliga bokstavspar i kryptogrammet. Idag har kryptoanalysen blivit så bra och datorerna så kraftfulla att det nu krävs mycket mer avancerade metoder än denna. 2.2.2. Transpositionskrypton En annan grundläggande typ av krypton är transpositionskrypton. Den viktigaste skillnaden från substitutionskrypton är att tecknens identitet här förblir exakt detsamma. Metoden innebär istället att man ändrar på ordningsföljden av tecken i det hemliga meddelandet. Exempelvis: MATEMATIKEN AIANMEMTKTE Idag är allmänna krypton i regel en kombination av flera olika substitutions- och transpositionskrypton, där substitutionsdelen av krypton bygger på att man omvandlar alla bokstäver, tal och tecken i det känsliga meddelandet till siffror enligt en viss tabell oftast ASCII (American Standard Code for Information Interchange) eller ANSI-tabellen. Sedan använder man en rad olika matematiska formler och algoritmer för att kryptera numren. 8 7 Schneier s.272 8 http://www.wedran.com/se 10

2.3 Symmetriska och asymmetriska kryptosystem Fram till 1970-talet var alla av de dittills använda kryptosystem endast av den symmetriska typen; det vill säga man använde exakt samma nyckel vid såväl kryptering som dekryptering. Några exempel på symmetriska krypton är DES (Data Encryption Standard), AES (Advanced Encryption Standard) och IDEA 9, där DES är den äldsta och mest kända av dessa. År 1976 blev DES USA regeringens standardkrypteringsmetod. 10 Men år 1998 lyckades man att knäcka den, därför blev algoritmen ersatt av AES istället, år 2001. 11 Problemet med symmetriska krypton är nyckeldistributionen. Hur ska sändare och mottagare komma överens om vilken nyckel som ska användas? Exempelvis kan man tänka sig följande lösningar, men ingen av dem är bra nog: - Användning av telefonnätet. Detta distributionssätt är inte säkert mot avlyssning. - Personlig överlämning av nyckeln. Väldigt opraktiskt om man bor långt ifrån varandra. - Lita på en kurir. Problemet med detta är att det existerar många sändare och många mottagare och kurirerna vill säkert få betalt för sina tjänster. 12 Under 1975-1976 har Whitfield Diffe och Martin Hellman kommit på hur man kunde lösa detta problem. De föreslog att man skulle använda sig av ett asymmetriskt krypto istället, vars grundprincip bygger på att man använder två helt olika nycklar - en vid kryptering samt en vid dekryptering. Man krypterar med den öppna nyckeln som är tillgänglig för allmänheten, och man dekrypterar med den privata nyckeln som är känd endast av dess innehavare. Tyvärr fungerade Diffes och Hellmans underbara idé enbart i teorin i praktiken kunde de inte ta fram någon asymmetrisk krypteringsalgoritm. Dock, sedan deras utmärkta idé var introducerad har många försökt att utveckla en asymmetrisk krypteringsalgoritm och till slut har man faktiskt lyckats med detta. Men de flesta nya metoder var antingen för osäkra eller opraktiska för att man skulle kunna använda dem. Detta berodde främst på två saker. Antingen krävde algoritmen att man använde en nyckel som var mycket stor eller så fick man att den slutliga chiffertexten var 9 http://www.cyberinfo.se 10 Schneier s.305 11 Schneier s.308 12 http://w3.msi.vxu.se/~pa/seminarier/puv050224.pdf 11

mycket längre än den ursprungliga klartexten. Bland alla dessa algoritmer fanns det ändå några som fungerade bra, men endast för vissa specifika ändamål. Några dög endast till distributionen av nycklar, vissa andra fungerade bra om man ville skapa ett krypto och tredje passade utmärkt för de elektroniska signaturerna. Men ingen algoritm täckte alla dessa tre områden samtidigt. År 1977 har dock två dataloger Ronald Rivest och Adi Shamir tillsammans med en matematiker Leonard Adleman 13 trots allt lyckats att introducera ett av de första asymmetriska kryptosystem som verkligen fungerade och som var lätt att förstå och framför allt lätt att använda. Algoritmen fungerade bra både för att skapa chiffertext och för att skapa elektroniska signaturer. Metoden kallades för RSA efter dess uppfinnare och algoritmen används även i våra dagar. I nästa avsnitt ska vi titta lite närmare på hur RSA fungerar och vad det är som gör algoritmen så säker. Ett annat exempel på ett asymmetriskt kryptosystem är en så kallad Merkle-Hellmans kappsäcks metod. Senare tittar vi lite närmare även på denna metod. Det enda problemet med RSA algoritmen är att den fungerar väldigt långsamt jämfört med till exempel den symmetriska motsvarigheten DES. Och arbetstiden förlängs betydligt om man tar större mängd data. Därför används RSA i praktiken mest för att kryptera kortare meddelanden. Det kan exempelvis röra sig om att kryptera privata nycklar av andra krypteringssystem som fungerar snabbare än RSA. 14 3. RSA algoritmen 3.1 Generering av primtal En ytterst viktig ingrediens i RSA algoritmen är de så kallade primtal. Med ett primtal anses ett heltal, större än ett och som endast kan delas med sig själv och ett. Exempel på sådana tal är 2, 3, 5, 7, 11 och 13. Men det är bevisat att även tal som 73, 2 521, 2 365 347 734 339 och (2 756 839-1) hör också till primtal. 15 Om ett heltal d delar både heltalet m och heltalet n, det vill säga att resten blir lika med noll vid divisionen av m med d respektive n med d, kallas då d för en gemensam delare till m och n. Två heltal m och n sägs vara relativt prima om den enda gemensamma 13 http://w3.msi.vxu.se/~pa/seminarier/puv050224.pdf 14 http://www.wedran.com/se 15 Schneier s.280 12

positiva delaren de har är 1. Exempelvis är talen 15 och 22 relativt prima, men inte 12 och 18, eftersom de två sist nämnda har flera gemensamma delare, nämligen: 1, 2, 3 och 6. Mängden av primtal är oändligt stort och dessa tal har som sagt oerhört stor betydelse inom kryptografi. När det gäller asymmetriska krypton använder man nuförtiden oftast nycklar, primtal, av längden som är minst 768-bitar, helst 1024 eller 2048, för bästa säkerhet. 16 Sådana tal kan vara upp till 600 siffror långa. Naturligtvis blir även dekrypteringen mycket långsammare, men samtidigt försvårar man forceringen betydlig, vilket är just meningen med detta. Således, ju längre tal man väljer desto säkrare blir krypteringen. En annan viktig fråga som man bör ställa sig är hur får man reda på om ett heltal är ett primtal eller inte, det vill säga hur genererar man ett primtal? Det existerar ganska många olika algoritmer som kan hjälpa till på traven, men tyvärr ger ingen av dem en säkerhet på hundra procent. Det enda riktigt säkra sättet att avgöra om ett heltal p är ett primtal eller inte är att dela det med varje tal från 2 till roten ur p. Vilket är ganska krävande om det rör sig om stora siffror. Ett sätt att underlätta jobbet är att använda sig av hjälpsatser. En av dem kallas för Fermats lilla sats, ett resultat i talteorin. Fermats lilla sats säger att om p är ett primtal, så gäller för varje heltal a att a (p-1) 1(mod p). Om villkoret inte är uppfyllt kan vi konstatera direkt att p är inget primtal och vi slipper slösa bort våra krafter på att dela p med alla tal från 2 till roten ur p. Om villkoret däremot är uppfyllt får vi det bara bekräftad att p möjligtvis är ett primtal. Dock, kan vi fortfarande inte vara hundra procent säkra på det. Det existerar nämligen tal som uppfyller villkor enligt Fermats lilla sats, men som inte är prima. Sådana tal kallas för Carmichaeltal (eller absolut pseudoprimtal). 17 Det är osäkert att använda dessa tal vid krypteringen, men de är ytterst ovanliga. Således, om villkoren i Fermats lilla sats är uppfyllt måste p testas ytterliggare för att vi ska kunna avgöra om p är ett primtal eller inte. 16 http://www.wedran.com/se 17 http://w3.msi.vxu.se/~pa/seminarier/puv050224.pdf 13

Låt oss nu ta ett exempel på hur Fermats lilla sats fungerar. Antag att vi vill testa talet 7, det vill säga p = 7. Välj då ett godtyckligt heltal a som inte är delbart med talet 7. Låt a = 3. enligt Fermats lilla sats får vi då 3 (7-1) = 3 6 = 729 1 ( mod 7). Således, villkoret enligt Fermats lilla sats är uppfyllt. Vi testar p ytterliggare genom att dela det med 2 och 3. (Det är ingen idé att dela det med 4, 5 och 6 för att resultatet ändå inte kommer att bli något heltal). Vi konstaterar att 7 är relativt prim med både 2 och 3. Alltså är heltalet 7 ett primtal. Antag nu att vi vill testa heltalet 8 istället, det vill säga p = 8. Vi väljer a = 3 och får då 3 (8-1) =3 7 = 2187 3 (mod 8). Det vill säga villkoret för Fermats lilla sats är inte uppfyllt. Därför kan vi konstatera direkt att heltalet 8 inte är ett primtal. Och det ser man ju eftersom 8 är delbart med både 2 och 4! Mer om generering av primtal kan du läsa i Appendix. 3.2 Kryptering med RSA 3.2.1 Teori RSA är en gammal krypteringsmetod, men den är säker och beprövad. Många företag anlitar sig idag på just denna algoritm, inklusive giganterna Microsoft, Apple, Sun och Novell. Att denna metod har blivit så populär beror på att den är så lätt att förstå och framför allt relativt lätt att tillämpa i praktiken. Andra fördelar med RSA är att algoritmen är en av de få som kan användas både för att kryptera ett meddelande och för att skapa elektroniska signaturer. Dessutom garanterar RSA en säker utväxling av nycklar, en ytterst viktig egenskap som de symmetriska algoritmerna saknar. Man använder en öppen nyckel för att kryptera ett meddelande, men bara mottagaren kan dekryptera chiffertexten till klartexten med sin privata nyckel. Och det är just det som är bland annat fördelen med RSA att alla har varsin nyckel, ett varsitt lösenord. Elektroniska signaturer använder man exempelvis för att säkerställa avsändarens identitet och meddelandets integritet, det vill säga för att säkerställa att avsändaren är äkta 14

och att meddelandet inte har ändrats på vägen. För att skapa elektroniska signaturer använder man så kallade hashfunktioner (även kallade enkelriktade funktioner) för att först räkna ut en kort kontrollsumma på meddelandet (message digest). Kontrollsumman består av en till synes meningslös serie bokstäver, siffror och andra tecken och den är ett slags krypterat kondesat (hash) av meddelandet. Kontrollsumman är mycket kortare än själva meddelandet, dessutom kan man inte räkna ut det ursprungliga meddelandet med hjälp av kontrollsumman. Man får inte heller samma kontrollsumma som resultat av två olika meddelanden, även om det bara är en enda bokstav som två meddelanden skiljer sig på. Och det är just kontrollsumman som krypteras med den privata nyckeln. Det krypterade kondensatet bifogas sedan meddelandet, som kan vara krypterat eller skickas i klartext. När mottagaren tar emot meddelandet dekrypterar han först den elektroniska signaturen med hjälp av avsändarens publika nyckel. Sedan räknar mottagaren ut kontrollsumman på själva meddelandet han fick. Till sist jämför han den beräknade kontrollsumman med kontrollsumman som dekrypterades med avsändarens publika nyckel. Om dessa två kondensaten stämmer överens med varandra kan mottagaren lita på avsändarens identitet och meddelandets integritet, det vill säga att meddelandet inte har förändrats på vägen över nätet. 18 Ovanstående teori kan illustreras i följande figur 19 : 18 http://sv.wikipedia.org/wiki/kryptering 19 http://www.mstcindia.co.in 15

Nu ska vi gå igenom den teori som behövs för att kryptera med RSA. För att få fram den offentliga respektive den privata nycklarna använder man två slumpvist valda stora primtal p och q. För att få maximal säkerhet måste p och q vara av ungefär samma bitlängd, men skillnaden mellan p och q bör inte vara för liten heller. Sedan beräknar man produkten n = p*q. Efteråt väljer man slumpvist en krypteringsnyckel e, sådan att e och produkten (p-1)*(q-1) ska vara relativt prima. Flera olika alternativ på e är möjliga, men vissa av dem är dock mindre lämpliga att användas av olika anledningar. Värdena e = 3, e = 17 och e = 65537 (=2 16 +1) är bland de vanligaste som används 20. Det beror bland annat på att ett litet värde på e gör att man får den snabbaste beräkningen; med ett stort värde på e får man ett säkrare chiffer. Andra anledningar till att man väljer just e = 65537 är att talet har endast två ettor i binärform, vilket också gör att beräkningen går snabbare. Man bör dock välja ett ännu större värde på e om meddelandet m är litet eller om man ska skicka samma eller nästan samma meddelande till flera mottagare. Sist men inte minst behöver vi en hemlig nyckel d som ska användas vid dekrypteringen. Den får vi fram med hjälp av utökad Euklides algoritm 21. Relationen mellan d och e ska uppfylla villkoret: ed 1 mod (p-1)(q-1) eller med andra ord d e -1 mod (p-1)(q-1). Lägg märke till att d och n är också relativt prima. Således, talen e och n är de öppna nycklarna, medan d utgör den privata nyckeln. Primtalen p och q behövs inte längre, dem kan man kasta bort, men absolut inte avslöja! Annars blir hela algoritmen värdelös. Vid krypteringen av ett långt meddelande m måste man alltid först dela det i flera mindre digitala block m 1, m 2, m 3 m i. Varje blocks längd ska nämligen vara mindre än n. Om man behöver kryptera ett bestämt antal block, kan man alltid lägga till några extra nollor till vänster om blocken. Denna åtgärd påverkar inte resultatet och garanterar att man alltid får en längd som är mindre än n. Kryptogrammet c kommer då att bestå av block c 1, c 2, c 3 c i. Krypteringsformeln är ganska enkel och ser ut så här: e c i m i (mod n), där m 1, m 2, m 3 m i sätts i tur och ordning in i formeln efter varandra. 20 Schneier s.525 21 Appendix 16

d Dekrypteringsformeln kan då skrivas som m i c i (mod n), eftersom: d c i mod n = (m e i ) d ed k(p-1)(q-1)+1 k(p-1)(q-1) mod n = m i mod n = m i mod n = m i m i mod n = =m i *1(mod n) = m i (mod n) ger tillbaka det ursprungliga meddelandet m. All ovanstående teori kan man nu sammanfatta i en liten tabell: De öppna nycklarna: n produkten av två slumpvist valda primtal p och q (som måste bevaras hemliga) e relativt prim med produkten (p-1)(q-1) Den privata nyckeln: d e -1 mod (p-1)(q-1) Krypteringsformeln: c m e (mod n) Dekrypteringsformeln: m c d (mod n) Omvänd ordning är möjligt. Det vill säga meddelandet kan vara krypterad med d och sedan dekrypterad med e; det spelar ingen roll vilken man använder först. 22 3.2.2 RSA i praktiken. Antag nu att vi vill skicka en ytterst hemlig information via ett osäkert medium. För överskådlighetens skull och bara för att visa hur RSA-metoden fungerar i praktiken antar vi att meddelandet ser ut så här: (35+7)/(57-1) Innan själva krypteringen utförs kodar vi varje tecken i ovanstående meddelande enligt Tabell 1 nedan. Detta är återigen bara ett enkelt exempel på ett substitutionskrypto. Men som vi har redan nämnt tidigare så använder man i verkligheten andra bestämda och mer avancerade tabeller, oftast ASCII eller ANSI-tabellen. 22 Schneier s.522-523 17

Tabell 1 1 = 15 5 = 19 9 = 24 * = 28 2 = 16 6 = 21 0 = 25 / = 29 3 = 17 7 = 22 + = 26 ( = 31 4 = 18 8 = 23 - = 27 ) = 32 Vid kodningen undviker man nollan eftersom missförstånd kan uppstå när man sedan ska använda krypteringsformlerna, vilket i sin tur kan leda fram till fel dekryptering. Alltså kan vi nu koda uttrycket (35+7)/(57-1) som: m = 31171926223229311922271532 Sedan väljer vi slumpvist ut två primtal. Vi har påpekat tidigare att i verkligheten använder man stora och helst ungefär lika långa primtal för att uppnå maximal säkerhet, men återigen för överskådlighetens skull nöjer vi oss med två mindre primtal. Tag till exempel p = 59 och q = 83. Nu beräknar vi produkten n = p*q av dessa två tal, som då blir 59*83 = 4897. Efteråt beräknas värdet av produkten (p-1)(q-1): 58*82 = 4756. Nyckeln e måste nu vara relativt prim med talet 4756. Säg att vi väljer e = 17. Till slut beräknas motsvarande värde på d, sådan att d e -1 mod (p-1)(q-1), det vill säga 17-1 (mod 4756). Värdet på d utgör den privata nyckeln och det får man fram med hjälp av utökad Euklides algoritm: 4756 = 279*17+13 17 = 1*13+4 13 = 3*4+1 4 = 1*4 Om man nu går baklänges i uträkningen ovan får man då följande: 1 = 13-3*4 = 1*13-3(17-1*13) = 1*13-3*17+3*13 = 4*13-3*17 = 4*(4756-279*17)-3*17 = 4*4756-1116*17-3*17 = 4*4756-1119*17 Det vill säga resultatet blir 1 = 4*4756 1119*17. Men 4*4756 0 (mod 4756); detta leder till att sambandet ovan blir ekvivalent med 1-1119*17 (mod 4756). 18

Alltså d = 17-1 (mod 4756) -1119 (mod 4756) 3637 (mod 4756), det vill säga d=3637, och det är den privata nyckeln, som man kommer att använda sig av när man sedan ska dekryptera chiffertexten. Lägg märke till att d och n är också relativt prima. Talen e och n är de öppna nycklarna, medan d utgör den privata nyckeln. Talen p och q behövs inte längre, så dem kan man göra sig av med, men än en gång: de ska absolut inte avslöjas! Innan vi ska kryptera meddelandet m ska vi dela upp det i minde digitala block, vars längd ska vara minde än n. Det är också viktigt att längden på alla dessa block ska vara lika. Säg till exempel att vi väljer längden 3. Om det inte går att dela m jämnt kan man i så fall lägga till nollor från vänster, vilket påverkar inte slutresultatet. Vi får då följande: m 1 = 311 m 4 = 232 m 7 = 222 m 2 = 719 m 5 = 293 m 8 = 715 m 3 = 262 m 6 = 119 m 9 = 032 Nu ska vi kryptera varje block för sig med hjälp av krypteringsformeln c i m e i (mod n). Om vi testar att mata in nedanstående värden i en vanlig miniräknare får vi då gigantiska siffror att jobba med. Men eftersom jag har en programmerbar miniräknare (Texas Instruments TI-83 Plus) har jag själv försökt att programmera den. Längst bak i uppsatsen hittar du en bilaga på det. 23 Med hjälp av programmet fick jag då följande resultat: c 1 = 311 17 4859 (mod 4897) c 6 = 119 17 1476 (mod 4897) c 2 = 719 17 1430 (mod 4897) c 7 = 222 17 0960 (mod 4897) c 3 = 262 17 2625 (mod 4897) c 8 = 715 17 1403 (mod 4897) c 4 = 232 17 3749 (mod 4897) c 9 = 032 17 2581 (mod 4897) c 5 = 293 17 1737 (mod 4897) 23 Se Bilaga 1 19

Alltså, chiffertexten som vi får är: c = 4859 1430 2625 3749 1737 1476 0960 1403 2581 När vi nu ska dekryptera chiffertexten ska varje block dekrypteras separat med hjälp av den privata nyckeln d. Man använder då dekrypteringsformeln: m i c d i (mod n). Om man först skrev programmet för att underlätta föregående uträkningar, skulle man den här gången inte klara sig utan programmet alls! För nu rör det sig om så stora tal att inte ens en miniräknare klarar av dem och man får helt enkelt följande felmeddelande i rutan: ERR: OVERFLOW 1: Quit 2. Goto Med hjälp av programmet får man fram följande resultat: m 1 = 4859 3637 311 (mod 4897) m 6 = 1476 3637 119 (mod 4897) m 2 = 1430 3637 719 (mod 4897) m 7 = 0960 3637 222 (mod 4897) m 3 = 2625 3637 262 (mod 4897) m 8 = 1403 3637 715 (mod 4897) m 4 = 3749 3637 232 (mod 4897) m 9 = 2581 3637 032 (mod 4897) m 5 = 1737 3637 293 (mod 4897) Vilket är precis det kodade meddelandet som vi hade innan vi krypterade det: m = 311719262232293119222715032. Enligt Tabell 1 kan vi nu avläsa att det hemliga meddelandet är (35+7)/(57-1)! 3.2 Varför anses RSA vara en stark krypterings algoritm? RSA anses vara en beprövad och mycket säker krypteringsalgoritm. Men vi bör ställa oss frågan varför det är så. Vad är det som egentligen gör algoritmen så stark? Svaret på frågan hittar vi i några mycket speciella och mycket betydelsefulla egenskaper hos RSA. Metoden för krypteringen är nämligen offentlig, medan metoden för dekrypteringen är 20

hemlig. Trots att själva principen för dekrypteringen är känd av alla, hjälper det inte speciellt mycket när vi ska forcera kryptot. Dekrypteringen är nämligen ytterst beroende av vissa tal som hålls hemliga och som obehöriga inte kan räkna ut eller åtminstone har väldigt stora svårigheter att räkna ut. 24 Det som skulle vara mest tragiskt vore om en angripare skulle hitta den privata nyckeln d. Det skulle innebära att en obehörig kunde läsa alla meddelanden och kunde också utan problem förfalska signaturer. Nyckeln d kan lätt bestämmas om man känner till de två primtalen p och q. Men det skulle i sin tur innebära att man fick först faktorisera talet n, som är produkten av p och q. Och det är just här som hela svårigheten ligger! För om man inte känner till primtalen p och q, blir det genast betydligt svårare att beräkna den privata nyckeln d, även om motsvarande öppna nycklar är kända, det vill säga talen n och e. 25 Faktoriseringen av stora tal hör bland de svåraste matematiska problemen som finns. Exempel: Försök att faktorisera följande tal: 1. 35 2. 477 310 661 Svar: 1. p = 5 och q = 7, samt 2. p = 17389 och q = 27449. 26 Inte så lätt eller hur? Tänk dig då att försöka faktorisera ett ännu större tal! Faktoriseringen av n anses vara det uppenbaraste sättet att knäcka RSA. Dock är detta bara ett antagande. Ingen har någonsin bevisat att man måste faktorisera n för att få fram den privata nyckeln. Det är möjligt att man i kryptoanalys kommer på en helt annan dekrypteringsalgoritm för RSA. Men om den nya metoden kommer att hjälpa oss att få fram den privata nyckeln d, kan man då lika gärna använda metoden för faktoriseringen av stora tal. Än så länge har dock ingen i hela världen lyckats göra detta. Man kan också forcera RSA om man gissar värdet på produkten (p-1)(q-1). Men denna variant är inte direkt lättare än faktoriseringen av n. 27 24 http://www.math.su.se 25 http://www.isk.kth.se 26 http://w3.msi.vxu.se/~pa/seminarier/puv050224.pdf 27 Schneier s.525-526 21

Man kanske kan tänka sig ett alternativ där man testar alla möjliga kombinationer med en tillräckligt kraftfull dator tills man hittar de rätta värdena. Så kan man tänka förstås, men frågan är bara hur lång tid det tar. Hundratals datorer ihopkopplas av studenter på stora universitet och de alla arbetar i dagar och veckor med att dekryptera ett meddelande. Alternativet visar sig faktiskt vara ännu mindre effektiv än faktoriseringen av n! 28 Om man tror att man är så pass smart att man försöker skapa en databas med alla möjliga primtal, för att sedan använda denna till dekrypteringen av RSA algoritmen, så kan man konstatera direkt att det inte är någon bra idé heller. I boken Applied Cryptography har man beskrivit det ungefär så här: även om man kunde spara 1Gb data på en minnesenhet som väger bara ett gram, skulle databasen över alla primtal av längden upp till 512-bit vara så pass tung att den skulle kollapsa i ett svart hål. Således, det är ingen idé att ens försöka. Sammanfattningsvis, än så länge kan vi nog känna oss ganska trygga. Men RSA och många andra liknande assymetriska kryptosystem som används så flitigt idag kommer att bli helt värdelösa om man någon dag i framtiden lyckas lösa det stora faktoriserings problemet. 3.4 Forcera RSA Som vi har konstaterat tidigare anses RSA vara en ganska säker krypteringsalgoritm. I föregående avsnitt har vi förklarat varför det är så oerhört svårt att knäcka metoden. Trots det, finns det vissa andra knep som man kan använda sig av för att få fram den hemliga informationen eller för att förfalska en signatur. Man behöver inte ens känna till den privata nyckeln, däremot måste man få lite hjälp på traven av själva nyckelinnehavaren. Och det är just innehavaren av d som brukar vara den som hjälper till utan att ens vara medveten om det! I följande avsnitt ska vi visa hur man kan gå tillväga för att knäcka RSA och även visa varför flera användare med olika nycklar bör inte använda samma modulo n för kryptering av ett meddelande. Kryptot blir nämligen mycket känslig, och med lite kunskap kan meddelandet därmed bli lätt dekrypterad. Vi tittar lite närmare på fyra olika fall 29. 28 http://www.wedran.com/se 29 Schneier ss.526-528 22

3.4.1 Scenario 1 Antag att genom avlyssning får Eva tag på Alices hemliga meddelande c, som är krypterad med RSA-algoritmen (med hjälp av Alices publika nyckel e). Nu vill Eva läsa detta meddelande; det vill säga hon vill ta reda på m. Matematiskt framställs m av formeln: m c d (mod n). För att göra detta tar Eva fram de båda publika nycklarna e och n och sedan väljer hon ett slumpvist tal r (som måste vara mindre än n). Med hjälp av dessa värden utför hon nu följande beräkningar: x r e (mod n) y xc (mod n) t r -1 (mod n) Eftersom x r e (mod n), kan vi då skriva om sambandet som r x d (mod n). 30 Nu ber hon Alice att kryptera y med hjälp av Alices privata nyckel d. Alice har ju inte sett y förut. Utan att ens kanske bli misstänksam krypterar hon y och skickar sedan u y d (mod n) tillbaka till Eva. Sedan återstår det för Eva att göra en sista enkel beräkning: t*u = r -1 y d = r -1 x d c d c d (mod n) m (mod n). (r -1 och x d är ju varandras inverser r -1 x d =1(mod n) ). Det vill säga Eva får fram Alices ursprungliga meddelande m! 30 Dekrypterings formeln 23

Exempel med siffror: Antag att m = 135872, p = 17 och q = 31 n = pq = 17*31 = 527 (p-1)(q-1) = 16*30 = 480 Vi väljer e = 11 som är relativt prim med 480. Använd nu utökad Euklides Algoritm för att få fram den privata nyckeln d: d e -1 (mod (p-1)(q-1)) d 11-1 (mod 480) 480 = 43*11+7 11 = 1*7+4 7 = 1*4+3 4 = 1*3+1 3 = 1*3 Går vi nu baklänges i Euklides algoritm får vi då följande samband: 1 = 4-1*3 = 4-1*(7-1*4) = = 4-1*7+1*4 = 2*4-1*7 = = 2*(11-1*7)-1*7 = 2*11-2*7-1*7 = = 2*11-3*7 = 2*11-3(480-43*11) = = 2*11-3*480+129*11 =131*11-3*480 Det vill säga 1 = 131*11-3*480 Men eftersom vi räknar modulo 480 blir därför (-3)*480 0 (mod 480) och kvar blir sambandet 11*131 1 (mod 480), detta är i sin tur ekvivalent med sambandet 11-1 131 (mod 480). Alltså d = 131 Nu ska m = 135872 krypteras. Vi delar upp m i mindre block, eftersom längden av m i måste vara mindre än längden av n. m 1 = 13, m 2 = 58 och m 3 = 72. Sedan krypterar vi respektive block med krypteringsformeln: c 1 = 13 11 344 (mod 527) c 2 = 58 11 337 (mod 527) c 3 = 72 11 081 (mod 527) 24

Alltså, chiffertexten som sänds och som Eva lyckas att få tag i är c = 344337081. Slumpvist väljer vi ut ett tal r, till exempel r = 21, där r ska vara mindre än n. Sedan utför vi följande beräkningar: 1. x r e (mod n) x = 21 11 353 (mod 527) 2. y 1 xc 1 (mod n) y 1 = 353*344 222 (mod 527) y 2 xc 2 (mod n) y 2 = 353*337 386 (mod 527) y 3 xc 3 (mod n) y 3 = 353*081 135 (mod 527) 3. t = r -1 (mod n) t = 21-1 (mod 527) Återigen används utökad Euklides Algoritm: 527 = 25*21+2 21 = 10*2+1 2 = 1*2 Går vi baklänges i Euklides algoritm får vi då följande samband: 1 = 21-10*2 = 21-10(527-25*21) = = 21-10*527+250*21 = = 251*21-10*527 Det vill säga 251*21 1 (mod 527) 21-1 251 (mod 527) Alltså t = 251 Sedan krypteras y med den privata nyckeln d och vi får då: d u 1 y 1 (mod n) u 1 = 222 131 273 (mod 527) d u 2 y 2 (mod n) u 2 = 386 131 164 (mod 527) d u 3 y 3 (mod n) u 3 = 135 131 458 (mod 527) Nu återstår det bara en sista enkel uträkning: tu 1 (mod n) 251*273 13 (mod 527) = m 1 tu 2 (mod n) 251*164 58 (mod 527) = m 2 25

tu 3 (mod n) 251*458 72 (mod 527) = m 3 Vilket är precis det ursprungliga meddelandet m = 135872! 3.4.2 Scenario 2 Antag att Trent är en advokat och antag också att Alice representerar en avsändare som vill skicka en elektronisk handling till Trent som han måste skriva under (i detta fall menas kryptering med RSA algoritmen av hela dokumentet) för att bevittna att handlingen är äkta. Trent krypterar meddelandet och sedan skickar han handlingen tillbaka till Alice. Det är så det ska gå till om man ska bevittna en äkta handling. Antag nu att Mellory är en annan avsändare som vill att Trent ska kryptera en viss handling som Trent i vanliga fall aldrig skulle bevittna (till exempel kan det gälla ett förfalskad datum på handlingen eller att man har förfalskat vem handlingen gäller). Vi kallar en sådan handling för m. Syftet med detta scenario är att visa hur Mellory kan lura Trent till att bevittna m. Först väljer Mellory ut ett slumpvist tal x och beräknar y x e (mod n). Nyckeln e är ju publik (den ska vara publicerad, för att andra skall kunna ha en möjlighet att kontrollera Trents signaturer), så Mellory har inga problem med att få fram den. Efteråt beräknar Mellory m ym (mod n) och skickar sedan den nya handlingen m för kryptering till Trent. Och det är just här som det avgörande misstaget från Trents sida sker. Om Trent är inkonsekvent och blint krypterar Mellorys handling m, bevittnar han därmed helt omedvetet det förfalskade meddelandet m! Och detta går till på följande sätt: Efter krypteringen skickar nämligen Trent meddelandet m d (mod n) tillbaka till Mellory. Nu återstår det för Mellory endast att räkna ut värdet på ((m d mod n)*x -1 )(mod n) som är lika med m d (mod n) och som i sin tur är exakt den signerade handlingen m! 31 Detta illustreras i figuren på nästa sida. 31 Schneier s.527 26

Exempel med siffror: Tag p = 17 och q = 23 n = 17*23 = 391 (n-1)(q-1) = 16*22 = 352 Antag att m = 173569 m 1 = 17, m 2 = 35 och m 3 = 69. e är en publik nyckel, så den är känd av både Trent och Mellory. Tag exempelvis e = 59, som är då relativt prim med n. d = e -1 (mod (p-1)(q-1)) d = 59-1 (mod 352) Utökad Euklides Algoritm ger: 352 = 5*59+57 59 = 1*57+2 57 = 28*2+1 2 = 1*2 Går vi baklänges i ovanstående Euklides algoritm får vi då följande samband: 1 = 57-28*2 = 57-28(59-1*57) = = 57-28*59+28*57 = 29*57-28*59 = 29(352-5*59)-28*59 = 29*352-173*59 Med andra ord 1-173*59 (mod 352) Alltså, d = 59-1 -173 (mod 352) 179 (mod 352) 27

Således, d = 179 är Trents privata nyckel. Slumpvist väljer Mellory ut ett tal x, till exempel x = 7 och sedan beräknar han y = 7 59 14 (mod 391). Alltså, m 1 ym 1 (mod n) m 1 = 14*17 238 (mod 391) m 2 ym 2 (mod n) m 2 = 14*35 099 (mod 391) m 3 ym 3 (mod n) m 3 = 14*69 184 (mod 391) Således, meddelande som Mellory skickar till Trent för kryptering är m = 238099184. Trent använder nu sin privata nyckel d för att kryptera m: d m 1 (mod n) = 238 179 374 (mod 391) d m 2 (mod n) = 099 179 228 (mod 391) d m 3 (mod n) = 184 179 092 (mod 391) Nu skickar Trent den krypterade handlingen (m d mod n) = 374228092 tillbaka till Mellory. När Mellory får det, räknar han ut m d ((m d mod n)*x -1 ) (mod n), som är precis den krypterade handlingen m! Vi behöver nu därför beräkna x -1 (mod n), det vill säga 7-1 (mod 391). Utökad Euklides Algoritm ger: 391 = 55*7+6 7 = 1*6+1 6 = 1*6 Går vi baklänges i Euklides algoritm ovan får vi då följande samband: 1 = 7-1*6 = 7-1*(391-55*7) = =7-1*391+55*7 = 56*7-1*391 Detta är i sin tur ekvivalent med 1 56*7 (mod 391) Det vill säga 7-1 56 (mod 391). Alltså, ((m 1 d mod n)*x -1 )(mod n) 374*56 221 (mod 391) ((m 2 d mod n)*x -1 )(mod n) 228*56 256 (mod 391) ((m 3 d mod n)*x -1 )(mod n) 092*56 069 (mod 391) 28

Således, den krypterade handlingen m är 221256069, vilket borde exakt vara lika med m d (mod n), så vi kontrollerar: m 1 d (mod n) 17 179 221 (mod 391) m 2 d (mod n) 35 179 256 (mod 391) m 3 d (mod n) 69 179 069 (mod 391) Således, m = 221256069 - vilket överensstämmer med ovanstående värde! Det vill säga Mellory fick sin handling m bevittnad 3.4.3 Scenario 3 Eva vill att Alice ska signera en viss handling m 3 (med signering menas här kryptering av hela dokumentet med RSA algoritmen). För att få detta gjort tar hon fram två andra meddelanden - m 1 och m 2 - sådana att: m 3 m 1 m 2 (mod n). Om Eva kan övertala Alice att signera m 1 och m 2, kommer det i så fall att vara ekvivalent med signeringen av m 3. Detta får man fram på följande sätt: d d d m 3 (m 1 mod n)*(m 2 mod n). Som en slutsats kan man konstatera att RSA bör aldrig användas för kryptering av elektroniska handlingar som obehöriga vill att man ska kryptera. 32 Man ska vara extremt försiktig med det, annars kan det i vissa fall leda till tragiska följder. Exempel med siffror: Tag p = 29 och q = 41 n = pq = 29*41 = 1189. (p-1)(q-1) = 28*40 = 1120. Om e = 641 d = e -1 (mod (p-1)(q-1)) = 641-1 (mod 1120). Utökad Euklides Algoritm ger: 1120 = 1*641+479 641 = 1*479+162 479 = 2*162+155 162 = 1*155+7 155 = 22*7+1 7 = 1*7 32 Schneier s.528 29

Går man baklänges i Euklides algoritm ovan får man då följande samband: 1 = 155-22*7 = 155-22(162-1*155) = = 155-22*162+22*155 =23*155-22*162 = = 23(479-2*162)-22*162 = 23*479-46*162-22*162 = = 23*479-68*162 = 23*479-68(641-1*479) = = 23*479-68*641+68*479 =91*479-68*641 = = 91(1120-1*641)-68*641 = 91*1120-91*641-68*641 = = 91*1120-159*641 Detta är i sin tur ekvivalent med: 1-159*641 (mod 1120) eftersom 91*1120 0 (mod 1120). 641-1 -159 (mod 1120) 641-1 961 (mod 1120). Alltså d = 961 är Alices privata nyckel. Antag nu att m 1 = 379, m 2 = 115 och m 3 = 781 (då är villkoret m 3 m 1 m 2 (mod n) uppfyllt). Och antag sedan att Eva får Alice att kryptera m 1 och m 2, det vill säga: m d 1 (mod n) 379 961 338 (mod 1189) m d 2 (mod n) 115 961 115 (mod 1189) d d d m 3 (m 1 mod n)*(m 2 mod n) 338*115 822 (mod 1189), vilket är precis den krypterade handlingen m 3! Kontroll: m d 3 (mod n) 781 961 822 (mod 1189), vilket överensstämmer med ovanstående värde! 3.4.4 Attack vid användning av gemensam modulo När det gäller en grupp användare kan man tänka sig ett alternativ där alla deltagare blir tilldelade ett gemensamt värde på n, men var och en av dem får istället sina egna nycklar e respektive d. Tyvärr kommer inte denna variant att fungera och här ska vi förklara varför. 30

Antag att ett och samma meddelande har krypterats med två olika nycklar e 1 respektive e 2, men man använde samma modulo n. Och antag sedan att de båda nycklarna är relativt prima - vilket är också alltid fallet. Då är det möjligt att få fram klartexten m, det vill säga det ursprungliga meddelandet, utan att ha någon kännedom alls om de privata nycklarna d 1 och d 2. Låt oss se hur detta kan gå till. Givet: Klartexten m, två publika nycklar e 1 och e 2 och gemensam modulo n. Två olika användare krypterar nu m: c 1 m e1 (mod n) c 2 m e2 (mod n) n, e 1, e 2, c 1 och c 2 är kända av alla. Eftersom e 1 och e 2 är relativt prima, kan man med hjälp av utökad Euklides Algoritm bestämma r och s, sådana att re 1 +se 2 = 1. Antingen r eller s kommer nu att vara negativt; antag att det blir r. -1 Återigen används utökad Euklides Algoritm för att bestämma c 1 (mod n). Slutligen beräknas (c -1 1 ) -r (c s 2 ) m (mod n), vilket är exakt det ursprungliga meddelandet m! Slutsats: använd aldrig samma modulo n för en grupp användare! 33 Exempel med siffror: Antag att m = 4729, där m 1 = 47 och m 2 = 29. p = 19 och q = 37 n = 19*37 = 703 (gemensam modulo för alla användare). e 1 = 317 och e 2 = 223 e1 c 11 m 1 (mod n) c 11 = 47 317 100 (mod 703) e1 c 12 m 2 (mod n) c 12 = 29 317 014 (mod 703) Alltså c 1 = 100014 e2 c 21 m 1 (mod n) c 21 = 47 223 232 (mod 703) e2 c 22 m 2 (mod n) c 22 = 29 223 452 (mod 703) Alltså c 2 = 232452 n, e 1, e 2, c 1 och c 2 är publika (de är kända av alla). 33 Schneier s.528 31

Eftersom e 1 och e 2 är relativt prima, existerar det r och s sådana att re 1 +se 2 = 1. Utökad Euklides Algoritm ger: 317 = 1*223+94 223 = 2*94+35 94 = 2*35+24 35 = 1*24+11 24 = 2*11+2 11 = 5*2+1 5 = 1*5 Går vi nu baklänges i Euklides Algoritm ovan får vi då följande samband: 1 = 11-5*2 = 11-5(24-2*11) = = 11-5*24+10*11 = 11*11-5*24 = = 11(35-1*24)-5*24 = 11*35-11*24-5*24 = = 11*35-16*24 = 11*35-16(94-2*35) = = 11*35-16*94+32*35 = 43*35-16*94 = = 43(223-2*94)-16*94 =43*223-86*94-16*94 = = 43*223-102*94 = 43*223-102(317-1*223) = = 43*223-102*317+102*223 = 145*223-102*317 Således, sambandet ovan är 1 = 145*223-102*317 Alltså r = -102 och s = 145. Nu använder vi utökad Euklides Algoritm igen för att bestämma c -1 1 : c 1 = 100014 c 11 = 100 och c 12 = 014 n = 703 c -1 11 : 703 = 7*100+3 100 = 33*3+1 3 = 1*3 32

Går vi nu baklänges i algoritmen får vi: 1 = 100-33*3 = 100-33(703-7*100) = = 100-33*703+231*100 = 232*100-33*703 Detta är i sin tur ekvivalent med sambandet: 232*100 1 (mod 703) Det vill säga 100-1 232 (mod 703). Således, c -1 11 = 232. c -1 12 : 703 = 50*014+3 014 = 4*3+2 3 = 1*2+1 2 = 1*2 Går vi nu baklänges i algoritmen får vi: 1 = 3-1*2 = 3-1(014-4*3) = 3-1*014+4*3 = =5*3-1*014 = 5(703-50*014)-1*014 = = 5*703-250*014-1*014 = 5*703-251*014 Detta är i sin tur ekvivalent med sambandet: -251*014 452*014 (mod 703) 1 (mod 703) Det vill säga 014-1 452 (mod 703) Således, c -1 12 = 452. -1 Alltså, c 1 = 232452 Sedan räknar man ut (c -1 1 ) -r s *c 2 m (mod n). (c -1 11 ) -r s *c 21 = (232) -(-102) *232 145 = 232 247 47 (mod 703) (1) (c -1 12 ) -r s *c 22 = (452) -(-102) *452 145 = 452 247 29 (mod 703) (2) (1) och (2) tillsammans ger (c -1 1 ) -r *c s 2 (mod n) = 4729, som är precis lika med m (mod n) = 4729! Vilket innebär att vi fick tillbaka det ursprungliga meddelandet m utan att ens behöva -1-1 veta de privata nyckarna d 1 = e 1 (mod n) och d 2 = e 2 (mod n). 33