Newsgroup: it.comp.sicurezza.crittografia
Titolo: Ancora sull'AES

[OT]
Dato che 'sta crittografia mi ha "preso di brutto" (per dirla in parole
povere), ho acquistato "Crittografica pratica" di Schneider e Ferguson.
Davvero un ottimo acquisto: invece di un sacco di algoritmi e codici
(che poi si trovano dovunque online) ho trovato un testo che spiega che
cos'è la crittografia, i vari modi di operare degli algoritmi e come
implementare la sicurezza: insomma, un testo veramente "di base" per un
novellino come me, che consiglio a tutti quelli che si avvicinano a
questo mondo...
[/OT]
Tornando all'oggetto del messaggio, nel su citato libro ho trovato
un'analisi dei 3 finalisti di AES, Rijndael, Serpent e Twofish.
Gli autori del libro sono anche gli autori del Twofish per cui, per loro
stessa ammissione, non sono le persone più obiettive per giudicare
questi algoritmi, però non giudicano molto bene l'AES/Rijndael.
Anche loro hanno fatto un ragionamento simile a quello che mi postò
qualcuno di voi (scusate se non mi ricordo il nome ma ho poca memoria) a
riguardo: l'AES non è il massimo ma, visto che è _lo_ standard, è quello
che al momento è più studiato. Ed in caso di violazione
dell'algoritmo... beh, non è colpa vostra se l'avete implementato in un
vostro programma.
Giudicano bene il Serpent, vedendolo come quello più "corazzato" dei 3,
ed il Twofish come (identica vostra analisi) un compromesso fra gli altri 2.
Alla luce di questo, perché uno sviluppatore dovrebbe utilizzare l'AES
solo perché è stato adottato dal Governo Americano? Mica tutto quello
che è made in USA è il non-plus-ultra, giusto?
Se non ho letto male, quando tempo fa venne fuori la storia della
possibilità di violare algebricamente l'AES ed il Serpent, lo stesso
attacco era inefficiente contro il Twofish...
Insomma, AES o Serpent o Twofish?
(A me gli standard imposti non piacciono molto...)
-- 
Ciao.
Leo.
WEB: 
www.leonardomiliani.com
 
E-mail: 
leon...@leonardomiliani.com

 (A me gli standard imposti non piacciono molto...)
Io la penso come te, infatti uso il Serpent che, a meno di clamorose novità, 
è quello che unisce un'elevata "robustezza" ad una velocità più che 
accettabile.
Il Twofish non lo conosco (nel senso che non l'ho né testato né ho letto la 
documentazione).
L'AES lo vedo troppo come compromesso tra sicurezza, velocità e facilità 
d'implementazione in hardware, per cui lo giudico "inferiore" al Serpent 
(ovviamente questo non significa che lo reputo insicuro).
Cristiano 

 (ovviamente questo non significa che lo reputo insicuro).
Concordo.


 ai parametri fissati dal NIST: in base a questi, è emerso l'AES.
Pensa che tra i parametri utilizzati per la selezione c'era anche il dover 
superare un test statistico (l'SP800-22 di cui ti parlavo) che, a cose ormai 
fatte, è risultato bacato (poi sono state pubblicate alcune correzioni sia 
al programma in C che alla descrizione di alcuni test facenti parte 
dell'SP800-22).
Probabilmente, l'utilizzo dei risultati corretti al posto di quelli errati 
relativi ai 3 o 4 test bacati non avrebbero influito a tal punto da cambiare 
la scelta del NIST, ma unendo questo fatto alle altre considerazioni sul 
perché il Rijndael è diventato l'AES (velocità e facilità d'implementazione 
hardware) non lo rendono certo il migliore in fatto di "robustezza" (torno a 
ripetere, a scanso d'equivoci, che ovviamente questo non significa che lo 
reputo insicuro).
Cristiano 

 che al momento è più studiato.
La posizione attuale di Schneier è che:
1 il numero di round inviolati non è un parametro significativo per
determinare la sicurezza di un algoritmo;
2 il principale problema della crittografia oggi è dimostrare la
difficoltà di forzare una cifratura nel worst case, ovvero un "buon"
algoritmo dovrebbe essere facilmente studiabile, abbia una buona
definizione matematica ed appoggi su basi matematicamente solide, che
portino, nel caso peggiore possibile, a non fare scendere la
complessità dell'attacco sotto una complessità definita; ovviamente
più la struttura matematica di una primitiva crittografica è
complicata più sarà difficile prevederne le caratteristiche e dunque
anche la forza nel worst case.
3 dove le prove matematiche su determinate caratteristiche manchino,
serve una crittanalisi più vasta ed ed approfondita possibile.
Il Rijndael tra i tre finalisti era quello con la struttura
matematicamente più pulita, quindi quello più facile da mettere alla
prova (punto 2), inoltre al NIST occorreva un algoritmo che fosse anche
semplice e veloce da implementare in hardware, dato che per la massima
sicurezza non è raccomandabile usare hardware/firmware/software non
specificatamente progettato per essere sicuro come un personal computer
ed inoltre le appliance su hardware ad hoc (in genere molto meno
potenti di un personal) sono un mercato numericamente ed economicamente
piuttosto importante; questa esigenza metteva in seria crisi il Serpent
(peraltro ottimo su personal) e anche Twofish risultava leggermente
più lento e pesante del Rijndael.
Dato che il NIST desiderava standardizzare un unico algoritmo, Rijndael
era quello che meglio soddisfava tutte le richieste prestazionali.
Oltre a queste considerazioni poi, il fatto che il Rijndael sia stato
conseguentemente al centro di un enorme numero di studi ha fatto si che
negli ultimi anni anche Schneier abbia cominciato a consigliarlo, dato
che una approfondita crittanalisi è un fattore determinante per
provare la sicurezza di un algoritmo (3), mentre il numero dei round
inviolati non lo è (1).
Personalmente credo che siano tutti e tre buoni algoritmi e che per
implementazioni via software abbiano tutti e tre richieste e
prestazioni più che ragionevoli, del Rijndael apprezzo l'enorme valore
aggiunto dell'enorme quantità di studi a riguardo, del Twofish
apprezzo che ci sia dietro un autore in assoluto tra i migliori
crittografi e del Serpent apprezzo, nonostante tutte le raccomandazioni
degli esperti a non trarre troppe conclusioni da qusto parametro, che
abbia terminato le selezioni dell'AES con il maggior numero di round
inviolati.


Scusate ragazzi, voi parlate tanto di questo o quell'algoritmo di cifratura
basando le vostre valutazioni dei medesimi su dicerie varie o su haking
fatti o non fatti nei tempi x od y, ma non credete che il vero modo per
discutere sulla validità di un cifrario sia discutere dei principi di base
della crittoresistenza in termini matematici?
Altrimenti tutte le certezze di cui potremmo disporre al riguardo si
esaurirebbero soltanto nella precisazione delle procedure di cifratura del
chiaro e nella constatazione che in rete non vi sono programmi in grado di
decrittare i crittogrammi che otteniamo alla fine del procedimento di
cifratura.