# Crittografia/Funzioni Hash

Crittografia
Copertina Tutti i moduli · Sviluppo
    Copertina
Parte I: Introduzione alla Crittografia
* Introduzione alla crittografia
* Storia della crittografia
** Crittografia classica
** Crittografia medievale
** Crittografia dal 1800 alla seconda guerra mondiale
** Crittografia durante la seconda guerra mondiale
** Crittografia contemporanea
** Crittografia nella cultura popolare
** Linea temporale degli eventi importanti
* Concetti fondamentali
** Principio di Kerckhoffs
** Obiettivi della crittografia
** Obiettivi della crittanalisi
** Il ruolo della crittografia nella sicurezza informatica
** Cifrature simmetriche
** Cifrature asimmetriche
** Funzioni Hash
** Distribuzione e autenticazione della chiave
** Difetti e debolezze comuni
Parte II: Progettare cifrari
* Principi base nella progettazione
* Piccoli segreti nascondono segreti più grandi
* algoritmi aperti e il valore del Peer-Review
* Pensa come un crittoanalista
* La matematica che devi conoscere
* La sicurezza informatica non è solo la cifratura
* Un codice non violato non è necessariamente non violabile
Parte III: Violare cifrature
* I principi base nel violare cifrari
* Debolezze
** La proporzionalità della segretezza
*** La lunghezza della chiave
*** Qualità della sorgente casuale
*** Gli effetti del testo in chiaro sul testo cifrato
** Debolezze statistiche
** Implementazioni errate
** Peer-review non adeguato
** Ingegneria sociale e coercizione
* Attacchi
** Attacco di forza bruta
** Analisi della frequenza
** Indice delle coincidenze
** Crittanalisi lineare
** Crittanalisi differenziale
** Attacco incontro nel mezzo
* Come furono violate le cifrature storiche
** Violare i cifrari a trasposizione
** Violare il cifrario di Cesare
** Violare la macchina Enigma
** Violare il cifrario a permutazione
** Violare il cifrario di Vigenère
Parte IV: Usare cifrature
* Applicazioni della crittografia
** Firma elettronica
*** Firma elettronica
*** DSA
** Moneta elettronica
** Voto elettronico
** DRM
** Anonimato
* Cifrature classiche
** Cifrario di Beale
** Cifrari a trasposizione
** Cifrario di Cesare
** Cifrario Atbash
** Cifrario a chiave autocifrante
** Cifrario di Playfair
** Sostituzione polialfabetica
** S-box
** Scytale
** Cifrario a sostituzione
** Cifrario a permutazione
** Cifrario di Vernam
** Cifrario di Vigenère
* Cifrature contemporanee
** Cifrature simmetriche
*** Macchina Enigma
*** One-time pads
*** Data Encryption Standard (DES)
*** Advanced Encryption Standard
** Cifrature asimmetriche
*** Introduzione alla cifratura a chiave pubblica
*** RSA
*** ElGamal
*** Curva ellittica
** Funzioni di hash
*** MD5
*** SHA-1
*** RIPEMD-160
*** Tiger
* Protocolli
** Protocolli di autentificazione
*** Kerberos
** Protocolli per lo scambio chiave
*** Diffie-Hellman
** Comunicazioni sicure
*** SSL, SSH
Parte V: La crittografia e la società
* La natura mutevole dell'uso della crittografia
* Crittografia, governi e leggi
* Aspettative dell'utente normale
* Snake Oil
Parte VI: Miscellanea
* Possibilità future
** Crittografia quantistica
** Miglioramento del calcolo parallelo dei computer
* Glossario dei termini
* Letture addizionali
* Appendice A: background matematico
** Crittografia/Teoria dei numeri
** Crittografia/Teoria dei gruppi
** Crittografia/Complessità computazionale
Modifica il sommario
Le funzioni hash sono funzioni matematiche ( o procedure ben definite ) in grado di trasformare un dato in input ( di misura variabile ) in un dato di output di misura fissata. I valori ritornati dalle funzioni hash sono chiamati: hash value, hash code, hash result.
Utilizzi comuni di questo tipo di funzioni sono: verifica di integrità dei dati ( utilizzo di funzioni hash per il controllo della consistenza dei dati dopo la trasmissione degli stessi ), utilizzo come indice di lookup nei database, etc.
Poiché la trasformazione dei dati di input in quelli di output non è 1 a 1, ma bensì n a 1, è possibile che due chiavi di input siano mappate sulla stessa chiave di output. In molte applicazioni, è desiderabile minimizzare il numero di queste collisioni. Questo è particolarmente vero in crittografia. Sebbene esistano varie implementazioni di funzioni hash ( SHA1, SHA2, MD5, etc ), la progettazione di un'ottima funzione di hash è tuttora un topic attivo nel mondo della ricerca.

## Funzionamento

Ci sono molti tipi di hash: tra i più importanti ricordiamo lo SHA1 e l'MD5.
Il funzionamento è semplice. Un hash deve essere costruito di modo che qualunque sia la dimensione dei dati in input, la dimensione dell'output sia sempre la stessa. Inoltre non ci devono essere due contenuti che possano dar luogo allo stesso hash (in questo caso usarlo sarebbe inutile).

### Una proprietà importante

Non c'è nessuna corrispondenza tra il testo in chiaro e l'hash. Non c'è quindi nessun modo a parte l'Attacco di forza bruta per ritornare al testo originario.