Bestand Checksum Verifiëren

Bereken de SHA-256-, SHA-512- of SHA-1-checksum van een bestand rechtstreeks in uw browser en vergelijk deze met de door de ontwikkelaar gepubliceerde hash — bevestig dat uw download intact en ongewijzigd is aangekomen, zonder dat er iets wordt geüpload.

224 weergaven

Sleep een bestand hierheen, of klik om te kiezen

Waarom softwareleveranciers checksums publiceren

Wanneer u een Linux-ISO, een opensourcebinary of een ondertekend installatieprogramma downloadt, staat er op de downloadpagina meestal een checksum naast het bestand — een korte tekenreeks zoals a94a8fe5ccb19ba61c4c0873d391e987982fbbd. Die tekenreeks is de uitvoer van een cryptografische hashfunctie die over elke byte van het bestand wordt uitgevoerd. Verander zelfs één bit ergens in het bestand, en de hash komt er volledig anders uit. Leveranciers publiceren deze waarde zodat u, nadat u het bestand hebt gedownload, dezelfde hashfunctie zelf kunt uitvoeren en uw resultaat kunt vergelijken met het gepubliceerde resultaat. Als de twee tekenreeksen exact overeenkomen, kunt u erop vertrouwen dat de kopie op uw schijf precies dezelfde bytes bevat die de leverancier heeft gebouwd en geüpload — niets toegevoegd, niets ontbrekend, niets gewijzigd.

Een checksum vangt twee heel verschillende soorten problemen op. De eerste is alledaags: netwerkverbindingen vallen weg tijdens een overdracht, proxy's knippen grote bestanden af, en schijven schrijven af en toe naar slechte sectoren — elk hiervan kan u opzadelen met een bestand dat compleet lijkt (juiste grootte, opent zonder duidelijke fout) maar op een handvol beschadigde bytes na afwijkt van het origineel, wat vaak genoeg is om een installatieprogramma te laten crashen of gegevens later stilletjes te corrumperen. De tweede is vijandig: als een aanvaller een spiegelserver compromitteert of een download onderweg onderschept en een gewijzigde binary met malware erin verwisselt, is het vergelijken van de checksum met de waarde die op de officiële, vertrouwde pagina staat een van de weinige controles die dit daadwerkelijk zou opvangen — een bestandsnaam en bestandsgrootte zijn triviaal na te bootsen, maar het reproduceren van een exacte hash vereist het bezit van precies de originele bytes.

Checksums zijn geen encryptie

Het loont om precies te zijn over wat een checksum verifieert, want de terminologie raakt vaak door elkaar. Hashen is een eenrichtings-, onomkeerbare bewerking: SHA-256 zet een bestand om in een vaste hexadecimale tekenreeks van 64 tekens, maar er is geen bewerking die die tekenreeks weer terugzet naar het bestand. Alleen al dat vertelt u dat dit geen encryptie is — encryptie is ontworpen om omkeerbaar te zijn met de juiste sleutel, hashen is ontworpen om nooit omkeerbaar te zijn. Een checksum verifieert integriteit, niet vertrouwelijkheid: het bevestigt dat de bytes die u hebt, de bytes zijn die gehasht werden. Iedereen met toegang tot het bestand kan nog steeds elke byte ervan in gewone tekst lezen; hashen verbergt de inhoud niet. Wat het garandeert, is dat als er ook maar één byte werd gewijzigd — bewust of per ongeluk — de hash die u berekent niet meer overeen zou komen met de gepubliceerde hash, en u onmiddellijk zou weten dat er iets anders is.

