Funzioni di hash crittografiche

Funzioni di hash crittografiche

La crittografia moderna offre una vasta gamma di strumenti e tecniche per proteggere i dati in transito e a riposo. Le funzioni di hash crittografiche appartengono al tipo di protocollo crittografico che si basa su cifre di blocco. Svolgono un ruolo significativo nel garantire i sistemi di comunicazione moderni e nel lavoro come barriera per gli intrusi garantendo l'autenticità dei dati. Salvare e recuperare in modo sicuro le password e le transazioni crittografiche anonime sono alcune delle molte applicazioni di funzione hash.

L'articolo fornisce un'ampia panoramica e un utilizzo delle funzioni di hash crittografiche. Spieghiamo le proprietà di hash, il loro utilizzo in vari settori, possibili attacchi e debolezze e, soprattutto, modi per rafforzare gli hash e migliorare le funzioni di hash.

Cos'è una funzione hash?

È una funzione a senso unico o un identificatore univoco che, dato un input a lunghezza variabile, emette un digest hash a lunghezza fissa. Tuttavia, la lunghezza dell'uscita dipende dall'algoritmo di hashing. In generale, gli algoritmi più popolari hanno una lunghezza di hash di 160-512 bit.

Ma per produrre i dati a una lunghezza fissa, le funzioni di hash prendono la prima blocco di dati prefissati noti come blocchi di dati. La dimensione del blocco dati varia da un algoritmo all'altro, ma è sempre lo stesso per un algoritmo. Ad esempio, la funzione Hash SHA-1 accetta una dimensione del blocco di 512 bit e se l'ingresso ha delle stesse dimensioni, funziona solo una volta, cioè 80 colpi. Se la dimensione dell'ingresso è 1024, l'algoritmo verrà eseguito due volte.

Realisticamente, la dimensione dell'input è raramente un multiplo di 512 bit. In tali casi, utilizziamo una tecnica nota come imbottitura che divide il messaggio/dati in blocchi di dati della stessa lunghezza. In modo tale che la funzione venga eseguita sulla base di un numero totale di blocchi di dati ed elabora ogni blocco di dati alla volta. Prende l'output del primo blocco come input con il secondo blocco e così via. Quindi, l'hash finale è il valore combinato di tutti i valori di output.

Hashing vs. Crittografia

Hashing e crittografia sono processi unici e separati con il proprio set di funzionalità, proprietà e procedure.

La crittografia è un processo a due vie/reversibile in quanto incorpora l'uso di una chiave condivisa o è matematicamente correlata ma non identiche chiavi pubbliche e private. A differenza della crittografia, gli hash sono facili da calcolare e difficili da invertire al testo in chiaro originale.

Hashing fornisce integrità dei dati. La crittografia, d'altra parte, rende la riservatezza dei dati.

Il bene degli hash

Anche se hashing non è crittografia, è una forma di crittografia che fornisce:

  • protezione della password
  • Verifica di integrità / file dei dati
  • firme digitali e
  • firme virus.

Protezione della password

Ogni volta che un utente inserisce una password per l'autenticazione, l'hash password viene confrontato con il file contenente hash di sistema nel computer. Il sistema consente l'accesso solo dopo l'autenticazione riuscita. Ad esempio, Windows memorizza la password hash nel file di Security Account Manager (SAM), mentre Linux memorizza la password hash nel file /etc /shadow.

Verifica del file

Allo stesso modo, alcuni siti Web condividono un valore di hash per verificare l'integrità del software scaricato che garantisce che non sia corrotto o che qualcuno non manterò il file durante il download.

Ad esempio, il sito Web per il download di Linux Mint 20.2 "Uma" -Cinnamon (64-bit) ISO Image condivide il suo hash sha256 nel SHA256Sum.file txt. Per verificare l'integrità dell'immagine, CD nella directory di immagini scaricata e genera la somma sha256 come segue:

ubuntu@ubuntu: ~ $ sha256sum -b *.iso

IL sha256sum.TXT Il file contiene quattro hash a seconda delle diverse versioni del desktop. Confronta il valore di hash generato con l'hash di immagine ISO desktop Cinnamon nel file per verificarne l'integrità se corrispondono; Ciò significa che l'immagine ISO è pronta per l'uso.

Prima di SHA256, l'algoritmo di hashing MD5 è stato utilizzato per verificare l'integrità di un file scaricato ma non è più un vero algoritmo di hash crittografico in quanto non è resistente alle collisioni (ne parleremo più avanti).

Firme digitali

Una firma digitale autentica il mittente aggiungendo il messaggio originale con il digest del messaggio crittografato. Il mittente crittografa con la chiave privata per garantire il non ripudio mentre l'hash protegge dalla manomissione dei dati e fornisce l'integrità i.e., Digital Signature = Key Private's Private (Hash))).

Il ricevitore decrittica il messaggio Digest con la chiave pubblica del mittente e prende l'hash del messaggio originale da confrontare con l'hash decrittografato.

Firme virus

Le soluzioni antivirus utilizzano vari approcci per identificare il malware; Uno di questi è l'abbinamento hash. Prendono una parte o un blocco di un eseguibile per creare un hash e confrontarlo con gli hash di malware memorizzati nei loro database.

Proprietà degli hash

L'insieme di proprietà che rendono le funzioni di hash svolgono un ruolo fondamentale nella crittografia a chiave pubblica è la seguente:

  • Un buon algoritmo hash restituisce un valore di hash di dimensioni/lunghezza fissa indipendentemente dalla dimensione dell'input.
  • Offre una resistenza pre-immagine che significa che è impossibile recuperare il valore originale invertendo l'hash.
  • Un forte algoritmo di hashing garantisce la resistenza alla collisione. Cioè, non ci sono due input diversi possono avere un output simile.
  • Una modifica minore dell'input genera cambiamenti significativi nell'output. Questa proprietà di hash aiuta a garantire l'integrità dei file/dati.
  • La velocità computazionale delle funzioni hash crittografiche è un'altra proprietà ideale. Tuttavia, è soggettivo e varia sulla base dello scopo e dell'area di applicazione.

Modalità di hash

Le funzioni di hash più note sono l'algoritmo di digest di messaggi (MDA), algoritmo hash sicuro (SHA), NTLM, ecc.

  • MD5: MD5 è la quinta versione degli algoritmi di Digest che hanno una lunghezza di output di 128 bit. Era l'algoritmo di hashing più noto fino a quando non è diventato incline ad attacchi di collisione (ne parleremo più avanti). Ad esempio, prima degli algoritmi di hashing Secure (SHA), l'algoritmo di hashing MD5 era il metodo più comunemente usato per la verifica dell'integrità dei file.
  • Sha: L'algoritmo hash sicuro è stato introdotto da NSA. È una suite di algoritmi contenenti quattro funzioni varianti SHA-224, SHA-256, SHA-384 e SHA-512. Ogni nome variante rappresenta la dimensione del suo output. È un algoritmo di hashing più sicuro poiché non è noto nessun compromesso degli algoritmi di hashing.
  • NTLM: L'algoritmo hash manager NT LAN viene utilizzato per le password di hashing. NTLM utilizza controlli di ridondanza ciclica e digest di messaggi, ma il suo unico inconveniente è che si basa sul cifra RC4, che contrariamente ai nuovi protocolli crittografici, eventi avversi e SHA-256 sono stati bersaglio di un attacco di successo. NTLMV2 risolve questi problemi utilizzando il sistema HMAC-MD5 a 128 bit.

Il male degli hash

Come discusso in precedenza, gli hash di grandi dimensioni di blocchi possono rallentare gli aggressori e ingegneria inversa un hash crittografico potrebbe essere difficile ma non è impossibile. Tutti gli aggressori richiedono è un momento in cui possono facilmente gestire utilizzando hardware veloce e creando collisioni o attacchi del canale laterale. La sezione discute alcuni dei modi di sfruttamento di hash.

Collisione
La collisione in hashing si verifica quando due ingressi restituiscono lo stesso valore di output. Le funzioni di hash affidabili sono progettate per fornire resistenza alla collisione. Ma è inevitabile a causa di un effetto di buca piccione. Secondo l'effetto piccione, esiste un numero impostato di valori di output rispetto all'ingresso di qualsiasi dimensione. Ciò significa che, poiché ci saranno sempre più input che output, la collisione è un evento inevitabile.

Tavoli arcobaleno
Come accennato in precedenza, i sistemi operativi non archiviano le password in chiaro. Pertanto, le tabelle arcobaleno sono database pre-computati o tabelle di ricerca che mappano gli hash sulla password in chiaro. Il sito Web di CrackStation, ad esempio, fornisce un enorme database per gli hash cracking alle password senza saltare. Tuttavia, i tavoli arcobaleno scambiano tempo per rompere gli hash con una grande quantità di spazio di archiviazione.

