Crittografia/AES: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m da dewikificare
m dewikifico
Riga 1:
{{da dewikificare}}
{{Crittografia}}
In [[Crittografia]], lL''''Advanced Encryption Standard''' ('''AES'''), conosciuto anche come '''Rijndael''', è un algoritmo di [[cifratura a blocchi]] utilizzato come standard dal governo degli [[Stati Uniti d'America]]. Data la sua sicurezza e le sue specifiche pubbliche si presume che in un prossimo futuro venga utilizzato in tutto il mondo come è successo al suo predecessore, il [[Data Encryption Standard]] (DES). È stato adottato dalla [[National Institute of Standards and Technology]] (NIST) e dalla US [[Federal Information Processing Standard|FIPS]] PUB 197 nel [[novembre]] del [[2001]] dopo 5 anni di studi e standardizzazioni.
 
L'algoritmo è stato sviluppato da due crittografi [[Belgio|Belgi]]belgi, [[Joan Daemen]] e [[Vincent Rijmen]], che lo hanno presentato al processo di selezione per l'AES con il nome di "Rijndael", nome derivato dai nomi degli inventori. Rijndael si pronuncia "Rhine dahl", con una "[[i]]" lunga e la "[[e]]" silenziosa ([[International Phonetic Alphabet|IPA]]: [ɹaindal]). Nel file sonoro linkato alla fine dell'articolo si ha la pronuncia [rʰaindau].
{{Template:Infobox Block Ciphers|
fullName=AES|
caption=Il passaggio <tt>SubBytes</tt>, il primo dei quatto dell'AES.|
yearPublished=[[1998]]|
derivedFrom=[[Square]]|
derivedTo=[[Crypton]], [[Anubis]], [[GRAND CRU]]|
designers=[[Vincent Rijmen]] e [[Joan Daemen]]|
blockSize=128 bit|
keySize=128, 192 o 256 bit|
cipherStructure=[[Rete a sostituzione e permutazione]]|
rounds=10, 12 o 14 (a seconda della dimensione della chiave) |
cryptanalysis=Un attacco basato sulla chiave ha forzato l'AES con una chiave a 256 bit e 9 round. Un attacco conoscendo il testo ha forzato una chiave a 192 e 256 bit con 8 round e una chiave a 128 bit con sette round. (Ferguson e altri, 2000). L'[[attacco XSL]] sembra in grado di semplificare la ricerca esaustiva.|
|}}
 
In [[Crittografia]], l''''Advanced Encryption Standard''' ('''AES'''), conosciuto anche come '''Rijndael''', è un algoritmo di [[cifratura a blocchi]] utilizzato come standard dal governo degli [[Stati Uniti d'America]]. Data la sua sicurezza e le sue specifiche pubbliche si presume che in un prossimo futuro venga utilizzato in tutto il mondo come è successo al suo predecessore, il [[Data Encryption Standard]] (DES). È stato adottato dalla [[National Institute of Standards and Technology]] (NIST) e dalla US [[Federal Information Processing Standard|FIPS]] PUB 197 nel [[novembre]] del [[2001]] dopo 5 anni di studi e standardizzazioni.
 
L'algoritmo è stato sviluppato da due crittografi [[Belgio|Belgi]], [[Joan Daemen]] e [[Vincent Rijmen]], che lo hanno presentato al processo di selezione per l'AES con il nome di "Rijndael", nome derivato dai nomi degli inventori. Rijndael si pronuncia "Rhine dahl", con una "[[i]]" lunga e la "[[e]]" silenziosa ([[International Phonetic Alphabet|IPA]]: [&#633;aindal]). Nel file sonoro linkato alla fine dell'articolo si ha la pronuncia [r&#688;aindau].
 
==Sviluppo==
Rijndael è un'evoluzione del primo algoritmo sviluppato da Daemen a Rijmen, [[Square]]. Square era stato sviluppato per [[SHARK]].
 
A differenza del DES, Rijndael è una [[rete a sostituzione e permutazione]], non una [[rete di Feistel]]. AES è veloce sia se sviluppato in [[software]] sia se sviluppato in [[hardware]], è relativamente semplice da implementare, e richiede poca [[RAM|memoria]]. Il nuovo standard di cifratura sta sostituendo i precedenti standard e la sua diffusione continua ad aumentare.
 
==Descrizione dell'algoritmo==
{| align="right" style="margin: 0 0 1em 1em;" width="325px"
| [[Immagine:Advanced Encryption Standard InfoBox Diagram.png|right|320px|thumbnail|Nel passaggio <tt>SubBytes</tt>, ogni byte della matrice è sostituito che i dati contenuti nella trasformazione ''S''; ''b<sub>ij</sub>'' = ''S(a<sub>ij</sub>)''.]]
|-
| [[Immagine:AES-ShiftRows.svg|right|320px|thumbnail|Nel passaggio <tt>ShiftRows</tt>, i byte di ogni riga vengono spostati verso sinistra dell'ordine della riga. Vedi figura per i singoli spostamenti.]]
|-
| [[Immagine:AES-MixColumns.svg|right|320px|thumbnail|Nel passaggio <tt>MixColumns</tt> ogni colonna di byte viene moltiplicata per un polinomiofisso ''c(x)''.]]
|-
| [[Immagine:AES-AddRoundKey.svg|right|320px|thumbnail|Nel passaggio <tt>AddRoundKeys</tt> ogni byte della matrice vien combinato con la sua sottochiave tramite un'operazione di [[XOR]].]]
|-
|}
Line 47 ⟶ 31:
=== <tt>SubBytes</tt> ===
 
Nel passaggio <tt>SubBytes<tt> ogni byte della matrice viene modificato tramite la [[S-box]] a 8 bit. Questa operazione provvede a fornire la non linearità all'algoritmo. La S-box utilizzata è derivata da una funzione inversa nei '''[[Campo finito|campi finiti]]''' (''2<sup>8</sup>''), conosciuta per avere delle ottime proprietà di non linearità. Per evitare un potenziale attacco basato sulle proprietà algebriche la S-box è costruita combinando la funzione inversa con una [[trasformazione affine]] invertibile. La S-box è stata scelta con cura per non possedere punti fissi e nemmeno l'inversa possiede punti .
 
=== <tt>ShiftRows</tt> ===
Line 53 ⟶ 37:
 
=== <tt>MixColumns</tt> ===
Il passaggio <tt>MixColumns</tt> prende quattro byte si ogni colonna e li combina utilizzando una trasformazione lineare invertibile. Utilizzati in congiunzione, <tt>ShiftRows</tt> e <tt>MixColumns</tt> provvedono all'operazione di [[Confusione_e_diffusione|diffusione]] nell'algoritmo. Ogni colonna è gestita da un polinomio definito sui '''campi finiti''' (''2<sup>8</sup>'') e questa <math>x^4+1</math> viene moltiplicata con un polinomio fisso <math>c(x)</math>.
 
=== <tt>AddRoundKey</tt>===
Il passaggio <tt>AddRoundKey</tt> combina con un [[XOR]] la chiave di sessione con la matrice ottenuta dai passaggi precedenti. La chiave di sessione viene ricavata dalla chiave primaria dal gestore della chiave.
 
==Sicurezza==
Durante il [[2004]] non si sono verificate forzature dell'AES. La [[National Security Agency]] (NSA) segnalava che tutti i finalisti del processo di standardizzazione erano dotati di una sicurezza sufficiente per diventare l'AES ma che fu scelto il Rijndael per via della sua flessibilità nel trattare chiavi di lunghezza diversa, per la sua semplice implementazione in hardware e in software e per le sue basse richieste di memoria che ne consentono un'implementazione anche in dispositivi con scarse risorse come le [[smart card]]. L'AES può essere utilizzato per proteggere le informazioni non classificate. Per il livello SECRET è sufficiente una chiave a 128 bit mentre per il livello [[Top secret|TOP SECRET]] si consigliano chiavi a 192 o 256 bit.
 
Questo significa che per la prima volta il pubblico ha accesso a una tecnologia crittografica che NSA ritiene adeguata per proteggere i documenti TOP SECRET. Si è discusso sulla necessità di utilizzare chiavi lunghe (192 o 256 bit) per i documenti TOP SECRET. Alcuni ritengono che questo indichi che l'NSA ha individuato un potenziale attacco che potrebbe forzare una chiave relativamente corta (128 bit) mentre la maggior parte degli esperti ritengono che le raccomandazioni della NSA siano basate principalmente sul volersi garantire un elevato margine di sicurezza per i prossimi decenni contro un potenziale attacco esaustivo.
La maggior parte degli algoritmi crittografici viene forzato riducendo il numero di round. L'AES effettua 10 round per la chiave a 128 bit, 12 round per la chiave a 192 bit e 14 round per la chiave a 256 bit. I migliori attacchi sono riusciti a forzare l'AES con 7 round e chiave di 128 bit, 8 round e chiave di 192 bit e 9 round e chiave di 256 bit.
 
Alcuni crittografi hanno fatto notare che la differenza tra i round effettuali dall'AES e quelli massimi prima che l'algoritmo non sia più forzabile è ridotta (specialmente con chiavi corte). Questi temono che miglioramenti nelle tecniche di analisi possano permettere di forzare l'algoritmo senza verificare tutte le chiavi. Attualmente una ricerca esaustiva è impraticabile, la chiave a 128 bit produce <math>3.4 \times 10^{38}</math> combinazioni diverse. Uno dei migliori attacchi a forza bruta è stato svolto dal progetto [[distributed.net]] su una chiave a 64 bit utilizzando l'algoritmo [[RC5]]; l'attacco ha impiegato quasi 5 anni, utilizzando il tempo "libero" di migliaia di CPU di volontari sparsi per la rete. Anche considerando che la potenza dei computer aumenta nel tempo, servirà ancora moltissimo tempo prima che una chiave da 128 bit sia attaccabile con il [[metodo forza bruta]].
Un altro dubbio riguardante l'AES deriva dalla sua struttura matematica. A differenza della maggior parte degli algoritmi a blocchi per l'AES esiste una approfondita descrizione matematica [http://www.macfergus.com/pub/rdalgeq.html], [http://www.isg.rhul.ac.uk/~sean/]. Sebbene non sia mai stata utilizzata per condurre un attacco su misura questo non esclude che in futuro questa descrizione non venga utilizzata per condurre un attacco basato sulle sue proprietà matematiche.
 
Nel [[2002]] l'attacco teorico chiamato ''[[attacco XSL]]'' annunciato da [[Nicolas Courtois]] e [[Josef Pieprzyk]] ha mostrato un potenziale punto debole dell'AES (e di altri cifrari). Sebbene l'attacco sia matematicamente corretto è impraticabile nella realtà per via dell'enorme tempo macchina richiesto per metterlo in pratica. Miglioramenti nell'attacco hanno ridotto il tempo macchina richiesto e quindi in un futuro questo attacco potrebbe diventare attuabile. Ultimamente alcuni esperti hanno fatto delle osservazioni agli autori dell'attacco. Sembra che abbiano commesso degli errori teorici e che in realtà le loro stime siano ottimistiche. Allo stato attuale la reale pericolosità dell'attacco XSL è un punto interrogativo. Comunque attualmente l'AES è considerato un algoritmo veloce, sicuro e gli attacchi fino a ora presentati si sono rivelati degli interessanti studi teorici ma di scarsa utilità nella pratica.
 
==Voci correlate==
* [[Processo di standardizzazione dell'Advanced Encryption Standard]]
 
==Collegamenti esterni==
(In Inglese)
* [http://www.esat.kuleuven.ac.be/~rijmen/rijndael/ Pagina ufficiale del Rijndael]
* [http://rijndael.info/audio/rijndael_pronunciation.wav Pronuncia di "Rijndael"] (85 KB [[wav]] file)
* [http://csrc.nist.gov/encryption/aes/ Archivio del vecchio sito AES]
* [http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf FIPS PUB 197: Documento con le specifiche ufficiali dell'AES] ([[Portable_Document_Format|PDF]] file)
* [http://www.nstissc.gov/Assets/pdf/fact%20sheet.pdf Il C.N.S.S. annuncia l'utilizzo dell'AES per i dati classificati] ([[Portable_Document_Format|PDF]] file)
* [http://www.aes4.org/english/events/aes4/index.html AES4] &mdash; Quarta conferenza AES
===Implementazioni===