Onderwerpen Inleiding Algemeen 10 Cryptografie Wat is cryptography? Waar wordt cryptografie voor gebruikt? Cryptographische algoritmen Cryptographische protocols Piet van Oostrum 5 dec 2001 INL/Alg-10 1 X INL/Alg-10 1 X Wat is Cryptografie? Waarvoor wordt cryptografie gebruikt? Versluieren (versleutelen) van gegevens zodat zonder extra kennis deze gegevens niet bekend kunnen worden Gegevens geheim houden Verzenden over netwerk (Mobiele) telefoons Opslag Digitale handtekening Authenticatie Onweerlegbaarheid Electronisch betalen INL/Alg-10 2 X INL/Alg-10 3 X Algoritmen en sleutels Symmetrische algoritmen Algoritme bepaalt wat voor encryptietechniek gebruikt wordt Sleutel is een (geheime) parameter voor de algoritme Geheimhouden van het algoritme werkt niet Veiligheid van de encryptie moet alleen gebaseerd zijn op de sleutel Vraag: Hier is een stuk gecodeerde tekst; probeer er achter te komen wat voor encryptie ik gebruikt heb is van weinig waarde Het is gemakkelijk een algoritme te bedenken dat een stuk tekst door elkaar haspelt Het is zeer moeilijk een cryptografische algoritme te bedenken dat tegen deskundige cryptografische krakers bestand is Een onbekend algoritme kan niet op veiligheid gecontroleerd worden Bij een symmetrisch algoritme wordt dezelfde sleutel gebruikt voor encryptie (versleutelen/vercijferen) en decryptie (ontsleutelen/ontcijferen) Het algoritme kan evt. een encryptie- en een decryptie stand hebben De operatie is omkeerbaar Probleem: sleuteldistributie: Hoe krijg ik de sleutel veilig bij degene die de boodschap moet ontcijferen Voorbeeld: Chipper/chipknip INL/Alg-10 4 X INL/Alg-10 5 X slides10.pdf December 5, 2001 1
Asymmetrische algoritmen Symmetrische operaties Bij een asymmetrisch algoritme wordt voor decryptie een andere sleutel gebruikt dan voor encryptie De ene sleutel is niet uit de andere af te leiden Eén sleutel wordt gepubliceerd (public key), de andere blijft geheim (private key) De sleutels moeten bij elkaar passen One-way function: als je de functie kent, weet je nog niet het omgekeerde ervan Geen probleem met sleuteldistributie Kan ook gebruikt worden voor electronische handtekening One-time pad gebruikt de XOR-operatie: x y x y 0 0 0 0 1 1 Deze operatie is omkeerbaar 1 0 1 1 1 0 b = 0100 0010 0110 1111 0110 1111 0110 0100 s = 0101 0011 0110 1100 0110 0101 0111 0101 c = 0001 0001 0000 0011 0000 1010 0001 0001 INL/Alg-10 6 X INL/Alg-10 7 X Gebruik one-time pad Andere symmetrische algoritmen Gebruik voor de sleutel een rij random bits Moet echt random zijn (geen verband te vinden) Bijvoorbeeld afkomstig van fysisch proces (ruis, nucleair verval) Niet de gewonde random functie Evt. cryptografische randomgenerator Bijv. neem een (eigen) CDROM met random bits mee Gebruik elke sleutel slechts één keer Het heeft geen zin om random bits te kopen Transpositie Letters/bytes/andere onderdelen worden in een andere volgorde gezet Volgorde wordt berekend uit sleutel Bijv. in een tabel zetten en die in de andere richting uitlezen Is omkeerbaar Plaintext: dit is een geheime tekst d i t i s e e n g e h e i m e t e k s t Verticaal uitlezen: Vercijferde tekst: d e iehtteee niki mssget INL/Alg-10 8 X INL/Alg-10 9 X Transpositie 2 Andere symmetrische algoritmen Andere methode: hak de tekst in even grote blokjes en verwissel in elk blokje de tekens in een vaste volgorde. Voorbeeld: Blokjes van 4, volgorde: 1 3, 2 1, 3 4, 4 2 Plaintext: dit is e en g ehei me t ekst Vercijferd: td i ies egn eeih mte setk Substitutie Elke letter/byte/blokje bits wordt vervangen door een andere Vervangingstabel moet omkeerbaar zijn (elke vervanging komt maar een keer voor) Is kwetsbaar voor frekwentie-analyse Poly-alfabetische substitutie: telkens een andere vervangingstabel (afhankelijk van vorige teken(s)) Vervangingstabel wordt berekend uit sleutel Ingewikkelde verandering vervangingstabel op basis van sleutel Vb: RC4, Blowfish INL/Alg-10 10 X INL/Alg-10 11 X slides10.pdf December 5, 2001 2
Voorbeeld substitutie DES Sleutel: a b c d e f g h i j k l m y i d m t p x h o b r q n o p q r s t u v w x y z f k a z w v g l e s c n j u Plaintext: dit is een geheime tekst Versleutelde tekst: mhguhvuttfu txthqtugtbvg Data Encryption Standard Wordt wereldwijd gebruikt (o.a. in Chipper/Chipknip) Versleutelt blokken van 64 bits Combinatie van substitutie, transpositie, XOR Gestuurd door 56-bits sleutel (weinig) Implementatie in chips (50 miljoen operaties/sec) Symmetrisch Geen truuks bekend om het te kraken Maar binnenkort mogelijk met brute force Verbetering met triple DES (3 keer met verschillende sleutels) INL/Alg-10 12 X INL/Alg-10 13 X DES boxen Sleuteldistributie Probleem: Als Alice en Bob geheime informatie willen uitwisselen, hebben ze dezelfde sleutel nodig. P = permutatie, S = substitutie Bijv. Alice bedenkt een sleutel en geeft die aan Bob Kan niet per email, tenzij encryptie gebruikt wordt (recursie) Dus zelf overhandigen, telefoon, brief Kan ook onderschept worden Als ze later ruzie krijgen is de sleutel onbruikbaar Dus voor elk paar deelnemers een aparte sleutel nodig Sleutels opslaan op je computer De hele zaak weer met een andere sleutel beveiligen INL/Alg-10 14 X INL/Alg-10 15 X Diffie-Helman sleuteluitwisseling Man in the Middle Diffie en Helman hebben een manier gevonden om veilig sleutels af te spreken: Alice en Bob kiezen samen een groot priemgetal p en een groot getal g met 1 < g < p Alice neemt een geheim getal a and Bob neemt een geheim getal b, beide < p 1 Alice stuurt Bob: α = g a (mod p) en Bob stuurt Alice: β = g b (mod p) Bob berekent k = α b (mod p), Alices berekent k = β a (mod p) Omdat α b = (g a ) b = (g b ) a = β a hebben ze dezelfde sleutel. p, g mogen gepubliceerd worden, a en b zijn geheim Voor grote getallen is het onmogelijk om a te berekenen als g, p en g a (mod p) gegeven zijn (discrete logarithme) Er is één aanval mogelijk op deze techniek: man in the middle Alice Charlie Bob Charlie doet alsof hij Bob is t.o.v. Alice en alsof hij Alice is t.o.v. Bob INL/Alg-10 16 X INL/Alg-10 17 X slides10.pdf December 5, 2001 3
Asymmetrische algoritmen Eigenschappen Public-key cryptografie Bij een asymmetrische algoritme hebben we twee sleutels Public key: wordt bekend gemaakt Private key: wordt geheim gehouden Voorbeeld: Alice stuurt een geheime boodschap naar Bob Alice versleutelt de boodschap M met Bob s public key (P ): C = E P (M) Alice stuurt de versleutelde boodschap C naar Bob Bob ontcijfert de boodschap met zijn geheime sleutel S: M = D S (C) D S is inverse van E P : D S (E P (M)) == M One-way: D S moet zeer moeilijk uit E P af te leiden zijn. N.B. D S is altijd uit E P af te leiden Maar het moet heel veel rekentijd kosten (honderden jaren) INL/Alg-10 18 X INL/Alg-10 19 X RSA RSA algoritme De meest gebruikte asymmetrische cryptografie is RSA (Rivest, Shamir, Adleman) Gebruikt berekeningen op getallen modulo n: Gebruik getallen 0, 1,..., n 2, n 1. Na berekening wordt de rest modulo n genomen (rest na deling door n) Hierdoor blijven de getallen in het interval [0... n 1] Voorbeeld: modulo 3, geldt 2 + 2 = 1(= 4 3). Sommige operaties worden nu moeilijk omkeerbaar Vb: z = x y is gemakkelijk uit te rekenen Echter als x en z gegeven zijn dan is y moeilijk te vinden (discrete logaritme) n moet groot zijn (10 200... 10 1000 ) Beschouw de boodschap als een rij bits Hak de boodschap in vaste stukken (bijv 1000 bits) Gebruik deze rij bits nu als een getal (M) Bereken C = M e (mod n) voor een geschikte exponent e Als we e kiezen dan is er een inverse exponent d, zodat M = C d (mod n) Vergelijk (x 2 ) 1 2 = x De sleutel voor encryptie is het paar (n, e) De sleutel voor decryptie is het paar (n, d) Het moet ondoenlijk zijn om d uit te rekenen uit (n, e) INL/Alg-10 20 X INL/Alg-10 21 X Keuze RSA parameters Nadelen RSA 1. Kies 2 grote priemgetallen p en q 2. Bereken n = p q en f = (p 1) (q 1). 3. Kies e, 1 < e < f zodat ggd(e, f) = 1. 4. Berekenen d, 1 < d < f, zodat d e = 1 (mod f) (uitbreiding van algoritme van Euclides) 5. Gooi p en q weg, publiceer (n, e) en bewaar d geheim Moeilijkheid: vinden van twee grote willekeurige priemgetallen. Basis: n = p q is gemakkelijk uit te rekenen, maar het omgekeerde niet (Als n gegeven is, is het moeilijk om p en q te vinden) Vorig jaar is RSA-155 gekraakt (n van 155 cijfers gegeven, vind de p en q: enkele maanden met honderden computers) Zeer grote sleutels nodig (momenteel minimaal 2000 bits) Niemand weet zeker of het vinden van factoren echt altijd moeilijk zal blijven Berekeningen kosten heel veel tijd: kan niet real-time gebruikt worden Tot vorig jaar was het een gepatenteerd algoritme. INL/Alg-10 22 X INL/Alg-10 23 X slides10.pdf December 5, 2001 4
Combinaties Digitale handtekeningen De problemen (sleuteldistributie met symmetrisch en traagheid bij asymmetrisch) kunnen met elkaar opgelost worden Gebruik RSA om de sleutel te coderen Gebruik een symmetrisch algoritme met deze sleutel Voorbeeld PGP: Kies een random session key k Versleutel de boodschap M onder IDEA (of DES) met k Versleutel k onder RSA met de publieke sleutel Stuur de twee codes op Als de boodschap naar verschillende personen gestuurd moet worden hoeft alleen de key meermalen versleuteld te worden Doel: echtheid van documenten garanderen Voorbeeld: contracten Symmetrische cryptografie Alice en Bob hebben een gezamenlijke sleutel k die niemand anders kent Alice stuurt Bob een boodschap die versleuteld is met k Bob weet nu dat die boodschap van Alice afkomstig moet zijn Hij kan echter niet voor een rechter bewijzen dat die boodschap van Alice komt (hij had hem ook zelf kunnen maken). INL/Alg-10 24 X INL/Alg-10 25 X Public key handtekeningen Message Digests Gebruik RSA omgekeerd! Alice codeert de boodschap M met haar geheime sleutel (n, d): C = M d (mod n) Bob decodeert de boodschap met Alice s publieke sleutel (n, e): M = C e (mod n) De inverse werkt beide kanten op! In plaats van de hele boodschap te versleutelen voor digitale handtekening (duur) wordt vaak een message digest gebruikt Een message digest (hash) hutselt de bits van de boodschap door elkaar en komt met een korter bitpatroon Een kleine wijziging in de boodschap heeft een grote wijziging in de message digest tot gevolg Het is ondoenlijk om een andere boodschap te vinden die dezelfde message digest heeft. Voorbeelden van algoritmes: MD5, SHA (Secure Hash Algorithm) De message digest wordt nu gecodeerd met de geheime sleutel INL/Alg-10 26 X INL/Alg-10 27 X Kenmerken Public key handtekeningen Identificatie Alleen Alice kan de boodschap getekend hebben, want alleen zij kent de geheime sleutel Ze moet wel zorgvuldig met de sleutel omgaan Iedereen kan de boodschap verifiëren Alice hoeft de geheime sleutel niet af te geven voor verificatie Publieke sleutels moeten door een officiële instantie gewaarborgd worden anders kan Charlie een publieke sleutel aan Bob geven en zeggen dat dit de sleutel van Alice is. Doel: verifiëren dat iemand de juiste persoon is, of de juiste rechten heeft Voorbeeld: toegang tot een afgesloten ruimte Geld opnemen bij geldautomaat Slechte methode: Geef je key (PIN code) aan de machine (geldautomaat) Deze controleert hem met de lijst van sleutels Nadeel: een nep-automaat kan zo aan je sleutel komen Geschikt voor gesloten toepassingen bijv. deurslot INL/Alg-10 28 X INL/Alg-10 29 X slides10.pdf December 5, 2001 5
Symmetrische identificatie Asymmetrische identificatie Machine moet alle sleutels kennen (nadeel!!) Machine geeft Alice een willekeurige bitrij x Alice berekent y = E k (x) met k haar sleutel De machine berekent ook z = E k (x) en controleert dat y == z Alice s berekeningen kunnen via een chipkaart gedaan worden. Vergelijkbaar met digitale handtekening Machine hoeft alleen maar de publieke sleutels van iedereen te hebben Machine trekt een random getal x en geeft dit aan Alice Alice berekent y = E k (x) waarbij k haar geheime sleutel is Alice geeft y aan de machine De machine berekent z = D p (y) waarbij p de publieke sleutel van Alice is en controleert dat x == z Zou eigenlijk op de chipper/chipknip moeten, maar was te duur. INL/Alg-10 30 X INL/Alg-10 31 X Multi-party berekeningen 10 bewoners van een villawijk willen weten wat hun gemiddelde salaris is, maar ze willen hun salaris niet verklappen. Laat x i het salaris van bewoner i zijn. Elk paar bewoners i, j kiest een random getal r i,j (r j,i = r i, j) dat ze aan niemand vertellen Elke bewoner berekent y i = r 1,i +... + r i 1,i + x i r i+1,i... r 10,i Alle bewoners leggen hun y i op tafel en ze berekenen 10 10 G = y i = want elke r i,j komt evenveel keer positief als negatief over. Je kan pas achter een x i komen als de andere 9 hun r i,j verraden. i=1 i=1 x i INL/Alg-10 32 X slides10.pdf December 5, 2001 6