Verstuur jij wel eens bestanden of gegevens over het internet die vertrouwelijk zijn? Die kans is groot, want we sturen allemaal wel eens paspoortgegevens, wachtwoorden of medische informatie. Vaak wil je dat iemand anders dan de bedoelde ontvangen deze informatie zou kunnen inzien. Daar kun je nooit 100% zeker van zijn, maar er is wel een techniek die je een handje kan helpen.
Hashing algoritmes kunnen gebruikt worden om data beveiligd te versturen. Wanneer je informatie met een hashing algoritme beveiligd, kun je ervan uit gaan dat de data onveranderd bij de daadwerkelijk bedoelde ontvanger aankomt.
Toch zien we dat maar weinig mensen bewust gebruik maken van hashing. Wel maken we vaak onbewust gebruik van hashing. Wanneer we bijvoorbeeld cryptocurrencies over het blockchainnetwerk versturen. Laten we daarom eens gaan kijken naar wat hashing is, maar vooral naar wat de belangrijkste en (on)veiligste hashing algoritmes zijn.
Bekijk snel
Wat is een hashing algoritme?
Een hashing algoritme is een technologie waarmee gegevens worden omgezet naar een cryptografische output. Hoe deze output eruit ziet, is geheel afhankelijk van de inhoud. Wanneer één bit van deze inhoud veranderd, ziet de output er al geheel anders uit. Dit zorgt ervoor dat het makkelijk is om te zien of de inhoud tijdens het transport is gewijzigd: wanneer de hash er bij ontvangst anders uitziet dan bij verzending, is de data dus aangepast.
Bij het hashen van gegevens, wordt een string van iedere lengte omgezet naar een string van een vaste lengte. Met een string bedoelen we een reeks getallen/letters, die op het eerste gezicht in een willekeurige volgorde lijken te staan.
Toch is de uitkomst helemaal niet zo willekeurig als we misschien zouden denken. Er zit namelijk een algoritme achter de hashing die voor de logica zorgt. We noemen dit een hashing algoritme, waarvan er ontzettend veel verschillende zijn. Zo maakt Bitcoin (BTC) bijvoorbeeld van het SHA-256 algoritme. Een ander bekend algoritme is MD5.
Hoe werkt hashing op de blockchain?
Je zou een hashing algoritme kunnen zien als een soort machine voor het creëeren van een geheimschrift. Hieronder zie je hoe zo'n hash eruit ziet, waar gebruik is gemaakt van het SHA-256 hashing algoritme.
Invoer | Hash uitkomst |
---|---|
Hallo | 753692ec36adb4c794c973945eb2a99c1649703ea6f76bf259abb4fb838e013e |
Hoe gaat het met jou? | 815cbea3d1a07b54f7eb75ad237234bf1e2996c23d94b60c50663ede13374e26 |
Met mij gaat het goed. | c5c96770ac7745c653d73bf03e42ef1b5babfc3d58839d33dbe80d20340286e5 |
Op de blockchain wordt hashing veelvuldig gebruikt. Zo wordt een transactie vaak weergegeven als een hash, zoals op de blockchain van Bitcoin. We noemen dit een transaction hash, en kan gezien worden als een transactiebewijs.
Je kunt de hash gebruiken binnen de blockchain explorer. Wanneer je een transactie maakt op een crypto exchange, zie je hier de transaction hash staan. Deze kun je kopiëren en in de block explorer plakken, waarna je meer informatie over de transactie ziet staan. Deze informatie is namelijk middels een hashing algoritme omgezet naar een hash. Het opslaan van deze data gebeurt door middel van een Merkle Tree.
Hieronder zie je een video waarin op een eenvoudige manier wordt uitgelegd wat een hashing algoritme is en hoe hashing werkt.
Wat is een Merkle Tree?
Een Merkle Tree is een data-structuur waarmee gegevens op de blockchain opgeslagen worden. Deze data-structuur lijkt op een boom, zoals je in onderstaande afbeelding kunt zien.
Van iedere transactie wordt een hash gemaakt (de transaction hash). In de afbeelding zie je dat er onderaan vier verschillende hashes zijn. Vervolgens wordt iedere hash samengevoegd met een andere hash, waarna deze twee hashes worden samengevoegd tot een hoofdhash.
We noemen de hoofdhash de Merkle Root, of ook wel de Root Hash, en is dus de hash van alle transacties die in een blok staan. Wijzigt een transactie die onderaan in de Merkle Tree staat? Dan ziet de uitkomst van alle bovenstaande hashes er compleet anders uit. Dit maakt dat het gebruik van hashes bijdraagt aan de veiligheid van de blockchaintechnologie.
Kan een hashing algoritme breken?
Het is mogelijk dat een hashing algoritme breekt. Bij een veilig algoritme is het mogelijk om slechts één kant op te gaan. Stel dat we de wachtwoorden in een database beveiligen door ze om te zetten naar een hash. Wanneer een hacker toegang krijgt tot de database, kan deze niks met de wachtwoorden die hier staan. De hacker ziet namelijk slechts en alleen de hash staan.
Wanneer een gebruik wil inloggen, voert hij zijn wachtwoord in. Vervolgens wordt het wachtwoord via het gebruikte hashing algoritme omgezet naar een hash. De website kijkt dan of de hash klopt met de hash die in de database staat. De hash in de database wordt dus niet teruggezet naar het wachtwoord. Dat zou onveilig zijn.
Dit is alleen mogelijk wanneer het algoritme niet gekraakt is. Dat houdt in dat niemand de logica achter het algoritme zou mogen kennen. Dit geldt ook voor de ontwikkelaars van het algoritme. Wanneer iemand de logica heeft gekraakt, is het mogelijk om hashes terug te zetten naar de inhoud ervan. Dat zou betekenen dat alle wachtwoorden die in de database (van bovenstaand voorbeeld) staan, ingezien kunnen worden door mensen die deze niet zouden mogen inzien.
Wat zijn de bekendste hashing algoritmes?
Hieronder zien we een overzicht van de bekendste en meest gebruikte hashing algoritmes. Niet al deze hashing algoritmes zijn even veilig, zoals we zullen bespreken. Verder in het artikel vertel ik je wat het veiligste hashing algoritme ter wereld is en welke hash functies op dit moment gebroken zijn.
MD5
Misschien is MD5, ontstaan in 1991, wel het bekendste hashing algoritme, al wordt het ondertussen vrijwel niet meer gebruikt. Waarom? Omdat het algoritme gebroken is!
Toch zien we dat nog veel applicaties van MD5 gebruikmaken. Dit zijn voornamelijk oude applicaties en websites die al lang geen update meer hebben gehad. Maar sinds het is gebroken, wordt MD5 niet meer als veilig algoritme gezien. Het is daarom alles behalve aan te raden om MD5 nog te gebruiken voor het maken van een applicatie, laat staan voor de beveiliging van wachtwoorden.
Omdat MD5 kapot is, is het mogelijk om de hash makkelijk terug te draaien. Bij een veilig algoritme is het alleen mogelijk om één kant op te gaan. Dit betekent dat de inhoud moet matchen met de inhoud van de hash. Alleen dan kan men toegang toegang krijgen.
Wanneer je een MD5 hash ziet staan, kun je de inhoud ervan binnen enkele seconden inzien. Er zijn speciale websites waar je dat kunt doen, zoals op www.md5online.org, waar je ook MD5 hashes kunt maken.
MD5 produceert een 128-bit hash. Encrypten wij de string 'allesovercrypto' met de MD5 hashing functie, dan ziet de MD5 output er zo uit:
d8938da7815b5080dd9ed11604f1707f
In onderstaande video leer je meer over het MD5 hashing algoritme.
SHA-1
Het SHA-1 algoritme produceert een 160-bit hash en is in 1995 ontstaan, toen de NSA het heeft ontworpen. Het algoritme is onderdeel van de SHA-familie, waarbij SHA staat voor Secure Hashing Algoritme. Ondanks zijn naam, is SHA-1 niet meer zo veilig als het ooit was. Het algoritme is namelijk kwetsbaar voor brute force attacks, en wordt daarom vrijwel niet meer gebruikt. Ook accepteren Microsoft, Google en Mozilla geen SSL-certificaten meer die met het SHA-1 hashing algoritme ondertekend zijn.
Op verschillende websites kun jij data met SHA-1 encrypten en decrypten, zoals op www.md5decrypt.nl/en/Sha1. Beveiligingsexperts raden aan om het algoritme niet meer te gebruiken.
Wanneer we 'allesovercrypto' met de SHA-1 hash functie encrypten, ziet de SHA-1 output er zo uit:
fda881bf4e0efd5f0a94065358f500caf0e1fa40
SHA-256
Veel applicaties en websites gebruiken dagelijks het SHA-256 hashing algoritme om zijn veiligheid. Het is een variant op de SHA-2 functie en onderdeel van de SHA-familie. Het National Institute of Standards and Technology (NIST) raad het gebruik van dit hashing algoritme zelfs aan.
De veiligheid wordt gewaarborgd doordat het erg gecompliceerd werkt. Het algoritme is 30% langzamer dan zijn voorganger (SHA-2), maar is hierdoor des te moeilijker te kraken. Het algoritme is tot op dit moment niet gebroken, en daarom veilig te gebruiken.
Je kunt verschillende websites, zoals hier, gebruiken om data met SHA-256 te encrypten. Het is niet mogelijk om SHA-256 hashes te decrypten. SHA-256 produceert een 256-bit hash. Encrypten wij de string 'allesovercrypto' met de SHA-256 hashing functie, dan ziet de SHA-256 output er zo uit:
68f96ae80dea69dbe6e8196fa79fb27e9bcc2a170ca4ba9080948dc0874d35a1
Wil je meer te weten komen over het SHA-256 hashing algoritme? Onderstaande video geeft je meer informatie over wat dit algoritme is en hoe het werkt!
Whirlpool
Onder techneuten is Whirlpool een bekend hashing algoritme, al is de kans groot dat het je misschien niks zegt. De Belg Vincent Rijmen heeft Whirlpool in 2000 ontworpen en wordt door veel instanties, zoals ISO en IEC, aangeraden. Het voldoet namelijk aan de vastgestelde veiligheidsstandaarden.
Het algoritme wordt veelvuldig binnen applicaties gebruikt, ook omdat het algoritme is geadopteerd binnen programmeertalen als C en Java. Ook de cryptografische programma's FreeOTFE, TrueCrypto en VeraCrypt hebben het algoritme toegevoegd aan hun applicatie.
Er zijn verschillende websites waar je data kunt encrypten met de Whirlpool hash functie, zoals deze website. Wanneer je Whirlpool gebruikt, ontvang je een 512-bit output hash. Encrypten wij de string 'allesovercrypto' met de Whirlpool hashing functie, dan ziet de Whirlpool output er zo uit:
977fe5e20318d6ac1a4f630b1eaebac5b801e9a5b63e5e058cc859450cca44563f74e61fb1e0cc8220cb4eabcc7e6ae1daa1569d19e556037607e86232d69ce4
PBKDF2
Het PBKDF2 hashing algoritme wordt door de NIST aangeraden. Volgens deze organisatie is het een veilig algoritme dat door applicaties en websites gebruikt kan worden ter beveiliging van wachtwoorden. Het algoritme werkt langzamer dan SHA, waardoor het extra veilig is. Ook wordt er gebruik gemaakt van salt. Dit is een techniek waarbij hashes meermaals opnieuw gehasht worden. Voordat er een nieuwe hash plaatsvindt, wordt er nog een extra string toegevoegd, waardoor de waarde extra afhankelijk is van deze extra string.
Hier kun je PBKDF2 gebruiken en een 256-bit output genereren. Wanneer je de string 'allesovercrypto' met PBKDF2 encrypt, dan ziet de PBKDF2 output er zo uit:
F9o2rpaVNqoG9W9cmDDsoRQWMnLhLC+v7FPJGsQKhTQ=
Waarom dit hashing algoritme zo veilig is, leer je in onderstaande video. Hier wordt meer uitleg gegeven over wat PBKDF2 is en hoe het werkt.
Wat is het veiligste hashing algoritme?
SHA-256 wordt door veel experts gezien als het veiligste hashing algoritme. De NIST raad het gebruik van dit algoritme aan, dankzij de hoge mate van veiligheid. Veel overheden maken gebruik van het SHA-256 algoritme, waaronder die van de Verenigde Staten en Australië.
Ook veel cryptocurrencies maken gebruik van het SHA-256 hashing algoritme, waarvan Bitcoin de bekendste is.
Wat is het onveiligste hashing algoritme?
Ieder algoritme dat is gebroken, is onveilig. Dit zijn alle hashing algoritme die gebroken en onveilig zijn:
- MD2;
- MD4;
- MD5;
- Message Authenticator Algorithm;
- SHA-1;
- GOST;
- LAN Manager;
- Panama;
- Snefru.
Veel organisaties en experts raden ontwikkelaars en gebruikers aan om deze algoritmes niet meer te gebruiken. Wanneer je gevoelige data met deze functies beveiligd, kunnen andere de inhoud vrij makkelijk inzien.
Conclusie
Een hashing algoritme wordt gebruikt om data om te zetten naar een hash. Je zou een hash kunnen zien als een soort geheimschrift dat maar één kant op werkt. Het is niet mogelijk om een hash terug te draaien naar de oorspronkelijke inhoud, mits de hashing functie niet gebroken is. Op het moment dat een hashing functie is gebroken, is het wel mogelijk om de uitkomst terug te draaien.
Er zijn verschillende hashing functies die niet meer veilig zijn, waaronder MD2, MD4, MD5 en SHA1. Op dit moment wordt SHA-256 door veel experts als het veiligste hashing algoritme gezien.
Ben je op zoek naar meer informatie of heb je nog vragen over hashing algoritmes of andere crypto onderwerpen? Of wil je graag andere cryptoliefhebbers ontmoeten? In de gratis Discordkanalen van ons product Money Mastery van AllesOverCrypto kun je vragen stellen en kom je in gesprek met duizenden andere liefhebbers van crypto. Heb je andere crypto gerelateerde vragen? Het makkelijkste is om jouw vraag in onze FAQ op te zoeken. Wat je ook kunt doen, is dat je jouw vraag + AllesOverCrypto googelt. Laat vooral weten wat jouw gedachten over dit artikel is.
Headerfoto door tdhster