• Non ci sono risultati.

Strumenti, definizioni e notazioni

Introdurre in modo corretto e ben definito una struttura dati crittografica astrat- ta e adattabile alle varie esigenze implementative che si potrebbero avere in casi di utilizzo reali richiede l’introduzione di strumenti, definizioni e notazioni sensate e non ambigue. L’obiettivo tuttavia è concentrarsi sulla proposta di strumenti sufficientemente astratti da poter costruire un framework semanticamente corret- to ma non vincolante da particolari scelte implementative, senza però perdere di vista l’effettiva possibilità di verifica della bontà della teoria proposta.

4.2.1 Schemi crittografici

Dato che l’obiettivo è costruire una struttura dati crittografica manipolabile lato client, è scontato inserire l’uso di validi schemi crittografici tra gli strumenti necessari e più importanti. In particolare, il framework studiato e proposto in modo graduale nelle sezioni successive ha tra le proprie fondamenta gli schemi di cifratura sia simmetrica che asimmetrica.

Schema di cifratura simmetrica

Nello schema di cifratura a chiave simmetrica viene usata un’unica chiave detta segreta o privata la quale è un parametro di una funzione invertibile. La chiave questione viene usata dalla funzione sia per cifrare che per decifrare il messaggio o i dati (come mostrato in figura 4.2).

Figura 4.2: Symmetric cryptography

A titolo informativo, tra gli algoritmi più utilizzati e diffusi c’è sicuramente l’AES (Advanced Encryption Standard), ma si ricordi che le soluzioni e il fra- mework proposto in questa dissertazione possono essere applicate a prescindere dalla scelta del particolare algoritmo di cifratura simmetrica (data la loro natura astratta).

Schema di cifratura asimmetrica

Lo schema di cifratura a chiave asimmetrica impone invece che la chiave di ci- fratura sia diversa dalla chiave di decifratura. La caratteristica dei crittosistemi asimmetrici è che ogni coppia di chiavi è formata in modo tale che ciò che viene cifrato con una, può essere decifrato solo con l’altra. Le due chiavi sono, a prio- ri, perfettamente interscambiabili, ma generalmente una delle due viene definita pubblica mentre l’altra viene definita privata perché il poter distribuire una (e una sola!) delle due (quella pubblica appunto) è il principale vantaggio dei crit- tosistemi asimmetrici. Il generale la chiave pubblica viene usata per la cifratura dei dati, mentre quella privata per la decifratura (come mostrato in figura 4.3).

É anche possibile usare questo schema di cifratura per la verifica di integrità dei dati mediante l’utilizzo di quella che è comunemente chiamata firma digitale. In questo caso la convenzione impone che il dato da firmare sia cifrato con la chiave privata, mentre la verifica venga effettuata per mezzo della chiave pubblica (come mostrato in figura 4.4). A titolo informativo, tra sistemi asimmetrici più diffusi ed utilizzati e diffusi c’è sicuramente l’RSA [41], ma anche in questo caso si ricordi che le soluzioni e il framework proposto in questa dissertazione è di una natura astratta tale da poter essere applicato a prescindere dalla scelta del particolare algoritmo di cifratura asimmetrica.

Figura 4.4: Digital signature

4.2.2 Link crittografici

I link crittografici sono un particolare tipo di astrazione (e strumento) realizzati attraverso l’uso degli schemi crittografici classici citati nella sezione 4.2.1. La con- catenazione e l’uso intelligente dei link che si andranno a definire è la chiave per la costruzione della struttura crittografica (framework) oggetto della dissertazione.

Link crittografico simmetrico

Per link crittografico simmetrico si intende un’astrazione del semplice concetto di cifratura simmetrica mediante l’utilizzo di una chiave (simmetrica) segreta. La semplice notazione (ampiamente usata nelle successive sezioni) è proposta nella figura 4.5 dove:

KEY indica la chiave simmetrica di cifratura

DATA indica il particolare tipo di dato da cifrare mediante un algoritmo che implementi uno schema di cifratura simmetrica e utilizzando il segreto KEY.

Figura 4.5: Symmetric Link

