SHA512SUM

Toon of genereer 512-bit SHA Checksums

Als je bestanden (ISO bestanden van een Linux Distributie, programma's) download van het internet is het ten zeerste aan te raden om deze na het downloaden te controleren.

De reden hiervoor zijn de volgende:
  • controleren of het bestand niet is aangepast door derden (man-in-the-middle attack).
  • controleren of er tijdens het downloaden niks is foutgelopen waardoor het bestand niet correct gedownload is.
De meeste Linux distributies bieden checksum bestanden aan om dit te doen. Voor absolute veiligheid bieden ze 2 bestanden aan (bijvoorbeeld. SHA512SUMS en SHA512SUMS.sign). Wat zijn deze bestanden?
  • SHA512SUMS is een tekstbestand met alle SHA512 Checksum hashes
  • SHA512SUMS.sign is een bestand dat je kunt gebruiken met gnupg (gpg2) om te kijken of het SHA512SUMS bestand zelf niet is aangepast. Hiervoor heb je het programma gnupg2 en de publieke sleutel van de distributie nodig.
Een voorbeeld van het toevoegen van de sleutels voor de Debian ISO's:
$ gpg --keyserver keyring.debian.org --recv-keys 64E6EA7D
$ gpg --keyserver keyring.debian.org --recv-keys 6294BE9B
$ gpg --keyserver keyring.debian.org --recv-keys 09EA8AC3

Hierna kunnen we het SHA512SUMS.sign bestand controleren:

gpg2 --verify SHA512SUMS.sign

En als dit goed gaat krijgen we een melding dat het bestand getekend is en niet aangepast:

gpg: assuming signed data in 'SHA512SUMS'
gpg: Signature made zo 02 aug 2020 04:01:34 CEST
gpg:                using RSA key DF9B9C49EAA9298432589D76DA87E80D6294BE9B
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   1  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:   1  signed:   0  trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: Good signature from "Debian CD signing key <debian-cd@lists.debian.org>" [full]

Het resultaat van gpg2 --verify kan afwijken van bovenstaand voorbeeld, indien je de sleutels die je met gpg --keyserver … niet hebt ondertekend met je eigen sleutel. Het is dan mogelijk dat de uitvoor er ongeveer zo uitziet:

gpg: assuming signed data in 'SHA512SUMS'
gpg: Signature made zo 02 aug 2020 04:01:34 CEST
gpg:                using RSA key DF9B9C49EAA9298432589D76DA87E80D6294BE9B
gpg: Good signature from "Debian CD signing key <debian-cd@lists.debian.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: DF9B 9C49 EAA9 2984 3258  9D76 DA87 E80D 6294 BE9B

In beide gevallen is de handtekening goed, maar bij de tweede is er een melding dat de sleutel niet is ondertekend met een "vertrouwde" sleutel.

Als we eenmaal weten dat het bestand SHA512SUMS correct is en niet is aangepast kunnen we het gaan gebruiken om het gedownloade bestand te controleren.

De simpelste methode hiervoor is: sha512sum -c SHA512SUMS, dit zal alle bestanden die in SHA512SUMS controleren (en eventueel een foutmelding geven als een bestand incorrect is of niet bestaat).
Opmerking: Het berekenen van een SHA512 checksum kan enige tijd duren, zeker als een een groot aantal grote bestanden in een keer laat controleren.
Een voorbeeld op een SHA512SUMS bestand met alle ISO bestanden van Debian Stable (Buster of dit moment):
debian-10.5.0-amd64-DVD-1.iso: OK
debian-10.5.0-amd64-DVD-1.jigdo: OK
debian-10.5.0-amd64-DVD-1.template: OK
sha512sum: debian-10.5.0-amd64-DVD-10.iso: No such file or directory
debian-10.5.0-amd64-DVD-10.iso: FAILED open or read
sha512sum: debian-10.5.0-amd64-DVD-10.jigdo: No such file or directory
debian-10.5.0-amd64-DVD-10.jigdo: FAILED open or read
sha512sum: debian-10.5.0-amd64-DVD-10.template: No such file or directory
debian-10.5.0-amd64-DVD-10.template: FAILED open or read

Ik heb enkel ISO bestand 1 gedownload (met jigdo), dus krijg ik een melding dat dit bestand goed is, en voor de andere bestanden zoals ISO 10 krijg ik een foutmelding.

het commando wordt dan sha512sum --ignore-missing -c SHA512SUMS

Om deze foutmelding te voorkomen is er de optie --ignore-missing welke ervoor zorgt dat ontbrekende bestanden niet gecontroleerd worden.
Opmerking: Er bestaan verschillende "checksum" tools en vaak worden er ook meerdere aangeboden door de website. Zo geeft Debian niet enkel de SHA512 checksums maar ook de SHA256, SHA1 en MD5 checksums.1

Ben je een Windows of macOS gebruiker dan bestaan er voor deze platformen ook tools om deze checksums te berekenen. Dus als je windows gebruikt maar een DVD of USB wil branden met een Linux distributie om deze te proberen is het aan te raden om in dat geval ook de checksum te controleren (je wil er tijdens de installatie niet achterkomen dat er een fout is en de installatie niet lukt), de meeste distributies hebben tegenwoordig ook een verify optie ingebakken welke je kunt gebruiken voor je de installatie opstart, zo ben je ook zeker dat het bestand correct naar de DVD of USB is gebrand.

Meer informatie kun je altijd terugvinden in de manpages of de infopages

1 sha224sum en sha384sum bestaan ook, maar die ben ik nog niet tegengekomen