Site hosted by Angelfire.com: Build your free website today!
 .   .   .   C   i   p   h   e   r   t   e   x   t   .   .   .

.   .   .   C   i   p   h   e   r   t   e   x   t   .   .   .

.   .   .   C   i   p   h   e   r   t   e   x   t   .   .   .

 

Presentazione

 

Algoritmi di cifratura

Cifratura a blocchi
Cifrari Monoalfabetici
Shifting cypher
Substitution cypher
Affine cypher
Cifrari Polialfabetici
Vigenère cipher
Permutation cipher

Cifratura DES

Cifrtura a catena
One-Time-Pad
Periodic Stream Cipher
Approfondimento
DES: Feistel cypher
DES-CBC
   DES-PCBC
  DES-ECB
  DES-CTR
  DES-CFB
  DES-ITL
DES in cascata
 
Privatezza, autenticita', integrita'
Public Key
Firma digitale
RSA
DSA
Funzioni di Hash
Shared Key
kerberos
Diffie & Hellman
Shamir Protocol
  Station to Station Protocol
Otway-Rees

Certificazione di identita'

 
Mutua Identificazione: protocolli di Needham-Shroeder
NSPK a 3 messaggi
NSPK a 7 messaggi
Certificazione da parte di un garante terzo
Certification Authorities
 
 

Riassunto di algebra modulare

e-mail

 

 

 

 

 

 

 

 

DES

L'algoritmo di cifratura a blocchi DES (Data Encryption System) si trova alla base della crittografia a chiave segreta condivisa. Le due operazioni fondamentali per tale attivita' sono infatti quella di diffusione e di confusione: nel sistema DES esisono due blocchi fondamentali adibiti a svolgere queste funzioni, detti P ed S block.

Il blocco P esegue operazioni di permutazione sui dati in ingresso; possiede infatti ugual numero di ingressi e di uscite, posti in corrispondenza biunivoca tra loro (cioe' 1 a 1) e, una volta ricevuto un segnale su uno degli ingressi, lo riporta sull'uscita corrispondente.

Blocco P

Un blocco S comprende un blocco P, un encoder e un decoder: riceve in ingresso una combinazione di bit, che viene indirizzata dal decoder all'ingresso corretto del blocco P, alla cui uscita viene decodificata nella nuova sequenza cifrata.

Blocco S

 

Esistono molte varianti della crittografia DES; la variante di base e' quella di Feistel.

 

Feistel cypher (1970)

Prima di essere processato con questo metodo, il plain text (P) da cifrare viene suddiviso in blcchi da 64 bit.

Il singolo blocco da 64 bit entra nel sistema insieme ad una chiave (K) da 56 bit; i due elementi verranno sottoposti a processi differenti prima di essere combinati tra loro per la cifratura.

Il testo in chiaro viene innanzitutto fatto passare in un blocco di tipo P, cosi' come la chiave.

All'uscita del blocco P, la chiave (solo la chive, non il plain text) viene passata in un blocco RL/RL: al suo interno, la sequenza di 56 bit viene divisa a meta' in due parti da 32 bit, ognuna delle quali e' sottoposta ad un'operazione di Rotate Left, cioe' ribaltata in modo da portare l'ultimo bit ad essere il primo, il penultimo ad essere il secondo e cosi' via.

l'uscita di questo blocco, ancora lunga 56 bit, passa poi attraverso un blocco P/C, che la comprime in modo reversibile, secondo metodi standard, restituendo in uscita una stringa di 48 bit. Questa stringa e' la chiave utilizzata pe la prima delle sedici operazioni iterative che compongono la cifratura DES. Verra' chiamata K1.

La chiave cosi' ottenuta verra' dunque combinata 16 volte con il plain text in uscita dal blocco P con il metodo descritto di seguito.

La sequenza di bit P viene suddivisa in due parti, destra e sinistra, di 32 bit.

La parte destra viene prima espansa, seguendo sempre un metodo standard, fino a 48 bit, poi combinata in exclusive or con K1, ottenendo una nuova sequenza di 48 bit. Questa sequenza viene processata tramite un blocco S, alla cui uscita si ottiene una sequenza di 32 bit.

Il blocco S e' formato da 6 linee d'ingresso e 4 linee d'uscita ed e', nel dettaglio, assimilabile ad una tabella di 16 colonne e 4 righe. Al suo interno sono contenuti dei valori standard compresi tra 0 e 15, in modo che in ogni riga compaiano tutti una singola volta.

I 6 canali in ingresso codificano un numero di riga (primo e ultimo valore) e colonna (4 valori centrali): la casella corrispondente conterra' uno dei numeri da 0 a 15, codificabile in4 bit, che sara' restituito in uscita.

In questo modo i 48 bit entranti vengono compressi in 32.

La sequenza di 32 bit cosi' ottenuta, viene passata in un P block e successivamente combinata in exclusive or con la parte sinistra della sequenza P suddivisa in ingresso. Il risultato sara' lungo 32 bit , e verra' sottoposto al medesimo processo al tre 15 volte, entrando come parte destra del messaggio P.

La parte sinistra di tale messaggio viene presa dalla parte destra del messaggio P entrante.

Parte destra e parte sinistra, al termine della sedicesima iterazione, vengono scambiate e unite, per formare infine il messaggio cifrato con metodo DES di lunghezza 64 bit.

 

 

La metodologia DES e' oggi standardizzata in configurazioni base, che prevedono una differente concatenazione dei blocchi di cifratura; alcune di esse sono elencate ed illustrate di seguito.


 

CBC - Cipher Block Chaining

Attualmente e' la configurazione di piu' largo impiego. In codifica prevede il seguent schema:

Si determina un vettore di inizializzazione (initialization vector, indicato con IV), consistente in un numero random tra 0 e 2^64.

Questo vettore si impiega, combinato in exclusive or con il plain text, nel primo blocco di codifica; il risultato di tale operazione viene poi cifrato con un cifrario a piacere, ottenendo il testo crittografato.

Nel blocco successivo, l'operazione viene ripetuta, ma invece del vettore di inizializzazione, si impiega il primo testo crittografato. Nel terzo blocco si impieghera' quello del secondo e cosi' via, concatenando (da qui il termine "chaining") il risultato finale di ogni blocco con la cifratura del successivo.

L'operazione di decifratura avviene invertendo il percorso: si sottopone cioe' il testo cifrato alla funzione di decifratura e ne si combina il risultato con il ciphertext in ingresso al blocco precedente. Per il primo blocco di decifratura si utilizza I.V.

Nota]Un'operazione di questo tipo e' resa possibilie dalla proprieta' basilare della logica che determina il reciproco annullamento di due XOR identici. Es:) (A XOR B) XOR B = A.

