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

 

 

 

 

 

 

 

 

Algoritmi di cifratura

Un algoritmo di cifratura e' un metodo per stabilire una corrispondenza tra simboli in chiaro e simboli cifrati.

I simboli in chiaro vengono utilizzati per creare il messaggio in chiaro o plain text message, che, una volta cifrato, diviene un testo crittografato, o cipher text.

La principale suddivisione dei cifrari e' tra cifrari a blocchi, detti anche ECB (Electronic Code Book) e stream cypher.

Un cifrario a blocchi utilizza una chiave di cifratura, detta keyword e la applica al testo da cifrare; un cifrario di tipo stream cypher invece utilizza un keystream, cioe' un flusso di dati.

Di seguito vengono riportati i principali metodi di cifraura relativi alle due tipologie.


Cifrari a blocchi

I cifrari a blocchi possono essere di tipo monoalfabetico o polialfabetico, a seconda che mettano in corrispondenza in modo biunivoco simbolo in chiaro e simbolo cifrato o meno, cioe', se ad una stesso carattere del testo in chiaro corrisponde sempre lo stesso carattere nel testo cifrato o meno.

Cifrari monoalfabetici

 

Shifting cypher

Questo e' uno dei cifrari piu' semplici e piu' antichi, addirittura gia' impiegato da Giulio Cesare.

Il principio applicato e' molto semplice: ogni simbolo dell'alfabeto che compone il messaggio originale (testo in chiaro) viene spostato ("shiftato" appunto) di un numero fisso di posti, detto offset.

Cosi', ad esempio, se si sceglie di utilizzare 2 come spostamento fisso, nell'alfabeto composto dalle lettere, il simbolo "A" sara' sostituito da una "C" nel testo cifrato, il imbolo "B" sara' sostituito da una "D" e cosi' via.

Per esempio, se si volesse cifrare il testo "HACKTHEPLANET" e si assegnasse all'offset il valore 5, si otterrebbe "MFIPYMJUQFSKY"

Si noti che quando il valore dell'offset porta a superare l'ultimo carattere dell'alfabeto, si ricomincia a contare dal suo inizio. Cioe' se si dovsse cifrare la lettera "Z" con il metodo impiegato nll'esempio, si otterrebbe il simbolo cifrato "E".

Il valore di offset puo' essere scelto a piacere, ma e' in pratica inutile asumerlo maggiore el numero di simboli presenti nell'alfabeto in uso, piche' si impiegherebbero solo piu' "giri" della sequenza per arrivare al simbolo cifrato corrispondente (in proposito, vedere la matematica modulare).

E' ovviamente stupido, inoltre, scegliere un offset pari a 1, dato che testo cifrato e testo in chiaro risulterebbero identici.

Questo cifrario si presta ad una semplice decifratura, anche per chi non e' in possesso della chiave di lettura, cioe' del valore di offset: i suoi posibili valori infatti sono pari al numero di simboli dell'alfabeto in uso meno uno. Nell'esempio, sarebbero stati sufficienti 25 tentativi (le lettere, nell'alfabeto anglosassone sono 26) per coprire tutte le possibilita'.

 

Substitution cypher

Un altro cifrario monoalfabetico e' il cifrario a sostituzione.

Questo metodo fa corrispondere ad ogni simbolo dell'alfabeto originario un simbolo dello stesso alfabeto ridisposto in modo casuale.

Un esempio chiarificatore puo' essere questo:

a b c d e f g... - alfabeto originario

d c e a b g f.... - alfabeto ricombinato casualmente

il testo "abc" verra' cifrato come "dce".

I possibili modi di ricombinare senza ripetizioni gli n simboli di un alfabeto sono circa n! (n fattoriale).

 

Affine cypher

Il cifrario affine e' sempre un cifrario monoalfabetico, che prima moltiplica il numero d'ordine del simbolo in chiaro per un numero scelto a piacere, e poi lo sposta di una quantita' di posizioni da definire (offset), proprio come nello shifting cypher.

E' dunque necessario, in una logica di cifratura di questo genere, definire due variabili numeriche.

Ad esempio, se si definisse la prima pari a 2 e la seconda pari a 3, per cifrare il simbolo "B", corrispondente nell'alfabeto in chiaro al numero 1 (si inizia a contare dallo 0, assegnato alla lettera "A"), si dovrebbe calcolare 1*2 + 3 = 5. Il simbolo corrispondente alla lettera "B" risulterebbe dunque essere "F".

Si noti che, come nello shifting cypher, i valori utili da assegnare all'offset sono quelli da 2 a 25 (nell'alfabeto anglosassone composto di 26 simboli; piu' in generale sono i valori compresi tra 2 e il numero di simboli dell'alfabeto in uso meno 1).