Il vantaggio delle tabelle arcobaleno contro la forzatura bruta è una semplice ricerca e confronta l'operazione in contrasto con i tentativi automatizzati di prova e errore con un problema di calcolo hash. Inoltre, non richiede una corrispondenza con password esatta che significa se l'hash corrisponde a qualsiasi password/frase, il sistema consente l'autenticazione.

John lo Squartatore
John è uno strumento potente e versatile che aiuta a rompere gli hash. È simile a un attacco di dizionario automatizzato che utilizza una lista di parole o un dizionario per calcolare l'hash e confrontare. Quindi, consente la forza bruta su una serie di modalità hash. Un esempio della lista delle parole è un rockyou.file txt che contiene password da una violazione sul rockyou.sito web com. La lista delle parole è disponibile da GitHub Secist in /Password/database trapelati.

Il modo più semplice per rompere l'hash è usare il John Comando con l'opzione Format per specificare il tipo di hash, il percorso verso la lista delle parole e il file con il valore hash. In Kali Linux, il percorso per il rouckyou.Il file txt è /usr/share/liste di parole.

ubuntu@ubuntu: ~ $ John - -format = - -wordlist =/usr/share/wordlists/rockyou.txt hash.TXT

Passa l'hash
Pass-the-Hash è un furto di credenziali che ha il potenziale per l'escalation del privilegio orizzontale. Anche se l'attacco può verificarsi sui sistemi Linux/Unix, è più diffuso in Windows. Windows autentica un utente legittimo abbinando l'hash della password immessa, che è statica e che cambia solo quando la password cambia. Inoltre, le password sono disponibili in varie posizioni in Windows, come la memoria di processo SAM e l'autorità di sicurezza locale (LSASS), ecc.

Quindi, gli aggressori manipolano il modello di sfida e risposta del protocollo di sicurezza NTLM che consente loro di autenticarsi come utenti validi. L'attaccante scarica gli hash di un sistema target e utilizza lo strumento "pass-the-hash" per impersonare un utente autentico. Pertanto, l'attaccante non ha bisogno di inserire o forzare la password o ingegnere inversa il valore hash. Trova maggiori dettagli sull'attacco da qui.

Attacco di compleanno
L'attacco appartiene alla classe di attacco di forza bruta e si basa su un paradosso di compleanno in teoria della probabilità. Utilizza il problema di compleanno per inviare due messaggi diversi con lo stesso protocollo hash crittografico per causare una collisione. L'attacco generalmente mira a manipolare la comunicazione. Maggiori dettagli sull'attacco di compleanno sono disponibili qui.

Hashes di accensione

Esistono vari modi per proteggere dagli attacchi agli hash e limitarli dalle funzioni di hash crittografiche.

Hash salato
La salatura è il processo di aggiunta di dati generati in modo casuale (sale) all'input di una funzione hash. Il processo aiuta a proteggere dagli attacchi del tavolo arcobaleno. Gli utenti possono includere il valore sale all'inizio o alla fine della password prima di creare un hash che genera output diversi anche se le password sono simili. Inoltre, un utente può mantenere pubblico il sale.

Hash chiave
HMAC è un esempio di hash chiave che utilizza le chiavi crittografiche e le funzioni di hash per migliorare i limiti dell'algoritmo del codice di autenticazione del messaggio (MAC). Aiuta a raggiungere la riservatezza e l'integrità delle informazioni allo stesso tempo.

Funzione hash adattiva
Le funzioni di hash adattive sono progettate per ribadire il loro lavoro interno, poiché il nome suggerisce che l'utente può regolare il numero di iterazioni. La stretta di chiave è una tecnica che prende una chiave debole come input, la elabora e iterate il processo per produrre una potente chiave di grandi dimensioni. Il processo può aumentare la dimensione chiave fino a 128 bit, il che è difficile per l'attacco a forza bruta. PBKDF2 e BCRYPT sono esempi di funzioni di hash adattive.

Conclusione

L'articolo fornisce un'ampia panoramica dei protocolli hash crittografici. Dimostra come verificare l'integrità dei file e fornisce una panoramica di come è possibile rompere gli hash password tramite lo strumento John The Ripper. Discutiamo anche di una serie di attacchi e misure per generare hash non crackabili tramite salato, hash chiave e funzioni di hash adattive.