it-swarm-eu.dev

Come posso verificare l'integrità dei file scaricati?

So che usiamo le funzioni hash per verificare l'integrità dei file, ecc ... ma la mia domanda è: come possiamo verificare l'integrità dei file scaricati da alcuni server?

15
ame

L'integrità è definito solo relativamente a una fonte autorevole che dice qual è la sequenza "corretta" di byte. Le funzioni hash non creano integrità, ma trasporto esso. Fondamentalmente, se hai:

  1. un file;
  2. un valore di hash, ritenuto corretto;

quindi puoi ricalcolare la funzione hash sul file e vedere se ottieni lo stesso valore hash.

Devi ancora iniziare da qualche parte. Alcuni distributori di software forniscono, insieme al software, un file "checksum" (o "md5sum" o "sha1sum"), che contiene i valori hash. Supponendo di aver ottenuto il file di checksum corretto , questo ti consente di verificare se hai scaricato il file giusto, fino all'ultimo bit; e questo funziona indipendentemente dal modo in cui hai scaricato il file forse di grandi dimensioni (anche se è venuto su una rete peer-to-peer ombreggiata o altro; non puoi imbrogliare le funzioni di hash).

Ora questo non risolve il problema di integrità; lo riduce semplicemente al problema di assicurarsi di avere il giusto valore di hash. I valori di hash sono piccoli (32 byte per SHA-256), quindi questo apre molte possibilità. Nel contesto del download di file da sistemi P2P, è possibile ottenere il valore hash da un sito Web HTTPS (HTTPS utilizza SSL che garantisce l'autenticazione del server - hai la garanzia di parlare con il server che intendi - e l'integrità del trasporto - ciò che ricevi è garantito per essere ciò che il server ha inviato). Nel contesto dello scambio di chiavi pubbliche PGP con persone, i valori di hash (spesso chiamati "impronte digitali" o "impronte digitali") sono abbastanza brevi da poter essere trasferiti manualmente (stampati su un biglietto da visita, scritti sul telefono ...).

Firme digitali espandono il concetto, ma anche loro iniziano con le funzioni di hash. Tutti gli algoritmi di firma digitale non firmano il messaggio stesso, ma l'hash del messaggio (che è ugualmente buono fintanto che la funzione hash è sicura, cioè resistente a collisioni e preimmagini).

16
Tom Leek

Per molti software, i provider dei file forniscono anche l'hash del file che consente di verificarne l'integrità.

Ad esempio, ecco un esempio dei checksum forniti dal Fedora Project per Fedora 19 x86_64 ISO.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

# The image checksum(s) are generated with sha256sum.
6e7e263e607cfcadc90ea2ef5668aa3945d9eca596485a7a1f8a9f2478cc7084 *Fedora-19-x86_64-DVD.iso
ef9eb28b6343e57de292f2b2147b8e74a2a04050655e0dc959febd69b0d5d030 *Fedora-19-x86_64-netinst.iso
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBCAAGBQJRzjLNAAoJEAdHfmX7SxjmzQEP/jzXXe4rxRzA9NLrgWtRUp1b
nK+gpMgGXC5+zSWnKTQBUWMx0rx7uys/UQH934hz1rdMOqLkCe1XlVWp+0ya55nC
13OhOeeJhbdECzFvcSAkDh9Aj2Z9AnDeHbDvJXpEjvGiSLLsYWsjifIkMYDoNTRV
QlLWwOTlCCUZtEGEI1x0TWYlr0HUtkL5QAzQ4CSO7xGYE6YH/xwHje/8n7B25NHU
r2sSdlz3KORQyStqYK78cWlR70PT+3o00SO7ReHNVIZwCL8PjsOEm41Q4tjw3BF7
KLp+fcQTOgzLRY1VVk0n0POeJHbVB2TULjIW4F/vCiA3N6Uq595ebNxgSOBg8tRs
t7fkbktVB6+WeBCcGvJI7MWzYq0ukwRBAH+ZBLhpnEIsHOoFF6LRoiE0UncdhGb+
OmZqn8wZKzMf401E/vj7dEy+X3lAST+5mBm0EJQaFz2cbQCzuxfhnSc27w9Zq3ii
3Tgo1ubInXD/fu1WFH/Tu2aOmbNQwDr4YQDYOeuzokA3d/2bETIhEmYxmfGptfMw
fGG/u4QQMdXyPPKvdIkOTAp5d0tWnTucpkbHs1goygsCMz6XWvIZJt4bAbSRwXoa
qYXh8IpJAM0CrU0353RMDCNpDlpSXGeEy5riaFpFCe7SKZBzp2dJ1LsMJl1NJXxn
QavVCbllLFFjaTuYKrDZ
=oBpz
-----END PGP SIGNATURE-----

Istruzioni vengono forniti anche se non si riesce a utilizzare i checksum forniti.

In generale, se i file vengono forniti attraverso lo stesso supporto dei checksum, il vantaggio reale di un utente malintenzionato che riesce a compromettere il download avrà la possibilità di sostituire il checksum fornito. Tuttavia, questo è molto utile nel caso in cui i file vengano scaricati su una connessione non sicura come torrent o CDN. In una situazione del genere, il fornitore del software può fornire il piccolo checksum sul suo server mentre serve i file attraverso un supporto di larghezza di banda maggiore come torrent o CDN.

9
user10211