Questo valore pero', perche' il cifrario funzioni (e cioe' renda sempre possibile risalire dal testo cifrato al messaggio originale senza ambiguita'), deve essere scelto in modo che il massimo comun divisore tra questo e il numero di simboli dell'alfabeto in uso sia 1.

[Qusta condizione puo' anche essere espressa dicendo che i due numeri devono essere coprimi. Vedi aritmetica modulare]


Cifrari polialfabetici

 

Cifraro di Vigenère

Per applicare un cifrario di questo tipo, e' necessario innanzitutto scegliere una parola chive (keyword) composta di simboli appartenenti all'alfabeto con cui e' scritto il plain text; ogni simbolo della keyword corrispondera' al suo numero d'ordine all'interno dell'alfabeto d'appartenenza.

Al numero d'ordine del primo simbolo del plain text si somma poi il numero d'ordine del primo simbolo della keyword, al socondo il secondo e cosi' via.

Quando si raggiunge l'ultimo simbolo della parola chiave si ricomincia dal primo con il medesimo procedimento.

Ad esempio:

Si sceglie la parola chiave "SEC", i cui simboli hanno numero d'ordine nell'alfabeto anglosassone (ricordando che la numerazione parte dallo zero) pari a "18 4 2".

Per cifrare il testo "TRYAGAIN", i cui simboli hanno numero d'ordine "19 17 24 0 6 0 8 13" si sommera' a ciascuno il corrispondente nella keyword.

19+18 = 37 = 11 = L ; 17+4 = 21 = V; 24+2 = 26 = 0 = A; 0+18 = 18 = S; 6+4 = 10 = K etc...

Il testo finale risultante dalla cifratura sara' "LVASKCAR".

Come si nota dall'esempio, il simbolo cifrato "A" corrisponde prima a "Y" e poi a "I", come e' proprio di un cifrario polialfabetico.

 

Cifrario a permutazione

Simile al cifraro di Vigenère, il cifrario a permutazione prevede la scelta di una una sequenza base di n numeri, che saranno permutati. La nuova sequenza verra' applicata a porzioni del testo in chiaro della medesima lunghezza, e portera' ad una cifratura in cui i simboli del testo di partenza saranno ridisposti nelle posizioni indicate dal corrispondente numero.

Con un esempio la comprensione e' immediata:

Presa la sequenza lunga 4 [1, 2, 3, 4] e scelta una delle sue permutazioni [2, 4, 1, 3], si va a cifrare il testo "TRYAGIN".

Si considerano blocchi del testo in chiaro di lunghezza 4 simboli: i primi 4 saranno "TRYA"; il numero 1 nella permutazione si trova in terza posizione, dunque la prima lettera di questa porzione di testo cifrato sara' la terza della porzione di plain text, cioe' "Y". Il numero 2 e' il primo della sequenza, dunque la seconda lettera del cypher text sara' la prima del testo in chiaro, cioe' "T". E cosi' via, fino ad ottenere il testo cifrato finale "YTARIGNA".


DES

Un importantissimo algoritmo di cifratura a blocchi e' il DES (Data Encryption System), che si trova alla base della crittografia a chiave segreta condivisa: per conoscere nello specifico la sua implementazione, vedere l'approfondimento dedicato.    (Fai click qui per visualizzare la pagina)


 

Cifrari a catena

Uno stream cypher di tipo periodico, ripete l'utlizzo della chiave di cifratura ottenendola dalle chiavi precedentemente impiegate, mentre uno stream cypher di tipo "one time pad" (detto anche sincrono) sceglie la chiave di cifratura indipendentemente dalla sequenza di plain text o dalle chiavi precedenti.

 

Stream Cypher Periodico

Questo meodo puo' essere applicato solo a testi da cifrare in formato binario.

Il cifrario basa la sua potenza sull'utilizzo di una singola chiave di cifratura di partenza detta seed (seme), di lunghezza n bit, mentre le successive chiavi impiegate vengono ricavate dalla prima applicando in sequenza il medesimo algoritmo.

In questo modo la chiave applicata si ripetera' periodicamente ogni (2^n) -1 simboli.

La sequenza di chiavi ottenuta in questo modo verra' combinata ai blocchi del testo di partenza in exclusive or, ottenendo cosi' la cifratura del blocco.

 

Stream Cypher One Time Pad

La potenza di questo metodo sta nel fatto che la chiave di cifratura viene impiegata una singola volta, detta chiave di sessione. E' questo il metodo utilizzato anche nella codifica GSM.

Il flusso di chiavi e' infatti una stringa di valori molto lunga, dalla quale, in ogni singola codifica, viene presa in successione una parte della lunghezza necessaria.

Torna a inizio pagina