Cosa fa#
Calcola l'hash SHA-256 di un file o di un flusso di dati. L'hash e' una stringa esadecimale di 64 caratteri che cambia completamente anche se viene modificato un solo bit del file originale. Permette di verificare che un file non sia stato alterato durante il trasferimento o nel tempo.
Sintassi#
sha256sum [opzioni] file
Comandi essenziali#
| Comando | Flag | Significato flag | Cosa fa |
|---|---|---|---|
sha256sum file.iso | — | — | Calcola l'hash del file |
sha256sum file1 file2 | — | — | Calcola hash di piu' file |
sha256sum -b file.iso | -b | binary | Modalita' binaria — consigliata per ISO e immagini |
sha256sum -c checksum.txt | -c | check | Verifica i file elencati nel file di checksum |
sha256sum -c --ignore-missing checksum.txt | --ignore-missing | — | Verifica solo i file presenti, ignora quelli mancanti |
sha256sum * > checksum.txt | — | — | Calcola hash di tutti i file e salva in checksum.txt |
Come funziona — l'hash come impronta digitale#
File originale (1GB ISO)
│
▼
SHA-256 algorithm
│
▼
hash: a1b2c3d4e5f6... (64 caratteri esadecimali)Se anche un solo byte del file cambia, l'hash cambia completamente. Due file identici producono sempre lo stesso hash. Due file diversi (con probabilita' astronomicamente alta) producono hash diversi.
sha256sum ubuntu.iso
# a1b2c3d4... ubuntu.iso
# Modifica un byte qualsiasi
sha256sum ubuntu-modificata.iso
# f9e8d7c6... ubuntu-modificata.iso
# completamente diversoVerifica di un download#
# Scenario: scarichi un'ISO e vuoi verificare che non sia corrotta
# 1. Calcola l'hash dell'ISO scaricata
sha256sum -b linuxmint-22-cinnamon-64bit.iso
# 2. Confronta con l'hash pubblicato sul sito ufficiale
# Output:
# 3d3a99c9... linuxmint-22-cinnamon-64bit.iso
# Se corrisponde → download integro
# Se diverso → file corrotto o modificato, riscaricaVerifica con file di checksum#
# Molti progetti forniscono un file sha256sum.txt con gli hash di tutti i file
# Struttura del file sha256sum.txt:
# a1b2c3... file1.iso
# d4e5f6... file2.iso
# 789abc... file3.tar.gz
# Verifica tutti i file presenti
sha256sum -c sha256sum.txt
# Output:
# file1.iso: OK
# file2.iso: FAILED
# file3.tar.gz: OK
# sha256sum: WARNING: 1 computed checksum did NOT match
# Verifica solo i file che hai scaricato (ignora quelli mancanti)
sha256sum -c --ignore-missing sha256sum.txtUso in forensics — catena di custodia#
# Acquisizione forense con dd + verifica hash
sudo dd if=/dev/sdb of=/evidence/disk.img bs=4M status=progress
# Calcola hash del disco originale
sudo sha256sum /dev/sdb > /evidence/hash_originale.txt
# Calcola hash della copia
sha256sum /evidence/disk.img > /evidence/hash_copia.txt
# Confronta
diff /evidence/hash_originale.txt /evidence/hash_copia.txt
# Nessun output = hash identici = copia forense verificataL'hash identico prova in tribunale che la copia non e' stata alterata.
Baseline dei file di sistema#
# Crea una baseline di hash per file critici
sha256sum /etc/passwd /etc/shadow /etc/sudoers > /root/baseline.txt
# Verifica in un secondo momento se qualcosa e' cambiato
sha256sum -c /root/baseline.txt
# /etc/passwd: OK
# /etc/shadow: FAILED ← qualcuno ha modificato shadow
# /etc/sudoers: OKsha256sum vs md5sum#
md5sum → hash da 32 caratteri, INSICURO — collisioni note
sha1sum → hash da 40 caratteri, DEPRECATO — vulnerabile
sha256sum → hash da 64 caratteri, SICURO — standard attuale
sha512sum → hash da 128 caratteri, piu' sicuro ma piu' lentoPer verifica di integrità usa sempre sha256sum o superiore. md5sum e' utile solo per compatibilita' con sistemi legacy.
Combinazioni utili#
# Hash di un singolo file e salvalo
sha256sum file.tar.gz | tee file.tar.gz.sha256
# Verifica rapida di due file identici
sha256sum file1 file2
# Se le due righe iniziano con lo stesso hash → file identici
# Hash di tutto il contenuto di una directory
find /etc -type f -exec sha256sum {} \; > /root/etc_baseline.txtScenario Reale#
Un analista deve verificare che i file di configurazione critici non siano stati modificati dopo un incidente. Aveva creato una baseline con sha256sum prima dell'incidente. Esegue sha256sum -c baseline.txt e trova che /etc/cron.d/backup ha un hash diverso — l'attaccante ha aggiunto un cron job malevolo.
Dove l'ho usato#
- Verifica integrita' copie forensi con
dd
Note personali#
Scarica sempre il file di checksum dal sito ufficiale su una connessione separata dal file stesso. Se scarichi sia il file che il checksum dallo stesso server compromesso, l'attaccante puo' aver modificato entrambi.
Collegato a#
- system — categoria
- incidents — categoria
- crypto — categoria
- dd — sha256sum verifica le copie create con dd
- cryptography — concetto di hash crittografico


