Sei sulla pagina 1di 4

Andrea Altomare 5^A

CRITTOGRAFIA
Cifrario di Cesare
Il cifrario di Cesare rappresenta uno dei metodi di crittografia col metodo della sostituzione: ovvero ogni
lettera del messaggio da cifrare viene sostituita da unaltra seguendo una certa regola definita a priori.

In particolare, il metodo di Cesare trasla le lettere di una posizione fissa (traslazione fissa): detta L la
lunghezza dellalfabeto utilizzato (normalmente: L=26) e K il valore di traslazione, generalmente con K<=L, si
sostituisce ogni lettera con quella che la segue di K posti nellordine dellalfabeto usato.

Formula: valore = (valore + K) mod L

K risulta quindi essere la chiave di codifica/decodifica del messaggio.

Cifrario di Vigenre
Tale cifrario detto invece metodo di sostituzione a traslazione variabile. Si adoperer ovvero una chiave
di lunghezza pari o minore a quella del messaggio da crittografare e ogni lettera di questultimo verr
traslata del numero di posizioni relativo alla posizione alfabetica della corrispondente lettera della chiave di
cifratura. Ad esempio, con A=0, la lettera K di un dato messaggio da cifrare, crittografata con la lettera G
della chiave, diventer Q (K + G = Q).

Trasposizione colonnare
In questo metodo (detto di trasposizione) si dispongono le lettere del messaggio da cifrare, private di
qualsiasi carattere non letterale, in una matrice avente numero di colonne pari al numero di lettere della
chiave utilizzata. Successivamente si prendono le lettere immesse precedentemente nella matrice, una per
ogni riga, dalla colonna corrispondente alla posizione letterale di ogni lettera della chiave
(precedentemente ordinata).

Esempio

Messaggio: STUDIOSISTEMIERETI

Chiave: CHIAVE

Chiave ordinata: A=0; C=1; E=2; H=3; I=4; V=5

Matrice:

C H I A V E

S T U D I O

S I S T E M

I E R E T I
Andrea Altomare 5^A

Inizio prendendo le lettere delle righe sottostanti la colonna A (prima lettera) e continuo con quelle delle
colonne C, E, H, I, V; quindi ottengo il messaggio cifrato: DTESSIOMITIEUSRIET.

LIVELLO DI SESSIONE
Il livello di sessione il primo che riguarda esclusivamente lutente (ovvero lapplicazione comunicante)
dello stack ISO/OSI.

Una sessione la connessione che tale livello stabilisce fra due entit (S_entit) degli utenti interessati dalla
comunicazione per lo scambio dei dati. Instaurata la sessione, le relative P_entit del livello presentazione
dei sistemi connessi potranno suddividere la informazioni scambiate raggruppandole in gruppi omogenei
detti attivit.

Se, ad esempio, si stanno trasferendo dei file, ad ognuno di essi sar associato unattivit, in modo tale
vincolare linizio della successiva attivit alla conclusione della precedente. In questo modo si evita che il
livello di trasporto venga sovraccaricato e si offre al livello di presentazione una suddivisione pi adeguata
della situazione del collegamento.

S_PDU
Il protocollo di sessione offre dei punti di sincronizzazione tra i due sistemi comunicanti; ci utile
specialmente nella trasmissione di grandi quantit di dati relative ad un unico archivio. Si vuole ad esempio
trasferire un unico grande file da un server. Se la connessione cade, lutente dovr ripetere loperazione di
download dallinizio; adottando invece i punti di sincronizzazione (S_PDU), sia il server che lapplicazione
utente (client) sapranno da dove ripartire quando si verificheranno situazioni analoghe.

Token di interazione
Il livello di sessione permette di trasferire dati fra due S_entit, e in ogni sessione possono essere scambiate
singole attivit (in modalit bidirezionale). Ai livelli superiori si pu decidere inoltre se utilizzare servizi full-
duplex o half-duplex del livello di sessione.

Per regolare la direzione e le modalit di accesso a queste funzionalit (per ogni S_entit, della attivit e dei
servizi offerti) il livello di sessione utilizza i token: S_PDU opportune che permettono al proprietario
temporaneo (una certa S_entit) di tale token di avviare la scelta di flusso desiderata.

Ogni token mette dunque a disposizione dellS_entit delle determinate primitive.

Gestione dei punti di sincronizzazione


In una sessione fra due utenti distinti si distinguono pi attivit (relative ad operazioni di comunicazioni pi
elementari, come il trasferimento di un singolo file), e in esse sono identificabili pi unit di dialogo.