Dit onderscheid is ook van belang voor de keuze van het algoritme. SHA-1 werd in 2017 formeel als cryptografisch onveilig aangemerkt, toen onderzoekers van Google en CWI Amsterdam de "SHAttered"-aanval publiceerden: twee verschillende PDF-bestanden, zo ontworpen dat ze exact dezelfde SHA-1-hash opleveren, waarmee werd bewezen dat een voldoende vastberaden aanvaller een kwaadaardig bestand kon construeren dat een checksum deelt met een legitiem bestand. Dat resultaat heeft SHA-1 met pensioen gestuurd voor alles wat veiligheidskritisch is — TLS-certificaten, digitale handtekeningen, verdediging tegen een vijandige actor die opzettelijk een botsing engineert. Maar voor het veel voorkomendere geval waarvoor deze tool bedoeld is — bevestigen dat een download niet is beschadigd door een haperende verbinding — werkt SHA-1 in de praktijk nog steeds prima, omdat niemand uw specifieke beschadigde download engineert om overeen te komen met een doelhash; toevallige corruptie is willekeurig bit-flippen, geen opzettelijke botsingsconstructie. Dat gezegd hebbende, wanneer een leverancier een keuze biedt, kost SHA-256 niets extra om te berekenen en sluit het die kloof volledig — daarom is het de veiligere standaardkeuze.

Veelgestelde vragen

Wat verifieert een checksum precies?

Een checksum is de uitvoer van het uitvoeren van een cryptografische hashfunctie (SHA-256, SHA-512 of SHA-1) over elke byte van een bestand. Het bevestigt integriteit: dat het bestand dat u hebt, byte-voor-byte identiek is aan het bestand dat de gepubliceerde hash produceerde. Het vertelt u niets over de betekenis, veiligheid of herkomst van de inhoud — alleen dat er geen byte is toegevoegd, verwijderd of gewijzigd sinds de hash werd gegenereerd.

Waarom komt de hash van mijn gedownloade bestand niet overeen met die op de website?

Verreweg de meest voorkomende oorzaak is een onvolledige of beschadigde download — probeer het opnieuw, bij voorkeur met een downloadmanager die hervatten ondersteunt. Andere oorzaken: u vergeleek met de hash van een andere versie of een ander bestand op dezelfde pagina, of u nam per ongeluk extra witruimte of tekens op bij het kopiëren van de verwachte hash. Download opnieuw vanaf de officiële bron en controleer opnieuw voordat u aanneemt dat er iets kwaadaardigs is gebeurd; echte manipulatie is zeldzaam maar is precies het scenario dat checksums bestaan om op te vangen.

Is SHA-1 nog veilig om downloads te verifiëren?

Voor het bevestigen van toevallige corruptie — een weggevallen verbinding, een slechte disksector — ja, SHA-1 werkt in de praktijk nog steeds prima. Voor alles waarbij een vastberaden aanvaller opzettelijk een kwaadaardig bestand zou kunnen engineren om een specifieke hash te evenaren, nee: SHA-1 werd gebroken door de "SHAttered"-botsingsaanval van Google en CWI Amsterdam uit 2017, die bewees dat twee verschillende bestanden een SHA-1-hash kunnen delen. Als u de keuze hebt, omzeilt SHA-256 die kwestie volledig zonder extra kosten.

Wat is voor dit doel het verschil tussen SHA-256 en SHA-512?

Beide behoren tot de SHA-2-familie en hebben geen bekende praktische cryptografische zwakheden. SHA-512 werkt intern met 64-bit woorden in plaats van de 32-bit woorden van SHA-256, dus op 64-bit hardware kan het met een vergelijkbare of zelfs hogere snelheid rekenen ondanks dat het een langere, 128 tekens tellende digest produceert. Voor alledaagse checksumverificatie is beide prima — gebruik welke de leverancier daadwerkelijk heeft vermeld, aangezien dat de enige waarde is waarmee u kunt vergelijken.

Bewijst een overeenkomende checksum dat het bestand veilig is of wie het heeft gepubliceerd?

Nee. Een overeenkomst bewijst alleen dat de bytes die u hebt, de bytes zijn die een bepaalde verwachte hash produceerden — het zegt niets over of die verwachte hash zelf van een betrouwbare bron kwam. Als een aanvaller dezelfde pagina compromitteert die de verwachte checksum vermeldt, kan hij een overeenkomende hash publiceren voor zijn eigen kwaadaardige bestand, en de verificatie zal een match melden. Checksums beantwoorden "kwam het bestand intact aan," niet "is het gepubliceerd door wie het beweert te zijn" — die tweede vraag vereist een cryptografische handtekening (zoals PGP/GPG), niet alleen een hash.

Reacties

Nog geen reacties — schrijf de eerste!

Vergelijkbare tools