Cos'è la crittografia SHA? SHA-1 vs SHA-2
I siti Web dannosi sono progettati per sfruttare gli utenti e rubare informazioni personali o finanziarie. Gli hacker utilizzano tecniche come i download drive-by, il malware JavaScript, il malvertising e il phishing per compromettere il vostro sistema, spesso a vostra insaputa. Queste minacce evidenziano l'importanza di abitudini di navigazione sicure e di solide misure di sicurezza dei siti web. Strumenti come SiteLock Website Security possono proteggere sia gli utenti che i proprietari dei siti dagli attacchi informatici.
Indice
Che cos'è la crittografia SHA?
I Secure Hash Algorithms (SHA) sono una famiglia di funzioni crittografiche di hash pubblicate dal National Institute of Standards and Technology (NIST) come Federal Information Processing Standard (FIPS) statunitense. Le crittografie SHA sono utilizzate per una serie di metodi, tra cui l'hashing di dati, file di certificati e altri scopi crittografici, tra cui le criptovalute come il bitcoin. Questi algoritmi di hashing contribuiscono a proteggere la spina dorsale della moderna infrastruttura Internet.
Le famiglie di funzioni SHA più comuni che si incontrano sono SHA-1 e SHA-2:
SHA-1 è una funzione di hash a 160 bit che si è sviluppata a partire dal lavoro svolto sull'algoritmo MD5. Originariamente, l'hash SHA-1 è stato creato dalla National Security Agency (NSA) per far parte del suo algoritmo di firma digitale. Tuttavia, sono state scoperte debolezze crittografiche in SHA-1 e lo standard non è stato più approvato per la maggior parte degli usi crittografici dopo il 2010. Poiché SHA-1 non soddisfa più gli attuali standard di sicurezza informatica, SHA-2 è diventata la funzione SHA più utilizzata.
SHA-2 è stato sviluppato poco dopo la scoperta di attacchi di forza bruta economicamente convenienti contro SHA-1. Si tratta di una famiglia di due funzioni hash simili, con dimensioni di blocco diverse, note come SHA-256 e SHA-512. La differenza principale tra SHA-256 e SHA-512 è la dimensione delle parole: SHA-256 utilizza parole di 32 byte, mentre SHA-512 utilizza parole di 64 byte. Esistono anche versioni modificate di ciascuno standard, note come SHA-224, SHA-384, SHA-512/224 e SHA-512/256. La funzione SHA più comunemente utilizzata oggi è SHA-256, che consente un'ampia protezione agli attuali livelli di elaborazione dei computer. SHA-2 ha una struttura Merkle-Damgård con funzione di compressione Davies-Meyer.
Oltre a queste opzioni più conosciute, esistono altre due famiglie di varianti SHA che si possono incontrare: SHA-0 e SHA-3:
SHA-0 è quella che oggi chiamiamo la versione base della funzione di hash a 160 bit o 20 byte, pubblicata nel 1993 con il nome di algoritmo SHA. L'uso della funzione hash è stato interrotto poco dopo la sua pubblicazione a causa della scoperta di un grave difetto e, dopo un ulteriore sviluppo della teoria di base, è nato SHA-1.
SHA-3 è la tecnica di crittografia SHA che attualmente sta crescendo più rapidamente. Si differenzia dagli altri SHA per l'utilizzo di Keccak, una funzione hash di recente sviluppo. La lunghezza supportata è la stessa di SHA-2, ma rimangono differenze significative. Ciò che rende SHA-3 diverso è la sua struttura complessiva, poiché si basa su un'ampia gamma di funzioni casuali, che in genere supportano tutte le permutazioni casuali, consentendo così di inserire o assorbire, come viene chiamato, qualsiasi quantità di dati presentati e di produrre o comprimere i dati presentati. In questo modo si ottiene un risultato effettivamente pseudorandomizzato e, in teoria, più sicuro.
SHA-1 vs SHA-2: qual è la differenza?
La differenza tra SHA-1 e SHA-2 sta nella “lunghezza” o nel “numero di bit” che il message digest (contenuto hash) contiene per ogni dato input. Pertanto, maggiore è il numero di bit del digest, più difficile è decifrarlo utilizzando le tattiche di forza bruta che hanno costretto l'evoluzione di SHA-1. SHA-2 produce un digest di 256 bit, mentre la funzione SHA-1 produce un digest di 160 bit per lo stesso input. A causa di questa differenza, SHA-1 offre una sicurezza più debole, in quanto a volte fornisce lo stesso digest per due valori di dati diversi, mentre SHA-2 produce un digest unico per ogni valore di dati, in quanto è possibile un gran numero di combinazioni (2^256 combinazioni possibili per una funzione a 256 bit).
Come viene utilizzata la crittografia SHA?
Gli SHA sono ampiamente utilizzati nei protocolli e nelle applicazioni di sicurezza, tra cui Transport Layer Security (TLS), Secure Socket Layer (SSL), firme digitali, certificati di posta elettronica S/MIME, PGP e IPsec. Questo tipo di crittografia è spesso richiesto dalla legge per applicazioni specifiche del governo statunitense, come la protezione di dati sensibili. Inoltre, i fornitori di browser, come Google, Microsoft o Mozilla, hanno iniziato a raccomandare l'uso di SHA-3 e a sospendere l'uso dell'algoritmo SHA-1.
Uno degli usi più importanti degli SHA è il protocollo SSL/TLS, dove vengono utilizzati come algoritmo di hashing per le firme digitali.
SSL e TLS sono protocolli crittografici progettati per fornire un canale di comunicazione sicuro tra client e server su Internet. I certificati TLS/SSL sono un tipo di certificato X.509 utilizzato per convalidare l'identità di un server a un browser.
L'intento di questo tipo di certificato non è solo quello di fornire l'autenticazione, ma anche di stabilire l'identità del server remoto con cui il browser client comunica. Il certificato contiene i dettagli del server web e i file chiave ad esso associati. I certificati devono contenere le informazioni DNS e non essere scaduti per essere accettati correttamente e creare una sessione SSL/TLS senza errori di sicurezza.
Come funziona la crittografia SHA?
SHA, come suggerisce il nome, è un algoritmo di hashing. Ogni dato passato attraverso l'algoritmo produce un hash unico che non può essere duplicato da nessun altro dato. Anche la firma digitale risultante è unica, poiché dipende dall'hash generato dai dati. Per quanto riguarda la comunicazione vera e propria, si utilizza la crittografia simmetrica, in cui la stessa chiave che codifica o cripta i dati viene utilizzata per decodificarli. Ciò consente di rivelare la chiave pubblica senza compromettere la chiave privata.
La maggior parte degli algoritmi di hashing si basano sull'algoritmo originale MD4 e condividono quindi un metodo di funzionamento simile.
Il processo di base per l'hashing di qualsiasi tipo: convertire l'input, o il messaggio originale, in binario, quindi eseguire una serie di semplici funzioni che operano attraverso processi standard di transistor e bus come AND, XOR, NOT, Rotate e OR. Il valore hash risultante è un esadecimale unico ma privo di significato. La necessità di eseguire queste semplici funzioni per eseguire correttamente l'hash di un dato in ingresso è una delle ragioni per cui è possibile progettare chip specifici per le applicazioni (ASICS) che ottimizzano l'hash.
Nel caso dell'hashing SHA-256, i chip di nuova creazione sono stati progettati specificamente per aumentare la velocità di creazione di un hash da un input. Nel caso del mining di bitcoin, ciò significa che è possibile calcolare un maggior numero di hash al secondo, con maggiori possibilità di ottenere la ricompensa del mining.
L'SHA è sicuro?
L'algoritmo SHA-1 (Secure Hash Algorithm 1) risale al 1995 e dal 2005 è noto per la sua vulnerabilità ad attacchi teorici. Il National Institute of Standards and Technology degli Stati Uniti ha vietato l'uso di SHA-1 da parte delle agenzie federali statunitensi dal 2010 e le autorità di certificazione digitale non possono emettere certificati con firma SHA-1 dal 1° gennaio 2016, anche se sono state concesse alcune deroghe.
Tuttavia, nonostante questi sforzi per eliminare gradualmente l'uso di SHA-1 in alcune aree, l'algoritmo è ancora ampiamente utilizzato in una serie di settori, tra cui la convalida di:
- transazioni con carta di credito
- documenti elettronici
- firme PGP/GPG delle e-mail
- repository di software open-source
- backup
- aggiornamenti software
Queste esenzioni presentano un rischio maggiore di esposizione, per cui sono state esercitate pressioni significative per passare a uno standard più sicuro. Molti browser, come Google Chrome, hanno iniziato a contrassegnare qualsiasi certificato firmato SHA-1 come non sicuro per i visitatori.
Gli SHA sono, per definizione, sicuri. Tuttavia, il livello di sicurezza associato a ciascun tipo è aumentato nel tempo con lo sviluppo di una nuova iterazione. Come abbiamo visto, SHA-0 presenta più vulnerabilità esposte rispetto a SHA-1, che presenta più vulnerabilità esposte rispetto a SHA-2. Questa tendenza continuerà in futuro, man mano che si svilupperà una nuova iterazione. Questa tendenza continuerà anche in futuro, con la corsa agli armamenti tra aggressori e difensori dei dati sensibili.
Quale SHA devo usare?
Per proteggere la crittografia dei vostri utenti, dovreste sempre utilizzare l'SHA più adatto al progetto su cui state lavorando. Al giorno d'oggi, è probabile che si tratti della famiglia SHA-2, ma esistono casi d'uso per la maggior parte dei tipi. Tutti i certificati SHA non sono compatibili con tutti i server, quindi per creare un ambiente sicuro è essenziale non solo conoscere le esigenze del caso d'uso, ma anche le attrezzature.
Di seguito sono riportate le versioni dei prodotti dei server più diffusi necessarie per essere compatibili con i certificati digitali SHA-2:
- Server Apache: 2.0.63+
- IBM HTTP Server: 8.5 (in bundle con Domino 9)
- Prodotti basati su Java: Java 1.4.2+
- Mozilla: prodotti basati su NSS 3.8+
- Oracle WebLogic: 10.3.1+
Come già detto, SHA-256 è la funzione SHA attualmente più utilizzata. Tuttavia, con il progredire dell'elaborazione informatica, SHA-256 diventerà sempre più vulnerabile agli attacchi, come le sue precedenti incarnazioni. Assicurarsi di essere a conoscenza degli aggiornamenti più recenti degli algoritmi Secure Hash è il modo migliore per crittografare correttamente i dati senza correre rischi.
Ora che avete acquisito maggiore familiarità con la crittografia SHA, contattateci oggi stesso per saperne di più su come i nostri prodotti possono proteggere il vostro sito web dalle minacce alla sicurezza.