Universit`a degli Studi di Catania Nuove Tecniche Crittografiche per

Transcript

Universit`a degli Studi di Catania Nuove Tecniche Crittografiche per
Università degli Studi di Catania
FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI
Corso di Laurea in Informatica
Nelly Fazio
Nuove Tecniche Crittografiche per
le Trasmissioni su Larga Scala
Tesi di Laurea
Relatore:
Chiar.mo Prof. Domenico Cantone
Correlatore:
Chiar.mo Prof. Moni Naor
Anno Accademico 2000–2001
Ad Antonio
Ringraziamenti
Desidero ringraziare il Professore Domenico Cantone, del Dipartimento di Matematica ed Informatica, presso l’Università degli Studi di Catania, che, sempre
disponibile, mi ha offerto la sua costante e chiara guida durante la stesura del
presente lavoro di Tesi, e per avermi dato l’opportunità di svolgere parte della
mia ricerca presso la Stanford University, California, USA.
Ringrazio, inoltre, il Professore Moni Naor, del Department of Computer
Science and Applied Math, presso il Weizmann Institute, Israele, non solo per
avermi subito accolta e fatta sentire a mio agio, ma anche per tutti i preziosi
chiarimenti che ha saputo fornirmi.
Un grazie anche ai miei genitori, che mi hanno sempre sostenuta e incoraggiata in ogni mia scelta.
Infine, un grazie particolare è rivolto ad Antonio, che mi è stato vicino in
ogni momento.
Indice
Elenco delle Figure
Prefazione
1 Broadcast Encryption
vii
ix
1
1.1
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Notazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3
Gli approcci iniziali . . . . . . . . . . . . . . . . . . . . . . . .
6
1.4
I primi risultati . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2 Un framework generale per schemi di Broadcast Encryption 18
2.1
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.2
Subset-Cover Revocation framework . . . . . . . . . . . . . . .
21
2.3
La sicurezza del framework . . . . . . . . . . . . . . . . . . . .
28
3 Due schemi nell’ambito del Subset-Cover framework
43
3.1
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
3.2
Complete Subtree Method . . . . . . . . . . . . . . . . . . . .
46
3.3
Subtree Difference Method . . . . . . . . . . . . . . . . . . . .
56
4 Estensione a Chiave Pubblica
66
4.1
Motivazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
4.2
Similitudini e Differenze . . . . . . . . . . . . . . . . . . . . .
68
4.3
Un Approccio Diretto . . . . . . . . . . . . . . . . . . . . . . .
70
4.3.1
Public Complete Subtree Method . . . . . . . . . . . .
70
4.3.2
Public Subtree Difference Method . . . . . . . . . . . .
71
4.4
Il problema del Public Key File . . . . . . . . . . . . . . . . .
75
4.5
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
A Identity-Based Encryption
81
A.1 Il problema . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
A.2 Lo schema IBE . . . . . . . . . . . . . . . . . . . . . . . . . .
84
A.3 Applicazioni dello schema IBE . . . . . . . . . . . . . . . . . .
86
A.3.1 Revoca di chiavi pubbliche . . . . . . . . . . . . . . . .
86
A.3.2 Delega di compiti . . . . . . . . . . . . . . . . . . . . .
88
Bibliografia
89
Elenco delle figure
1.1
Insieme delle chiavi consegnate all’utente a . . . . . . . . . . .
8
2.1
La sfida di B per la funzione Fk . . . . . . . . . . . . . . . . .
30
2.2
La sfida di B per la funzione EL . . . . . . . . . . . . . . . . .
32
2.3
La sfida di B per una singola chiave Li . . . . . . . . . . . . .
34
2.4
La sfida di B per la lista di chiavi {Li1 , . . . , Lit } . . . . . . . .
36
2.5
L’attacco di B al Broadcast Center . . . . . . . . . . . . . . .
41
3.1
Costruzione della famiglia S con N = 4: S = {S1 , . . . , S7 }
. .
46
3.2
Contenuto dell’informazione Iu : Iu = {L1 , L2 , L5 , L11 } . . . .
47
3.3
Costruzione dell’albero di Steiner ST (V ′ ), con V ′ = {v1 , v2 , v3 }
49
3.4
Costruzione della partizione di T con R = {v1 , v2 , v3 } . . . . .
50
3.5
Configurazione per l’ipotesi d’assurdo (Prop. 3.1) . . . . . . .
51
3.6
Rappresentazione dell’insieme differenza S2 9 . . . . . . . . . .
56
3.7
Calcolo della long-lived key L1 5 relativa all’insieme differenza S1 5 58
3.8
Calcolo di LabelrA ,vj a partire da Iu
. . . . . . . . . . . . .
61
3.9
Labels relative, derivate da Labelui , da includere in Iu . . . .
62
4.1
Esempio di mappatura della funzione ID: S5 ←→ 10 . . . . . .
77
Prefazione
La capillare diffusione della tecnologia delle telecomunicazioni nella nostra società ha portato ad una profonda rivalutazione dell’importanza della informazione, che della comunicazione costituisce l’oggetto. È un dato di fatto oramai
accettato da tutti che l’informazione ha un suo proprio valore, e può pertanto
essere oggetto di compravendita. Tuttavia, l’informazione, per la sua stessa
natura, non è una merce qualunque, perché essa può venire rubata senza che
chi la possiede possa accorgersene.
Risulta pertanto necessario avere a disposizione delle tecniche che consentano di trattare l’informazione, codificandola in modo che essa risulti incomprensibile a chi non abbia il diritto di riceverla: l’elaborazione e la realizzazione
di tali tecniche costituiscono l’oggetto della Crittografia.
A seconda dei vari scenari in cui si necessita di codificare l’informazione, è
possibile definire differenti tecniche crittografiche adatte al particolare contesto; qualora l’informazione da proteggere debba essere trasmessa su larga scala
(come nel caso delle Pay-per-View TV ), la tecnica di codifica prende il nome
di Broadcast Encryption.
Il problema della Broadcast Encryption ha di recente assunto crescente
importanza non solo in ambito accademico, per il complesso di quesiti nuovi
ed interessanti che tale problema pone, ma anche (e soprattutto) in ambito
commerciale ed industriale, per le possibilità di impiegarne le soluzioni nel
campo delle telecomunicazioni e della protezione del copyright.
Scopo di questa Tesi è l’analisi di schemi finalizzati alla protezione dell’informazione in applicazioni che devono garantire la trasmissione di dati solo ad
utenti autorizzati.
L’attenzione sarà principalmente volta ad esaminare uno schema generale
per la definizione e l’analisi di algoritmi che consentano di effettuare trasmissioni su larga scala in presenza di utenti revocati, recentemente proposto da
Naor, Naor e Lotspiech in [NNL01]. Lo studio condotto ha portato all’elaborazione di una estensione di tale schema al contesto della Crittografia a Chiave
Pubblica, utilizzando in maniera originale le interessanti caratteristiche del
nuovo sistema per la criptazione dell’informazione presentato in [BF01].
Capitolo 1
Broadcast Encryption
In questo Capitolo si definisce preliminarmente cosa si intende per Broadcast
Encryption. Dopo una breve descrizione delle notazioni che si useranno, vengono introdotte le principali caratteristiche che un buono schema di Broadcast
Encryption deve avere.
Si passa, infine, ad una breve descrizione dei principali schemi inizialmente
proposti, prestando particolare attenzione allo schema ideato da Berkovits.
1. Broadcast Encryption
1.1
Introduzione
Con il termine Broadcast Encryption (Codifica Segreta di Trasmissioni su Larga Scala) si intende lo studio dell’applicazione dei metodi della Crittografia al
problema della comunicazione ad un vasto insieme di utenti (Broadcast) di
una determinata informazione.
Un tipico scenario di Broadcast è la trasmissione di uno spettacolo televisivo: l’ente preposto alla diffusione (il Broadcast Center ) vuole fare pervenire il
programma a tutta la comunità dei telespettatori. A tal fine, non è necessario
che il Broadcast Center emetta un segnale diverso per ogni utente: è sufficiente un’unica trasmissione, poiché ogni soggetto sarà poi in grado di captare il
segnale e ricevere correttamente l’informazione trasmessa.
Si supponga adesso che il Broadcast Center desideri che solo un sottoinsieme dei suoi utenti sia in grado di interpretare correttamente il segnale emesso,
mentre tutti gli altri soggetti della comunità, sebbene ricevano il segnale, non
riescano ad estrapolarne il contenuto. Nelle più comuni applicazioni pratiche
(come ad esempio i canali televisivi Pay-per-View ) l’insieme privilegiato non
è statico, ovvero fissato una volta per tutte, ma dinamico, potendo variare sia
per dimensione che per composizione, con utenti che possono esserne rimossi
ed altri aggiunti.
2
1. Broadcast Encryption
3
In tali applicazioni, per garantire la segretezza (confidentiality) dell’informazione trasmessa, è possibile utilizzare tecniche crittografiche.
L’analisi dell’applicazione degli strumenti della Crittografia, nell’ambito di un
simile scenario, costituisce il soggetto della Broadcast Encryption [FN93].
1.2
Notazione
Prima di parlare dei possibili approcci alla Broadcast Encryption, si introducono alcune notazioni e termini che si useranno in seguito per rendere più
semplice l’esposizione.
Sia N l’insieme di tutti i possibili utenti in grado di captare il segnale
trasmesso dal Broadcast Center. Sia N la cardinalità di tale insieme, detto
.
anche insieme universo, ovvero N = |N |.
Ogni messaggio M trasmesso dal Broadcast Center è inteso solo per un
sottoinsieme T degli utenti in N , detti utenti autorizzati. I restanti utenti,
detti utenti revocati, formano un insieme che verrà indicato con R, la cui
.
cardinalità sarà denotata con r: r = |R|.
Ovviamente,
T ∩R=∅
T ∪R=N
1. Broadcast Encryption
Uno schema di Broadcast Encryption consiste di tre parti:
1. una fase di inizializzazione, nella quale ad ogni utente u in N viene
assegnata l’informazione segreta Iu che gli permetterà di decifrare il
segnale;
2. un algoritmo di codifica C, che, preso in input l’insieme degli utenti
autorizzati T e il messaggio M, restituisce come output M′ = CT (M),
cioè il segnale che deve essere trasmesso agli utenti in T ;
3. un algoritmo di decodifica D, che, presa in input l’informazione segreta
Iu , consenta ai soli utenti u ∈ T di decifrare il segnale, cioè:




M se u ∈ T ,
′
D(Iu , M ) =



