Cos'è l'hashing? Una spiegazione completa delle funzioni hash
Risposta rapida
L'hashing converte qualsiasi input in un output di dimensione fissa (hash) utilizzando una funzione unidirezionale. Lo stesso input produce sempre lo stesso hash; input diversi producono hash diversi (resistenza alle collisioni). L'hashing viene utilizzato per l'integrità dei dati, l'archiviazione delle password e le firme digitali. Utilizza il nostro generatore di hash gratuito per calcolare gli hash SHA-256, SHA-1 e MD5 nel tuo browser.
Introduzione
L'hashing è il processo di conversione dei dati di input di qualsiasi dimensione in un output di dimensione fissa chiamato hash o digest. Una funzione hash è l'algoritmo che esegue questa conversione. Le funzioni hash crittografiche hanno proprietà speciali che le rendono utili per l'integrità dei dati, l'archiviazione delle password, le firme digitali e l'indirizzamento dei contenuti. A differenza della crittografia, l'hashing è unidirezionale: non è possibile recuperare l'input dall'hash. Le funzioni hash comuni includono SHA-256 (utilizzata in Bitcoin e TLS), SHA-3 e le precedenti MD5 e SHA-1 (ora non funzionanti per motivi di sicurezza).
Passo dopo passo
-
Comprendere le proprietà della funzione hash
Le funzioni hash crittografiche hanno quattro proprietà chiave: (1) Deterministico: lo stesso input fornisce sempre lo stesso output. (2) Veloce da calcolare. (3) Unidirezionale: impossibile recuperare l'input dall'hash. (4) Resistente alle collisioni: impossibile trovare due input diversi con lo stesso hash. (5) Effetto valanga: una piccola variazione degli input modifica drasticamente la produzione.
-
Impara algoritmi comuni
SHA-256 (output a 256 bit, 64 caratteri esadecimali) è lo standard moderno, utilizzato in Bitcoin, TLS e firme digitali. SHA-512 è più sicuro ma più lento. SHA-3 è la famiglia più recente. MD5 (128 bit) e SHA-1 (160 bit) sono interrotti per la resistenza alle collisioni e non devono essere utilizzati per la sicurezza.
-
Distinguere l'hashing dalla crittografia
L'hashing è unidirezionale: non è possibile invertirlo. La crittografia è bidirezionale: puoi decrittografarla con una chiave. L'hashing serve per integrità e verifica; la crittografia è per la riservatezza. Non utilizzare mai un hash per archiviare i dati che devi recuperare.
-
Utilizzare l'hashing correttamente
Per l'integrità dei dati, eseguire l'hashing dei dati e confrontarli con un hash sicuramente valido. Per le password, utilizza un hash di estensione delle chiavi lento (bcrypt, scrypt, Argon2) con un sale univoco, non SHA-256 grezzo, che è troppo veloce e vulnerabile alla forza bruta.
Esempi
Hash SHA-256
Ingresso: Hello, World!
Produzione: dffd6021bb2bd5b0af676290809ec008dfca50a8d29e6ac0a52c2d7e9f0a3b0c
Effetto valanga
Ingresso: Hello, World! (vs Hello, World?)
Produzione: Hash completamente diverso nonostante il cambio di un carattere
MD5 hash (non funzionante, solo legacy)
Ingresso: Hello, World!
Produzione: ed0760733d7505e9ceacf8af225020ac
Problemi comuni
- Utilizzando MD5 o SHA-1 per la sicurezza: entrambi sono rotti per la resistenza alle collisioni. Utilizza SHA-256 o più potente per qualsiasi scopo di sicurezza.
- Hashing delle password senza sale: password identiche producono hash identici, consentendo attacchi Rainbow Table. Utilizza bcrypt, scrypt o Argon2 con un sale univoco.
- Confondere l'hashing con la crittografia: l'hashing è unidirezionale (non può essere invertito); la crittografia è bidirezionale (può essere decrittografata con una chiave).
- Aspettarsi che gli hash siano univoci: le collisioni sono teoricamente possibili ma praticamente irrealizzabili per algoritmi sicuri (SHA-256 ha 2 ^ 256 possibili output).
Suggerimenti
- Utilizza SHA-256 per la verifica dell'integrità dei dati, l'indirizzamento dei contenuti e le firme digitali.
- Per l'archiviazione delle password, utilizzare bcrypt, scrypt o Argon2, non raw SHA-256. Questi algoritmi hanno uno stretching chiave per resistere alla forza bruta.
- L'hashing è unidirezionale: non utilizzarlo mai per archiviare i dati che devi ripristinare. Utilizza la crittografia per i dati riservati.
- Utilizza il nostro generatore di hash per calcolare SHA-256 e altri hash istantaneamente nel tuo browser.