Netwerken 15 Beveiliging Cryptografie Lennart Herlaar 2 november 2016
Onderwerpen Beveiliging Cryptografie Cryptografische algoritmen en protocollen Toepassing van cryptografie in beveiliging Lennart Herlaar Computerarchitectuur en netwerken 15 1
Beveiliging Vertrouwelijkheid van berichten Authenticatie van de zender en ontvanger, toegangscontrole Integriteit van berichten (bescherming tegen verandering, herhaling) Onweerlegbaarheid: bewijzen dat iets gestuurd is (non-repudiation) Beschikbaarheid DoS = Denial of Service: door server te overvoeren zorgen dat hij niet meer werkt DDos = Distributed DoS: met duizenden PC s tegelijk aanvallen Beveiliging is nog veel breder Lennart Herlaar Computerarchitectuur en netwerken 15 2
Wat is Cryptografie? Versluieren (versleutelen) van gegevens zodat zonder extra kennis deze gegevens niet bekend kunnen worden Key (k) Intruder Encryption f Decryption Original o Codetext c=f (o) k Original o Lennart Herlaar Computerarchitectuur en netwerken 15 3
Situatie Alice insecure channel data, control messages Bob data secure sender secure receiver data Trudy (Eve) Wat kan Trudy doen? afluisteren berichten invoegen/weghalen/opnieuw verzenden zich voordoen als de ander bijv. IP adres spoofen verbinding kapen: session hijacking denial of service Lennart Herlaar Computerarchitectuur en netwerken 15 4
Waarvoor wordt cryptografie gebruikt? Gegevens geheim houden Verzenden over netwerk (Mobiele) telefoons Opslag Integriteit bescherming tegen wijzigingen Digitale handtekening Authenticatie (wie is de afzender) Onweerlegbaarheid Lennart Herlaar Computerarchitectuur en netwerken 15 5
Algoritmen en sleutels Algoritme bepaalt wat voor encryptie gebruikt wordt Sleutel is een (geheime) parameter voor het algoritme Lennart Herlaar Computerarchitectuur en netwerken 15 6
Algoritmen en sleutels Algoritme bepaalt wat voor encryptie gebruikt wordt Sleutel is een (geheime) parameter voor het algoritme Geheimhouden van het algoritme werkt niet (Kerckhoff s principe) Veiligheid van de encryptie moet alleen gebaseerd zijn op de sleutel Lennart Herlaar Computerarchitectuur en netwerken 15 6
Algoritmen en sleutels Algoritme bepaalt wat voor encryptie gebruikt wordt Sleutel is een (geheime) parameter voor het algoritme Geheimhouden van het algoritme werkt niet (Kerckhoff s principe) 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 eenvoudig een algoritme te bedenken dat een stuk tekst door elkaar haspelt Het is zeer moeilijk een cryptografisch algoritme te bedenken dat tegen deskundige cryptografische krakers bestand is Een onbekend algoritme kan niet op veiligheid gecontroleerd worden Lennart Herlaar Computerarchitectuur en netwerken 15 6
Symmetrische algoritmen 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 Lennart Herlaar Computerarchitectuur en netwerken 15 7
Symmetrische algoritmen 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 Sleutel is een shared secret Voorbeeld: eerste OV-chipkaarten (MIFARE Classic) Lennart Herlaar Computerarchitectuur en netwerken 15 7
Asymmetrische algoritmen Bij een asymmetrisch algoritme wordt voor decryptie een andere sleutel gebruikt dan voor encryptie Lennart Herlaar Computerarchitectuur en netwerken 15 8
Asymmetrische algoritmen 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 Lennart Herlaar Computerarchitectuur en netwerken 15 8
Asymmetrische algoritmen 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 Lennart Herlaar Computerarchitectuur en netwerken 15 8
Asymmetrische algoritmen 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 elektronische handtekening Lennart Herlaar Computerarchitectuur en netwerken 15 8
Symmetrische algoritmen Transpositie Letters/bytes/andere onderdelen worden in een andere volgorde gezet Volgorde wordt berekend uit sleutel Bijv.: hak de tekst in even grote blokjes en verwissel in elk blokje de tekens in een vaste volgorde. Lennart Herlaar Computerarchitectuur en netwerken 15 9
Symmetrische algoritmen Transpositie Letters/bytes/andere onderdelen worden in een andere volgorde gezet Volgorde wordt berekend uit sleutel Bijv.: 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: Vercijferd: dit is e en g ehei me t ekst td i ies egn eeih mte setk Lennart Herlaar Computerarchitectuur en netwerken 15 9
Andere symmetrische algoritmen Substitutie Elke letter/byte/blokje bits wordt vervangen door een andere (Caesar) Vervangingstabel moet omkeerbaar zijn (elke vervanging komt maar een keer voor) Is kwetsbaar voor frequentie-analyse Poly-alfabetische substitutie (Viginère): telkens een andere vervangingstabel (afhankelijk van positie, vorige teken(s)) Vervangingstabel wordt berekend uit sleutel Ingewikkelde verandering vervangingstabel op basis van sleutel Lennart Herlaar Computerarchitectuur en netwerken 15 10
Voorbeeld substitutie 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 Lennart Herlaar Computerarchitectuur en netwerken 15 11
Voorbeeld substitutie 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 Lennart Herlaar Computerarchitectuur en netwerken 15 11
DES Data Encryption Standard Wordt/werd wereldwijd gebruikt (o.a. in Chipknip) Versleutelt blokken van 64 bits (block cipher) Combinatie van substitutie, transpositie, XOR Gestuurd door 56-bits sleutel (te weinig) Implementatie in chips (vele miljoenen operaties/sec) Symmetrisch Geen truuks bekend om het te kraken Maar wel mogelijk met brute force Verbetering met triple DES (3DES, 3 keer met verschillende sleutels) Vervangen door Advanced Encryption Standard (AES) Lennart Herlaar Computerarchitectuur en netwerken 15 12
Sleuteldistributie Probleem: Als Alice en Bob geheime informatie willen uitwisselen, hebben ze dezelfde sleutel nodig Lennart Herlaar Computerarchitectuur en netwerken 15 13
Sleuteldistributie Probleem: Als Alice en Bob geheime informatie willen uitwisselen, hebben ze dezelfde sleutel nodig Bijv. Alice bedenkt een sleutel en geeft die aan Bob Kan niet per email, tenzij encryptie gebruikt wordt (recursie) Telefoon, brief kan ook onderschept worden Dus zelf overhandigen 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 Lennart Herlaar Computerarchitectuur en netwerken 15 13
Modulo rekenen Veel cryptografische algoritmen gebruiken berekeningen op getallen modulo n: Gebruik getallen 0, 1,..., n 2, n 1 Na berekening wordt het resultaat modulo n genomen (rest na deling door n) Hierdoor blijven de getallen in het interval [0... n 1] Voorbeeld: voor modulo 3, geldt 2 + 2 = 1(= 4 3) Sommige operaties worden nu moeilijk omkeerbaar Vb: z = x y modulo n is gemakkelijk uit te rekenen Echter als x en z gegeven zijn dan is y moeilijk te vinden (discrete logaritme) Lennart Herlaar Computerarchitectuur en netwerken 15 14
Diffie-Helman sleuteluitwisseling 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), Alice 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 ondoenlijk om a te berekenen als g, p en g a (mod p) gegeven zijn (discrete logaritme) Lennart Herlaar Computerarchitectuur en netwerken 15 15
Man in the Middle Er is één aanval mogelijk op deze techniek: man in the middle of bucket-brigade Alice Trudy Bob Trudy doet alsof zij Bob is t.o.v. Alice en alsof zij Alice is t.o.v. Bob Lennart Herlaar Computerarchitectuur en netwerken 15 16
Asymmetrische algoritmen Bij een asymmetrische algoritme hebben we twee sleutels Public key: wordt bekend gemaakt Private key: wordt geheim gehouden Lennart Herlaar Computerarchitectuur en netwerken 15 17
Asymmetrische algoritmen 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 (K + B ): C = K + B (M) Alice stuurt de versleutelde boodschap C naar Bob Bob ontcijfert de boodschap met zijn geheime sleutel K B : M = K B (C) Lennart Herlaar Computerarchitectuur en netwerken 15 17
Public Key Cryptografie K B + K B - Bob s public key Bob s private key plaintext message, m encryption algorithm ciphertext + c=k (m) B decryption algorithm plaintext message - m = K (c)) B - + = K (K (m)) B B Lennart Herlaar Computerarchitectuur en netwerken 15 18
Eigenschappen Public-key cryptografie K B is inverse van K + B : K B (K + B (M)) == M One-way: K B moet zeer moeilijk uit K + B af te leiden zijn N.B. K B is altijd uit K + B af te leiden Maar het moet heel veel rekentijd kosten (honderden jaren) Lennart Herlaar Computerarchitectuur en netwerken 15 19
RSA De meest gebruikte asymmetrische cryptografie methode is RSA (Rivest, Shamir, Adleman) Gebruikt weer berekeningen modulo n Gebaseerd op de moeilijkheid om een groot getal te ontbinden in priemgetallen Lennart Herlaar Computerarchitectuur en netwerken 15 20
RSA De meest gebruikte asymmetrische cryptografie methode is RSA (Rivest, Shamir, Adleman) Gebruikt weer berekeningen modulo n Gebaseerd op de moeilijkheid om een groot getal te ontbinden in priemgetallen In 1999 is RSA-155 gekraakt (512 bits). In 2009 RSA-768 (768 bits) Zeer grote sleutels nodig (momenteel minimaal 2000 bits) Niemand weet zeker of het vinden van factoren echt altijd moeilijk zal blijven Berekeningen kosten veel tijd: kan niet real-time gebruikt worden Lennart Herlaar Computerarchitectuur en netwerken 15 20
Combinaties De problemen (sleuteldistributie bij symmetrisch en traagheid bij asymmetrisch) kunnen met elkaar opgelost worden Kies een random sessiesleutel Lennart Herlaar Computerarchitectuur en netwerken 15 21
Combinaties De problemen (sleuteldistributie bij symmetrisch en traagheid bij asymmetrisch) kunnen met elkaar opgelost worden Kies een random sessiesleutel Gebruik RSA om de sleutel te coderen Gebruik een symmetrisch algoritme met deze sleutel Lennart Herlaar Computerarchitectuur en netwerken 15 21
Combinaties De problemen (sleuteldistributie bij symmetrisch en traagheid bij asymmetrisch) kunnen met elkaar opgelost worden Kies een random sessiesleutel 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, AES (of andere) met k Versleutel k onder RSA met de publieke sleutel Stuur de twee codes op Lennart Herlaar Computerarchitectuur en netwerken 15 21
Combinaties De problemen (sleuteldistributie bij symmetrisch en traagheid bij asymmetrisch) kunnen met elkaar opgelost worden Kies een random sessiesleutel 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, AES (of andere) 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, niet de boodschap Lennart Herlaar Computerarchitectuur en netwerken 15 21
Digitale handtekeningen Doel: echtheid van documenten garanderen Voorbeeld: contracten Probleem met symmetrische cryptografie Alice en Bob hebben een shared key 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) Volledige encryptie is soms overkill Lennart Herlaar Computerarchitectuur en netwerken 15 22
Message Authentication Code Hashfunctie: genereert van een document (boodschap) een bitpatroon met een vaste lengte (bijvoorbeeld 128 bits) Cryptografische hash: als het ondoenlijk is om twee documenten x en y te vinden zodat H(x) = H(y) Message authentication code: Alice en Bob hebben een shared secret s Alice berekent H(m + s) Alice stuurt Bob: (m, H(m + s)) Bob berekent ook H(m + s) en controleert dat dit hetzelfde is als wat hij ontvangen heeft Voorbeelden cryptografische hashfuncties: MD5: is al gebroken, maar nog wel redelijk bruikbaar SHA (Secure hash Algorithm): is tegenwoordig de aanbevolen hash N.B: een CRC is ook een hashfunctie, maar niet cryptografisch veilig Een hashfunctie is geen encryptie Lennart Herlaar Computerarchitectuur en netwerken 15 23
Public key handtekeningen Gebruik RSA omgekeerd! Alice codeert de boodschap M met haar geheime sleutel Bob decodeert de boodschap met Alice s publieke sleutel De inverse werkt beide kanten op! K + A (K A (M)) == M Lennart Herlaar Computerarchitectuur en netwerken 15 24
Message Digests In plaats van de hele boodschap te versleutelen voor digitale handtekening (duur) wordt vaak een message digest gebruikt Een message digest is een cryptografische hash van de boodschap Een kleine wijziging in de boodschap heeft een grote wijziging in de message digest tot gevolg De message digest wordt nu gecodeerd met de geheime sleutel De boodschap + de gecodeerde message digest worden verzonden Eventueel kan het geheel nog geëncrypt worden voor geheimhouding maar voor de handtekening is dat niet nodig Lennart Herlaar Computerarchitectuur en netwerken 15 25
Gebruik Message Digest Lennart Herlaar Computerarchitectuur en netwerken 15 26
Kenmerken Public key handtekeningen 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 Trudy een publieke sleutel aan Bob geven en zeggen dat dit de sleutel van Alice is Lennart Herlaar Computerarchitectuur en netwerken 15 27
Kenmerken Public key handtekeningen 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 Trudy een publieke sleutel aan Bob geven en zeggen dat dit de sleutel van Alice is Het certificeren van public keys gebeurt door deze weer van de digitale handtekening van een certificeringsautoriteit (CA) te voorzien Dit leidt tot een Public key Infrastructure (PKI) Lennart Herlaar Computerarchitectuur en netwerken 15 27
Beveiliging op Transportlaag SSL = Secure Socket Layer TLS = Transport Layer Security Wordt direct bovenop TCP gebruikt (bibliotheek) Gebruikt encryptie voor data (DES, IDEA etc.) Gebruikt certificaten voor verificatie van client en/of server Tijdens de opening van sessie handshaking Afspraak welke encryptie uitwisseling certificaten opsturen sessiesleutel Nadeel: Programma s (client/server) moeten aangepast worden Lennart Herlaar Computerarchitectuur en netwerken 15 28
Beveiliging in netwerklaag Bij beveiliging in de netwerklaag worden IP pakketten versleuteld IPSec = IP security Dit gebeurt in de netwerklaag in OS of router Wat wordt gedaan? versleutelen inhoud van pakket (bijv. TCP segment) ondertekenen pakket versleutelen van header? Dan weten de routers niet meer waar het naar toe moet Lennart Herlaar Computerarchitectuur en netwerken 15 29
Samenvatting Beveiliging Cryptografie Cryptografische algoritmen en protocols Toepassing van cryptografie in beveiliging Lennart Herlaar Computerarchitectuur en netwerken 15 30