Summary

These slides provide an overview of digital signatures, hashing algorithms, and their applications in ensuring data integrity and authenticity. The presentation explains the underlying concepts and illustrates practical examples, offering a foundational understanding of cryptographic principles.

Full Transcript

H5: integrity 1 5.1 Digitale handtekening 2 Digitale handtekening Aan bestanden (bv: PDF) kan een digitale handtekening toegevoegd worden voor het verzekeren van integriteit Hiermee kunnen twee zaken gecontroleerd worden: Het bestand i...

H5: integrity 1 5.1 Digitale handtekening 2 Digitale handtekening Aan bestanden (bv: PDF) kan een digitale handtekening toegevoegd worden voor het verzekeren van integriteit Hiermee kunnen twee zaken gecontroleerd worden: Het bestand is niet gewijzigd nadat de handtekening is gegenereerd Het bestand is daadwerkelijk afkomstig van de persoon die de handtekening heeft gegenereerd, en niet van iemand anders Om dit te realiseren wordt een asymetrisch algoritme gebruikt 3 Hoe werkt dit? Asymmetrische encryptie genereert een publieke en private sleutel per persoon. Deze sleutels zijn wiskundig aan elkaar gelinkt. Bob Alice Hello Hello Encrypt Sign Alice! Bob! Alice's Alice's public key private key 6EB69570 Hello 08E03CE4 Bob! BE459576 BE459576 785039E8 785039E8 Alice Bob Hello Hello Decrypt Verify Alice! Bob! Alice's Alice's private key public key 4 1. Alice voegt een digitale handtekening toe aan haar bericht, versleuteld met haar private sleutel. 2. De publieke sleutel van Alice kan gebruikt worden om de handtekening te decrypteren. Zo wordt het volgende gecontroleerd: Het bericht niet is gewijzigd. De handtekening wordt immers ongeldig zodra er iets wijzigt in het bericht. Afkomstig is van Alice. Enkel Alice heeft immers de private sleutel om de handtekening te maken. Dit garandeert geen vertrouwelijkheid; daarvoor kan het bericht na ondertekening worden versleuteld met de publieke sleutel van Bob. 5 Voorbeeld sleutelpaar Normaal gebruik je hiervoor software op jouw eigen computer (GPG). Genereer nooit jouw sleutels via een website voor echt gebruik! -----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PRIVATE KEY BLOCK----- Version: OpenPGP v2.0.8 Version: OpenPGP v2.0.8 793hZyatESpYcgQplSrDXBBc9MZGRE9fvZE8Qvscr9 xcaGBF9fhEBEADkw2xYivAYznxkZM3Rv0U0gyqj9gD YU5xKVFkFuaSTx2k6Mwd2F6Mo9OoNcAdeS9vALjvty 3F0B9Tmtwht3Z8JmwPJ1GUUnT03mMlGYKtblVYPX1u SQ1rbQfIi814JW7unXg... CykwZ4T16g3rSa... =bGdt =UmmP -----END PGP PUBLIC KEY BLOCK----- -----END PGP PRIVATE KEY BLOCK----- 6 Speaker notes De sleutels hier zijn niet geldig, ze dienen gewoon ter illustratie zodat je je kan voorstellen hoe een sleutel er uit ziet. De inhoud van zo een sleutel wordt opgeslagen in een tekst- of binair bestand. Voorbeeld handtekening (e-mail) 7 Speaker notes De handtekening hier is niet geldig, ze dient gewoon ter illustratie zodat je je kan voorstellen hoe een handtekening er uit ziet. 5.2 Hashing algoritmes 8 Een hash als integriteitscontrole Om te controleren dat een bestand of bericht niet gewijzigd is, kan een hashing algoritme of hashfunctie gebruikt worden. Hierbij wordt een bepaalde waarde (hash) berekend en toegevoegd aan het bestand of bericht. Op een later moment kan de hashfunctie opnieuw uitgevoerd worden, en zou de hashwaarde niet gewijzigd mogen zijn. 9 Hashing algoritme Vormt een reeks van bits om naar een reeks van een vast aantal bits (alles in IT kan voorgesteld worden in bits). Het is een wiskundige eenrichtingsfunctie. Het is in de ene richting makkelijk te berekenen, maar onmogelijk in de andere richting 10 Je kan dit vergelijken met het vermalen van koffiebonen. Het vermalen van bonen tot gruis is gemakkelijk, maar het terug samen plakken van gruis tot bonen is onmogelijk. 11 Een ander voorbeeld is het controlecijfer in een bankrekeningnummer.Hierbij worden de 2 cijfers na de landcode van een IBAN bankrekeningnummer berekend aan de hand van de bankcode en de resterende getallen. Zo kunnen we controleren of het nummer geldig is (bv. BE68 5390 0754 7034). 12 Speaker notes Zie https://www.iban.nl/iban-berekenen/ en https://nl.wikipedia.org/wiki/International_Bank_Account_Number voor de berekening van het controlenummer van een IBAN bankrekeningnummer. Controlecijfer bankrekening: Hierbij worden de 2 cijfers na de landcode van eenIBAN bankrekeningnummer berekend aan de hand van de bankcode en de resterende getallen. Zo kunnen we controleren of het nummer geldig is (bv. BE68 5390 0754 7034). Eigenschappen Een hashing algoritme heeft de volgende eigenschappen: De input kan uit om het even welk aantal bits bestaan De output heeft steeds hetzelfde aantal bits (ongeacht het aantal bits van de input) De hashfunctie is een eenrichtingsfunctie en is onmogelijk om te keren Twee verschillende inputwaarden zullen steeds een verschillende outputwaarde geven 13 Werking hashing algoritme 14 Speaker notes De hier getoonde binaire waarden zijn verzonnen voor educatief inzicht. Effectieve waarden worden berekend en getoond in de praktijkopdrachten. MD5 en SHA Populaire hashing algoritmes zijn MD5 en SHA: Het Message Digest 5 Algorithm (MD5) is ontwikkeld door Ron Rivest en geeft een 128-bits output terug Het Secure Hash Algorithm is ontwikkeld door het US National Institute of Standards and Technology (NIST) Verschillende varianten afhankelijk van het gewenst aantal bits voor de output: SHA-224 (224 bits), SHA-256 (256 bits), SHA-384 (384 bits), SHA-512 (512 bits) Uiteraard bestaan er ook nog vele andere hashing algoritmes Test het zelf uit op http://www.fileformat.info/tool/hash.htm 15 Botsingen Hashing algoritmes moeten in theorie altijd een andere output hebben voor verschillende inputs In de praktijk is dit niet steeds mogelijk, er zijn immers veel meer mogelijke inputs dan outputs (met vast aantal bits) Wanneer je voor 2 verschillende inputs dezelfde output waarde krijgt, spreekt men van een botsing of collision Een hashing algoritme verliest zijn nut als botsingen bewust veroorzaakt kunnen worden password hash Hash(qwertyqwerty) == 548d4efa8 Hash(ietsAnders) == 548d4efa8 16 Sterke en zwakke algoritmes Hashing algoritmes kunnen onderverdeeld worden in zwakke en sterke hashing algoritmes MD5 en SHA-1 zijn zwakke algoritmes waarbij botsingen bewust veroorzaakt kunnen worden https://csrc.nist.gov/projects/hash-functions Praktisch voorbeeld: https://www.mscs.dal.ca/~selinger/md5collision/ Zwakke algoritmes zijn niet (meer) bruikbaar voor cybersecurity doeleinden SHA-2 en SHA-3 zijn sterke algoritmes die wel nog gebruikt worden voor cybersecurity doeleinden 17 Speaker notes Voorbeelden van goede (sterke) hashing algoritmes zijn SHA-256, SHA-384 en SHA-512. Op https://www.mscs.dal.ca/~selinger/md5collision/ kan je een voorbeeld zien van 2 programma's "hello.exe" en "erase.exe" die dezelfde hashwaarde hebben, maar als je ze uitvoert toch iets anders tonen. Dit kan gevaarlijk zijn: een aanvaller kan een kwaadaardig programma maken met dezelfde hash als het oorspronkelijke programma en dat dan verspreiden. Gebruikers kunnen dan op basis van de hash niet meer detecteren of het gedownloade programma overeenkomt met het oorspronkelijke programma. Het bewust uitkomen van dezelfde hash voor 2 verschillende bitreeksen noemt een collision. Dit is de reden waarom MD5 en SHA-1 niet meer bruikbaar zijn, er kunnen bij deze hashing algoritmes collisions uitgelokt worden. Meer uitleg over MD5 en SHA1 en diens collisions: https://speakerdeck.com/ange/kill-md5 https://sha-mbles.github.io/ 5.3 Toepassingen van hashing algoritmes 18 Toepassingen hashing algoritmes Controle op fouten in data Het veilig bewaren en controleren van wachtwoorden Identificeren van data aan de hand van een kleinere waarde (hash als fingerprint) Efficiënte opslag van data in hashtabellen (zie OLOD Classic Computer Science Algorithms) 19 Controle op fouten Via een hashing algoritme kan je van een digitaal bestand de hashwaarde berekenen en dit toevoegen aan het bestand of publiceren op een website De hashwaarde kan op een later moment opnieuw berekend worden, bijvoorbeeld na downloaden van het bestand van een server Indien de nieuwe hashwaarde verschillend is, is het bestand gewijzigd en dus mogelijks onbruikbaar (bv. door een fout tijdens de download) 20 Input Checksum Hashing Hashing Distributor File to transmit Algorithm Value checksum Fox 1582054665 function 100101001000111001001001 000100100100100100100100 #MOD# hd23dd23 100010101010101001000100 010111100111011010010100 The red fox checksum jumps over 2367213558 function the blue dog File transmitted to user Hash Value transmitted to user The red fox checksum jumps ouer 3043859473 function File received correctly Received the blue dog hd23dd23 Hashing Hash values match Value 100101001000111001001001 Calculated The red fox 000100100100100100100100 Downloader checksum #MOD# hd23dd23 Hashing jumps oevr 1321115126 100010101010101001000100 Value function 010111100111011010010100 the blue dog Hashing Algorithm The red fox 100101001000111001001001 Calculated checksum 000100100100100000100100 jumps oer 1685473544 100010101010101001000100 #MOD# 54tg164hr Hashing function Value the blue dog 010111100111011010010100 Received File received with ERROR hd23dd23 Hashing Hash Value mis-match Value re-transmit data 21 Veilig bewaren van wachtwoorden Gebruikersnaam en wachtwoord worden vaak bewaard in databanken Databanken zijn een efficiënte manier om data op te slaan, analyseren en op te vragen 22 Databanken zijn een gewild doelwit van cybercriminelen Een gelekte hoeveelheid gegevens uit een databank noemt een Data Breach (datalek) Als een datalek gebruikersnamen en wachtwoorden bevat, zullen cybercriminelen die uittesten op andere website Dit is een grote oorzaak van hacks Hetzelfde wachtwoord hergebruiken is dus sterk afgeraden! Een wachtwoord dat je telkens lichtjes aanpast per website heeft ook geen zin Gebruik bij voorkeur een wachtwoordmanager en maak een uniek wachtwoord per website! Test jezelf op https://haveibeenpwned.com/ 23 Speaker notes Door de groei van data collectie en de vaak vertrouwelijke aard van data, is het belangrijk voor cybersecurity personeel om het steeds groeiend aantal databanken te beschermen. Databanken zijn een gewild doelwit van cybercriminelen. Een gelekte hoeveelheid gegevens uit een databank noemt een Data Breach (datalek). Vele mensen hergebruiken nog steeds dezelfde username (vaak hun e-mailadres) en wachtwoord. Als deze combinatie wordt gevonden in een data breach, wordt deze door cybercriminelen getest op andere websites. Dit is een grote oorzaak van hacks. Daarom gebruik je dus best een verschillend wachtwoord voor elke website. Het gebruik van 1 wachtwoord dat je telkens lichtjes aanpast per website heeft geen zin. De software van cybercriminelen houdt hier rekening mee. Gebruik dus bij voorkeur een wachtwoordmanager en maak een uniek wachtwoord per website! Op https://haveibeenpwned.com kan je trouwens opzoeken of jouw e-mailadres ooit voorkwam in een gekende data breach. Veilig bewaren van wachtwoorden 24 Speaker notes https://www.csoonline.com/article/2130877/the-biggest-data-breaches-of-the-21st-century.html https://www.cbsnews.com/news/millions-facebook-user-records-exposed-amazon-cloud-server/ Veilig bewaren van wachtwoorden Poging 1: we slaan de gebruikersnaam en het wachtwoord gewoon op in de databank, bij het inloggen moeten we dan het volgende controleren: Ingevulde gebruikersnaam == gebruikersnaam in databank? Ingevulde wachtwoord == wachtwoord in databank? Wordt ook "plaintext" opslag genoemd Eenvoudig Iemand met toegang tot de databank kan alle wachtwoorden uitlezen: ⚠️ GEVAARLIJK! Gebruikersnaam Paswoord [email protected] Dit is een ST3rk Paswoord! [email protected] zwakpaswoord 25 https://plaintextoffenders.com/ 26 Veilig bewaren van wachtwoorden Poging 2: we slaan de gebruikersnaam en de hashwaarde van het wachtwoord op in de databank. Bij inloggen moeten we gewoon het volgende controleren: Ingevulde gebruikersnaam == gebruikersnaam in databank? Hash(wachtwoord) == hashwaarde in databank? Iets complexer, maar hashwaarden kunnen snel berekend worden Het plaintext wachtwoord wordt nooit opgeslagen Iemand met (al dan niet geautoriseerde) toegang tot de databank kan de wachtwoorden NIET uitlezen: ✅ VEILIG! Gebruikersnaam Hash paswoord [email protected] b30ead2d465295bd47ki4lkyu3a8cvzxd6g84 [email protected] 78062a5218ad971fb4m44io997zdfgzs321jk 27 Salting Wanneer 2 gebruikers hetzelfde wachtwoord gebruiken, zal voor beiden dezelfde hashwaarde worden opgeslagen Hierdoor weten aanvallers dat ze door 1 wachtwoord te kraken 2 vliegen in 1 klap slaan Salting is een extra maatregel om hashing veiliger te maken Een random reeks bits (salt) die wordt toegevoegd aan het wachtwoord voordat de hash berekend wordt Hetzelfde wachtwoord geeft zo een verschillende hash: ✅ ✅ VEILIG! password salt hash Hash(qwertyqwerty + 4g74e57q) == 8fg41jk3235e4wr48 Hash(qwertyqwerty + avb7d2fs) == wqrhjk485s6ef8gfg 28 Kortom Plaintext: ⚠️ gevaarlijk Hash wachtwoord: ✅ matig veilig, Dezelfde wachtwoorden geven dezelfde hashwaarden. Cybercriminelen kunnen dit misbruiken. Gebruikersnaam Paswoord [email protected] b30ead2d465295bd47ki4lkyu3a8cvzxd6g84 [email protected] b30ead2d465295bd47ki4lkyu3a8cvzxd6g84 Hash + salt: ✅ ✅ extra veilig Gebruikersnaam Salt Paswoord [email protected] D;%yL9TS:5PalS/d89 b30ead2d465295bd47ki4lkyu3a8cvzxd6g84 [email protected] )

Use Quizgecko on...
Browser
Browser