Cn=Ek[Pn XOR C(n-1)] dove C0=I.V.

Pn=C(n-1) XOR Dk(Cn) dove C0=I.V.

 

A causa di questa sua caratteristica, che collega le informazioni di ogni blocco a quelle dei precedenti, un algoritmo di cifratura di questo tipo puo' essere utilizzato per autenticare i messaggi (autenticare significa garantire l'integrita' del messaggio, assicurare cioe' che il messaggio ricevuto sia identico all'originale inviato).

Si definisce MAC (Message Authentication Code) il codice che garantisce l'integrita' del messaggio; nella codifica DES - CBC si impiega coe MAC l'ultima porzione di messaggio cifrato (in figura indicata con Cn).

In un utlizzo base del MAC dunque, il mittente inviera' il testo in chiaro in tutte le sue porzioni (P1, P2.... Pn) seguito dall'ultima codifica Cn, in funzione di MAC.

Una volta ricevuto il messaggio, il destinatario, che conosce la chiave di cifratura, applichera' il procedimento ad ogni parte del plain text, ottenendo l'ultima porzione di codice cifrato Cn: se questa sara' identica a quella ricevuta insieme al messaggio, l'integrita' sara' garantita.


 

PCBC - Propagating CBC

Una cifratura di questo tipo utilizza il conceto base del CBC, ma invece di combinare in XOR il ciphertext in uscita dal blocco di cifratura precedente con il plaintext in entrata nel successivo, essa lo ricombina prima in Exclusive or con il testo in chiaro in ingresso nel medesimo blocco.

Il primo I.V. sara' dunque dato dall'ipotetica combinazione di P0 XOR C0.

Per decodificare il testo cifrato con questo motodo, si applichera' prima la funzione inversa di decodifica Dk al testo cifrato in ingresso, combinandone poi il risultato in exclusive or con il risultato dell'XOR tra il plaintext e il ciphertext in ingresso al blocco precedente, tenendo conto che C0=I.V.

