Un algoritmo crittografico può essere una specifica descrizione matematica (l'algoritmo) relativa alla crittografia. Esistono tipi specifici di algoritmi come algoritmi di hash, cifrari a blocchi, cifrari a flusso, algoritmi di firma, generatori di numeri pseudo casuali ecc.
Gli algoritmi crittografici possono essere utilizzati per eseguire crittografia / decrittografia. In quel caso l'algoritmo sarebbe chiamato un cifrario. Questo potrebbe essere un codice di flusso, un codice a blocchi o un codice asimmetrico come RSA. Il cifrario a blocchi generalmente deve essere usato in una modalità operativa per essere sicuro, cioè per conformarsi alle proprietà che normalmente si associano a un cifrario completo. Le modalità operative comprendono la modalità CBC e la modalità GCM.
AES è un codice a blocchi e sì, è certamente nella famiglia dei codici a blocchi. È speciale nel senso che è stato standardizzato dal NIST come il principale codice da utilizzare negli Stati Uniti, con successo nel DES. Il suo nome originale è Rijndael dopo gli autori, Vincent Rijmen e Joan Daemen (anche se AES utilizza solo uno specifico sottoinsieme delle specifiche Rijndael).
Rijndael divenne l'Advanced Encryption Standard dopo aver vinto la competizione AES; se un altro cifrario avesse vinto, quel codice sarebbe diventato AES - e c'erano algoritmi come Serpent che sarebbero stati considerati più sicuri. Rijndael è tuttavia anche efficiente da implementare sia nell'hardware sia nel software - almeno rispetto agli altri algoritmi della competizione, in quel momento.
Si noti che i codici a blocchi non vengono solo usati per la crittografia / decrittografia. Come gli algoritmi di hash, sono spesso usati come primitivi per costruire altre funzioni. Per esempio, i codici a blocchi possono essere usati per costruire modalità di autenticazione. Esempi sono AES-CMAC, AES-GMAC e AES in Poly1305. Questo è un vantaggio che hanno cifrari overstream, che sono più limitati: i cifrari a blocchi sono permessi Pseudo casuali (con chiave) che hanno proprietà specifiche richieste da tali schemi.