Når vi downloader en GNU/Linux-distribution, er det sædvanlige at downloade Opret et ISO-billede, og begynd at oprette det bootbare USB-drev. Uden at tænke nærmere over, hvad der kan være sket undervejs. Sandheden er, at selvom der ofte ikke går noget galt, stoler vi blindt på, at ISO-filen er legitim. At ingen har rørt ved den, og at downloadet ikke er blevet beskadiget.
Hvis vi taler om et komplet operativsystem, ændrer tingene sig. Det er store filer, de tager lang tid at downloade, og frem for alt, En fejl eller manipulation i ISO'en kan kompromittere hele teametDerfor er det i Linux-verdenen så almindeligt (og så anbefalet) at verificere ISO'ers integritet og ægthed ved hjælp af checksums og GPG-signaturer, før man brænder dem på en DVD eller skriver dem til et USB-drev.
Hvad betyder det at verificere en ISO: integritet og ægthed
Når du verificerer en ISO-standard, udfører du ikke én enkelt kontrol, men to forskellige kontroller, der ikke bør blandes: filintegritet og ægtheden af dens oprindelseIntegritet fortæller dig, om den ISO, du har på disken, er identisk med den, der var på serveren, bit for bit. Ægthed fortæller dig, om den ISO og dens kontrolsummer rent faktisk kommer fra det projekt, de hævder at repræsentere.
Integritet verificeres gennem en hashfunktion (checksum) beregnet på hele filenHvis det resultat, du får på din computer, matcher det, der er offentliggjort af distributionen, betyder det, at ISO-filen ikke er blevet ændret under download eller beskadiget under lagring.
Ægtheden bekræftes gennem GPG digitale signaturer forbundet med udviklernes offentlige nøglerI praksis signerer distributionen filen, der indeholder checksummerne (f.eks. SHA256SUMS), og du verificerer, at denne signatur svarer til den officielle projektnøgle, og at den ikke er blevet ændret.
Selvom mange kun tjekker MD5- eller SHA-kontrolsummen og anser den for gyldig, kan nogen, hvis de har kompromitteret downloadserveren, også... Erstat ISO'en og udgiv en falsk checksum.Derfor involverer god praksis også at validere GPG-signaturen i sumsfilen.

Hvad er en checksum, og hvorfor bruges den i ISO'er?
En checksum er resultatet af at anvende en checksum på en fil. kryptografisk hashfunktion, der genererer en unik streng for det indhold. Denne streng er normalt repræsenteret i hexadecimal (tegnene 0-9 og af) og har en fast længde, uanset størrelsen på den originale fil.
I forbindelse med GNU/Linux-distributioner bruges checksummer til at verificér, at dataene ikke har ændret sig, siden projektet offentliggjorde billedetHvis to filer producerer den samme hash ved hjælp af den samme algoritme, betragtes de (i praksis) som identiske. Hvis hashen ikke stemmer overens, er en enkelt forskellig bit nok til at ændre værdien fuldstændigt og give os mulighed for at opdage problemet.
Der findes mange hash-algoritmer, men dem du oftest ser forbundet med ISO'er er: MD5, SHA-1 og SHA-2-familien (SHA-256, SHA-384, SHA-512…)På downloadsider til Debian, Ubuntu, Fedora eller andre distributioner tilbyder de ofte filer med navne som MD5SUMS, SHA1SUMS eller SHA256SUMS sammen med ISO'erne.
Proceduren er enkel: du downloader ISO-filen og dens hash-fil, beregner ISO-hashen på din maskine og Du verificerer, at resultatet stemmer overens med den værdi, der er offentliggjort i checksumfilen.Hvis det stemmer overens, kan du være rimelig sikker på, at billedet ikke er beskadiget eller afkortet.
MD5 betragtes i dag som en algoritme forældet til tunge sikkerhedsformålfordi der er fundet praktiske kollisioner. Alligevel er det stadig nyttigt til grundlæggende integritetskontrol. For store downloads, især ISO'er, er det bedre at bruge... SHA-256, som i øjeblikket er den anbefalede standard. i de fleste distributioner.
Filtyper, du finder, når du downloader en ISO
Når man downloader en distribution fra dens officielle server, er det almindeligt at finde, udover selve billedet, en række ekstra filer. Hver af dem har sit formål, og det er vigtigt at vide, hvad de er. Hvilken funktion udfører hver filtype, og hvordan hænger det sammen med verifikation? som du vil gøre.
Du finder normalt noget i retning af dette (navnene kan variere lidt mellem distributioner):
- distributionsnavn-versionsarkitektur.isoSelve billedet, som du brænder til et USB-drev eller en DVD. For eksempel ubuntu-20.04-desktop-amd64.iso, som angiver distribution, version, udgave (desktop/server) og arkitektur.
- MD5SUMSEn tekstfil, der indeholder en liste over MD5-hashes for de billeder, der er tilgængelige i den pågældende mappe. Hver linje knytter en hash til et filnavn.
- MD5SUMS.gpgGPG-signatur for MD5SUMS-filen, genereret med udviklerens nøgle. Den tjener til at verificere, at MD5-hashfilen faktisk kommer fra projektet og ikke er blevet ændret.
- SHA256SUMSSvarer til MD5SUMS, men bruger SHA-256-algoritmen. Det er denne fil, du bør prioritere, hvis den er tilgængelig.
- SHA256SUMS.gpgSHA256SUMS GPG digital signatur, der bruges til at garantere dens ægthed.
I nogle distributioner vil du også se SHA1SUMS, SHA512SUMS eller lignende filer. De følger alle det samme princip: en liste over summer og, eventuelt, en tilhørende GPG-signatur så du kan kontrollere, at listen ikke er blevet manipuleret.
Hvis du i stedet for at downloade ISO-filen via HTTP/HTTPS gør det ved hjælp af BitTorrent, de fleste klienter integrerer allerede et verifikationssystem Intern behandling er baseret på stykker og delvise hashes, så chancerne for at ende med en beskadiget ISO reduceres kraftigt. Alligevel, hvis du vil være helt sikker på dens ægthed, giver det stadig mening at verificere GPG-signaturen af hashfilen.
Sådan fungerer hashfunktioner (MD5, SHA-1, SHA-256…)
På et praktisk plan behøver du ikke at forstå matematikken bag hashes, men det er nyttigt at forstå et par grundlæggende koncepter for at få en klar forståelse. Hvorfor er de så nyttige til at kontrollere ISO'er?En kryptografisk hashfunktion tager en fil af en hvilken som helst størrelse og returnerer en streng med fast længde; ændring af en enkelt bit i filen resulterer i en helt anden hash.
Kravene til en god hashfunktion inkluderer, at den er let at beregne på en måde, men stort set umuligt at investereat det er meget vanskeligt at finde to forskellige filer med samme hash (kollision), og at det er modstandsdygtigt over for forsøg på at generere skadeligt indhold, der passer til en specifik hash.
MD5 var i årevis de facto-standarden for denne type verifikation, men fremskridt inden for kryptografi har vist, at Det er muligt at bygge forskellige filer med den samme MD5 hashDerfor, selvom det stadig er almindelig praksis i nogle projekter, anbefales det af sikkerhedsmæssige årsager at bruge mere robuste algoritmer.
SHA-1 forbedrede nogle af MD5's svagheder, men der er også blevet identificeret kollisionsproblemer, og det anses for at være Ikke egnet til nye implementeringer, der kræver høj sikkerhedSHA-2-familien (især SHA-256) er i øjeblikket den mest afbalancerede løsning mellem sikkerhed og ydeevne til ISO-verifikation.
I praksis, hvis distributionen tilbyder flere sumfiler, er den bedste mulighed at vælge én. SHA-256 eller SHA-512 som den første mulighedLad kun SHA-1 være i tilfælde, hvor der ikke er andre muligheder, og henvis MD5 til en grundlæggende integritetskontrol, når du ikke har noget alternativ.
Linux-værktøjer til beregning og verificering af checksummer
Den gode nyhed er, at du ikke behøver at installere noget usædvanligt: de fleste moderne GNU/Linux-distributioner inkluderer dem allerede. Kommandolinjeværktøjer til beregning og verifikation af hashesDisse værktøjer er normalt en del af coreutils eller andre grundlæggende pakker.
De mest almindelige kommandoer, du vil støde på, er:
- md5sum: beregner og verificerer MD5-summer.
- sha1sum: beregner og verificerer SHA-1-summer.
- sha256sum: beregner og verificerer SHA-256-summer.
- sha512sum: beregner og verificerer SHA-512-summer.
Det er meget ligetil at bruge dem. Hvis du vil beregne hashen for en bestemt fil, skal du blot køre følgende kommando i terminalen fra den mappe, hvor du har ISO-filen:
cd Descargas
sha256sum nombre-de-tu-imagen.iso
Kommandoen udskriver en linje med hash og filnavn, som du kan sammenligne med den værdi, der er offentliggjort på hjemmesiden. Hvis du foretrækker MD5 eller SHA-1, vil Kommandoformatet er identisk, hvilket ændrer værktøjet (md5sum, sha1sum, sha512sum...).
Udover at beregne individuelle hashes, giver disse samme værktøjer dig mulighed for at verificere flere filer på én gang ved hjælp af tjektilstand med -c-indstillingenDet er her, MD5SUMS- eller SHA256SUMS-filen, som du downloadede sammen med ISO'erne, kommer i spil.
Kontrol af integriteten af en ISO ved hjælp af sumfiler
I et typisk scenarie downloader du både ISO-billedet og dets SHA256SUMS-fil (og, hvis tilgængelig, MD5SUMS eller SHA1SUMS) fra distributionens officielle hjemmeside. Strukturen af denne fil er meget enkel: hver linje indeholder en hash, et mellemrum, eventuelt en asterisk eller et ekstra mellemrum, og filnavnet.
For at tjekke ISO'en med sumfilen skal du blot gå til den mappe, hvor du har både billedet og SHA256SUMS-filen og kør:
sha256sum -c SHA256SUMS
Hjælpeprogrammet gennemgår alle SHA256SUMS-linjerne og sammenligner den hash, det beregner lokalt for hver angivet fil, med den i dokumentet. Hvis alt er i orden, vil det vise noget i retning af:
nombre-distro.iso: OK
I tilfælde af uoverensstemmelser, uanset om det skyldes, at ISO-filen er beskadiget, eller Filen matcher ikke listen over beløbDu vil se beskeder som denne:
nombre-distro.iso: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
Den samme procedure gælder for MD5 og SHA-1 ved at erstatte det tilsvarende værktøj og fil, for eksempel:
md5sum -c MD5SUMS
sha1sum -c SHA1SUMS
Denne fremgangsmåde er især praktisk, når du downloader flere ISO-filer eller flere filer på én gang, fordi Du verificerer alle filerne på én gang med en enkelt kommando. og systemet fortæller dig, hvilke der har bestået testen, og hvilke der ikke har.
GPG-signaturer: verifikation af beløbenes ægthed
Indtil videre har vi kun talt om integritet, men den anden komponent mangler: sørg for at sumfilen rent faktisk kommer fra projektet og ikke fra en person, der har kompromitteret serveren. Det er her, GnuPG (gpg) kommer ind i billedet, standardværktøjet til håndtering af public-key-kryptografi i GNU/Linux.
De fleste større distributioner signerer deres hashsum-filer (f.eks. SHA256SUMS.gpg) med en privat nøgle tilknyttet udviklerne. Du, som bruger, downloader signaturen og bruger den. projektets offentlige nøgle til verificering at SHA256SUMS-filen ikke er blevet ændret.
Den typiske arbejdsgang med en distribution som Ubuntu ville være denne, når du har gpg installeret og er i downloadmappen:
gpg --keyid-format long --verify SHA256SUMS.gpg SHA256SUMS
Hvis din computer allerede har den offentlige Ubuntu-nøgle korrekt importeret og godkendt, vil gpg vise en besked, der angiver en gyldig signatur og nøgleidentifikatorMen det er meget almindeligt, at første gang du kører den, vil den fortælle dig, at den ikke kender den offentlige nøgle.
I så fald ville det næste trin være at importere den offentlige nøgle fra en betroet nøgleserver. For eksempel kan du med Ubuntu gøre noget i retning af dette:
gpg --keyid-format long --keyserver hkp://keyserver.ubuntu.com --recv-keys 0xD94AA3F0EFE21092
Dette downloader nøglen med den angivne identifikator fra den officielle nøgleserver. Når den er importeret, kører du signaturbekræftelseskommandoen igen ved hjælp af SHA256SUMS, og du burde nu få en bekræftelse på, at underskriften er korrekt og er knyttet til nøglen “Ubuntu CD Image Automatic Signing Key (2012)” "eller en anden lignende afhængigt af distributionen."
GPG kan vise advarsler som "Der er ingen indikation af, at signaturen tilhører ejeren", hvilket grundlæggende betyder, at Du har ikke markeret den nøgle som absolut pålidelig.Det er ikke en fatal fejl: så længe du via andre midler (officiel hjemmeside, dokumentation osv.) har verificeret, at nøglefingeraftrykket er det, der er angivet af projektet, kan du fortsætte.
Praktisk eksempel: verificering af en nylig Ubuntu ISO
For at forstå dette klart, forestil dig at downloade en Ubuntu ISO (for eksempel en nyere LTS-version) fra den officielle hjemmeside. På den side finder du links til ISO'en, SHA256SUMS-filen og dens SHA256SUMS.gpg-signatur, alle i samme eller nærliggende mappe.
De trin, du ville følge, ville i bund og grund være følgende:
Først Download den relevante ISO-fil til din arkitektur (for eksempel 64-bit AMD64-skrivebordsbilledet), udover SHA256SUMS- og SHA256SUMS.gpg-filerne, der svarer til den version.
Dernæst, med gpg installeret på dit system, skal du verificere signaturen af sums-filen med:
gpg --keyid-format long --verify SHA256SUMS.gpg SHA256SUMS
Hvis gpg fortæller dig, at den ikke kan finde nøglen, kan du hente den fra en nøgleserver, der er tilknyttet projektet, ved at køre en kommando, der ligner:
gpg --keyid-format long --keyserver hkp://keyserver.ubuntu.com --recv-keys 0xD94AA3F0EFE21092
Når nøglen er importeret, og SHA256SUMS-filsignaturen er valideret, kan du derefter kontrollere ISO'en mod den liste ved hjælp af:
sha256sum -c SHA256SUMS
Kommandoen vil kontrollere alle poster og vise en besked for hver angivet fil. For den nyligt downloadede ISO-fil burde du se noget i retning af dette: "ubuntu-XX.XX-desktop-amd64.iso: Sum matcher" eller “OK”, hvilket bekræfter, at det lokale billede matcher præcis det, der er offentliggjort af udviklerne.
Manuel kontrol af en enkelt kontrolsum
Nogle gange har du ikke den komplette sumfil, eller du har kun fået en enkelt hash på downloadsiden. I så fald kan du også udføre den "gammeldags" verifikation. beregning af den lokale checksum og manuel sammenligning med den offentliggjorte værdi.
Forestil dig, at du har downloadet en Red Hat ISO, og hjemmesiden kun viser SHA-1 hashen af billedet. I din arbejdsmappe kører du:
sha1sum redhat7-x64.iso
Kommandoen vil returnere noget i retning af:
2ac2f3368e6c9fe4d7201d85ad85528698aeaf08 redhat7-x64.iso
Derfra skal du bare sammenlign visuelt eller ved at kopiere/indsætte hashen Sammenlign filnavnet med det, der vises på hjemmesiden eller i den lille tekstfil, du downloadede. Hvis de matcher tegn for tegn, er filens integritet garanteret; hvis de afviger, skal du downloade den igen.
Bekræft mange ISO'er på én gang
Der er situationer, hvor du skal downloade flere billeder på én gang (f.eks. forskellige versioner eller arkitekturer), og du ikke ønsker at tjekke dem én efter én. Heldigvis grupperer MD5SUMS-, SHA1SUMS- eller SHA256SUMS-filer dem normalt sammen. alle summerne af en mappe i et enkelt dokument, bare så du kan udføre massebekræftelsen i ét trin.
Antag, at du har seks forskellige ISO'er i en mappe, og du har downloadet MD5SUM-, SHA1SUM- og SHA256SUM-filerne. For MD5-tjek skal du gøre noget i retning af dette:
md5sum -c MD5SUM
Outputtet vil vise hver ISO sammen med "OK" eller "FAILED" afhængigt af om summen matcher eller ej. Det samme gælder for SHA-1 og SHA-256, kun ved ændring af værktøjet og filen:
sha1sum -c SHA1SUM
sha256sum -c SHA256SUM
Hvis du nogensinde bevidst ændrer en ISO, eller hvis den bliver beskadiget på grund af en diskfejl, vil du se det. Kun at specifikke indtastningsmærker DUMPET Mens alt andet forbliver OK, vil programmerne advare dig med en besked som "ADVARSEL: 1 beregnet checksum matchede IKKE", så du ved, at noget er gået galt.
Sådan genererer du dine egne checksumfiler
Udover at verificere, hvad andre poster, kan du også oprette dine egne checksumfiler, hvis du planlægger at dele ISO'er eller andre typer filer med flere personer. Det er så simpelt som at bruge de samme værktøjer, men omdirigerer standardoutput til en fil som du derefter kan uploade sammen med downloadsene.
Hvis du for eksempel har forberedt flere ISO-billeder i en mappe og ønsker at generere en MD5SUM-fil med dem alle, kan du gøre følgende:
md5sum *.iso > MD5SUM
Kommandoen scanner alle ISO'er i mappen og gemmer listen over hashes og navne i MD5SUM-filen. På samme måde kan du oprette dokumenter ved hjælp af SHA-1 eller SHA-256:
sha1sum *.iso > SHA1SUM
sha256sum *.iso > SHA256SUM
Ved at udgive disse verifikationsfiler sammen med dine filer, vil alle kunne køre md5sum -c, sha1sum -co sha256sum -c på dem og verificer, at downloads er gået godt, og at ingen har ændret dem undervejs.
Hvis du vil gå et skridt videre og tilbyde garantier for ægthed, kan du endda signer disse sumfiler digitalt Brug din egen GPG-nøgle, ligesom store projekter gør. På denne måde kan modtageren af materialet ikke blot bekræfte, at dataene er komplette, men også at de rent faktisk kommer fra dig.
Det tager meget lidt tid at tilegne sig vanen med at kontrollere checksummer og GPG-signaturer, før du installerer en Linux-distribution, og det giver til gengæld et vigtigt sikkerhedslag, der forhindrer installationer med korrupte eller manipulerede ISO'er og hjælper dig med at opdage problemer, før de påvirker din computer.