↑ 1 se u 6∈ T .
Per chiave crittografica si intende il parametro in base al quale una funzione di codifica effettua la criptazione di un testo in chiaro nel corrispondente
testo cifrato. In quanto segue, si farà spesso riferimento alle seguenti catagorie
di chiavi di criptazione:
1
Il simbolo ↑ viene usato per indicare che l’algoritmo D restituisce come output una
stringa senza senso o niente.
4
1. Broadcast Encryption
Chiave di Sessione
Si tratta di un particolare tipo di chiave crittografica, generalmente costituita da una sequenza di bits non troppo lunga, ad esempio 56 o 64
bits. Risulta pertanto opportuno utilizzare tale chiave solo per un intervallo di tempo limitato, per evitare che essa possa essere determinata
per mezzo di una ricerca esaustiva. D’altra parte, le funzioni di codifica
che utilizzano chiavi brevi risultano più efficienti, e per tale ragione si
preferisce utilizzare chiavi di sessione per cifrare messaggi molto lunghi.
Long-Lived Key
Contrariamente alle chiavi di sessione, le long-lived keys vengono utilizzate per intervalli di tempo molto lunghi. Esse devono pertanto essere
custodite accuratamente, in quanto la loro esposizione comprometterebbe la sicurezza di tutte le criptazioni effettuate.
Per resistere ad attacchi per “forza bruta”, le long-lived keys constano di
almeno 256 bits, e vengono solitamente utilizzate solo per codificare poca
informazione in maniera molto sicura. Cosı̀ facendo, si evita che un malintenzionato possa accumulare molti testi criptati con la stessa chiave,
il che potrebbe consentirgli di risalire alla long-lived key adoperata.
5
1. Broadcast Encryption
1.3
Gli approcci iniziali
Gli schemi di Broadcast Encryption inizialmente proposti sono troppo diretti
e semplicistici per risultare efficienti ed utilizzabili nella pratica.
Un primo schema prevede una fase di inizializzazione, nella quale viene
assegnata una distinta chiave segreta a ciascun utente dell’universo N . Per
trasmettere un messaggio M, il Broadcast Center concatena tante copie di M
quanti sono gli utenti in T , codificando ciascuna copia con una diversa chiave
segreta.
Il problema di tale soluzione è che la lunghezza del messaggio, che deve
essere trasmesso dal Broadcast Center, è proporzionale non solo alla dimensione del messaggio stesso, ma anche alla cardinalità di T ; piuttosto che una
tecnica di broadcasting, tale schema può essere visto come un modo per unificare più comunicazioni parallele tra il Broadcast Center e ciascuno degli utenti
autorizzati.
Un piccolo miglioramento a tale algoritmo può essere apportato sfruttando
il concetto di chiave di sessione. Ogni qual volta il Broadcast Center deve
emettere un segnale codificato, genera una chiave di sessione k (che utilizzerà
solo per questa trasmissione), la trasmette agli utenti autorizzati sfruttando
6
1. Broadcast Encryption
lo schema precedente e infine invia il segnale codificato con k. Cosı̀ facendo,
viene ridotta la lunghezza complessiva della comunicazione, poiché in tal caso,
ad essere duplicato non è M ma k, che in genere ha dimensione minore.
Nonostante questa piccola ottimizzazione, lo schema resta comunque inefficiente. Ciò perché esso viola il concetto che sta alla base della Broadcast
Encryption; in un vero Schema di Broadcast, il segnale trasmesso contiene la
stessa informazione per tutto l’insieme di utenti. A partire da esso, gli utenti
autorizzati riusciranno a dedurne il messaggio, mentre tutti gli altri utenti ne
ricaveranno al più un nonsenso.
Un secondo schema consiste nell’associare una chiave segreta ad ogni possibile sottoinsieme di N , recapitando ad ogni singolo utente tutte le chiavi
corrispondenti agli insiemi a cui appartiene. In tal modo, qualunque sia l’insieme degli utenti autorizzati alla ricezione della trasmissione, il Broadcast
Center è in grado di codificare il segnale con una chiave nota solo ai destinatari. In tal caso, però, ogni singolo utente ha bisogno di una enorme quantità
di memoria per memorizzare tutte le chiavi.
Nel caso particolare che l’universo sia N = {a, b, c, d}, ogni utente appartiene ad 8 insiemi, come schematizzato nella tabella 1.1.
7
1. Broadcast Encryption
Utente a Utente b Utente c
a
b
c
ab
ab
ac
ac
bc
bc
ad
bd
cd
abc
abc
abc
abd
abd
acd
acd
bcd
bcd
abcd
abcd
abcd
8
Utente d
d
ad
bd
cd
abd
acd
bcd
abcd
Tabella 1.1: Insiemi a cui appartengono i vari utenti
Di conseguenza, ogni utente dovrà memorizzare parecchie chiavi; in Figura 1.1 è raffigurato l’insieme delle chiavi da consegnare all’utente a.
Figura 1.1: Insieme delle chiavi consegnate all’utente a
Dall’analisi delle suddette soluzioni, si evincono i due principali parametri in
base ai quali viene valutata l’efficienza di uno schema di Broadcast Encryption:
• la lunghezza del segnale che deve essere trasmesso;
• la quantità di memoria necessaria ad ogni singolo utente per memorizzare
l’informazione segreta tramite la quale sarà in grado di decodificare i
segnali che è autorizzato a ricevere.
1. Broadcast Encryption
9
Tali proprietà sono chiaramente intrinsecamente in conflitto ed è pertanto
necessario costruire delle soluzioni che creino un compromesso tra il numero di
trasmissioni necessarie al Broadcast Center per inviare le informazioni segrete
ai soli utenti autorizzati, e il numero di chiavi che ogni utente deve possedere
per potere decifrare il segnale trasmesso.
Un’analisi dettagliata della correlazione fra i due parametri è presente in
[LS98], dove gli autori, basandosi su considerazioni di natura combinatoria,
provano che ad un dato upper-bound sul numero di chiavi che ogni utente
deve possedere, corrisponde un lower-bound sul numero di trasmissioni che il
Broadcast Center deve effettuare per trasmettere l’informazione segreta.
Si consideri adesso un terzo schema, nel quale il Broadcast Center genera
preliminarmente una chiave per ogni utente in N . A ciascun utente verranno
recapitate tutte le chiavi appena create, eccetto la sua. Quindi lo spazio di memoria di cui ogni utente ha bisogno è pari a quello necessario per memorizzare
N − 1 chiavi.
In fase di codifica, il Broadcast Center utilizzerà la chiave k ottenuta dallo
xor di tutte le chiavi relative agli utenti revocati:
k=
M
u∈R
ku
1. Broadcast Encryption
Tale schema di codifica assicura che solo gli utenti autorizzati riusciranno
a decifrare il messaggio trasmesso. Infatti, dal momento che ogni utente u
possiede tutte le chiavi tranne ku , e che per ricostruire k sono necessarie tutte
e sole le chiavi degli utenti revocati, risulta che:
• se u è un utente autorizzato (u ∈ T ), la chiave ku che non possiede non
è necessaria per costruire k e quindi potrà decriptare il segnale;
• se invece u è uno degli utenti revocati (u ∈ R), k resta per lui del tutto
indeterminata, in quanto la chiave ku che non gli è stata fornita è proprio
una fra quelle utilizzate dal Broadcast Center per generare tale chiave
di sessione.
Notiamo che con questa tecnica la dimensione del segnale da trasmettere
è proporzionale solo alla lunghezza di k e della codifica di M effettuata per
mezzo di tale chiave k. Inoltre lo spazio di memoria si è notevolmente ridotto;
tuttavia tale schema può essere facilmente violato.
Definizione 1.1. Uno schema di Broadcast Encryption si dice violato se un
utente che non appartiene all’insieme degli utenti autorizzati riesce a decifrare
il segnale trasmesso dal Broadcast Center.
10
1. Broadcast Encryption
11
Consideriamo il seguente scenario: due utenti revocati r1 e r2 decidono di
cooperare nel tentativo di rompere lo schema. Come appena osservato, nessuno dei due, singolarmente, è in grado di decodificare il messaggio trasmesso.
Tuttavia, mettendo insieme le chiavi a loro disposizione, riusciranno a coprire
l’intero insieme di chiavi K, e potranno quindi calcolare k. In simboli:
.
K = {ku | u ∈ N }
.
Kr1 = K \ {kr1 },
.
Kr2 = K \ {kr2 }
Kr1 ∪ Kr2 = K
Alla luce di questo attacco si evince la necessità di definire la sicurezza
del sistema in funzione di un nuovo parametro, che rappresenta il numero di
utenti che devono coalizzarsi per riuscire a violare il sistema stesso.
Definizione 1.2. Uno schema di Broadcast Encryption si dice resilient rispetto ad un insieme S se, comunque si scelga l’insieme T disgiunto da S di
utenti autorizzati, non esiste un avversario2 che, pur conoscendo tutte le informazioni segrete degli utenti in S, riesca a decifrare il segnale trasmesso dal
Broadcast Center agli utenti in T .
Definizione 1.3. Uno schema di Broadcast Encryption si dice t-resilient se è
resilient rispetto ad un qualunque sottoinsieme S di N di cardinalità t.
2
Con il termine avversario si intende un qualunque algoritmo probabilistico polinomiale
sulla lunghezza del messaggio criptato.
1. Broadcast Encryption
1.4
12
I primi risultati
Il primo vero schema di Broadcast Encryption, proposto nel 1991 in [Ber91],
riprende un’idea presentata da Shamir in [Sha79], riadattandola al contesto
delle trasmissioni su larga scala.
Lo schema di Shamir, meglio conosciuto come (s, n)-threshold scheme (schema a soglia “s su n”), consente di frammentare una informazione segreta fra
n partecipanti; più precisamente, mostra come suddividere una certa informazione I in n parti I1 , . . . , In dette shares, in modo tale che:
• la conoscenza di s o più shares, consenta di ricostruire facilmente l’informazione I;
• la conoscenza di s − 1 o meno shares lasci completamente indeterminata3
l’informazione I.
La semplice ed elegante soluzione di Shamir si basa sull’interpolazione polinomiale: dati s punti (x1 , y1 ), . . . , (xs , ys ), con distinte xi , esiste uno e un solo
polinomio P (x) di grado s − 1 tale che risulti:
P (xi ) = yi
3
∀i = 1, . . . , s
Una informazione si dice completamente indeterminata se tutti i suoi possibili valori
sono ugualmente probabili.
1. Broadcast Encryption
13
Per semplicità si supponga che l’informazione I, che deve essere divisa fra
gli n partecipanti, sia un numero. Si scelga inoltre un primo p, più grande
sia di I che di n, che verrà usato come modulo nelle successive operazioni
aritmetiche. Lo schema consta di tre passi:
.
1. si ponga a0 = I, si scelgano dei coefficienti ai distribuiti uniformemente
in [0, p − 1] con as−1 6= 0, e si definisca il polinomio di grado s − 1:
P (x) = a0 + a1 x + · · · + as−1 xs−1
mod p
2. si calcolino n valori del polinomio P :
I1 = P (1), . . . , In = P (n)
3. si distribuiscano le shares cosı̀ ottenute agli n partecipanti.
Utilizzando tecniche di interpolazione è possibile, conoscendo s shares, trovare i coefficienti di P (x) e quindi calcolare P (0), ovvero l’informazione segreta
I. Avere a disposizione, invece, soltanto s−1 shares non consente di ricostruire
il polinomio P (x), per cui il valore di I resta del tutto ignoto.
Tale schema (s, n)-threshold possiede alcune interessanti proprietà:
• la dimensione di ogni singola share non supera la dimensione dell’informazione originaria I;
1. Broadcast Encryption
• se la soglia s rimane fissa, è possibile aumentare il numero dei partecipanti senza dovere sostituire le shares già distribuite, semplicemente
calcolando il polinomio P (x) su altri xi ;
• per ottenere una maggiore sicurezza del sistema è possibile cambiare
periodicamente tutte le Ii , senza che questo comporti una modifica dell’informazione originaria I: basta infatti definire un nuovo polinomio
P (x) e ricalcolare i nuovi valori delle shares.
La difficoltà principale per adattare lo schema (s, n)-threshold alla Broadcast Encryption sta nel fatto che l’informazione segreta deve essere assegnata
ad ogni partecipante nella fase di inizializzazione, a prescindere da quali saranno i messaggi da trasmettere. Per risolvere tale problema, Berkovits pensò
di assegnare delle pseudo-shares Ii a tutti gli utenti u ∈ N prima di costruire
lo schema vero e proprio, che invece verrà creato modellandolo sul segreto e
sull’insieme di utenti autorizzati relativi alle diverse trasmissioni.
Nella fase di inizializzazione, il Broadcast Center genera m ≫ n pseudoshares, e ne assegna una diversa ad ogni utente u ∈ N , quale informazione
Iu . Delle rimanenti pseudo-shares, j verranno utilizzate dal Broadcast Center
per garantire un maggiore grado di sicurezza al sistema: se, infatti, dovrà
essere rispedito lo stesso messaggio al medesimo insieme di utenti, la casualità
14
1. Broadcast Encryption
introdotta da questi ulteriori j pseudo-shares rende possibile la costruzione di
un nuovo schema e quindi la trasmissione di un segnale totalmente differente.
.
Per spedire il messaggio I all’insieme T di utenti autorizzati (sia s = |T |),
il Broadcast Center deve:
1. scegliere j ≥ 0;
2. creare uno schema (s + j + 1, 2s + j + 1)-threshold tale che
(a) l’informazione segreta sia I;
(b) le pseudo-shares Ii di tutti gli utenti u ∈ T siano valide;
(c) le pseudo-shares Ii di tutti gli utenti u ∈ R siano escluse;
(d) siano considerate valide anche j shares, scelte in modo casuale, ma
diverse da quelle già assegnate agli utenti u ∈ N .
3. mandare in broadcast s + j shares, scelte in modo casuale, ma tutte
diverse da quelle usate nei passi precedenti.
Ogni utente u aggiunge alla sua pseudo-share contenuta in Iu , le s + j shares
ricevute dalla trasmissione. Se u è uno degli utenti autorizzati, avrà esattamente le s + j + 1 shares necessarie per il calcolo dell’informazione segreta I,
altrimenti non riuscirà a decifrare messaggio.
15
1. Broadcast Encryption
In [Ber91], Berkovits mostra come applicare tale tecnica allo schema di
interpolazione di Shamir. In tal caso, le pseudo-shares assegnate ad ogni utente
in fase di inizializzazione sono punti (xi , yi ), con distinte xi .
Per trasmettere un segnale, il Broadcast Center deve:
1. scegliere j punti (xi , yi ), con xi distinte da quelle dei punti già memorizzati nelle Iu relative agli utenti u ∈ N ;
2. determinare un polinomio P (x) di grado s + j che:
(a) passi per (0, I),
(b) passi per gli s punti (xi , yi ) relativi agli utenti autorizzati e per i j
punti dummy appartenenti al Broadcast Center,
(c) non passi per i punti (xi , yi ) relativi agli utenti revocati;
3. scegliere e trasmettere ulteriori s + j punti appartenenti a P (x).
Ma come essere sicuri che il Broadcast Center riuscirà sempre a trovare un
polinomio P (x) che soddisfi tutte le suddette caratteristiche?
Una possibile soluzione è quella di scegliere tutti i punti con yi = b, per un
determinato b. Sotto queste ipotesi, infatti, il Teorema di Rolle garantisce
l’esistenza di uno e uno solo polinomio P (x) di grado s + j che passi per i
16
1. Broadcast Encryption
punti desiderati, e che soddisfi anche la condizione in 2c. In tale caso, le
pseudo-shares si riducono soltanto al valore delle xi , poiché il valore di b può
essere incluso in ogni trasmissione dal Broadcast Center, il quale può decidere
di cambiarlo periodicamente, aumentando cosı̀ la sicurezza del sistema.
17
Capitolo 2
Un framework generale per
schemi di Broadcast Encryption
Sono molteplici i vantaggi che derivano dall’utilizzo di un modello unificante, soprattutto in termini dell’analisi di sicurezza. Per tale motivo, in questo
Capitolo si esamina un framework generale, descrivendone in dettaglio le caratteristiche e le proprietà. Inizialmente, si espone lo scheletro di base della
generica soluzione inquadrabile all’interno del framework. Successivamente, si
definisce la nozione di sicurezza per uno schema di Broadcast Encryption e si
evidenzia infine come tale proprietà derivi direttamente dalla sicurezza delle
sue singole componenti.
2. Un framework generale per schemi di Broadcast Encryption
2.1
Introduzione
In letteratura sono note più di una soluzione al problema della Broadcast
Encryption, ciascuna delle quali presenta dei vantaggi e degli svantaggi [LS98,
GSY99, BF99, GSW00]. Di conseguenza, per decidere quale schema si adatti
meglio alla particolare applicazione che si vuole realizzare, è necessario valutarne i pro e i contro nel contesto dello scenario in esame. Tuttavia, ciò
risulta difficile quando le varie alternative sono costruite in maniera del tutto
differente e la loro sicurezza riguarda aspetti diversi del problema.
Per queste ragioni, lo schema generale recentemente proposto in [NNL01]
risulta particolarmente interessante: esso permette di inquadrare svariati schemi di broadcasting in un framework unificante, consentendo cosı̀ non solo di
confrontare fra loro le varie soluzioni, ma anche di trattarne la sicurezza in maniera più uniforme, nonché di apportare ad esse dei miglioramenti con minore
difficoltà.
Il framework in questione consente di analizzare schemi di broadcasting nei
quali i singoli utenti siano assimilabili a degli stateless receivers (“destinatari
senza memoria”). Con tale terminologia ci si riferisce a scenari in cui la decriptazione del segreto non dipende dai messaggi ricevuti in precedenza, ma
19
2. Un framework generale per schemi di Broadcast Encryption
soltanto dal segnale inviato dal Broadcast Center nella corrente trasmissione,
e dalla informazione Iu posseduta dal singolo destinatario.
Il concetto di stateless receivers è particolarmente utile nelle situazioni in
cui il destinatario del segnale trasmesso sia un dispositivo non costantemente
on-line. Applicazioni tipiche sono quelle relative alla protezione del copyright,
come ad esempio la registrazione e la distribuzione di CD musicali.
In tale scenario il Broadcast Center (che nel caso particolare è la Casa Discografica), memorizza, in modo criptato secondo uno schema di broadcasting,
l’informazione (ovvero i vari brani musicali) nei CD, che verranno acquistati
dal pubblico interessato. Ogni utente dovrà quindi possedere un lettore CD
abilitato alla riproduzione di questi brani, che gli consentirà quindi di decifrare
i dati contenuti nel CD, e di interpretarne correttamente il contenuto.
20
2. Un framework generale per schemi di Broadcast Encryption
2.2
Subset-Cover Revocation framework
Lo schema proposto in [NNL01] è noto con il nome di Subset-Cover Revocation
framework, cioè “Schema di Revocazione via Copertura per Sottoinsiemi”.
Tale denominazione deriva dalla tecnica che lo caratterizza, ovvero l’esclusione
degli utenti non autorizzati per mezzo di una specifica copertura dell’insieme
N che comprenda soltanto gli utenti appartenenti a T .
Si consideri una famiglia S, sottoinsieme dell’insieme delle parti di N ,
ovvero sia S una collezione di sottoinsiemi di N :
S ⊆ P(N ),
S = {S1 , . . . , Sw | Sj ⊆ N , j = 1, . . . , w} .
Tale famiglia S, diversa a seconda del particolare schema che si vuole definire nell’ambito del framework, può anche essere molto numerosa, ma la sua
dimensione, anche se considerevole, non è da considerarsi di per sè un aspetto
negativo della soluzione in questione, in quanto spesso è possibile definire la
famiglia S in maniera implicita, senza mantenerla direttamente in memoria.
Si noti piuttosto che maggiore è la cardinalità di tale famiglia, più semplice
ed efficace risulta l’individuazione della partizione per ricoprire T . D’altro
canto, però, ogni qualvolta si definisce un nuovo schema, bisogna specificare
un metodo semplice e diretto che consenta di individuare in modo univoco gli
insiemi Sj ∈ S.
21
2. Un framework generale per schemi di Broadcast Encryption
Per tali ragioni, la scelta della famiglia S e di una tecnica succinta per
denotarne gli elementi è uno dei fattori qualificanti nella costruzione di un
nuovo schema di broadcasting che risulti efficiente.
Ad ogni sottoinsieme Sj è associata una long-lived key Lj , dalla segretezza
della quale dipende la sicurezza dell’intero sistema. Tali chiavi sono utilizzate
per criptare le varie chiavi di sessione, inviate agli utenti autorizzati nelle
diverse trasmissioni. Ciò può essere formalizzato definendo una funzione di
criptazione, parametrizzata dalle chiavi Lj :
ELj : {0, 1}ℓ −→ {0, 1}ℓ
che prende in input una chiave di sessione di lunghezza ℓ, e restituisce una sua
criptazione di pari lunghezza. La funzione EL sarà generalmente implementata come un Cifrario a blocchi, poiché essa è utilizzata per criptare chiavi di
sessione la cui lunghezza in bits, pari a ℓ, viene fissata una volta per tutte.
Noto l’insieme R degli utenti revocati, bisogna individuare una copertura
di T , che faccia però uso soltanto degli insiemi Sj ∈ S. In altri termini è
necessario determinare una partizione dell’insieme T in sottoinsiemi disgiunti
Si1 , . . . , Sim , appartenenti a S, tali che:
T =
m
[
j=1
Sij ,
Sij1 ∩ Sij2 = ∅ , j1 6= j2 .
22
2. Un framework generale per schemi di Broadcast Encryption
Una volta effettuata la copertura dell’insieme degli utenti autorizzati, si
seleziona in maniera casuale una chiave di sessione k e si effettuano m codifiche di essa, utilizzando la funzione di criptazione EL parametrizzata con le
long-lived keys Li1 , . . . , Lim relative ai sottoinsiemi Sij della partizione sopra
individuata:
Cj = ELij (k) ,
j = 1, . . . , m .
La chiave k viene quindi utilizzata solo per codificare il messaggio oggetto del
broadcasting, e distrutta subito dopo. La criptazione avviene utilizzando un
Cifrario a sequenza:
Fk : {0, 1}∗ −→ {0, 1}∗
che preso in input un messaggio M, genera un messaggio cifrato M′ di dimensioni pari a quelle del messaggio in chiaro.
La sicurezza di tale cifrario può essere più debole rispetto a quella di EL , in
quanto esso viene utilizzato con chiavi di sessione, la cui esposizione non compromette l’intero sistema, ma soltanto il messaggio in oggetto. Ciò permette di
utilizzare chiavi di sessione k di dimensioni molto più ridotte rispetto a quelle
delle Lj , con conseguente riduzione della lunghezza dell’intera trasmissione.
23
2. Un framework generale per schemi di Broadcast Encryption
Come già definito nel Capitolo 1, ogni schema di Broadcast Encryption è
costituito da tre parti; si consideri adesso come questa suddivisione si riflette
nell’ambito del framework in questione.
1. Nella fase di inizializzazione bisogna innanzitutto definire la famiglia S,
una tecnica per denotarne gli elementi Sj e un metodo per associare ad
ognuno di essi una long-lived key Lj . Si deve inoltre assegnare un’opportuna informazione segreta Iu ad ogni utente u ∈ N , che gli consenta
di ricavare le long-lived keys relative a tutti gli insieme Sj ai quali egli
appartiene:
∀ u ∈ N, ∀ 1 ≤ i ≤ w
(u ∈ Sj ) ⇒ (Iu (Sj ) = Lj ) .
2. L’algoritmo di codifica è quello utilizzato dal Broadcast Center per trasmettere il segnale all’insieme degli utenti autorizzati.
Il Broadcast
Center deve:
• scegliere la chiave di sessione k;
• individuare l’insieme T e determinarne una partizione utilizzando
solo gli insiemi Si1 , . . . , Sim appartenenti ad S;
• effettuare una criptazione della chiave k con ciascuna delle longlived keys associate agli insiemi che costituiscono la partizione individuata al punto precedente;
24
2. Un framework generale per schemi di Broadcast Encryption
• mandare in broadcast il segnale:
h [i1 , . . . , im , ELi1 (k), . . . , ELim (k)],
{z
}
|
header
Fk (M ) i .
| {z }
body
L’header comprende gli indici degli insiemi della partizione di T
e le m codifiche della chiave k con le diverse Lj . Il body, invece,
è costituito semplicemente dalla criptazione del messaggio vero e
proprio per mezzo della chiave di sessione k.
3. L’algoritmo di decodifica è invece quello usato da ogni utente per tentare
di decifrare il segnale che ha captato, cioè:
h [i1 , . . . , im , C1 , . . . , Cm ], M ′ i .
Ogni utente u ∈ N deve:
• esaminare gli indici ij presenti nello header al fine di determinare
quell’ij̄ tale che risulti u ∈ Sij̄ . Dal momento che gli Sij costituiscono una partizione di T , questa operazione avrà successo solo se
u ∈ T (nel qual caso l’indice ij̄ adatto è unico); se invece u ∈ R
nessun indice presenterà le caratteristiche richieste e l’algoritmo di
decodifica fallirà.
• utilizzando l’informazione segreta Iu , determinare la chiave Lij̄ associata ad Sij̄ ;
25
2. Un framework generale per schemi di Broadcast Encryption
• calcolare k = EL−1i (Cj̄ ) ;
j̄
• calcolare M = Fk−1 (M ′ ) .
Le varie soluzioni al problema della Broadcast Encryption, modellate all’interno del framework in esame, differiscono fra loro per il modo in cui affrontano
e realizzano i seguenti punti:
• scelta della famiglia S = {S1 , . . . , Sw };
• metodo per denotarne gli elementi;
• associazione di una long-lived key Lj ad ogni Sj , j = 1, . . . , w;
• tecnica per determinare la partizione dell’insieme T ;
• tecnica che consenta ad ogni utente u ∈ N di risalire, a partire dalla
propria informazione segreta Iu , alla chiave Lj associata a qualunque
insieme Sj a cui esso appartiene;
• implementazione delle funzioni EL ed Fk .
È chiaro che tutti gli schemi proposti nell’ambito di questo framework
presenteranno sempre caratteristiche molto simili: come riuscire quindi a dare
un giudizio qualificativo per ognuno di essi?
26
2. Un framework generale per schemi di Broadcast Encryption
Nel valutare le varie soluzioni, verranno utilizzati come fattori discriminanti
i seguenti parametri:
1. Lunghezza del segnale trasmesso dal Broadcast Center: essa è dovuta
non solo alla lunghezza del messaggio M, ma anche (e soprattutto) alla
dimensione dell’header, che dipende perlopiù dal cifrario EL e dalla lunghezza della chiave di sessione che con esso viene cifrata.
Si noti che tale parametro è fortemente legato alla scelta di S, in quanto, maggiore sarà la sua dimensione, più efficiente (ovvero di minore
cardinalità) sarà la partizione individuata.
2. Memoria necessaria alla memorizzazione di Iu : come è facilmente intuibile, bisogna minimizzare tale parametro, poichè spesso tale informazione
dovrà essere contenuta in un dispositivo con risorse limitate, come ad
esempio un decoder o una smartcard.
3. Tempo di decodifica del segnale: per le stesse ragioni sopra esposte, è
preferibile disporre di un algoritmo di decodifica che renda l’operazione
di decriptazione del segnale veloce ed efficiente, al fine di non appesantire
eccessivamente il sistema di calcolo disponibile al singolo utente.
27
2. Un framework generale per schemi di Broadcast Encryption
Si osservi che la memoria richiesta dal Broadcast Center e il tempo necessario per la codifica del segnale da trasmettere non sono dei fattori determinanti
per valutare l’efficienza dello schema, poichè tipicamente il Broadcast Center
dispone di notevoli risorse e comunque tali operazioni possono essere effettuate
in una fase di preprocessing.
2.3
La sicurezza del framework
Uno degli aspetti più positivi dell’utilizzo di un framework generale è la possibilità di analizzare in modo semplice e uniforme la sicurezza di ogni soluzione
che rientri in questo schema. Elaborata una definizione precisa di cosa si intenda per “schema di Broadcast Encryption sicuro”, è possibile stabilire quali
caratteristiche debbano essere esibite dalle varie componenti di una particolare
soluzione, affinché lo schema soddisfi la data nozione di sicurezza.
Per potere definire i parametri di sicurezza, occorre introdurre un modello
per la Spia, che verrà sempre intesa come un Riconoscitore o Distinguisher.
Si considerino due “mondi”, in ognuno dei quali vi è un diverso oracolo O, che
risponde correttamente ad ogni domanda, senza però mai rivelare l’algoritmo
che lo caratterizza. Si supponga quindi di mettere la Spia in uno dei due mondi
28
2. Un framework generale per schemi di Broadcast Encryption
e di chiederle di capire in quale dei due si trova. Per vincere tale sfida, la Spia
è autorizzata a porre ad O un qualunque numero di domande, purché fornisca
una risposta in un tempo ragionevolmente breve.1
La seguente proprietà risulta essere un fattore discriminante per la sicurezza
dello schema, poiché si proverà che, se lo schema soddisfa tale proprietà, allora
la trasmissione del segnale avverrà in modo sicuro.
Definizione 2.1 (Indistinguibilità delle chiavi). Uno schema gode della
proprietà di indistinguibilità delle chiavi se, per qualunque insieme Si ∈ S, la
conoscenza delle informazioni segrete Iu di tutti gli utenti u non appartenenti
ad Si , non consente di distinguere la chiave Li associata ad Si da una stringa
completamente random di pari lunghezza.
Si esaminino adesso le due funzioni di codifica utilizzate nel framework
per cifrare i segnali da trasmettere. I requisiti di sicurezza che esse dovranno
soddisfare saranno fra loro differenti poiché, come già precedentemente notato,
Fk e EL utilizzano per la codifica chiavi con caratteristiche molto diverse. In
entrambi i casi, però, la sicurezza è definita in termini della probabilità che la
Spia riesca a distinguere fra i due mondi relativi ad una opportuna sfida.
1
La quantificazione del tempo concesso alla Spia per distinguere fra i due “mondi” può
essere formalizzata in termini della nozione di tempo polinomiale rispetto ad un opportuno
parametro, diverso da scenario a scenario.
29
2. Un framework generale per schemi di Broadcast Encryption
Per definire la sicurezza di Fk , si consideri un avversario polinomiale B
all’interno del seguente scenario:
• si fissi una data chiave random k di lunghezza ℓ, ignota alla Spia;
• B sceglie, a sua discrezione, un messaggio M;
• B ottiene un testo cifrato C e viene posto di fronte alla seguente sfida:
riuscire a distinguere se C è la codifica del messaggio M da lui scelto o quella di un messaggio completamente casuale RM , della stessa
lunghezza di M (Fig. 2.1).
Mondo 1
Mondo 2
C = Fk (M)
C = Fk (RM )
con k ∈ {0, 1}ℓ e |RM | = |M|
Figura 2.1: La sfida di B per la funzione Fk
Sia P r(M) la probabilità che B risponda Fk (M), supposto che effettivamente B si trovi nel Mondo 1 , (ovvero sia P r(M) la probabilità di scelta
corretta):
P r(M) = P r[B scelga Fk (M) | Fk (M)] .
30
2. Un framework generale per schemi di Broadcast Encryption
Sia P r(RM ) la probabilità che B risponda Fk (M), supposto invece che B
si trovi nel Mondo 2, (ovvero sia P r(RM ) la probabilità di scelta scorretta):
P r(RM ) = P r[B scelga Fk (M) | Fk (RM )] .
L’abilità di B di distinguere fra i due mondi può essere formulata in termini
delle suddette probabilità, considerando la quantità |P r(M) − P r(RM )|.
Definizione 2.2. Si definisce vantaggio dell’avversario B rispetto alla funzione
Fk , la differenza:
AdvB (Fk ) = |P r(M) − P r(RM )| .
Definizione 2.3 (Sicurezza della funzione Fk ). Si dice che la funzione Fk
è ε1 -sicura nei confronti di un avversario che agisce come sopra, se il vantaggio
di B è trascurabile2 ed è limitato da ε1 :
AdvB (Fk ) ≤ ε1 .
Per definire la sicurezza della funzione EL , si consideri un avversario polinomiale B all’interno del seguente scenario:
• si fissi una data chiave random L, ignota alla Spia;
• B sceglie un numero polinomiale di testi in chiaro (cioè chiavi di sessione),
e per ognuno di essi ottiene la codifica con EL ;
2
Per trascurabile si intende che il vantaggio, in funzione di ℓ, va a zero più velocemente
di qualunque frazione polinomiale in ℓ: 1/p(ℓ)
31
2. Un framework generale per schemi di Broadcast Encryption
• B sceglie un numero polinomiale di testi codificati, e per ognuno di essi
ottiene la decodifica con EL−1 ;
• si fissi una data chiave di sessione k random, di lunghezza ℓ, e la si
comunichi alla Spia;
• B ottiene un testo cifrato C e viene posto di fronte alla seguente sfida:
riuscire a distinguere se C è la codifica di k o la codifica di una chiave di
sessione completamente casuale Rk , di lunghezza ℓ (Fig. 2.2).
Mondo 1
Mondo 2
C = EL (k)
C = EL (Rk )
con L ∈ {0, 1}∗ e |Rk | = ℓ
Figura 2.2: La sfida di B per la funzione EL
Sia P r(k) la probabilità che B risponda EL (k), supposto che effettivamente
si trovi nel Mondo 1 :
P r(k) = P r[B scelga EL (k) | EL (k)] .
Sia P r(Rk ) la probabilità che B risponda EL (k), supposto che invece si
trovi nel Mondo 2 :
P r(Rk ) = P r[B scelga EL (k) | EL (Rk )] .
32
2. Un framework generale per schemi di Broadcast Encryption
Definizione 2.4. Si definisce vantaggio dell’avversario B rispetto alla funzione
EL , la differenza:
AdvB (EL ) = |P r(k) − P r(Rk )| .
Definizione 2.5 (Sicurezza della funzione EL ). Si dice che la funzione EL
è ε2 -sicura nei confronti di un avversario che agisce come sopra, se il vantaggio
di B è trascurabile ed è limitato da ε2 :
AdvB (EL ) ≤ ε2 .
Si passa adesso a definire la sicurezza di un schema Subset-Cover A, con
S = {S1 , . . . , Sw }, in termini di un avversario polinomiale B all’interno del
seguente scenario:
• B sceglie un indice i, 1 ≤ i ≤ w;
• B ottiene le informazioni segrete Iu di tutti gli utenti u non appartenenti
ad Si ;
• B ottiene una stringa di bits X e viene posto di fronte alla seguente
sfida: riuscire a distinguere se X è la long-lived key Li associata a Si
o una chiave completamente casuale RLi , della stessa lunghezza di Li
(Fig. 2.3).
33
2. Un framework generale per schemi di Broadcast Encryption
Mondo 1
Mondo 2
X = Li
X = RLi
con |RLi | = |Li |
Figura 2.3: La sfida di B per una singola chiave Li
Sia P r(Li ) la probabilità che B risponda Li , supposto che effettivamente
si trovi nel Mondo 1 :
P r(Li ) = P r[B scelga Li | Li ] .
Sia P r(RLi ) la probabilità che B risponda Li , supposto che invece si trovi
nel Mondo 2 :
P r(RLi ) = P r[B scelga Li | RLi ] .
Definizione 2.6. Si definisce vantaggio dell’avversario B rispetto ad una
singola chiave Li , la differenza:
AdvB (Li ) = |P r(Li ) − P r(RLi )| .
Definizione 2.7 (Indistinguibilità delle chiavi nel modello della Spia).
Si dice che uno schema Subset-Cover A soddisfa la proprietà dell’indistinguibilità delle chiavi se il vantaggio di B è trascurabile ed è limitato da ε3 :
AdvB (Li ) ≤ ε3 .
34
2. Un framework generale per schemi di Broadcast Encryption
Si tratta di una riformulazione della proprietà di indistinguibilità delle
chiavi (Definizione 2.1), rielaborata in termini del modello della Spia.
Uno schema Subset-Cover A che soddisfa la proprità dell’indistinguibilità
delle chiavi nella formulazione della Definizione 2.7, soddisfa anche una forma estesa di indistinguibilità, esprimibile in termini del seguente avversario
polinomiale B:
• B sceglie i, 1 ≤ i ≤ w;
• B riceve le informazioni segrete Iu , ∀u ∈ N \ Si ;
• si denotino con {Si1 , . . . , Sit } i sottoinsiemi di Si appartenenti anch’essi
alla famiglia S, cioè {Si1 , . . . , Sit } = P(Si ) ∩ S;
• siano Li1 , . . . , Lit le long-lived keys relative a {Si1 , . . . , Sit };
• B ottiene una lista X1 , . . . , Xt di stringhe di bits e viene posto di fronte
la seguente sfida: riuscire a distinguere se la lista X1 , . . . , Xt corrisponde alla sequenza di chiavi Li1 , . . . , Lit o alla sequenza RLi1 , . . . , RLit di
numeri random di pari lunghezza (Fig. 2.4).
Sia P r(Li1 , . . . , Lit ) la probabilità che B risponda Li1 , . . . , Lit , supposto che
effettivamente si trovi nel Mondo 1 :
P r(Li1 , . . . , Lit ) = P r[B scelga Li1 , . . . , Lit | Li1 , . . . , Lit ]
35
2. Un framework generale per schemi di Broadcast Encryption
Mondo 1
Mondo 2
X1 , . . . , Xt = Li1 , . . . , Lit
X1 , . . . , Xt = RLi1 , . . . , RLit
con |RLj | = |Lj |, j = 1, . . . , t
Figura 2.4: La sfida di B per la lista di chiavi {Li1 , . . . , Lit }
Sia P r(RLi1 , . . . , RLit ) la probabilità che B risponda Li1 , . . . , Lit , supposto
che invece si trovi nel Mondo 2 :
P r(RLi1 , . . . , RLit ) = P r[B scelga Li1 , . . . , Lit | RLi1 , . . . , RLit ] .
Definizione 2.8. Si definisce vantaggio dell’avversario B rispetto ad una lista
di chiavi Li1 , . . . , Lit , la differenza:
AdvB (Li1 , . . . , Lit ) = |P r(Li1 , . . . , Lit ) − P r(RLi1 , . . . , RLit )| .
Lemma 2.1. Sia A uno schema Subset-Cover che soddisfa la proprietà dell’indistinguibilità delle chiavi. Allora per qualunque avversario polinomiale B
che agisce come sopra, risulta
AdvB (Li1 , . . . , Lit ) ≤ t · ε3 .
Dimostrazione. Si rinominino, per semplicità, Si1 , . . . , Sit con S1 , . . . , St riordinandoli rispetto alla loro dimensione:
| S1 | ≥ | S2 | ≥ . . . ≥ | St |
36
2. Un framework generale per schemi di Broadcast Encryption
37
Si consideri la seguente particolare lista, detta lista di tipo j:
L1 , . . . , Lj , RLj+1 , . . . , RLt
costituita dalle chiavi L1 , . . . , Lj , seguite da t − j chiavi generate in modo
casuale.
Sia pj la probabilità che B riconosca una lista di tipo j:
pj = P r[B risponda ‘1’ | L1 , . . . , Lj , RLj+1 , . . . , RLt ] .
Conseguentemente:
p0 = P r[B risponda ‘1’ | RL1 , . . . , RLt ] ,
pt = P r[B risponda ‘1’ | L1 , . . . , Lt ] .
È possibile riformulare la tesi, in termini di tale probabilità, come segue:
| p t − p0 | ≤ t · ε3 .
Si supponga, per assurdo, che la tesi non sia vera, esista cioè un avversario
polinomiale B che distingua i due mondi, ovvero:
| p t − p0 | ≥ t · ε3 .
Deve pertanto esistere un indice j, tale che risulti
| pj − pj−1 | > ε3
(∗)
2. Un framework generale per schemi di Broadcast Encryption
ovvero B riesce a distinguere fra una lista di tipo j e una di tipo j − 1 con
vantaggio ε3 .
Si vuole costruire un avversario B′ che, sfruttando le capacità di calcolo di
B, riesca a distinguere fra Lj e RLj con probabilità maggiore di ε3 , contraddicendo cosı̀ l’ipotesi che A soddisfa la proprietà di indistinguibilità delle chiavi,
arrivando quindi all’assurdo.
L’avversario B′ ricalca le azioni di B, operando come segue:
• in corrispondenza della scelta di Si effettuata da B, B′ seleziona Sj ⊆ Si ,
tale che risulti |pj −pj−1 | > ε3 . Si noti che se Sj ⊆ Si allora N \Sj ⊇ N \Si
e quindi, dal momento che B′ dispone delle informazioni segrete Iu di
tutti gli u ∈ N \ Sj , può fornire a B le Iu relative a tutti gli utenti
u ∈ N \ Si ;
• per riuscire a distinguere fra Lj e RLj , B′ chiede a B di distinguere fra i
due mondi, uno consistente in una lista di tipo j:
L1 , . . . , Lj−1 , Lj , RLj+1 , . . . , RLt ,
e l’altro consistente in una lista di tipo j − 1:
L1 , . . . , Lj−1 , RLj , RLj+1 , . . . , RLt .
38
2. Un framework generale per schemi di Broadcast Encryption
Nota. Tali liste possono sicuramente essere costruite da B′ , poiché egli è
in grado di ricavare le chiavi L1 , . . . , Lj−1 e di scegliere in modo casuale
RLj+1 , . . . , RLt . Infatti, poiché | S1 | ≥ | Sj | è ovvio che S1 6⊂ Sj . Pertanto S1 \ Sj 6= ∅, ovvero S1 ∩ (N \ Sj ) 6= ∅. È quindi lecito dire che esiste
un utente u1 ∈ (S1 ∩ (N \ Sj )). Dal fatto che u1 ∈ (N \ Sj ), segue che B′
conosce Iu1 , dalla quale riuscirà a ricavare la long-lived key L1 associata a S1
a cui u1 appartiene. In definitiva B ′ conosce L1 ; analogamente, B′ conosce
L2 , . . . , Lj−1 .
Si osservi che le due liste create da B′ differiscono proprio nella posizione
j, dove si trovano rispettivamente Lj e RLj : quindi la risposta di B consentirà a B′ di distinguere fra i due mondi. Pertanto il vantaggio che B′ ha nel
distinguere fra Lj e RLj è lo stesso di quello che B ha nel distinguere fra una
lista di tipo j e una di tipo j − 1 che, per la (*), risulta essere maggiore di ε3 .
Si ottiene quindi che la probabilità di risposta corretta di B′ è maggiore di ε3 ,
pervenendo cosı̀ ad un assurdo.
Nel definire la nozione di sicurezza per una applicazione crittografica, è
bene essere molto “generosi” nelle assunzioni circa il potere di calcolo e di
manipolazione dell’avversario, di modo da trovarsi al riparo dagli attacchi
crittoanalitici condotti da un avversario reale.
39
2. Un framework generale per schemi di Broadcast Encryption
Si assume, pertanto, che la Spia sia in grado di:
1. ottenere delle informazioni segrete Iu corrompendo degli utenti u ∈ N ;
2. richiedere al Broadcast Center di trasmettere un messaggio a sua scelta;
3. inviare dei messaggi falsi, opportunamente costruiti, a degli utenti autorizzati e vedere il risultato del loro tentativo di decodifica.
Per modellare una tale Spia nell’ambito del framework in questione, si
considera un avversario polinomiale B che:
1. sceglie un sottoinsieme R0 di N e un messaggio opportunamente costruito M0 , e chiede al Broadcast Center di effettuarne la trasmissione
all’insieme di utenti N \R0 per esaminarne la codifica. Successivamente,
crea un segnale fasullo e ne analizza la decodifica da parte di un qualunque utente u ∈ N \ R0 . A questo punto, seleziona un utente u1 e
decide di corromperlo, venendo cosı̀ a conoscenza della relativa informazione segreta Iu1 . Considera adesso R1 = {u1 }, e un sottoinsieme di N ,
′
R1 ⊃ R1 e ricomincia di nuovo, corrompendo di volta in volta un utente
diverso, fino a costruire l’insieme R.
40
2. Un framework generale per schemi di Broadcast Encryption
2. sceglie un messaggio M e chiede al Broadcast Center la codifica M′ di
esso. Stavolta, però, il Broadcast Center può decidere di criptare M o
un messaggio casuale RM , di pari lunghezza. Quindi B viene posto di
fronte alla seguente sfida: riuscire a capire se il segnale M′ corrisponde
alla codifica di M o RM (Fig. 2.5).
Figura 2.5: L’attacco di B al Broadcast Center
41
2. Un framework generale per schemi di Broadcast Encryption
Definizione 2.9 (Sicurezza di uno schema Subset-Cover). Uno schema
Subset-Cover è detto sicuro se, qualunque avversario polinomiale B che agisce
come sopra, ha probabilità di successo trascurabile.
Il seguente importante Teorema prova come la sicurezza dell’intero schema
dipenda dai requisiti di sicurezza (definiti in precedenza) relativi alle varie
componenti che lo costituiscono.
Teorema 2.2 (Il Teorema di Sicurezza). Sia A uno schema Subset-Cover
che gode della proprietà di indistinguibilità delle chiavi, con funzioni di codifica
Fk e EL rispettivamente soddisfacenti le Definizioni 2.3 e 2.5. Allora A è
sicuro nel senso della Definizione 2.9 con parametro di sicurezza
δ < ε1 + 2 m w(ε2 + 4 w ε3 )
dove w è la cardinalità della famiglia S e m è la massima dimensione della
copertura di T .
Dimostrazione. Per la dimostrazione si rimanda a [NNL01].
42
Capitolo 3
Due schemi nell’ambito del
Subset-Cover framework
Per apprezzare l’utilità del Subset-Cover framework, in questo Capitolo si introducono due particolari soluzioni realizzate seguendone i criteri caratteristici.
La prima soluzione, il Complete Subtree Method, si basa su di una tecnica
information theoretic per l’assegnazione delle chiavi: ne deriva uno schema
semplice, ma poco efficiente in termini di memoria richiesta ad ogni utente.
Il Subset Difference Method, invece, permette di partizionare l’insieme degli utenti autorizzati in maniera più efficiente, consentendo cosı̀ al Broadcast
Center di trasmettere dei segnali più compatti. Per contro, i riceventi saranno
gravati da un maggiore carico computazionale in fase di decodifica.
3. Due schemi nell’ambito del Subset-Cover framework
3.1
Introduzione
Per chiarire ulteriormente il funzionamento del framework generale presentato
nel Capitolo precedente, si passa adesso ad esaminare due particolari soluzioni
per il problema della Broadcast Encryption realizzate all’interno dello schema
Subset-Cover.
In entrambi i casi di studio, l’universo1 degli utenti N viene rappresentato
come l’insieme delle foglie di un albero binario completo di altezza h = lg2 N
(per semplicità si considereranno solo valori di N pari a potenze di 2). Tale rappresentazione risulta vantaggiosa perchè la struttura gerarchica, tipica
degli alberi binari, consente di denotare in maniera semplice ed efficace dei
sottoinsiemi particolari di utenti.
La differenza principale fra le due soluzioni consiste invece nella diversa
tecnica adoperata per l’associazione delle long-lived keys agli insiemi Sj delle
rispettive famiglie S.
Nella prima soluzione, infatti, ad ogni insieme Sj viene assegnata una longlived key Lj , scelta in maniera del tutto casuale da uno spazio di chiavi L
1
Nella pratica l’insieme N non coincide con l’insieme effettivo di utenti, ma si preferisce
sceglierlo di cardinalità maggiore, per consentire l’inserimento di nuovi utenti, senza dover
ricostruire l’intero schema.
44
3. Due schemi nell’ambito del Subset-Cover framework
opportunamente grande. Di conseguenza, per considerazioni di Teoria dell’Informazione, per descrivere la chiave Lj associata al generico insieme Sj , è
necessario utilizzare lg |L| bits; in altri termini, l’unica descrizione della chiave consiste nella chiave stessa, e non è pertanto possibile distinguere fra una
long-lived key e una stringa di bits completamente random. Per tale ragione, la tecnica per l’assegnazione delle long-lived keys nel contesto della prima
soluzione viene detta information theoretic.
Nella seconda soluzione, invece, l’associazione delle long-lived keys avviene
in maniera più sofisticata. Il metodo utilizzato si ispira infatti a nozioni di
Teoria della Complessità, in quanto fa uso di un particolare tipo di funzione
appartenente alla classe dei Generatori di numeri pseudo-random. Grazie a
questo artificio, le long-lived keys associate ai vari insiemi della famiglia S
risultano comunque indistinguibili da quantità del tutto casuali, sebbene ogni
singola Lj sia descrivibile con molto meno che lg |L| bits. In considerazione
dei criteri adoperati, tale tecnica viene definita computational.
Dal confronto delle due metodologie, è possibile notare che il caso information theoretic è sempre meno efficiente del caso computational in termini
dell’utilizzo dello spazio di memorizzazione richiesto al singolo utente, a fronte
però di un maggiore lavoro necessario in fase di decodifica per ricavare le varie
Lj dall’informazione segreta Iu .
45
3. Due schemi nell’ambito del Subset-Cover framework
Un’ osservazione finale, valida per entrambe le soluzioni, riguarda la loro
sicurezza rispetto a coalizioni di utenti revocati; in entrambi i casi lo schema
proposto risulta essere r-resilient (con r = |R|), nel senso della Definizione 1.3
introdotta in precedenza.
3.2
Complete Subtree Method
Come già il nome stesso evidenzia, tale metodo basa la costruzione della famiglia S sull’individuazione di sottoalberi completi di un albero binario completo
A con N foglie e radice rA .
Nella fase di inizializzazione si individuano tutti i possibili sottoalberi completi di A, e si sceglie come famiglia S l’insieme di tali sottoalberi. Più precisamente, il generico Sj è l’isieme delle foglie di un sottoalbero binario completo
di A e risulta identificabile per mezzo della sua sola radice vj (Fig. 3.1).
Figura 3.1: Costruzione della famiglia S con N = 4: S = {S1 , . . . , S7 }
46
3. Due schemi nell’ambito del Subset-Cover framework
Poiché ogni nodo dell’albero A, sia esso un nodo interno od una foglia, può
essere visto come la radice di un unico sottoalbero, si ricava che la cardinalità
w dell’insieme S è pari al numero di nodi presenti nell’albero, ovvero 2 N − 1.
Ad ogni nodo vj viene assegnato un numero random che costituirà la longlived key Lj associata all’insieme Sj di cui esso è la radice. L’informazione
segreta Iu di ogni utente-foglia u, conterrà le (lg N + 1) long-lived keys Lj
relative a tutti i nodi vj nel cammino da u alla radice rA . In tale modo, il
generico utente u sarà in grado di ricavare la long-lived key associata ad ogni
insieme Sj ∈ S al quale esso appartiene, poiché i sottoalberi binari completi
che contengono la foglia u sono tutti e soli quelli aventi radice in uno dei nodi
sul cammino da u a rA (Fig. 3.2).
Figura 3.2: Contenuto dell’informazione Iu : Iu = {L1 , L2 , L5 , L11 }
47
3. Due schemi nell’ambito del Subset-Cover framework
Nota. Conseguenza diretta della tecnica information theoretic per l’assegnazione delle chiavi è che il Complete Subtree Method soddisfa la Proprietà 2.1
dell’indistinguibilità delle chiavi in quanto, essendo ogni singola chiave selezionata in maniera casuale ed indipendente da ogni altra, non è in alcun modo
possibile ricavarla.
Nella fase di codifica, il Broadcast Center, che conosce tutte le long-lived
keys Lj , individua la partizione di T e, generata una chiave di sessione k,
trasmette il segnale:
h [i1 , . . . , im , ELi1 (k), . . . , ELim (k)], Fk (M ) i
dove i1 , . . . , im , non sono altro che gli indici delle radici relative ai sottoalberi
della partizione.
Nella fase di decodifica, ogni utente u ∈ T , ricevuto il segnale:
h [i1 , . . . , im , C1 , . . . , Cm ], M ′ i
individua l’unico indice ij corrispondente all’insieme Sij della partizione a
cui esso appartiene, e dalla propria informazione segreta Iu ricava Lij . A
questo punto sarà in grado di computare k = EL−1i (Cj ) e quindi di ottenere
j
M = Fk−1 (M ′ ) .
48
3. Due schemi nell’ambito del Subset-Cover framework
Per descrivere la tecnica utilizzata dal Broadcast Center per l’individuazione della partizione di T , si consideri la seguente definizione:
Definizione 3.1 (Albero di Steiner). Dato un albero binario completo A
e un insieme V ′ costituito da alcune sue foglie, si definisce albero di Steiner
ST (V ′ ) il più piccolo sottoalbero di A, contenente la radice rA e tutte le foglie
di V ′ (Fig. 3.3).
Figura 3.3: Costruzione dell’albero di Steiner ST (V ′ ), con V ′ = {v1 , v2 , v3 }
Nota. Per ogni fissato insieme V ′ , l’albero di Steiner ad esso associato è unico.
Dato un insieme R = {u1 , . . . , ur } di utenti revocati, si consideri l’albero
di Steiner ST (R). Siano {vi1 , . . . , vim } tutti i nodi dell’albero A adiacenti
ad un nodo di grado 1 nell’albero di Steiner,2 ma non appartenenti ad esso.
La partizione di T sarà costituita dai sottoalberi {Si1 , . . . , Sim }, aventi come
radici {vi1 , . . . , vim } (Fig. 3.4).
2
Nell’albero di Steiner un nodo si dirà di grado 1 se uno solo dei suoi due figli appartiene
all’albero stesso.
49
3. Due schemi nell’ambito del Subset-Cover framework
Figura 3.4: Costruzione della partizione di T con R = {v1 , v2 , v3 }
Proposizione 3.1. Ogni utente u ∈
/ R appartiene ad uno e un solo insieme
della partizione {Si1 , . . . , Sim }.
Dimostrazione. Per dimostrare che ogni utente u ∈
/ R risulta “coperto dalla
partizione”, ovvero ∃j ∈ {1, . . . , m} | u ∈ Sij , si consideri il fratello vu di u:
1. se vu ∈ ST (R), ovvero vu è un utente revocato, allora il loro padre pu
appartiene all’albero di Steiner e risulta avere grado 1. Di conseguenza,
per costruzione, il sottoalbero contenente il solo nodo u appartiene alla
partizione di T e quindi u risulta coperto.
2. se invece vu ∈
/ ST (R), allora anche pu ∈
/ ST (R) e si ripete il ragionamento fatto per u sul nodo pu ; prima o poi si troverà un antenato di u
che risulta figlio di un nodo dell’albero di Steiner di grado 1 (provando
cosı̀ che u è coperto), oppure si arriverà alla radice. In tal caso l’albero di Steiner è vuoto, cioè non ci sono utenti revocati: la partizione è
50
3. Due schemi nell’ambito del Subset-Cover framework
banalmente costituita dal solo A e quindi ogni nodo, e in particolare u,
viene coperto.
D’altra parte, si supponga, per assurdo, che u appartenga a due sottoalberi
Si e Sj . L’unica configurazione possibile è che Si ed Sj siano innestati l’uno
dentro l’altro: senza perdita di generalità, si supponga Sj ⊂ Si (Fig. 3.5).
Figura 3.5: Configurazione per l’ipotesi d’assurdo (Prop. 3.1)
Dal momento che Sj appartiene alla partizione, il padre del nodo vj deve
essere un nodo nell’albero di Steiner avente grado 1. Ma allora Si non può
appartenere alla partizione, poiché fra i suoi nodi ve n’è uno appartenente
all’albero di Steiner. Si perviene cosı̀ all’assurdo.
Proposizione 3.2. Ogni utente u ∈ R non appartiene a nessun insieme della
partizione {Si1 , . . . , Sim }.
Dimostrazione. Si supponga, per assurdo, che u appartenga ad un sottoalbero
Sj presente nella partizione. Dal fatto che Sj appartiene alla partizione, segue
che la sua radice vj non può stare in ST (R). D’altra parte, dal fatto che
51
3. Due schemi nell’ambito del Subset-Cover framework
l’utente revocato appartiene ad Sj , segue che vj ha un discendente revocato e
pertanto vj ∈ ST (R). Si ha pertanto l’assurdo.
Proposizione 3.3. La dimensione della partizione di T è al più r lg(N /r),
con r = |R|.
Dimostrazione. Si noti preliminarmente che nella partizione {Si1 , . . . , Sim }
vengono inseriti tutti i sottoalberi completi che “pendono” dall’albero di Steiner ST (R), ovvero la cui radice non sta in ST (R) ma è figlia di un nodo
nell’albero di Steiner di grado 1: la dimensione di tale partizione è pertanto
uguale al numero di nodi di grado 1 nell’albero di Steiner.
Procediamo per induzione sull’altezza h dell’albero A.
Caso Base (h = 0). Si distinguono le seguenti due possibilità:
1. se u ∈ R, esso è il solo nodo nell’albero di Steiner ed ha quindi grado
0; pertanto non ci sono nodi in ST (R) aventi grado 1. D’altro canto
r lg(N /r) = 1 lg(1/1) = 0.
2. se u ∈
/ R, l’albero di Steiner è vuoto, per cui ovviamente non ci sono
nodi in ST (R) di grado 1. D’altro canto r lg(N /r) = +∞.
Passo Induttivo. Se, per un albero binario completo A di altezza i con N = 2i
nodi, la partizione ha dimensione al più r lg(2i /r) = r(i − lg r), allora per un
52
3. Due schemi nell’ambito del Subset-Cover framework
albero di altezza i + 1 la dimensione della partizione sarà al più r(i + 1 − lg r).
Dimostrazione. Un albero di altezza i + 1 si ottiene considerando due alberi
di altezza i come figli di un stesso nodo. Per i due sottoalberi di altezza i vale
l’ipotesi induttiva e quindi le dimensioni delle relative partizioni sono al più
r1 (i − lg r1 ) e r2 (i − lg r2 ), essendo r1 e r2 il numero di utenti revocati nei due
sottoalberi. Si distinguono i seguenti due casi:
1. se tutti gli utenti revocati si trovano in uno solo dei due sottoalberi (cioè
r = r1 ), il numero di nodi di grado 1 nell’albero di Steiner, che coincide
anche con la dimensione della partizione, sarà al più:
r1 (i − lg r1 ) + 1 ≤ r1 (i − lg r1 ) + r1 ≤ r1 (i + 1 − lg r1 ) = r(i + 1 − lg r) ;
2. se gli utenti revocati si trovano in entrambi i sottoalberi di altezza i, la
radice avrà grado 2, e il numero di nodi di grado 1 nell’albero di Steiner
sarà al più:
r1 (i − lg r1 ) + r2 (i − lg r2 ) .
53
3. Due schemi nell’ambito del Subset-Cover framework
Sia r = r1 + r2 : la tesi induttiva può essere riscritta come segue:
r1 (i − lg r1 ) + r2 (i − lg r2 ) ≤ r(i + 1 − lg r)
m
(r1 + r2 )(i + 1 − lg(r1 + r2 )) − r1 (i − lg r1 ) − r2 (i − lg r2 ) ≥ 0
m
ir1 + ir2 − (r1 + r2 )(lg(r1 + r2 ) − 1) − ir1 + r1 lg r1 − ir2 + r2 lg r2 ≥ 0
m
r1 lg r1 + r2 lg r2 − (r1 + r2 )(lg(r1 + r2 ) − 1) ≥ 0 .
Sia f (r1 , r2 ) = r1 lg r1 + r2 lg r2 − (r1 + r2 )(lg(r1 + r2 ) − 1).
Per provare la tesi, basta verificare che f (r1 , r2 ) ≥ 0, ∀r1 , r2 . A tal fine
si considerino le sue due derivate parziali rispetto r1 e r2 :
∂
2r1
f (r1 , r2 ) = log
∂r1
r1 + r 2
∂
2r2
f (r1 , r2 ) = log
∂r2
r1 + r 2
Le due derivate parziali si annullano entrambe quando r1 = r2 . Quando
r1 = r2 , f (r1 , r2 ) = 0, che è proprio il valore minimo della funzione. Si
può pertanto affermare che ∀r1 , r2 , f (r1 , r2 ) ≥ 0, da cui la tesi.
54
3. Due schemi nell’ambito del Subset-Cover framework
Teorema 3.4 (Sicurezza del Complete Subtree Method). Il Complete
Subtree Method risulta essere sicuro nel senso della Definizione 2.9.
Dimostrazione. Come già osservato, il Complete Subtree Method soddisfa la
proprietà di indistinguibilità della chiavi. Si supponga di utilizzare come funzioni di codifica Fk e EL rispettivamente un cifrario a sequenza e uno a blocchi
che godono delle proprietà definite in 2.3 e 2.5. Allora, dal Teorema 2.2, segue
subito la tesi.
55
3. Due schemi nell’ambito del Subset-Cover framework
3.3
Subtree Difference Method
In questo metodo l’individuazione della famiglia S avviene in maniera più
sofisticata e il numero di sottoinsiemi a cui un utente apparterrà sarà notevolmente maggiore. Anche in questo caso gli N utenti sono visti come foglie
di un albero binario completo A di radice rA . Per descrivere gli insiemi della
famiglia S, si consideri la seguente definizione
Definizione 3.2 (Insieme differenza). Dato un albero binario completo
Si di radice vi e un albero binario completo Sj di radice vj , completamente
contenuto in Si , l’insieme differenza Sij è costituito da tutte le foglie di Si
eccetto quelle di Sj (Fig. 3.6).
Figura 3.6: Rappresentazione dell’insieme differenza S2 9
Il nodo vi è detto radice principale di Sij , mentre il nodo vj è detto radice
secondaria di Sij .
Nota. Un utente u appartiene all’insieme differenza Sij se e solo se u è un
discendente di vi ma non di vj .
56
3. Due schemi nell’ambito del Subset-Cover framework
Nella fase di inizializzazione, ad ogni nodo interno vi dell’albero binario
completo A viene assegnato un numero random detto Labeli . Mentre nel
Complete Subtree Method il numero random associato ad ogni nodo costituisce la long-lived key dell’insieme di cui esso è radice, in questo caso la Labeli
fungerà da “protochiave”, nel senso che la long-lived key Lij relativa agli insieme differenza Sij di radice principale vi verrà calcolata a partire da tale
numero random.
Per il computo di tutte le long-lived keys Lij si utilizza il seguente generatore di numeri pseudo-random:3
G : {0, 1}n −→ {0, 1}3n
che presa in input una stringa di bits lunga n, ne restituisce una lunga il triplo,
suddivisibile nelle seguenti tre parti:
• GL rappresenta gli n bits più a sinistra;
• GM rappresenta gli n bits centrali;
• GR rappresenta gli n bits più a destra.
3
Per generatore di numeri pseudo-random si intende una funzione che, presa in input una
breve stringa di bits realmente random detta seme, restituisce una sequenza di bits molto
lunga che risulta indistinguibile da una stringa di bits realmente random di pari lunghezza
agli occhi di un avversario polinomiale.
57
3. Due schemi nell’ambito del Subset-Cover framework
Per calcolare la long-lived key Lij relativa all’insieme Sij , si consideri il
cammino che porta dalla radice principale vi alla radice secondaria vj .
Il calcolo consta di successive applicazioni del generatore G, che viene inizialmente applicato alla Labeli di vi . Ad ogni passo si utilizza, come nuovo seme
per un’ulteriore applicazione del generatore G, la parte sinistra GL o la parte destra GR dell’output a seconda che sia necessario scendere su di un figlio
sinistro o destro. Quando infine si arriva sulla radice secondaria vj , si pone
Lij uguale alla parte centrale GM dell’output del generatore applicato al seme
ottenuto al passo precedente.
In definitiva, è possibile ricavare la chiave Lij a partire da Labeli , con al più
lg N applicazioni del generatore G.
Per chiarire meglio tale procedimento, in Figura 3.7 è schematizzato il
modo in cui viene calcolata la long-lived key L1 5 dell’insieme differenza S1 5 .
Figura 3.7: Calcolo della long-lived key L1 5 relativa all’insieme differenza S1 5
58
3. Due schemi nell’ambito del Subset-Cover framework
Tale procedimento può essere formalizzato introducendo il concetto di label
relativa Labeli,j di un nodo vj rispetto ad un suo antenato vi :
Labeli,i = Labeli




GL (Labeli,j ′ )
Labeli,j =



GR (Labeli,j ′ )
se j è figlio sinistro di j ′
se j è figlio destro di j ′
La long-lived key Lij può essere espressa in termini di label relativa come:
Lij = GM (Labeli,j ) .
Si esamini adesso il contenuto dell’informazione segreta Iu che deve essere
assegnata ad ogni utente u. Si potrebbe pensare, mimando quanto fatto per
il Complete Subtree Method, di inserire in Iu le Labeli di tutti gli antenati
di u; tuttavia tale scelta non risulterebbe adeguata, poiché permetterebbe ad
u di ricavare la long-lived key associata anche ad insiemi Sij ai quali non
appartiene.
Siano u ≡ u0 , u1 , . . . , uh ≡ rA tutti gli antenati di u disposti lungo il cammino
da u alla radice rA , e si denoti con si il fratello di ui per i = 0, . . . , h − 1, dove
h è l’altezza dell’albero.
59
3. Due schemi nell’ambito del Subset-Cover framework
Si analizzi, in particolare, la quantità di informazione che l’utente u potrebbe ricavare se disponesse della label della radice LabelrA .
Per costruzione, dalla label LabelrA è possibile ricavare la long-lived key associata a tutti gli insiemi differenza aventi come radice principale rA . Di
questi insiemi, quelli la cui radice secondaria è uno degli antenati ui di u,
non contengono u e pertanto, al fine di garantire che lo schema soddisfi la
proprietà dell’indistinguibilità delle chiavi data nella Definizione 2.1, la loro
chiave non deve essere nota ad u. Di conseguenza ad u, anzicché la label
LabelrA , vengono fornite le labels relative dei nodi si rispetto alla radice rA ,
per i = 0, . . . , h − 1:
LabelrA ,s1 ,
i = 0, . . . , h − 1 .
Per vedere che ciò consente ad u di ricavare tutte e sole le chiavi LrA vj
degli insiemi differenza SrA vj a cui appartiene, si consideri il primo nodo ui+1
per cui il cammino da rA a vj differisce dal cammino che scende da rA su u
(Fig. 3.8).
Allora vj è discendente di si e pertanto è possibile calcolare LabelrA ,vj a
partire da LabelrA ,si , che è nota ad u in quanto si è fratello del suo antenato
ui . Quindi u può calcolare LrA vj , poiché risulta:
LrA vj = GM (LabelrA ,vj )
60
3. Due schemi nell’ambito del Subset-Cover framework
Figura 3.8: Calcolo di LabelrA ,vj a partire da Iu
Se invece u ∈
/ SrA vj , allora vj è un antenato di u, cioè vj = ui per qualche
i: non è quindi possibile ripetere il procedimento precedente, poiché non si
ha alcuna biforcazione. Per riuscire a calcolare LrA ui , u dovrebbe risalire a
LabelrA ui ; supponendo che ui sia figlio destro di ui+1 , risulta che:
LabelrA ui = GR (LabelrA ui+1 ) .
D’altra parte in Iu è presente LabelrA si , ovvero u conosce
LabelrA si = GL (LabelrA ui+1 ) .
In definitiva, la chiave cercata è:
LrA ui = GM (GR (GL−1 (LabelrA si )))
e quindi, per poter calcolare LabelrA ,vj , u dovrebbe essere in grado di invertire
la funzione G, il che si assume computazionalmente infattibile, essendo G un
generatore pseudo-random.
61
3. Due schemi nell’ambito del Subset-Cover framework
Un discorso del tutto analogo può essere utilizzato per provare che anzicché
dare ad u la Labelui del suo antenato ui , è necessario fornirgli le labels relative
Labelui ,sj di tutti i nodi sj che “pendono” dal cammino da ui ad u (Fig. 3.9).
Figura 3.9: Labels relative, derivate da Labelui , da includere in Iu
Dall’analisi del metodo appena discusso per la costruzione di Iu risulta
che, per un antenato che si trova ad una distanza k, u riceve k labels relative.
Sommando per ogni antenato, e considerando una chiave speciale per il caso
R = 0, si ottiene che il numero di informazioni che u deve memorizzare è:
1+
lg N
X
k=1
=1+
(lg N + 1) lg N
1
1
= lg2 N + lg N + 1 .
2
2
2
Si passa adesso ad esaminare come, dato l’insieme R di utenti revocati, il
Broadcast Center riesce a determinare la partizione di T .
Anche nel Subset Difference Method la costruzione della partizione avviene
a partire dall’albero di Steiner ST (R). L’algoritmo fa uso di un albero T ,
62
3. Due schemi nell’ambito del Subset-Cover framework
inizialmente uguale a ST (R), che ad ogni passo viene “potato”, e termina
quando T contiene soltanto la radice rA . Ad ogni potatura viene aggiunto alla
partizione un nuovo insieme differenza.
Nelle varie iterazioni, l’algoritmo determina due foglie vi e vj di T tali che
il loro primo antenato comune v non abbia altri discendenti, oltre a loro due,
che risultino foglie di T . Si denoti con vl il figlio di v disposto sul cammino
che porta da v a vi e con vk l’altro figlio di v, il quale sta sul cammino che
scende da v a vj .
A questo punto si pota T all’altezza di v, che pertanto diventa una foglia. Se vl
è un antenato proprio di vi , si aggiunge l’insieme differenza Sli alla partizione;
analogamente, se vk è un antenato proprio di vj , si aggiunge Skj . Se una delle
condizioni precedenti non si verifica, il corrispondente insieme differenza non
verrà inserito nella famiglia in costruzione.
Il metodo appena descritto consente di determinare delle partizioni particolarmente compatte, come risulta dal seguente Lemma.
Lemma 3.5. Dato un insieme R di utenti revocati, la suddetta procedura
partiziona T in al più 2r − 1 insiemi differenza.
63
3. Due schemi nell’ambito del Subset-Cover framework
Dimostrazione. Si osservi preliminarmente che, all’ultima iterazione, l’algoritmo potrebbe presentare un caso limite, qualora T risultasse costituito da un
unico “tronco”, con una sola foglia u. In tal caso, il numero di foglie dell’albero
T rimane uno anche in seguito alla potatura, mentre viene aggiunto al più un
insieme differenza alla partizione.
Si considerino adesso tutte le altre iterazioni, in cui l’albero T ha almeno
due foglie: in ciascuna di esse l’algoritmo elimina due foglie e ne aggiunge una,
causando una diminuzione del numero di foglie nell’albero T di una unità.
Pertanto si passerà da un albero T avente r foglie ad un albero T avente due
foglie in r − 2 passi, ciascuno dei quali aggiunge al più due insiemi differenza
alla partizione. In definitiva, quando T contiene due foglie, la partizione consta di al più 2(r − 2) = 2r − 4 insiemi differenza.
La successiva potatura può o ridurre l’albero T alla sola radice rA , introducendo al più due insiemi differenza prima del termine della procedura, oppure
portare alla configurazione a “tronco” descritta in precedenza, che causa l’aggiunta di un ulteriore insieme differenza, che si somma agli al più due insiemi
dovuti alla potatura in questione.
In definitiva, la cardinalità della partizione è al più:
2r − 4 + 2 + 1 = 2r − 1 .
64
3. Due schemi nell’ambito del Subset-Cover framework
Teorema 3.6 (Sicurezza del Subset Difference Method).
Il Subset Difference Method risulta essere sicuro nel senso della Definizione 2.9.
Dimostrazione. In virtù del Teorema 2.2, affinché il Subset Difference Method
risulti essere uno schema sicuro è sufficiente provare che la tecnica per la distribuzione delle chiavi soddisfa la proprietà di indistinguibilità delle chiavi data
nella Definizione 2.1.
Come già osservato nella descrizione del contenuto di Iu , le informazioni possedute dagli utenti che non appartengono a Sij risultano insufficienti per poter
riuscire a calcolare la chiave Lij , che pertanto rimane indistinguibile da una
chiave random. Pertanto lo schema soddisfa la Definizione 2.1 e ne segue
quindi la tesi.
65
Capitolo 4
Estensione a Chiave Pubblica
In questo Capitolo, traendo spunto da alcune indicazioni fornite in [NNL01], si
presenta una possibile estensione del Subset-Cover framework al mondo della
Crittografia a Chiave Pubblica: in particolare, dopo avere esaminato i risultati
ottenuti nel tentativo mancato di trasporre in maniera diretta le tecniche adoperate nel modello a chiave segreta, si presenta una variante effettivamente
implementabile del Complete Subtree Method, ottenuta applicando al contesto in esame le idee alla base dello schema IBE. Tale estensione costituisce il
contributo originale del presente lavoro di Tesi.
4. Estensione a Chiave Pubblica
4.1
Motivazioni
Cosı̀ come è stato presentato nei Capitoli precedenti, il Subset-Cover framework fa uso di tecniche di Crittografia Simmetrica. Tuttavia, in alcune
situazioni è preferibile lavorare con la Crittografia a Chiave Pubblica.
Si supponga che l’entità preposta alla trasmissione dei segnali non sia una
entità fidata, per cui gli utenti riceventi non siano disposti a condividere con
essa una chiave segreta.
Come esempio pratico di tale circostanza, si consideri uno scenario in cui
diverse agenzie condividono le stesse infrastrutture e il medesimo schema di
Broadcast, che utilizzano alternativamente per effettuare le rispettive trasmissioni. In tal caso, per evitare che una agenzia possa comprendere gratuitamente i segnali trasmessi dalle altre compagnie, è necessario adoperare, all’interno
del framework, uno schema asimmmetrico, di modo che ciascuna di esse possa
codificare il proprio segnale, ma non riesca a decifrare quello delle altre.
67
4. Estensione a Chiave Pubblica
4.2
Similitudini e Differenze
Nello scenario a chiave pubblica, il Broadcast Center, che in precedenza svolgeva entrambi i compiti di inizializzare il sistema e di effettuare le trasmissioni,
adesso viene scisso in due entità separate: il Center, una autorità fidata, il cui
ruolo è quello di creare l’intero sistema; e uno (o più) Broadcast Third Party,
ciascuno dei quali mantiene un diverso insieme di utenti revocati e trasmette
i propri segnali.
Nel seguito si considererà sempre il caso di un unico Broadcast Third Party,
ma l’intera costruzione è immediatamente estendibile al caso più generale.
Delle tre parti che caratterizzano il Subset-Cover framework (inizializzazione, codifica e decodifica), quella in cui il cambiamento dovuto al passaggio
alla Crittografia a Chiave Pubblica è più radicale è quella di inizializzazione,
che verrà pertanto discussa più in dettaglio in seguito.
Per quanto riguarda la fase di codifica, la differenza sostanziale è che il
Broadcast Third Party deve avere accesso ad un Public Key File (PKF), costituito dalle chiavi pubbliche di tutti i sottoinsiemi validi nello schema. Come ciò venga reso possibile, dipende in gran parte dal modo in cui la fase di
inizializzazione viene realizzata nel nuovo contesto.
68
4. Estensione a Chiave Pubblica
69
Per effettuare una trasmissione, il Broadcast Third Party individua la partizione dell’insieme T secondo gli stessi criteri discussi nei Capitoli precedenti.
Quindi, dopo avere ricavato dal PKF le chiavi pubbliche degli insiemi che costituiscono la partizione appena individuata, codifica il segnale utilizzando come
funzione di codifica E un crittosistema a chiave pubblica, come ad esempio
RSA o ElGamal.
Denotando con ELPub
la nuova funzione di codifica, il segnale trasmesso
i
sarà del tipo:
(k)], Fk (M ) i .
h [i1 , . . . , im , ELPub
(k), . . . , ELPub
i
i
m
1
Nella fase di decodifica, ogni utente u ∈ T , individuato il sottoinsieme Sij
al quale appartiene, determina, a partire dalla relativa informazione segreta
Iu , la chiave privata LPri
ij e ricava M calcolando:
k = EL−1Pri (Cj )
ij
ed
M = Fk−1 (M′ ) .
Anche in questo caso, il modo in cui u riesce a ricavare LPri
ij da Iu dipende,
in maniera sostanziale, da come è stata realizzata la fase di inizializzazione.
4. Estensione a Chiave Pubblica
4.3
Un Approccio Diretto
La soluzione più diretta per effettuare la transizione da Crittografia Simmetrica
a Crittografia Asimmetrica, è quella di non cambiare la fase di inizializzazione,
cercando di “fare quadrare i conti” nelle fasi di codifica e di decodifica.
4.3.1
Public Complete Subtree Method
Nello scenario a Crittografia Simmetrica la fase di inizializzazione del Complete
Subtree Method consiste nell’associare ad ogni nodo vj dell’albero binario completo, un numero random Lj che costituisce la long-lived key del sottoinsieme
Sj .
Al fine di adattare tale tecnica allo scenario a chiave pubblica, il Center
genera una coppia (chiave pubblica, chiave privata) in corrispondenza di ogni
nodo vj dell’albero, associando la chiave privata ottenuta al relativo sottoinsieme Sj . La chiave pubblica verrà invece inserita nel PKF, che sarà liberamente
consultabile dal Broadcast Third Party.
Tale tecnica risolve completamente il problema della decodifica: in particolare, il generico utente u non si accorgerà neanche del cambiamento, poiché
70
4. Estensione a Chiave Pubblica
il modo di ricavare le chiavi dall’informazione Iu rimane identico a quello
utilizzato in precedenza.
L’aspetto negativo di tale tecnica riguarda la fase di codifica, che diventa
del tutto impraticabile. Il Broadcast Third Party deve infatti memorizzare
il Public Key File, la cui dimensione è pari alla cardinalità della famiglia S,
ovvero 2N − 1.
In una implementazione reale di un sistema per la Broadcast Encryption, la
dimensione dell’insieme universo N sarà almeno dell’ordine di 224 ≃ 16 · 106
utenti; considerando chiavi pubbliche a 2048 bits, si ottiene che lo spazio di
memoria richiesto per mantenere il PKF è pari a:
211 · 2−3 · 224 = 232 ≃ 4 Terabytes .
Si tratta di un’enorme quantità di memoria che rende del tutto impensabile
una simile applicazione.
4.3.2
Public Subtree Difference Method
Per adattare il Subtree Difference Method all’utilizzo della Crittografia a Chiave Pubblica, è necessaria una tecnica un po’ più elaborata. In tale caso, infatti,
l’informazione associata ai vari nodi dell’albero non è di per sé una chiave, ma
71
4. Estensione a Chiave Pubblica
una Label, a partire dalla quale vengono generate, mediante successive applicazioni del generatore G, le chiavi di tutti gli insiemi differenza aventi il nodo in
esame come radice principale. Non condurrebbe, pertanto, a nulla il tentativo
di sostituire le Labels casuali con delle chiavi private, perchè l’utilizzo di G
ne distruggerebbe immediatamente le caratteristiche, generando delle quantità
del tutto prive di struttura semantica.
Per risolvere tale problema è possibile procedere in due diversi modi, ciascuno dei quali porta ad una differente soluzione.
Creazione di coppie di chiavi mediante un generatore
Si ricordi che un Generatore di Chiavi è un algoritmo randomizzato che costruisce coppie (chiave pubblica, chiave privata) casuali. È ovviamente possibile modificare un tale generatore, facendo sı̀ che esso prenda in input una
sequenza di bits, da utilizzare come quantità random, ogni qualvolta si trovi di
fronte ad una scelta non deterministica. In tale maniera è possibile “guidare”
la generazione della chiave, che avrà sempre lo stesso valore quando si fornisce
il medesimo seme iniziale.
72
4. Estensione a Chiave Pubblica
Utilizzando la tecnica computational introdotta in precedenza, è possibile associare un numero pseudo-casuale ad ogni sottoinsieme. Una possibilità
potrebbe essere quella di utilizzare tale quantità pseudo-random, che prima
costituiva la chiave del sottoinsieme, come seme del generatore, cosı̀ da consentire al generico utente u di ricavare, dalla coppia ottenuta, la chiave privata
associata all’insieme.
Per avere un’idea della quantità di lavoro che tale soluzione implica, si
considerino i calcoli che il Center deve eseguire per inizializzare il sistema.
Dopo avere associato ad ogni nodo una Label casuale, per ciascuno degli
insiemi differenza della famiglia (che sono circa N lg N ), il Center deve:
• calcolare la Lij associata all’insieme Sij utilizzando la tecnica esposta
nel Capitolo precedente;
• eseguire il generatore di coppie dando come input la qualntità Lij ;
• inserire la chiave pubblica, ricevuta come output dal generatore di chiavi
nel PKF, denotandola come chiave pubblica LPub
dell’insieme Sij .
ij
73
4. Estensione a Chiave Pubblica
Sono tre gli aspetti negativi relativi alla soluzione appena esaminata:
1. i calcoli necessari al Center per completare la fase di inizializzazione,
richiedono un tempo eccessivamente lungo;
2. gli utenti sono oberati da un peso computazionale considerevole;
3. come nel caso del Public Complete Subtree Method, il PKF ha dimensioni enormi.
Creazione della chiave pubblica a partire dalla chiave privata
L’approccio precedente può essere utilizzato qualunque sia il crittosistema a
chiave pubblica che viene adoperato per realizzare la funzione di codifica.
Scegliendo un crittosistema in cui è possibile decidere la chiave privata a
prescindere dalla chiave pubblica, che viene successivamente calcolata a partire
da essa,1 si riesce a diminuire la quantità di calcoli per la decodifica e snellire
leggermente la fase di inizializzazione.
Nella fase di inizializzazione, come chiave privata LPri
ij del generico insieme
Sij , viene scelta la quantità Lij relativa al sottoinsieme in questione. In altri
1
Schemi crittografici con tali proprietà possono essere costruiti a partire della funzione
Diffie-Hellman: si veda ad esempio il protocollo di Conference Key Sharing di Okamoto
[Oka93]
74
4. Estensione a Chiave Pubblica
termini, la quantità che prima costituiva la chiave segreta dell’insieme, adesso
svolge il ruolo di chiave privata dell’insieme stesso. Ció consente di lasciare
inalterata la fase di decodifica.
Il processo di creazione di un tale sistema comporta un minore lavoro a
carico del Center relativamente ad ogni singolo sottoinsieme, in quanto gli è
sufficiente calcolare la quantità Lij con la solita tecnica del generatore G. È a
partire da tale quantità, ovvero dalla chiave privata dell’insieme, che il Center
ricava la corrispondente chiave pubblica che inserisce nel PKF. Tuttavia, il
numero di nodi sul quale ripetere tale procedimento rimane N lg N e il PKF
continua ad avere dimensioni eccessive.
4.4
Il problema del Public Key File
Nelle sezioni precedenti si sono esaminati alcuni tentativi per conciliare le
esigenze della fase di inizializzazione con la necessità di realizzare chiavi diverse
per le fasi di codifica e di decodifica.
Una nota comune a tutte le soluzioni presentate è il problema della dimensione del Public Key File (PKF): si tratta del database che dovrebbe consentire
di ricavare le chiavi pubbliche relative a tutti i sottoinsiemi della famiglia S,
utilizzata nell’ambito del framework.
75
4. Estensione a Chiave Pubblica
Le tecniche esaminate fin ora memorizzano esplicitamente tutte le chiavi
all’interno del PKF: per ridurre la quantità di spazio richiesta per mantenere
tale file, è necessario trovare un artificio che consenta di estrarre le chiavi da
una rappresentazione implicita del database che abbia dimensioni minori.
Trattando il Public Subtree Difference Method, si è visto come la possibilità
di fissare la chiave privata prima della chiave pubblica, consenta di semplificare
alcune parti del sistema. Durante la ricerca di una tecnica che risolvesse il
problema del PKF, si è pensato di riformulare tale idea invertendo i ruoli:
determinare inizialmente una chiave pubblica opportuna e ricavare da essa la
chiave privata associata.
Per la realizzazione di un tale schema è possibile fare riferimento al concetto
di Identity-Based Encryption Scheme (IBE) (Schema di Criptazione Basato
sugli Identificativi). Si tratta di uno schema in cui la chiave pubblica può
essere una stringa arbitraria, che, per tale motivo, viene detta identificativo:
per maggiori dettagli, si rimanda all’Appendice A.
Combinando l’utilizzo di un tale crittosistema con il Public Complete Subtree Method, si ottiene uno schema innovativo a cui ci si riferirà come IBEComplete Subtree Method, che consente di ridurre drasticamente la dimensione
del PKF.
76
4. Estensione a Chiave Pubblica
Nella fase di inizializzazione, il Center fissa e rende nota una semplice
funzione di mappatura che, ad ogni sottoinsieme della famiglia S, associa un
identificativo, ovvero una stringa di bits:
ID : S −→ {0, 1}∗ .
Una possibile funzione di mappatura potrebbe consistere nell’etichettare
ogni arco presente nell’albero con 0 o 1, a seconda che sia un ramo che scende
rispettivamente verso il figlio destro o verso il figlio sinistro.
Cosı̀ procedendo, ad un generico sottoalbero Sj di radice vj , resta associato
l’identificativo ID(Sj ), che si ottiene leggendo di seguito i bits disposti lungo il
cammino che porta dalla radice al nodo vj ; tale identificativo ID(Sj ) fungerà
da chiave pubblica dell’insieme in questione (Fig. 4.1).
Figura 4.1: Esempio di mappatura della funzione ID: S5 ←→ 10
Il Center passa quindi a creare un’istanza dello schema IBE, all’interno del
quale svolgerà il ruolo di PKG (Private Key Generator). Dopo avere eseguito
77
4. Estensione a Chiave Pubblica
l’algoritmo Setup e aver pubblicato params come PKF, il Center passa ad
estrarre la chiave privata relativa ad ogni sottoinsieme. Considerando uno
dopo l’altro i 2N − 1 nodi dell’albero binario completo A, il Center esegue
l’algoritmo:
Extract(params, ID(Sj ), master-key)
ottenendo cosı̀ la chiave privata LPri
necessaria per decriptare i messaggi cifrati
j
utilizzando come chiave pubblica l’identificativo ID(Sj ).
A questo punto, il Center può costruire l’informazione Iu da consegnare al
generico utente u del sistema, semplicemente includendo le chiavi private LPri
j
relative a tutti i sottoalberi a cui esso appartiene.
Resta ancora da chiarire come avvengono le fasi di codifica e di decodifica.
Per trasmettere un segnale criptato, il Broadcast Third Party individua
la partizione {Si1 , . . . , Sim } degli utenti autorizzati e calcola l’identificativo
ID(Sij ) associato all’insieme Sij per ∀j = 1, . . . , m.
Dopo aver scelto la chiave di sessione k con la quale criptare il messaggio
M, il Broadcast Third Party calcola la cifratura di k con tutte le m chiavi
= ID(Sij ). Infine effettua la trasmissione del segnale:
pubbliche LPub
ij
h [i1 , . . . , im , C1 , . . . , Cm ], Fk (M) i
78
4. Estensione a Chiave Pubblica
79
dove si è posto
Cj = Encrypt(params, ID(Sij ), k),
j = 1, . . . , m .
Nota. Il Broadcast Third Party accede al PKF soltanto per conoscere i parametri di sistema che caratterizzano la particolare istanza dello schema IBE
creata dal Center nella fase di inizializzazione: tale informazione ha una dimensione fissa, per cui le risorse impiegate per memorizzare il Public Key File
risultano essere indipendenti dalla dimensione dell’insieme universo N .
Nella fase di decodifica l’utente u ∈ T procede esattamente come nel caso
del Complete Subtree Method a chiave privata, ovvero individua nell’header
del segnale l’indice ij corrispondente all’unico insieme Sij a cui appartiene,
e dalla propria informazione segreta Iu ricava LPri
ij . A questo punto sarà in
grado di calcolare:
k = Decrypt(params, ID(Sij ), Cj , LPri
ij )
e infine
M = Fk−1 (M′ ) .
4. Estensione a Chiave Pubblica
4.5
Conclusione
L’integrazione dello schema IBE all’interno del Complete Subtree Method ha
portato alla realizzazione dell’IBE-Complete Subtree Method, presentato per la
prima volta in questa Tesi. La possibilità di utilizzare, come chiavi pubbliche,
delle quantità con un’opportuna struttura semantica, ha consentito di ridurre quasi a zero la dimensione del PKF, che richiede spazio O(1), superando
cosı̀ uno degli ostacoli principali per la realizzazione pratica di uno schema di
Broadcast Encryption a chiave pubblica, basato sul Subset-Cover framework.
Sarebbe interessante vedere se le medesime considerazioni possano essere
estese anche al Subset Difference Method, nel tentativo di ottenere, nell’ambito della variante a chiave pubblica del framework, uno schema in grado di
combinare una rappresentazione compatta del Public Key File ad un utilizzo
efficace delle risorse di memorizzazione dei singoli utenti.
80
Appendice A
Identity-Based Encryption
In questa Appendice si discute brevemente dell’ Identity-Based Encryption Scheme IBE: si tratta di un nuovo schema di criptazione che permette di semplificare notevolmente l’infrastruttura burocratica (Certification Authority, Certification Management, etc.) necessaria per il funzionamento su larga scala di
applicazioni basate sulla Crittografia Asimmetrica.
A. Identity-Based Encryption
A.1
Il problema
Nel 1984, Shamir in [Sha84] pose il problema della realizzazione di uno schema
di criptazione asimmetrico nel quale, piuttosto che generare la coppia (chiave
pubblica, chiave privata) come un tutto unico, fosse possibile scegliere una
stringa arbitraria come chiave pubblica ed estrarre opportunamente, a partire
da essa, la corrispondente chiave privata.
Chiaramente, ricavare la chiave privata relativa ad una determinata chiave
pubblica non deve essere un’operazione alla portata di tutti, in quanto altrimenti non sarebbe più garantita alcun tipo di segretezza. Piuttosto, si presuppone la presenza di una entità fidata detta Private Key Generator (PKG),
che risulta essere l’unica in grado di calcolare la chiave privata associata ad
ogni chiave pubblica.
Il vantaggio di un tale schema è che esso consentirebbe di utilizzare chiavi
pubbliche “personalizzate”, anzicché stringhe di bits random. Ad esempio,
sarebbe possibile adoperare come chiave pubblica il proprio indirizzo e-mail.
In tal modo, se un utente A volesse comunicare in maniera sicura con un
utente B, non avrebbe bisogno di procurarsi preliminarmente il certificato di
B contenente la sua chiave pubblica, ma potrebbe semplicemente criptare il
82
A. Identity-Based Encryption
messaggio con il relativo indirizzo di posta elettronica.
D’altra parte, un utente che non avesse mai ricevuto e-mails codificate, potrebbe non avere ancora ottenuto dal PKG la propria chiave privata; tuttavia,
ciò non gli impedirebbe di ricevere messaggi criptati poiché può decidere in
qualunque momento di richiedere la propria chiave privata al PKG.
Tale scenario mostra come uno schema IBE non elimini del tutto la necessità di un’opportuna infrastruttura (nota come PKI, Public Key Infrastructure), per un utilizzo proprio del sistema. Tuttavia, esso consente di evitare il
circolo vizioso (tipico dei sistemi asimmetrici come il PGP), per cui un utente
non richiede il certificato per la propria chiave pubblica poiché pensa di non
ricevere messaggi codificati e, d’altra parte, nessuno gli invia e-mails criptate
in quanto non dispone dell’opportuno certificato.
83
A. Identity-Based Encryption
A.2
Lo schema IBE
In quanto segue si farà riferimento alla notazione utilizzata in [BF01], dove
viene introdotta la prima implementazione pienamente funzionale dello schema
IBE, Identity-Based Encryption.
Per inizializzare un’istanza di tale schema, è necessario individuare un’entità centrale detta PKG, il cui ruolo è quello di generare le chiavi private in
grado di decriptare i messaggi cifrati con la corrispondente chiave pubblica,
detta anche “identificativo”. Il PKG deve essere un’autorità fidata, nel senso
che deve essere garantito che essa fornisca la chiave privata solo al legittimo
proprietario, dopo averlo opportunamente identificato per altra via.
Per creare lo schema, il PKG esegue l’algoritmo Setup, dandogli in input
un parametro di sicurezza 1k : il sistema che viene generato sarà in grado di
resistere ai possibili attacchi da parte di un avversario per un tempo tanto più
lungo quanto maggiore è il valore di k.
L’output di Setup è costituito da due parti: una lista di parametri di sistema
“params”, contenente le specifiche necessarie per effettuare criptazioni nel particolare sistema IBE appena creato, e una “master-key”, ovvero un’informazione segreta che consente di estrarre da ogni identificativo la corrispondente
84
A. Identity-Based Encryption
chiave privata. Mentre params viene resa pubblica, la “master-key” deve restare segreta, poiché, se venisse compromessa, l’intero sistema diverrebbe del
tutto insicuro.
Entrambe le quantità vengono utilizzate dall’algoritmo Extract che, preso
in input un identificativo arbitrario ID ∈ {0, 1}∗ , restituisce la chiave segreta
d necessaria per la decriptazione:
Extract(params, ID, master-key) = d .
L’algoritmo Encrypt viene utilizzato per eseguire la criptazione di un messaggio in chiaro M, per mezzo dell’identificativo ID, nell’ambito dell’istanza
dello schema IBE descritto da params:
Encrypt(params, ID, M) = C .
Per decriptare il messaggio è necessario conoscere la chiave d: essa viene
utilizzata dall’algoritmo Decrypt unitamente alla descrizione del sistema, il
messaggio C e l’identificativo con il quale il messaggio è stato cifrato:
Decrypt(params, ID, C, d) = M .
85
A. Identity-Based Encryption
Naturalmente, questi algoritmi devono lavorare in maniera consistente, nel
senso che se d è una chiave privata generata con l’algoritmo Extract a partire
dall’identificativo ID, per qualunque messaggio M, deve risultare:
Decrypt(params, ID, C, d) = M ,
dove
C = Encrypt(params, ID, M) .
A.3
Applicazioni dello schema IBE
La possibilità di utilizzare chiavi pubbliche arbitrarie consente di realizzare
molteplici applicazioni. Nel seguito se ne presentano due fra le più interessanti.
A.3.1
Revoca di chiavi pubbliche
Tipicamente, la validità di una chiave pubblica viene garantita dal relativo
certificato: si tratta di un messaggio firmato da parte di un’ entità fidata
detta Certification Authority, che contiene, oltre alla chiave pubblica, altre
informazioni necessarie per la gestione del sistema.
86
A. Identity-Based Encryption
Ma cosa accade se una chiave privata viene compromessa? È chiaro che il
certificato della relativa chiave pubblica deve essere annullato. Per tale motivo
una delle informazioni contenute nel certificato è la sua “data di scadenza”.
Tale meccanismo può essere facilmente realizzato anche nel contesto dello
schema IBE, utilizzando chiavi pubbliche del tipo
indirizzo e-mail || data di scadenza .
Supponendo che la validità di una chiave sia di un anno, il PKG consegnerà,
ai vari utenti che ne faranno richiesta, la chiave privata corrispondente a
indirizzo e-mail || anno in corso .
Si noti che ciò rende possibile spedire messaggi anche nel “futuro”, semplicemente utilizzando, per la codifica, una chiave pubblica contenente una data
di scadenza futura. Solo quando giungerà all’anno specificato nella criptazione
del messaggio, il legittimo destinatario riceverà dal PKG la chiave necessaria
per la sua decriptazione.
87
A. Identity-Based Encryption
A.3.2
Delega di compiti
Un’altra interessante applicazione è la possibilità di delegare la capacità di
decriptazione. Si consideri un manager che ha diversi assistenti, ciascuno responsabile di un settore differente (Relazioni Pubbliche, Vendite, Personale,
etc.). Si supponga che il manager voglia consentire ai vari assistenti di leggere
soltanto i messaggi inerenti il loro reparto.
Tale scenario può essere realizzato creando un sistema IBE nel quale il
manager funge da PKG, e ad ogni assistente verrà consegnata la chiave segreta
relativa all’identificativo del reparto a cui appartiene.
Chi volesse scrivere al reparto assunzioni dell’azienda, deve pertanto utilizzare nella codifica i parametri relativi al sistema IBE dell’azienda (che possono
essere resi noti, ad esempio, sotto forma di chiave pubblica), e specificare, come
identificativo per la criptazione, “Personale”.
Cosı̀ facendo, il manager sarà in grado di leggere qualunque messaggio, e i
diversi reparti potranno ricevere la propria corrispondenza senza avere bisogno
del continuo intervento del loro capo.
88
Bibliografia
[Ber91]
S. Berkovits, How to Broadcast a Secret, Advances in Cryptology
- EuroCrypt ’91 (Berlin), Springer-Verlag, 1991, Lecture Notes in
Computer Science Volume 547, pp. 535–541.
[BF99]
D. Boneh and M. Franklin, An Efficient Public Key Traitor Tracing
Scheme, Advances in Cryptology - Crypto ’99 (Berlin), SpringerVerlag, 1999, Lecture Notes in Computer Science Volume 1666,
pp. 338–353.
[BF01]
D. Boneh and M. Frankling, Identity-Based Encryption from the
Weil Pairing, Verrà presentato in Crypto, 2001.
[FN93]
A. Fiat and M. Naor, Broadcast Encryption, Advances in Cryptology - Crypto ’93 (Berlin), Springer-Verlag, 1993, Lecture Notes in
Computer Science Volume 773, pp. 480–491.
[GSW00] A Garay, J. Staddon, and A. Wool, Long-Lived Broadcast Encryption, Advances in Cryptology - Crypto 2000 (Berlin), SpringerVerlag, 2000, Lecture Notes in Computer Science Volume 1880,
pp. 333–352.
[GSY99] E. Gafni, J. Staddon, and Y. L. Yin, Efficient Methods for Integrating Traceability and Broadcast Encryption, Advances in Cryptology - Crypto ’99 (Berlin), Springer-Verlag, 1999, Lecture Notes in
Computer Science Volume 1666, pp. 372–387.
[LS98]
M. Luby and J. Staddon, Combinatorial Bounds for Broadcast Encryption, Theory and Application of Cryptographic Techniques,
1998, pp. 512–526.
[NNL01] D. Naor, M. Naor, and J. Lotspiech, Revocation and Tracing
Schemes for Stateless Receivers, Verrà presentato in Crypto, 2001.
[Oka93]
T. Okamoto, Provably Secure and Pactical Identification Schemes and Corresponding Signature Schemes, Advances in Cryptology - Crypto ’92 (Berlin), Springer-Verlag, 1993, Lecture Notes in
Computer Science Volume 740, pp. 31–53.
[Sha79]
A. Shamir, How To Share a Secret, Communications of the ACM
(1979), no. 22, 612–613.
[Sha84]
A. Shamir, Identity-Based Cryptosystems and Signature Schemes,
Advances in Cryptology:
Proceedings of Crypto ’84 (Berlin),
Springer-Verlag, 1984, Lecture Notes in Computer Science Volume
196, pp. 47–53.