Se ad esempio si sta interrogando una base di dati (attivit), le unit di dialogo sono quelle relative alla
richiesta ed alla risposta. Allinterno delle singole unit di dialogo si possono quindi individuare i punti di
sincronizzazione.

Punti di sincronizzazione minori


Sono proprio quelli adibiti a fornire dei punti comuni di recupero fra i due sistemi comunicanti in caso di
errore di comunicazione come la caduta della connessione. Possono essere inseriti in numero qualsiasi
Andrea Altomare 5^A

perch rappresentano lultimo istante in cui tutte le informazioni precedenti sono gi state correttamente
acquisite (dunque in caso di anomalia si pu riprendere il collegamento da quel punto).

Punti di sincronizzazione maggiori


Questo tipo di punti ha invece significato diverso: sono utilizzati per delimitare le singole unit di dialogo.
Dunque quando un utente avvia ununit con una primitiva del token di livello sessione, ogni altra
operazione gli negata fino a compimento di quella cominciata ed alla ricezione della relativa conferma.

COMPRESSIONE
Compressione di Huffman
Questo tipo di compressione rientra nei metodi a lunghezza variabile. Ponendo di avere un messaggio di
32 caratteri composto da lettere di un alfabeto di 4 elementi (A;B;C;D):

BAABCADBADAACBAAAABDAABACBADCBAA

Si conteranno le occorrenze di ogni lettera, assegnando ad ognuna la relativa probabilit:

A = 16 occorrenze, pari ad una probabilit di 0,50


B = 8 occorrenze, pari ad una probabilit di 0,25
C = 4 occorrenze, pari ad una probabilit di 0,125
D = 4 occorrenze, pari ad una probabilit di 0,125

A questo punto si costruisce un albero binario partendo dalle lettere con la pi bassa frequenza: se ne
sommano le relative probabilit e le si considera come unico elemento avente la probabilit calcolata, a
questo punto si itera il processo fino ad avere un elemento con probabilit 1. Si avr quindi lalbero binario,
dal quale si otterranno le codifiche di ogni elemento distinto presente nel messaggio da comprimere
semplicemente assegnando, ad esempio, ad ogni passaggio a destra dellalbero binario il valore 1, e ad ogni
passaggio a sinistra il valore 0.

Le lettere saranno quindi cos codificate: A = 0 ; B = 10 ; C= 110 ; D= 111

E il messaggio codificato: 1000101100......

Codifica aritmetica
Questo un tipo di codifica pi efficiente di quello di Huffman; proposto da P. Elias e implementato da
Witten, si basa sempre sulla probabilit dei simboli (elementi) nel testo.

Date le probabilit: A = 1/2; B = 1/4; C = 1/8; D = 1/8

Si riportano nellintervallo unitario: 0 < A < 1/2 < B < 3/4 < C < 7/8 < D < 1

Dunque si individuano quattro sottointervalli (uno per ogni elemento) caratterizzati da un estremo inferiore
ed una determinata ampiezza:
Andrea Altomare 5^A

Amin = 0 Alung =1/2


Bmin = 1/2 Blung = 1/4
Cmin = 3/4 Clung =1/8
Dmin = 7/8 Dlung =1/8

Si inizia la codifica a gruppi di lettere, si prendono quindi le prime quattro: BAAB e si cerca di individuare
nellintervallo 0 1 la probabilit che questa sequenza ha di verificarsi.

Partendo dal simbolo B, consideriamo la probabilit minima (1/2) e la probabilit interna allintervallo che
una sequenza inizi con B (data dalla probabilit minima di B pi la probabilit propria di B, 1/4), si ha
dunque che lintervallo da considerare : (Bmin) (Bmin + Blung) => 1/2 cod < 3/4

Passando al simbolo A, esso ha una probabilit di verificarsi pari a 0,5, ma solo limitatamente ad un
segmento che inizia con B; dunque la probabilit di avere una sequenza con BA come elementi iniziali
data dalla formula: (Bmin + Amin) (Bmin + Alung * Blung) => 1/2 cod 5/8

Il processo viene iterato fino a concludere che la sequenza BAAB ha la seguente probabilit:

17/32 cod < 35/64

Tradotto in binario si ha:

0.10001 cod < 0.100011

Quindi la codifica del messaggio originale inizier con i primi bit dellintervallo calcolato, a cui va tolta la
parte intera perch non significativa, ottenendo dunque: 10001......

Si ripete il processo finch non si saranno codificati tutti i simboli (presi a gruppi) del messaggio originale.