Cn=Ek(Pn XOR [P(n-1) XOR C(n-1)])

Pn=C(n-1) XOR P(n-1) XOR Dk(Cn)


 

ECB - Electronic Code Book

Questa e' la cifratura piu' semplice: prevede l'applicazione della codifica ad ogni singolo blocco del mesaggio.

La chiave K impiegata e' sempre la stessa, come anche l'agoritmo di cifratura Ek.

L'operazione inversa di decifratura avviene con la medesima modalita', ma la funzione Ek sara' sostituita dalla sua funzione inversa Dk: Ogni blocco ricevera' in ingresso una porzione di ciphertext e restituira' in uscita il testo in chiaro originale.

Cn=Ek(Pn) Pn=Dk(Cn)


 

 

CTR - Counter Mode

Questa particolare confgurazione e' caratterizza dall'impiego di un vettore di inizializzazione I.V.(n) mutevole, differente cioe' per ogni blocco del processo.

Una seconda caratteristica di tale modello e' la mancanza di una funzione Dk di decifratura: e' infetti sufficiente sfruttare le proprieta' dell'operazione logica XOR per far si che la funzione Ek possa essere impiegata senza modifiche di sorta sia nella cifratura che nella sua operazione inversa.

Cn= Ek(I.V.n) XOR Pn

Pn= Ek(I.V.n) XOR Cn

dove I.V.(n) e' calcolato con il procedimento I.V.(n) = I.V.(0)+n-1

Nota: Dimostrazione dell'ottenibilita' del Plaintext senza necessita' di funzione Dk.

Ricordando che due operazioni di XOR uguali applicate al medesimo elemento si annullano a vicenda, la formula Pn= Ek(I.V.n) XOR Cn puo' anche essere riscritta come

[Ek(I.V.n) XOR Pn] XOR Ek(I.V.n) = Pn. Eliminndo le due operazioni XOR si ottine dunque Pn=Pn.


 

CFB - Cipher Feedback Mode

Questa implementazione prevede la combinazione in XOR del plaintext con il ciphertext ottenuto dalla cifratura avvenuta nel blocco precedente previa cifratura del testo cifrato tramite chiave K.

Per decifrare, sempre sfruttando le proprieta' dell'operazione logica di exclusive or, non e' necessario ricavare una funzione Dk inversa, ma sara' sufficiente ricombinare il testo cifrato con con il plaintext in exclusiv or, dopo averlo codificato con la medesima funzione Ek impiegata durante la cifratura.

Cn=Ek(C(n-1) XOR Pn

Pn=Ek(Cn-1) XOR Cn

Dove C0 = I.V. Per il primo dei blocchi non si utilizza il ciphertext in uscita dal precedente, che ovviamente non esiste, ma il vettore di inizializzazione).

 


 

ITL - Interleaved Mode

Scelti un numero a piacere n di vettori di inizializzazione I.V.n, questo algoritmo prevede il loro impiego per la cifratura dei primi n blocchi, utilizzando per i blocchisuccessivi, I.V. dati dal cifertext in uscita dai precedenti.

[Nella figura di esempio e' stato scelto n=2].


 

 

DES in cascata

Gli algoritmi di cifratura DES, possono anche essere utilizzati in cascata; in particolare, double DES e triple DES.

Double DES

Schema generale:

Il Double DES impiega due chiavi di cifratura, K1 e K2. Questo metodo non viene impiegato poiche' e' soggetto ad attacchi di tipo meet-in-the-middle:

Detto x1 e x2 i due messaggi dati uno dalla codifica del plain text dal primo blocco di cifratura, l'altro dalla decodifica del cipher text dal primo blocco di decifratura, i due testi dovrebbero essere identici.

Un attaccante ipotetico, potrebbe intercettare i messaggi x1 e x2, cercare le corrispondenze all'interno di una tabella e, per tentativi successivi, individuare le chiavi. Il numero di tentativi necessari e' di 2^57.

 

Triple DES

Schema generale:

E' la metodologia piu' diffusa attualmente, poiche' la presenza di due chiavi da 56 bit rende piu' improbabili eventuali attacchi. In una versione DES a 168 bi sarebbe possibile rendere ancora piu' sicuro il metodo impiegando 3 chiavi.

 

Torna a inizio pagina