Cerca nel blog

10/10/2011

Algoritmo Serpent




Il Serpent è un algoritmo open-source di cifratura a blocchi, detto anche a chiave simmetrica. Viene cioè utilizzata un'unica chiave per cifrare e decifrare i messaggi. L'algoritmo è stato progettato nel 1998 da tre ricercatori, Ross Anderson, Lars Knudsen ed Eli Biham.
Il Serpent è stato uno dei 5 algoritmi finalisti selezionati dal NIST, l'istituto di Standardizzazione americano, per la protezione delle comunicazioni degli uffici federali americani, piazzandosi secondo solo dopo l'AES. L'AES totalizzo 86 voti, il Serpent 59 ed il Twofish 31.
La differenza sostanziale tra AES e Serpent è che il primo ha meno "round" meno livelli di cifratura pertanto è più veloce nelle operazioni di cifratura e decifratura mentre il secondo è più lento ma più sicuro.

La storia del Serpent

Gli ideatori dell'algoritmo erano animati dall'obiettivo di trovare il più alto livello di sicurezza possibile contro qualsiasi tipo di attacco. Iniziarono a studiare il materiale a disposizione e quanto scoperto fino ad allora sulla cifratura a blocchi e per il loro algoritmo decisero di utilizzare il doppio dei round sufficienti a contrastare tutti i tipi di attacchi conosciuti. L'obiettivo era quello di creare un algoritmo che fosse in grado di garantire un ciclo di vita di almeno 100 anni.
Nonostante tutti questi criteri prudenziali utilizzati in fase di realizzazione il risultato è stato un algoritmo comunque doppiamente più veloce rispetto al DES.

La vittoria dell'AES sul Serpent per la gara di standardizzazione bandita dal NIST creò una vera e propria reazione da parte degli ideatori del Serpent al punto da indurli a scrivere "Il caso Serpent" già nel marzo del 2000, mettendo a nudo quelle che secondo loro erano state le mancanze del NIST nella fase di valutazione.
La prima contestazione riguardava l'utilizzo del processore utilizzato dal NIST per calcolare il primo round (la prima fase di cifratura).
Si trattava di una macchina (un Pentium a 200 MHz) che secondo gli inventori del Serpent era poco potente pensando alle crescenti capacità di calcolo dei processori del 21esimo secolo.
Inoltre sul bando si parlava che il più importante criterio di valutazione dell'algoritmo sarebbe stato il livello di sicurezza utilizzato. Per non parlare del motto del bando che definiva l'algoritmo che avrebbe vinto la competizione come "L'algoritmo di cifratura del 21esimo secolo", mettendoli così nell'ottica di creare un algoritmo duraturo nel tempo e quindi matematicamente più sicuro.

Criteri per la creazione del Serpent

Partendo dal presupposto che non si conosce come si evolveranno le tecniche di crittanalisi in futuro, i ricercatori del Serpent si sono ispirati ai seguenti tre criteri quando hanno ideato il Serpent, cercando di porsi come obiettivo la creazione di un algoritmo che fosse più possibile duraturo in termini di sicurezza:
-un cifrario a blocchi deve essere il più possibile semplice e facile da analizzare. Quando ad esempio è stato creato il DES a fine anni 80 la documentazione fornita era molto complessa al punto tale che nessuno aveva provato ad attaccarla. Quando poi l'algoritmo è stato forzato con un attacco lineare e differenziale si è capito che ci volevano solo 50 minuti per comprenderne la logica.
-La cifratura a blocchi deve avere più fasi di cifratura (round) rispetto a quelle che servono per bloccare gli attacchi attuali dato che le capacità di calcolo si evolvono continuamente e che solitamente la logica degli attacchi è strettamente legata al fatto che occorre aumentare i round per non permettere che l'attacco vada a buon fine.
-In terzo luogo, un cifrario a blocchi dovrebbe utilizzare solo operazioni matematiche ben conosciute ed utilizzate in crittografia. E' per questo che gli ideatori del Serpent impiegano le reti S-P (sostituzioni e permutazioni), utilizzate da più di un quarto di secolo, come base dei moderni sistemi di crittografia, e quindi soggetti a meno probabilità che si trovino per queste operazioni nuovi sorprendenti tecniche di attacco.
Algoritmi complicati sono difficili da applicare correttamente mentre il Serpent è facile da verificare ed è talmente semplice che può essere ottimizzato mediante linguaggi di programmazione come il C e l'ADA facilitando il lavoro agli sviluppatori in fase di assemblaggio delle routine.

Approfondimenti tecnici

Il serpent è una cifratura a blocchi da 128 bit ed utilizza 32 round ovvero 32 reiterazioni dello stesso algoritmo utilizzando permutazioni e sostituzioni matematiche. La fase di cifratura e decifratura ha la stessa complessità. Le operazioni di decifratura sono esattamente le trasformazioni inverse utilizzate per cifrare il messaggio e l'ordine di esse è opposto.
Il Serpent utilizza diverse sostituzioni matematiche "S-boxes" con 4 bit in entrata e 4 in uscita. Ogni stadio di cifratura utilizza un S-box che lavora parallelamente per 32 volte.


Processo di Cifratura con algoritmo Serpent


serpent-encryptionprocessscheme



Processo di decifratura con algoritmo Serpent

serpent-descritpionprocess-scheme


Nessun commento:

Posta un commento