La particolarità del link crittografico simmetrico è la natura astratta del cam- po DATA. Mentre il segreto KEY dipenderà molto dal particolare algoritmo che implementa lo schema simmetrico (AES ad esempio) e dagli standard di sicurez- za che si vogliono ottenere, il campo DATA non impone particolari vincoli. Nel framework che si andrà a costruire un link crittografico simmetrico verrà quindi usato sia per cifrare effettivamente contenuti e dati sensibili dell’utente (quali informazioni testuali, immagini, video o altro), ma cosa più importante, sarà lo strumento essenziale per la costruzione di una struttura dati crittografica che consentirà di rispettare i vincoli di scalabilità necessari per l’implementazioni di operazioni come la condivisione sicura di informazioni tra utenti e la gestione di grandi moli di dati e strutture complessi (come file system). Quest’ultimo punto è reso possibile dal fatto che il campo DATA (figura 4.5) può anche contenere un’altra chiave crittografica, che a sua volta può essere usata per la creazione di ulteriori link simmetrici creando una vera e propria catena simmetrica. Un esempio di tale catena è riportato in figura 4.6 dove:

• K1, K2 e K3 sono delle chiavi crittografiche simmetriche • DATA1 e DATA2 sono delle informazioni generiche

• i link simmetrici mostrano come con K1 sia di fatto possibile ottenere ambedue le informazioni DATA1 e DATA2

• un’entità in possesso di K2 è in grado di recuperare solo DATA1 • un’entità in possesso di K3 è in grado di recuperare solo DATA2

Link crittografico asimmetrico

Per link crittografico asimmetrico si intende un’astrazione del semplice concetto di cifratura asimmetrica mediante l’utilizzo di una una coppia di chiavi asim- metriche. La semplice notazione (ampiamente usata nelle successive sezioni) è proposta nella figura 4.7 dove:

KEY PAIR indica la coppia di chiavi asimmetriche (in genere una pubblica e una privata)

KEY indica il particolare tipo di dato da cifrare mediante un algoritmo che implementi uno schema di cifratura asimmetrica e utilizzando una delle chiavi asimmetriche (in genere quella pubblica). KEY in questo caso non è un dato comune (testo, immagine, ecc...) ma è un’astrazione del concetto di chiave. Si vedrà infatti che KEY, a seconda dei casi, sarà una chiave simmetrica (da usare in uno schema simmetrico) o una chiave privata (da usare in uno schema asimmetrico).

Figura 4.7: Aymmetric Link

Quello che si vuole esprimere con la notazione in figura 4.7 è la possibilità di cifrare una generica chiave KEY (simmetrica o asimmetrica) con una delle due chiavi presenti in KEY PAIR (comunemente quella definita come pubblica) generando quindi il link crittografico asimmetrico. A rigor di logica, dato che si usa uno schema asimmetrico, il recupero della chiave KEY a partire da link asimmetrico è reso possibile mediante la controparte (chiave privata) di KEY PAIR.

Dato l’utilizzo di uno schema crittografico asimmetrico (ad esempio l’algorit- mo RSA), si ha una conseguente perdita di performance dal punto di vista delle operazioni crittografiche di cifratura e decifratura dovute alla maggiore comples- sità degli algoritmi asimmetrici e alle dimensioni maggiori delle chiavi (si faccia riferimento a [21] e [46] per approfondimenti di natura più implementativa). Tut- tavia i link asimmetrici godono di una interessante e utilissima proprietà (sche- matizzata in figura 4.8): l’aggiornamento del link non impone la conoscenza di

ambedue le chiavi presenti in KEY PAIR, ma solo di quella che in genere si usa per la cifratura (chiave pubblica).

Figura 4.8: Aymmetric Link: update

Questa proprietà è fondamentale per la creazione della struttura dati critto- grafica oggetto della dissertazione. Il lettore attento avrà già intuito che la coppia di chiavi pubblica/privata può essere associata ad una certa entità (in genere un utente) dove la parte pubblica è condivisa e utilizzata dalle altre entità (in genere altri utenti) per rivelare e condividere delle informazioni (in genere chiavi di cifra- tura simmetrica di dati più complessi come file, immagini, ecc.. ). La creazione (o l’aggiornamento ove necessario) di un link asimmetrico può essere effettua- ta utilizzando la chiave pubblica dell’entità target, che sarà l’unica in grado di ottenere l’informazione originale contenuta nel link per mezzo della controparte chiave privata in suo possesso. É chiaro che la sicurezza dei link asimmetrici dipende dalla cura con cui le entità in questione (utenti) maneggiano le proprie chiavi private e ovviamente anche dal particolare algoritmo (e strumenti relativi) che implementa lo schema di cifratura asimmetrico.