Sei sulla pagina 1di 1

Crittografia=cifrare “cose”

E(M,K)=C -----> D(C,K)=M

Stream Cipher: hai un flusso di bit/byte (b0, b1, b2, …). Hai anche un flusso key stream (k0, k1, k2, …). Allora c0=b0⊕
k0, c1=b1⊕k1, c2=b2⊕k2, …
Questo è un generatore pseudo-casuale (si basa su successioni matematiche periodiche=utili in passato, ma non per
contrastare i computer moderni estremamente veloci).

Block Ciphers: non mi pongo il problema di cifrare il messaggio di lunghezza arbitraria, ma solamente un blocco M di n
bit.
Ho M, K (chiave) e C (messaggio cifrato).
A questo punto: E(M,K)=C & D(C,K)=M (ATTENZIONE: E e D possono essere uguali).
DES (cifrario a blocchi): ho un segnale lungo N e lo divido in n blocchi di 64 bit M1, M2, M3, …
Ho una chiave K di 56 bit.
A questo punto Ci=E(Mi,K). <---- QUESTO È SBAGLIATO=usi sempre la stessa chiave per cifrare ogni blocco!
Come posso risolverlo? -----> Ci=E(Mi⊕Ci-1,K)
Nel momento in cui decifro D(Ci,K)=Mi⊕Ci-1. Questo è il modo d’uso CBC (Cipher Block Chaining).

Un altro modo per “migliorare” l’algoritmo DES è il 3DES:


C=E(D(E(M,K1),K2), K1) con K1 e K2 come due chiavi diverse.

AES (Advanced dEcription Standard): un algoritmo reso standard attraverso un concorso. Oggi come oggi viene
utilizzato largamente.

Un problema non banale della crittografia non è tanto l’evitare di rompere l’algoritmo ma l’evitare di aggirarlo (come
ad esempio gli streaming in BlueRay: i BR sono crittografati con AES ma in streaming si trovano film in alta definizione
non per la rottura dell’AES ma per il suo aggiramento).