Descrizione di Serpent
Suggerisco di leggere il documento inviato durante il concorso AES:
Velocità
Serpent è più lento di Rijndael (codice scelto per diventare AES), perché utilizza più round. Vedi questi benchmark , Serpent in modalità CTR potrebbe criptare 32 MiB / sec mentre AES-256 in modalità CTR potrebbe cifrare 96 MiB / sec. Inoltre Serpent ha impiegato 1,2 microsecondi per impostare la chiave e IV mentre AES-256 ha richiesto 0,76 microsecondi. Altri benchmark del concorso AES sono disponibili qui ; su una varietà di piattaforme Serpent può crittografare da 2 a 4 volte meno dati di Rjindael (ammesso che fosse Rjindael che è stato leggermente modificato per diventare AES).
Sicurezza
Equivalente in quanto entrambi implementati correttamente sono sicuri contro tutti gli attacchi fattibili computazionalmente noti. Ci sono attacchi leggermente migliori su AES, ma tutti gli attacchi pubblici su AES non sono fattibile dal punto di vista computazionale (ad esempio, 4 volte più veloce della forza bruta) così come altri attacchi oscuri su AES (cioè c'è un attacco di chiave correlata su AES che presumendo alcune strane condizioni è significativamente migliore della forza bruta, ma è irrilevante per AES come tipicamente usato in un modo suscettibile all'attacco, e quindi anche in quel caso il miglior attacco di chiave correlata richiede 2 99,5 volte che non è fattibile). Una grande ragione per ulteriori attacchi su AES è che AES è ampiamente utilizzato e analizzato, Serpent non è usato quasi quanto non ha vinto la competizione AES (Rijndael ha vinto e divenne AES).
Modalità di funzionamento
La modalità dell'operazione è indipendente dal codice a blocchi utilizzato - è una scelta separata. Cioè puoi usare sia serpent o AES o qualsiasi altro codice a blocchi in qualsiasi modalità di cifratura a blocchi . Una modalità operativa considera solo come si prende un codice a blocchi che può essere utilizzato solo per crittografare / decrittografare blocchi di dimensioni fisse (ad es. Blocco a 128 bit per Serpent256 e AES256 - il 256-bit sta per il keysize) e usarlo per crittografare / decrittografare blocchi di testo di dimensioni arbitrarie senza perdite di informazioni se il testo in chiaro è ridondante (eccetto in modalità ECB che è una modalità non protetta in cui si divide semplicemente il testo in chiaro in blocchi di uguale dimensione e si applica il codice di blocco su ogni blocco in modo indipendente).