# Crittografia/Attacco di forza bruta

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
L'attacco di forza bruta (in inglese brute force) è uno dei modi per decifrare un testo che non ha una chiave (come nelle funzioni di hash). Gli hash infatti non possono essere decifrati. Il funzionamento è semplice da capire ma lungo e macchinoso da eseguire.

## Progettare un attacco brute force

Nella pratica un brute force compie le seguenti operazioni:
* Compone una possibile chiave
* Calcola l'hash della chiave composta
* Se l'hash calcolato è uguale all'hash di input termina e avvisa l'utente stampando la chiave.
* Se l'hash non era uguale ricomincia dal punto 1.

### Comporre la chiave

Nello specifico il programma dovrebbe produrre qualcosa tipo aaaa, aaab, aaac, ..., aaaz, ecc. Poiché uno dei difetti del brute force è il non poter sapere in anticipo la lunghezza della chiave da calcolare, solitamente si impongono dei limiti, tipo dai 5 ai 10 caratteri.

### Calcolare l'hash

Prova a calcolare l'hash di aaaa. Se ipotizziamo che l'hash da attaccare fosse 5f423b7772a80f77438407c8b78ff305 e l'algoritmo l'MD5, il programma dovrebbe calcolare hash sino ad avere una corrispondenza con 5f423b7772a80f77438407c8b78ff305 (che, per la cronaca, è l'hash di ciao).

## Principali difetti del brute force

I difetti principali del brute force sono:
* Lentezza, dovuta alla necessità di creare chiavi di varie lunghezze ed al fatto che se la soluzione è xxxx sarà una delle ultime chiavi provate.