Cryptografie en ICT L.V.de.Zeeuw@HR.NL
5 Public-key cryptografie (Asymetrische cryptosystemen) deel 3 L.V. de Zeeuw Cryptografie en ICT
RSA systeem Ron Rivest, Adi Shamir, Leonard Adleman ontwikkelden in 1978 RSA Leonard Adleman Adi Shamir Ron Rivest L.V. de Zeeuw Cryptografie en ICT
RSA systeem RSA wordt gebruikt voor: Mathematisch principe: Encryptie Plaatsen van digitale handtekeningen Mathematisch principe: het berekenen van het product van twee priemgetallen is eenvoudiger dan het ontbinden van een getal ik priemfactoren. Toepassingen: In commerciële software van MS, Sun, Novell Hardware: smartcards en netwerkcomponenten Internet Protocollen L.V. de Zeeuw Cryptografie en ICT
L.V. de Zeeuw Cryptografie en ICT
Priemgetallen Wiskundig Intermezzo Een priemgetal is een natuurlijk getal groter dan 1 dat slechts deelbaar is door 1 en door zichzelf. Het getal 1 is dus geen priemgetal. Priemgetallen vormen een belangrijk onderwerp in de tak van de wiskunde die getaltheorie genoemd wordt. Een van de redenen hiervan is dat priemgetallen met zeer veel cijfers worden toegepast in de cryptografie. L.V. de Zeeuw Cryptografie en ICT
Priemgetallen Wiskundig Intermezzo De eerste priemgetallen (< 100) zijn: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 en 97 Hoofdstelling: Elk natuurlijk getal > 1 is op precies 1 manier als product van priemgetallen te schrijven. L.V. de Zeeuw Cryptografie en ICT
Priemgetallen wiskundig intermezzo Opdracht: Welke twee priemgetallen leveren het product 15? Ontbinding in priemfactoren: 3 x 5 Welke twee priemgetallen leveren het product 187? Ontbinding in priemfactoren: 11 x 17 En welke twee priemgetallen leveren 1147 ? Ontbinding in priemfactoren: 31 x 37 En welke twee priemgetallen leveren 16199 ? Ontbinding in priemfactoren: 97 x 167 Ontbinden in priemfactoren L.V. de Zeeuw Cryptografie en ICT
Priemgetallen Wiskundig Intermezzo Er zijn oneindig veel priemgetallen. Dit werd al bewezen door Euclides. Bewijs: Stel dat p1 p2 , p3 …pn de enige priemgetallen zijn. Het getal N= (p1 x p2 ,x p3 x … x pn) +1. Als N een priemgetal is, zijn we klaar, want dan hebben we bewezen dat pn niet het grootste priemgetal is. Als dit niet het geval is, dan is het getal N deelbaar door priemgetal Q. (Zie de hoofdstelling van de rekenkunde, waarin staat dat elk natuurlijk getal > 1 op precies één manier te schrijven is product van priemgetallen). Echter, voor n=1,2,..k geldt steeds dat N bij deling door pn rest 1 geeft, en N dus niet deelbaar is door pn. Dus moet N deelbaar zijn door een priemgetal groter dan pn, waarmee opnieuw de stelling bewezen is. L.V. de Zeeuw Cryptografie en ICT
Priemgetallen Wiskundig Intermezzo Het grootste priemgetal (op dit moment, link op eigen risico: 16,73 Megabytes text ): 243112609-1 Ontdekt op 23-Aug-2008 . Het getal bevat 12.978.189 cijfers. Getallen van de soort 2p - 1 met p priem; de priemgetallen van deze vorm heten Mersenne-priemgetallen Meer informatie over (grote) priemgetallen is te vinden op: http://primes.utm.edu/ Hier kun je dus ook terecht als je een groot priemgetal nodig hebt. L.V. de Zeeuw Cryptografie en ICT
Priemgetallen Wiskundig Intermezzo De zeef van Eratosthenes is een algoritme waarmee alle priemgetallen kunt vinden tussen 1 en getal n. Schrijf alle getallen 2 t/m n op. Het eerste getal in deze reeks voeg je toe aan de gevonden priemgetallen. Verwijder nu alle getallen die deelbaar zijn door dit priemgetal. Herhaal 2 en 3 tot er geen getallen meer over zijn. L.V. de Zeeuw Cryptografie en ICT
RSA systeem Mathematisch principe: het berekenen van het product van twee priemgetallen is eenvoudiger dan het omgekeerde. Vergelijk dit met het telefoonboek: je weet iemands naam en adres en kunt dan snel zijn telefoonnummer opzoeken, maar als je alleen iemands telefoonnummer weet, is het ondoenlijk zijn naam en adres te vinden alleen met dat telefoonboek. Opbellen gaat sneller! L.V. de Zeeuw Cryptografie en ICT
RSA Sleutelgeneratie Stap 1 Kies twee grote priemgetallen p en q Voorbeeld: p = 73 en q = 103. Deze priemgetallen zijn geheim. L.V. de Zeeuw Cryptografie en ICT
RSA Sleutelgeneratie Stap 2 Bepaal het product n=p.q Voorbeeld: n = p · q = 73 x 103 = 7519 Dit is één van de openbare sleutels! L.V. de Zeeuw Cryptografie en ICT
RSA Sleutelgeneratie Stap 3 Bereken het getal K=(p-1)(q-1) Kies een getal e zodanig dat 1< e < K én GGD(e,K)=1 e is de tweede openbare sleutel. Voorbeeld: K= (73-1) (103-1)=7344. Kies bijvoorbeeld e=13. Controleer GGD(7344,13)=1. Nu is 13 de andere openbare sleutel. L.V. de Zeeuw Cryptografie en ICT
RSA Sleutelgeneratie Stap 4 Bereken het getal d zodanig dat e·d=1 (mod K) Het getal d is de geheime sleutel Voorbeeld: Bepaal e · d = 13 · d = 1 (mod 7344) d = 565 de geheime sleutel L.V. de Zeeuw Cryptografie en ICT
Berekening 13.d=1 (mod 7344) We gaan uit van de definitie: a = b ( mod n) dan en slechts dan als er een geheel getal k is waarvoor geldt: a = b + k·n 13·d = 1 (mod 7344) dan en slechts dan als er een geheel getal k is waarvoor geldt: 13·d=1+k·7344 L.V. de Zeeuw Cryptografie en ICT
Berekening 13.d=1 (mod 7344) 13·d=1+k·7344 → 13·d - k·7344=1 Hoe groot zijn d en k? 13· 0 - 1·7344 =-7344 (1) 13· 1 - 0.7344 = 13 (2) 13· 0 - 1·7344 =-7344 (1) 13·564 - 0·7344 = 7332 (3) Vergelijking (2) x 564 ------------------------------------ + 13·564 - 1·7344 = -12 (4) 13· 1 – 0.7344= 13 (2) ------------------------------------- + 13·565 – 1·7344 = 1 → 13·565=1+1.7344 → 13·565=1 (mod 7344) L.V. de Zeeuw Cryptografie en ICT
RSA Sleutelgeneratie De publieke sleutel: getallenpaar {e,n} De geheime sleutel: getallenpaar {d,n} Voorbeeld: Publieke sleutel: { 13, 7519} Geheime sleutel: {565,7519} L.V. de Zeeuw Cryptografie en ICT
RSA Sleutelgeneratie In de praktijk werkt men echter niet met priemgetallen van twee of drie cijfers, maar van elk zo'n honderd cijfers. Hun product (een getal van zo'n 200 cijfers) wordt openbaar gemaakt. Het terugvinden van die grote priemgetallen is in een redelijke rekentijd niet te doen. Dus is het cryptosysteem niet te breken. L.V. de Zeeuw Cryptografie en ICT
RSA encryptie / decryptie Eerst de boodschap omzetten in getallen bijvoorbeeld via ASCII. De getallen om zetten in blokken van vaste lengte M1,M2 M3, … Mi waarbij de lengte van Mi iets kleiner dient te zijn dan de lengte van de modulus n Encryptie: C = Me (mod n) Decryptie: M = Cd (mod n) L.V. de Zeeuw Cryptografie en ICT
RSA encryptie voorbeeld Decryptie: C = Me (mod n) We hadden e= 13 en n= 7519 als publieke sleutel van bv Bob Als Anna de tekst: ‘Ik hou van je’ (wat natuurlijk niemand nog mag weten) wil sturen aan Bob, dan moet de tekst eerst in bv ASCII worden omgezet. L.V. de Zeeuw Cryptografie en ICT
RSA encryptie voorbeeld Tekst I k h o u v a n j e ASCII 73 107 32 104 111 117 118 97 110 106 101 Anna berekent nu met de publieke sleutel van Bob: C = Me (mod n) = =7313 (mod 7519) =1671849507393788885941033 (mod 7519) =7300 Etc voor elke letter … k: C = 10713 (mod 7519) = 1480 L.V. de Zeeuw Cryptografie en ICT
RSA decryptie voorbeeld Decryptie: M = Cd (mod n) We hadden d=565 en n= 7519 als geheime sleutel van Bob Bob ontvangt de eerste geëncrypte letter van Anna: 7300 en berekent: M=7300565 (mod 7519) =73 Op zoeken in ASCII tabel 73 = ‘I’ Etc voor andere ontvangen letters … L.V. de Zeeuw Cryptografie en ICT
ElGamal ElGamal is een public-key crypto systeem gebaseerd op ‘discrete logaritmen’ genoemd naar Taher Elgamal ElGamal kan gebruikt worden voor vercijferen en het zetten van digitale handtekeningen. L.V. de Zeeuw Cryptografie en ICT
ElGamal Sleutelgeneratie Formeel: Bepaal een priemgetal p. Kies random getallen g en x waarbij g<p en x<p Bereken y=gx (mod p) De geheime sleutel {x,p} De publieke sleutel {y,g,p} Voorbeeld (Bob) p=7 g=3,x=4 y=34 mod 7 = 4 Geheime sleutel {4,7} Publieke sleutel {4,3,7} L.V. de Zeeuw Cryptografie en ICT
ElGamal Encryptie Formeel: Bericht M te versturen Kies random getal k waarbij GGD(k,p-1)=1 Bereken c1=gk (mod p) en c2=yk M (mod p) {c1,c2) is de cijfertekst Voorbeeld (Anna): M=2 te sturen aan Bob k=5 controleer GGD(5,7-1)=1 c1=35 (mod 7) = 5 en c2=45 · 2 (mod 7) = 4 {5,4} is de cijfertekst L.V. de Zeeuw Cryptografie en ICT
ElGamal Decryptie Formeel: Bereken: M = c2 / c1x (mod p) Voorbeeld (Bob): Bob berekent: M = 4 / 54 (mod 7)= = 4 / 2 = 2 L.V. de Zeeuw Cryptografie en ICT
Digital Signature Algorithm DSA kan alleen gebruikt worden voor het zetten van digitale handtekeningen. DSA is gepubliceerd door het National Institute of Standards and Technology onder de naam Digital Signature Standard (DSS) DSA is een variant op ElGamal en ook gebaseerd op discrete logaritmen. L.V. de Zeeuw Cryptografie en ICT
Kritiek op DSA Verificatie van de handtekening is te langzaam. Onderliggend cryptosysteem is onvoldoende geanalyseerd. Het ontwerp is geheim. L.V. de Zeeuw Cryptografie en ICT
DSA sleutelgeneratie Genereer twee priemgetallen p en q waarvoor geldt: 2i-1 < p < 2i waarbij 512 ≤ i ≤ 1024 én i een veelvoud is van 64 q moet deler zijn van p-1 én 2159 < q < 2160 Kies een getal t waarvoor geldt t < p-1 én g=t(p-1)/q (mod p)> 7 Kies een getal x waarvoor geldt x<q. Openbaar: {p,q,g} Geheim: {x} Bereken: y=gx (mod p) Publieke sleutel: {y} Secret-key {x} Verder wordt er gebruik gemaakt van het Secure Hash Algorithm: SHA(M) L.V. de Zeeuw Cryptografie en ICT
DSA signeren De afzender kiest een random getal k<q Bereken r = gk (mod p) mod q én s = [k-1 (h(M) + xr)] (mod q) De digitale handtekening bestaat uit: {r,s}. Deze wordt verstuurd. L.V. de Zeeuw Cryptografie en ICT
DSA verificatie De ontvanger ontvangt {r,s} en kent {p,q,g} Bereken: w = s-1 (mod q) u1=[ h(M) w ] (mod q) u2=rw (mod q) v =gu1yu2 (mod p)) mod q Controleer of v=r L.V. de Zeeuw Cryptografie en ICT
Elliptic-Curve Cryptografie (ECC) Elliptische krommen (Elliptic-Curve) zijn géén ellipsen. Ze heten zo omdat elliptische kromme vergelijkingen lijken op de vergelijkingen die gebruikt worden voor het berekenen van de omtrek van een ellips. L.V. de Zeeuw Cryptografie en ICT
Voorbeeld elliptische kromme: y2=x3+x+1 (x,y є R) L.V. de Zeeuw Cryptografie en ICT
Voorbeeld elliptische kromme: y2=x3-x (x,y є R) L.V. de Zeeuw Cryptografie en ICT
Met Maple een (elliptische) kromme tekenen Start Maple 9.5 Kies: Tools/Assistents/Plot Builder… Klik op ‘Add’ Vul je vergelijking in bv: y^2=x^3-4*x+1 Klik op ‘Accept’ Klik op ‘Done’ Klik op ‘Plot’ L.V. de Zeeuw Cryptografie en ICT
Elliptic-Curve Cryptografie ECC is vele malen sneller dan de eerder genoemde systemen voor asymmetrische cryptografie. De sleutels kunnen aanzienlijk korter zijn bij een vergelijkbaar beveiligingsniveau. Toepassing in mobiele telefoons, chipkaarten e.d. (beperkte opslag en verwerkingscapaciteit). L.V. de Zeeuw Cryptografie en ICT
EC definitie zoals van belang voor ECC Zp is de verzameling gehele getallen tussen 0 en priemgetal p. Een elliptische kromme E over Zp wordt gedefinieerd als y2=x3+ax+b (mod p) waarbij: a,b є Zp en 4a3+27b2≠0 (mod p) E(Zp) bestaat uit getal paren(x,y) є Zp L.V. de Zeeuw Cryptografie en ICT
Eigenschap elliptische krommen Als P en Q punten zijn op kromme dan is P+Q=R ook een punt op de kromme. Let op: de + is een bewerking die optelling wordt genoemd maar anders gedefinieerd is als onze gebruikelijke optelling. Herhaling van (deze) optelling is een vermenigvuldiging. ECC is gebaseerd op het discrete logaritme probleem maar nu binnen de oplossingsruimte van een elliptische krommen en met de bewerking herhaald optellen (vermenigvuldigen) zoals gedefinieerd binnen deze oplossingsruimte. L.V. de Zeeuw Cryptografie en ICT
Discrete logaritme k is een geheel getal k.P = R = P+P+P+P+…+P k R is makkelijk te berekenen gegeven k,P k is moeilijk te berekenen gegeven R,P k heet de discrete logaritme van R over P L.V. de Zeeuw Cryptografie en ICT
ECC tutorial Een zeer goede tutorial over de wiskunde achter ECC is te vinden via deze link Geen tentamen stof … Finite Geometric Elliptic Curve Model Animated Solution L.V. de Zeeuw Cryptografie en ICT