La crittoanalisi o crittanalisi è l'arte di forzare un testo cifrato, ed è quindi uno dei rami più importanti della crittologia. Nel progettare un metodo crittografico si deve ovviamente tenere conto delle possibilità di crittanalisi del medesimo. I tentativi di forzare un testo cifrato da parte del crittanalista sono chiamati attacchi.
Si possono distinguere diversi modi di recuperare il testo chiaro da quello cifrato:
La crittoanalisi si occupa ovviamente solo dei due ultimi problemi. Il primo è il normale lavoro dell'addetto alla decifra.
I metodi crittanalitici classici sono di tipo statistico e si basano sul fatto che tutte le lingue hanno una distribuzione delle frequenze delle lettere, dei bigrammi e dei trigrammi che è molto caratteristica e facilmente riconoscibile. Esempi di questo tipo sono la crittanalisi di un cifrato monoalfabetico, e il metodo Kasiski per la crittanalisi del cifrario di Vigenere.
Esistono molti parametri statistici in grado di aiutare il crittanalista, già nella prima fase che è quella dell'individuazione del metodo usato.
Ma per il successo della crittanalisi sono utili anche molte altre cose: la conoscenza della lingua del crittogramma è ovviamente fondamentale, avere indicazioni certe su qualche parola che deve comparire sicuramente nel testo è importante ... E dal momento che "errare humanum est" spesso sono decisivi gli errori o le ingenuità dei cifratori, che sono molto più frequenti di quanto si possa immaginare. Infatti è inevitabile che gli addetti alle operazioni di cifratura dei messaggi, siano spesso militari o impiegati con limitate conoscenze crittografiche. Alcuni dei più famosi successi della crittoanalisi, prima tra tutti la disfatta delle macchina Enigma e poi quella della macchina Lorenz sono stati molto facilitati dalle ingenuità dei cifratori tedeschi.
Con l'avvento del computer anche lo scenario della crittanalisi è molto cambiato e sono stati provati nuovi tipi di attacchi. In generale si possono individuare diverse famiglie di attacchi: