Cryptografie en ICT L.V.de.Zeeuw@HR.NL
5 Public-key cryptografie (Asymetrische cryptosystemen) deel 2 L.V. de Zeeuw Cryptografie en ICT
Diffie-Hellman sleutel uitwisseling Bij symmetrische cryptografie moeten beiden communicatie partners over dezelfde sleutel beschikken. Whitfield Diffie en Martin Hellman (gebaseerd op een concept bedacht door Ralph Merkle) bedachten in 1976 een oplossing voor uitwisselen van symmetrische sleutels over een onveilig kanaal. L.V. de Zeeuw Cryptografie en ICT
Martin Hellman Whitfield Diffie Ralph Merkle L.V. de Zeeuw Cryptografie en ICT
Werking Diffie-Hellman systeem Anna en Bob willen met elkaar communiceren. Ze dienen over dezelfde geheime sleutel te beschikken. L.V. de Zeeuw Cryptografie en ICT
Werking Diffie-Hellman systeem Priemgetallen p=23 en g=5 Anna en Bob spreken twee grote priemgetallen af. Deze getallen zijn openbaar. L.V. de Zeeuw Cryptografie en ICT
Werking Diffie-Hellman systeem Geheim getal x=6 Geheim getal y=15 Anna bedenkt een geheim getal x Bob bedenkt een geheim getal y. L.V. de Zeeuw Cryptografie en ICT
Werking Diffie-Hellman systeem 56 mod 23 = 8. De boodschap van Anna aan Bob is het getal gx (mod p) L.V. de Zeeuw Cryptografie en ICT
Werking Diffie-Hellman systeem 515 mod 23 = 19 De boodschap van Bob aan Anna is het getal gy (mod p) L.V. de Zeeuw Cryptografie en ICT
Werking Diffie-Hellman systeem 196 mod 23 = 2 Anna berekent (gy (mod p) )x De uitkomst is de gemeenschappelijke geheime sleutel L.V. de Zeeuw Cryptografie en ICT
Werking Diffie-Hellman systeem 815 mod 23 = 2 Bob berekent (gx (mod p) )y De uitkomst is de gemeenschappelijke geheime sleutel. Immers (gy (mod p) )x =(gx (mod p) )y L.V. de Zeeuw Cryptografie en ICT
Werking Diffie-Hellman systeem De gemeenschappelijke geheime sleutel kan vervolgens gebruikt worden voor het symmetrische vercijferen van boodschappen met bijvoorbeeld DES, IDEA of AES. L.V. de Zeeuw Cryptografie en ICT
Discrete logaritme probleem Het Diffie-Hellmansysteem is gebaseerd op het discrete logaritme probleem: Vindt x gegeven g, p en gx (mod p) Voorbeeld 1: Gegeven: g=2, p=3 en 2x (mod 3) = 1 Hoeveel is x ? Antwoord x=2. L.V. de Zeeuw Cryptografie en ICT
Discrete logaritme probleem Voorbeeld 2: Gegeven: g=5, p=23 en 5x (mod 23) = 8 Hoeveel is x ? Antwoord x=6 Voorbeeld 3: Gegeven: g=6972593 , p=13466917 en 6972593x (mod 13466917) = 5331085 Hoeveel is x ? Antwoord x=123. L.V. de Zeeuw Cryptografie en ICT
Diffie-Hellman probleem Gegeven g, p en gx (mod p) en gy (mod p) vind gxy (mod p) - de sleutel! L.V. de Zeeuw Cryptografie en ICT
Aanval op Diffie-Hellman systeem Probleem: Hoe weet Bob dat de boodschap afkomstig is van Anna? Niet! Chris kan Anna en Bob voor de gek houden en achter de inhoud van de boodschap komen. L.V. de Zeeuw Cryptografie en ICT
Aanval Diffie-Hellman systeem Anna kiest een geheim getal x Bob kiest een geheim getal y Chris kiest een geheim getal z P en G zijn openbaar L.V. de Zeeuw Cryptografie en ICT
Aanval Diffie-Hellman systeem gx (mod p) gz (mod p) gz (mod p) gy (mod p) L.V. de Zeeuw Cryptografie en ICT
Aanval Diffie-Hellman systeem Anna berekent (gz (mod p))x Chris berekent (gx (mod p))z en (gy (mod p))z Bob berekent (gz (mod p))y L.V. de Zeeuw Cryptografie en ICT
Aanval Diffie-Hellman systeem Anna en Bob denken dat ze met elkaar communiceren. Elke boodschap wordt door Chris onderschept en eventueel gewijzigd aan Bob doorgegeven (of omgekeerd) ‘Man in the Middle attack’ of ‘Middle person attack’ L.V. de Zeeuw Cryptografie en ICT
YouTube: Public Key Cryptography - Diffie-Hellman Key Exchange http://www.youtube.com/watch?v=3QnD2c4Xovk L.V. de Zeeuw Cryptografie en ICT
Knapzak systeem Het eerste public-key cryptosysteem dat gebruikt kon worden voor encryptie en decryptie is het knapzak (knapsack) cryptosysteem. In 1978 bedacht door Merkle en Hellman. L.V. de Zeeuw Cryptografie en ICT
Knapzak systeem Het knapzak-systeem is meerdere malen gekraakt is daarna wel verbeterd maar wordt niet als veilig beschouwd en tegenwoordig zelden gebruikt. L.V. de Zeeuw Cryptografie en ICT
Knapzak probleem Een knapzak is gevuld met een keuze uit een grote verzameling voorwerpen ieder met zijn eigen gewicht. Kun je uitgaande van het totale gewicht afleiden welke voorwerpen, gegeven hun gewicht, wel of niet in de knapzak zitten? L.V. de Zeeuw Cryptografie en ICT
Som wiskundig intermezzo Met Σ (griekse letter sigma) wordt een optelling (som) bedoeld. Voorbeeld: 4 Σ k = 1+2+3+4 = 10 k=1 L.V. de Zeeuw Cryptografie en ICT
Knapzak probleem Gegeven een knapzak vector (de publieke sleutel): a= (a1, a2,a3,... ,an ) Gegeven een binaire vector (de klare tekst): x= (x1, x2,x3,... ,xn ) waarbij xi = {0,1} n Dan S = Σ aixi i=1 (S is de cijfertekst) Wanneer a en x gegeven zijn kun je S makkelijk bepalen. Maar als a en S gegeven zijn is x veel moeilijker te berekenen. L.V. de Zeeuw Cryptografie en ICT
Voorbeeld 1 Gegeven knapzakvector a = (3,5,7,9) en n = 4 (het aantal elementen in a) S =10 Wat is de binaire vector x? Antwoord x = (1,0,1,0) omdat 1x3 + 0x5 + 1x7 + 0x9 = 10 L.V. de Zeeuw Cryptografie en ICT
Voorbeeld 2 0x16+1x20+1x31+0x34+0x55+1x62+0x64+1x70=183 Gegeven knapzakvector a = (16,20,31,34,55,62,64,70) en n = 8 (het aantal elementen in a) S =183 Wat is de binaire vector x? Antwoord x = (0,1,1,0,0,1,0,1) omdat 0x16+1x20+1x31+0x34+0x55+1x62+0x64+1x70=183 L.V. de Zeeuw Cryptografie en ICT
Voorbeeld 3 Gegeven knapzakvector a = (4,7,1,12,10) en n = 5 (het aantal elementen in a) S =17 Wat is de binaire vector x? Antwoord x = (0,1,0,0,1) en (1,0,1,1,0) omdat 0x4+1x7+0x1+0x12+1x10=17 en 1x4+0x7+1x1+1x12+0x10=17 L.V. de Zeeuw Cryptografie en ICT
Knapzak crypto Kies een knapzak vector a en een som S zodanig dat het vinden van de binaire vector x ondoenlijk is. Een klaretekst x (in bits omgezet) kan met openbare sleutel a leiden tot de cijfertekst S. L.V. de Zeeuw Cryptografie en ICT
Probleempje … Superstijgende rijen Ook voor de ontvanger is het moeilijk de om de klare tekst terug te vinden. Er zijn gelukkig knapzakken waar de oplossing altijd eenvoudig is: Superstijgende rijen L.V. de Zeeuw Cryptografie en ICT
Superstijgende rij Een superstijgende rij is een rij waarbij elk element groter is dan de som van alle voorgaande elementen. Voorbeelden: a= (1,2,4,8,16,32,64) a = (141, 203, 427, 981, 2406) Formeel: i-1 ai > S = Σ aj, 1 < i ≤ n j=1 L.V. de Zeeuw Cryptografie en ICT
Superstijgende rij Opdracht: Als een superstijgende rij a’=(1,3,5,10,22) en S=14 wat is dan de binaire vector x? 1 4 14 (1, 3, 5, 10, 22) ------------------------ - 0 1 4 {1, 1, 0, 1, 0} L.V. de Zeeuw Cryptografie en ICT
vercijferde superstijgende rij! Probleempje… Nu is het ontcijferen eenvoudig geworden … voor iedereen! Oplossing: vercijferde superstijgende rij! L.V. de Zeeuw Cryptografie en ICT
GGD wiskundig intermezzo De grootste gemene deler, afgekort met ggd (gcd in het Engels) van een aantal gegeven getallen is het grootste getal waar alle gegeven getallen door gedeeld kunnen worden. De delers van 30 zijn: 1, 2, 3, 5, 6, 10, 15 en 30. De delers van 48 zijn: 1, 2, 3, 4, 6, 8, 12, 16, 24 en 48. De grootst gemeenschappelijke deler is 6. We noteren dat als: ggd(30,48)=6 Voorbeelden: ggd(6,12)=6 ggd(6,9,12)=3 ggd(6,35)=1 (6 en 35 zijn relatief priem) L.V. de Zeeuw Cryptografie en ICT
Algoritme van Euclides wiskundig intermezzo De GGD kun je bepalen met het algoritme van Euclides: function ggd(a, b) while a ≠ b If a > b a := a - b else b := b - a return a L.V. de Zeeuw Cryptografie en ICT
Algoritme van Euclides wiskundig intermezzo Animatie van het algoritme van Euclides voor de getallen 252 en 105. De dwarsbalkjes vertegenwoordigen veelvouden van 21, de grootste gemene deler (ggd). In elke stap wordt het kleinere getal van het grotere getal afgetrokken, dit totdat een getal tot nul wordt teruggebracht. Het resterende getal noemt men de grootste gemene deler. Bron: http://nl.wikipedia.org/wiki/Algoritme_van_Euclides L.V. de Zeeuw Cryptografie en ICT
Algoritme van Euclides wiskundig intermezzo Rekenschema voor algoritme van Euclides: GGD(20,8)=4 20=2x8+4 8=2x4+0 GGD(385,120)=5 385=3x120+25 120=4x 25+20 25=1x 20+ 5 20=4x 5+ 0 L.V. de Zeeuw Cryptografie en ICT
Uitgebreide Algoritme van Euclides wiskundig intermezzo Er is ook een uitgebreid algoritme van Euclides. http://nl.wikipedia.org/wiki/Uitgebreid_algoritme_van_Euclides Dit algoritme wordt gebruikt om de multiplicatieve inverse van een getal te vinden Een multiplicatieve inverse van een getal a is het getal b waarvoor geldt ab = 1 (modulo m) L.V. de Zeeuw Cryptografie en ICT
Uitgebreide Algoritme van Euclides wiskundig intermezzo Vermenigvuldiging modulo: 7 x 1 2 3 4 5 6 Opdracht: Met welke getal moet je 3 vermenigvuldigen (modulo 7) om 1 als antwoord te krijgen? 3x5=1 (mod 7) 3 en 5 heten elkaars multiplicatieve inversen L.V. de Zeeuw Cryptografie en ICT
Uitgebreide Algoritme van Euclides wiskundig intermezzo Voor welke waarde van a geldt dat a · 7 = 1 (mod 32) ? We zoeken een a en een b zodat geldt: a · 7 + b · 32 = 1 Eerst: 0 · 7 + 1 · 32 = 32 (1) 1 · 7 + 0 · 32 = 7 (2) Links en rechts van (2) x 4 geeft: 4 · 7 + 0 · 32 = 28 (3) L.V. de Zeeuw Cryptografie en ICT
Uitgebreide Algoritme van Euclides wiskundig intermezzo 0 · 7 + 1 · 32 = 32 (1) 4 · 7 + 0 · 32 = 28 (3) ------------------------ Aftrekken -4 · 7 + 1 · 32 = 4 (4) 1 · 7 + 0 · 32 = 7 (2) -4 · 7 + 1 · 32 = 4 (4) ------------------------- Aftrekken 5 · 7 - 1 · 32 = 3 (5) L.V. de Zeeuw Cryptografie en ICT
Uitgebreide Algoritme van Euclides wiskundig intermezzo 1 · 7 + 0 · 32 = 7 (2) -4 · 7 + 1 · 32 = 4 (4) ------------------------- Aftrekken 5 · 7 - 1 · 32 = 3 (5) -9 · 7 + 2 · 32 = 1 (6) L.V. de Zeeuw Cryptografie en ICT
Uitgebreide Algoritme van Euclides wiskundig intermezzo -9 · 7 + 2 · 32 = 1 (6) Hier staat de oplossing van ons probleem. Want regel (6) levert: -9 · 7 = 1 - 2 · 32 Dat is vertaald naar het modulo-rekenen: - 9 · 7 = 1 (mod 32) Conclusie: a = 23 (-9+32). Dit noemen we de inverse van 7 (mod 32). Inderdaad geldt: 23 · 7 = 1 (mod 32) immers -9 = 23 (mod 32) Experimenteer met: Vermenigvuldigtabel modulo m NB a = b (mod m) als a = b + k · m L.V. de Zeeuw Cryptografie en ICT
Knapzak crypto stap 1 i-1 a’i > Σ aj, j=1 Genereer een superstijgende rij (geheime sleutel) a’: i-1 a’i > Σ aj, j=1 Voorbeeld: Bob genereert: a’ = (1,3,5,10,22): de geheime sleutel L.V. de Zeeuw Cryptografie en ICT
Knapzak crypto stap 2 m > Σ aj j=1 Kies een getal m groter dan de som van alle getallen in a’: n m > Σ aj j=1 Voorbeeld: 1+3+5+10+22 = 41. Bob kiest m=50 L.V. de Zeeuw Cryptografie en ICT
Knapzak crypto stap 3 Kies een waarde w zodanig dat w en m relatief priem zijn: GGD(w,m)=1 Voorbeeld: Bob kiest w = 7 en controleren GGD(7,50)=1 L.V. de Zeeuw Cryptografie en ICT
Knapzak crypto stap 4 Bereken de inverse van w: w-1 zodanig dat ww-1=1 (mod m) Voorbeeld: Bob berekent: 7 w-1 = 1 (mod 50) → w-1 = 43 Controleer dat 7 x 43 = 1 (mod 50) L.V. de Zeeuw Cryptografie en ICT
Knapzak crypto stap 5 Bereken b (publieke sleutel) door elk element van a’ te vermenigvuldigen met w (mod m) b = w a’ (mod m) Voorbeeld: a’ = (1,3,5,10,22) dus b1 = 7 x 1 (mod 50) = 7 b2 = 7 x 3 (mod 50) = 21 b3 = 7 x 5 (mod 50) = 35 b4 = 7 x 10 (mod 50) = 20 b5 = 7 x 22 (mod 50) = 4 Dus b = (7,21,35,20,4): de publieke sleutel van Bob L.V. de Zeeuw Cryptografie en ICT
Knapzak crypto stap 6 Het openbaar gegeven is b a’, m, w, w-1 worden geheim gehouden. Voorbeeld: Openbaar: b = (7,21,35,20,4) Geheim: a’ = (1,3,5,10,22), m=50,w=7, w-1=43 L.V. de Zeeuw Cryptografie en ICT
Knapzak crypto stap 7 Cijfertekst S kan de afzender berekenen door de bewerking S=bx waar x de klare tekst is in bits (bitvector) die de afzender aan de ontvanger wil sturen. Voorbeeld: als de publieke sleutel van Bob is b = (7,21,35,20,4) en x=(1,1,0,1,0) dan is S=bx=1x7+1x21+0x35+1x20+0x4=48 Het vercijferde bericht van Anna aan Bob is 48 L.V. de Zeeuw Cryptografie en ICT
Knapzak crypto stap 8 De ontvanger moet voor het ontcijferen de cijfertekst S vermenigvuldigen met w-1 dus w-1 S (mod m). Met w-1 S (mod m) en de superstijgende rij a’ wordt de klare tekst verkregen. Voorbeeld: w-1x48=43x48=14 (mod 50) 1 4 14 a’ = (1, 3, 5, 10, 22) ----------------------- - 0 1 4 x = (1, 1, 0, 1, 0) de klare tekst. L.V. de Zeeuw Cryptografie en ICT