Wat zijn MD5-, SHA-1- en SHA-256 hashes en hoe kan ik ze controleren?
Soms zie je MD5-, SHA-1- of SHA-256-hashes naast downloads tijdens je internetreizen, maar je weet niet echt wat ze zijn. Met deze schijnbaar willekeurige tekstkaders kunt u controleren of bestanden die u downloadt, niet beschadigd zijn of ermee zijn geknoeid. U kunt dit doen met de commando's ingebouwd in Windows, macOS en Linux.
Hoe hashes werken en hoe ze worden gebruikt voor gegevensverificatie
Hashes zijn de producten van cryptografische algoritmen die zijn ontworpen om een reeks tekens te produceren. Vaak hebben deze strings een vaste lengte, ongeacht de grootte van de invoergegevens. Bekijk de bovenstaande tabel en u zult zien dat zowel "Fox" als "De rode vos springt over de blauwe hond" dezelfde uitvoer oplevert.
Vergelijk nu het tweede voorbeeld in de grafiek met de derde, vierde en vijfde. Je zult zien dat, ondanks een zeer kleine verandering in de invoergegevens, de resulterende hashes allemaal erg van elkaar verschillen. Zelfs als iemand een heel klein deel van de invoergegevens aanpast, zal de hash drastisch veranderen.
MD5, SHA-1 en SHA-256 zijn allemaal verschillende hashfuncties. Softwaremakers nemen vaak een bestand download - zoals een Linux .iso-bestand of zelfs een Windows .exe -bestand - en voeren het via een hash-functie uit. Vervolgens bieden ze een officiële lijst met hashes op hun websites.
Op die manier kunt u het bestand downloaden en vervolgens de hash-functie uitvoeren om te bevestigen dat u het echte, originele bestand hebt en dat het tijdens het downloadproces niet is beschadigd. Zoals we hierboven hebben gezien, zal zelfs een kleine wijziging in het bestand de hash drastisch veranderen.
Deze kunnen ook handig zijn als je een bestand hebt dat je hebt gekregen van een niet-officiële bron en je wilt bevestigen dat het legitiem is. Laten we zeggen dat je een Linux.ISO-bestand hebt dat je ergens vandaan hebt en je wilt bevestigen dat er niet mee is geknoeid. Je kunt de hash van dat specifieke ISO-bestand online opzoeken op de website van de Linux-distributie. U kunt het vervolgens via de hash-functie op uw computer uitvoeren en bevestigen dat het overeenkomt met de hash-waarde die u zou verwachten. Dit bevestigt dat het bestand dat je hebt exact hetzelfde bestand is dat wordt aangeboden om te downloaden op de website van de Linux-distributie, zonder enige wijzigingen.
Merk op dat "collisions" zijn gevonden met de MD5- en SHA-1-functies. Dit zijn meerdere verschillende bestanden, bijvoorbeeld een veilig bestand en een schadelijk bestand, die resulteren in dezelfde MD5- of SHA-1-hash. Daarom zou je SHA-256 moeten kiezen waar mogelijk.
Hash-functies vergelijken op elk besturingssysteem
Laten we met dat in gedachten eens kijken hoe je de hash van een bestand dat je hebt gedownload kunt controleren en vergelijken met de hash die je hebt gekregen. Hier zijn methoden voor Windows, macOS en Linux. De hashes zijn altijd identiek als u dezelfde hash-functie op hetzelfde bestand gebruikt. Het maakt niet uit welk besturingssysteem u gebruikt.
ramen
Dit proces is mogelijk zonder software van derden op Windows dankzij PowerShell.
Om aan de slag te gaan, opent u een PowerShell-venster door de snelkoppeling "Windows PowerShell" in het menu Start te starten.
Voer de volgende opdracht uit en vervang "C: \ path \ to \ file.iso" door het pad naar een bestand waarvan u de hash van wilt bekijken:
Get-FileHash C: \ path \ to \ file.iso
Het genereren van de hash van het bestand zal enige tijd duren, afhankelijk van de grootte van het bestand, het algoritme dat u gebruikt en de snelheid van de schijf waarop het bestand zich bevindt.
Standaard toont de opdracht de SHA-256 hash voor een bestand. U kunt echter het hash-algoritme opgeven dat u wilt gebruiken als u een MD5, SHA-1 of ander type hash nodig hebt.
Voer een van de volgende opdrachten uit om een ander hash-algoritme op te geven:
Get-FileHash C: \ path \ to \ file.iso -Algorithm MD5
Get-FileHash C: \ path \ to \ file.iso -Algorithm SHA1
Get-FileHash C: \ path \ to \ file.iso -Algorithm SHA256
Get-FileHash C: \ path \ to \ file.iso -Algorithm SHA384
Get-FileHash C: \ path \ to \ file.iso -Algorithm SHA512
Get-FileHash C: \ path \ to \ file.iso -Algorithm MACTripleDES
Get-FileHash C: \ path \ to \ file.iso -Algorithm RIPEMD160
Vergelijk het resultaat van de hashfunctie met het resultaat dat u verwachtte te zien. Als het dezelfde waarde heeft, is het bestand niet beschadigd, geknoeid met of anderszins gewijzigd van het origineel.
MacOS
macOS bevat opdrachten voor het bekijken van verschillende soorten hashes. Open een Terminal-venster om toegang te krijgen. U vindt het in Finder> Toepassingen> Hulpprogramma's> Terminal.
De md5
commando toont de MD5 hash van een bestand:
md5 / pad / naar / bestand
De shasum
commando toont standaard de SHA-1 hash van een bestand. Dat betekent dat de volgende opdrachten identiek zijn:
shasum / pad / naar / bestand
shasum -a 1 / pad / naar / bestand
Om de SHA-256 hash van een bestand te tonen, voert u de volgende opdracht uit:
shasum -a 256 / pad / naar / bestand
Linux
Open op Linux een Terminal en voer een van de volgende opdrachten uit om de hash voor een bestand te bekijken, afhankelijk van het type hash dat u wilt bekijken:
md5sum / path / to / file
sha1sum / path / to / file
sha256sum / pad / naar / bestand
Sommige hash's zijn cryptografisch ondertekend voor nog meer beveiliging
Hoewel hashes je kunnen helpen te bevestigen dat een bestand niet is gemanipuleerd, is er hier nog steeds één aanvalspijl. Een aanvaller kan de controle krijgen over de website van een Linux-distributie en de hashes aanpassen die erop verschijnen, of een aanvaller kan een man-in-the-middle-aanval uitvoeren en de webpagina in transit wijzigen als u de website via HTTP bezoekt in plaats van gecodeerde HTTPS.
Daarom bieden moderne Linux-distributies vaak meer dan hashes op webpagina's. Ze ondertekenen cryptografisch deze hashes om te helpen beschermen tegen aanvallers die proberen de hashes te wijzigen. U wilt de cryptografische handtekening verifiëren om ervoor te zorgen dat het hash-bestand daadwerkelijk is ondertekend door de Linux-distributie als u er absoluut zeker van wilt zijn dat de hash en het bestand niet zijn gemanipuleerd.
Het verifiëren van de cryptografische handtekening is een meer betrokken proces. Lees onze handleiding om te controleren of er met Linux-ISO's niet is geknoeid voor volledige instructies.
Afbeeldingscredits: Jorge Stolfi / Wikimedia