SD e LSD
Lezione tenuta dal
Presentazione di:
Prof. P. D’Arco
Gaetano Ragozzino
SD (Subset Difference)


Obiettivo:Ridurre la lunghezza dell’header da O(r*lg(N/r))
a O(r)
Idea: Ampliare la collezione di sottoinsiemi {S1…Sn} con cui
ricoprire N\R
1)Collezione di sottoinsiemi S1…Sw con cui ricoprire N\R

Si,j={sottoinsiemi di foglie discendenti da vi ma non da vj}

SD={tutti i sottoinsiemi differenza Si,j}
vi
vi
vj
vj
…
…
…
2)Assegnamento di chiavi Li,j ai sottoinsiemi Si,j


1°Caso: Li,j scelte indipendentemente e uniformemente a
caso
2°Caso: Li,j calcolate attraverso un generatore pseudo
casuale
m
3) Partizionamento di N\R=U Si
i=1

Dato R, calcoliamo l’albero di Steiner (ST(R)) e poniamo
T=ST(R)
1
2
4
3
6
5
9
18
11
22
13
27
Procedura di partizionamento




1.Siano vi e vj due foglie t.c. il più piccolo antenato v non
contenga altre foglie di T. Siano ve e vk figli di v t.c. vi
discende da ve e vj da vk.
2.Se ve è diverso da vi aggiungi Se,i. Se vk è diverso da vj
aggiungi Sk,j.
3.Rimuovi da T tutti i discendenti di v e trasforma v in una
foglia.
4.Se rimane una foglia termina, altrimenti ritorna al passo
1.
1) 3)
1
v
2
3
ve
vk
4
8
16
9
17
6
5
18
R
10
19
20
21
12
11
22
R
23
7
24
25
13
26
14
27
R
R={18,22,27}; vi=18; vj=22; v=2; ve=4; vk=5;
2)S4,18, S5,22
28
29
15
30
31
1) 3)
v
1
ve=vi
vk
2
3
Rimane solo la radice
6
7
12
24
25
13
26
27
vj=R
vi=2; vj=27; v=1; ve=2; vk=3;
2)S4,18, S5,22,, S3,27
14
28
29
15
30
31
1
2
3
4
8
16
9
17
6
5
18
R
S4,18
10
19
20
21
12
11
22
23
7
24
R
25
13
26
14
27
28
R
S5,22
S3,27
<S4,18, S5,22, S3,27, EL4,18(k), EL5,22(k), EL3,27(k), Ek(M)>
Header
29
15
30
31
Taglia Header?


Lemma. Dato un qualsiasi insieme di revocati R, il metodo
precedente partiziona N\R in al più 2r-1 sottoinsiemi
disgiunti.
Ad ogni passo vengono aggiunti alla copertura al più due
sottoinsiemi differenza e il numero di revocati diminuisce di
uno ad eccezione dell’ultimo passo che potrebbe non ridurre
il numero di revocati e aggiungere un sottoinsieme.
Quanto vale |SD|?

Ipotesi: numero utenti N potenza di 2.
vi
vi
1
vj
2
S1,2
1
3
S1,3
vj
vj
vj
2
3
vj vj
vj
4
5
6
vj
7
Allora vj può assumere:
2k+(2k -1) -1= 2*2k -2
posizioni
|SD|=2
S1,2
S1,3
S1,4
S1,5
S1,6
S1,7
|SD|=6
Sia vi il nodo radice di un
albero di altezza k.
Quanto vale |SD|?

Quante posizioni vi può assumere?

Consideriamo l’albero T con altezza k=2
vi
#sottoalberi di altezza
1
vi
vi
2
4
k=2 => 2lg4-2=1
3
5
6
7
#sottoalberi di altezza
k=1 => 2lg4-1=2
Quanto vale |SD|?

Quindi:
lgN

#Si,j= k=1
S [2*2k-2]*2lgN-k
#sottoalberi Ti di altezza k
#posizioni che vj può assumere in Ti
lgN
= 2* S
k=1
2k*2lgN-k
lgN
-2* k=1
S 2lgN-k
Quanto vale |SD|?
lgN
lgN
k=1
k=1
=2* S N -2* S 2lgN-k

Sia l=lgN-k; Per k=1, si ha l=lgN-1; Per k=lgN, si ha l=0;

Poichè S 2i=2m+1-1, risulta
m
i=0
lgN
lgN-1
k=1
l=0
= 2* S N -2* S 2l
= 2*N*lgN -2N+2
= O(N*lgN)
2)Assegnamento di chiavi Li,j a Si,j


1°Caso: Li,j scelte indipendentemente e uniformemente a
caso
Quanto vale |Iu|?
Tk
vj non è sulla path
k
u
memorizza
#chiavi
Li,j
proporzionale al #nodi di Tk che
non si trovano sulla path u-root
u
Quanto vale |Iu|?

Relativamente all’albero Tk
Iu=2k+2k-1-(k+1)=2*2k-k-2
path
#foglie
#nodi
interni

Quindi occorre tener conto di tutti gli alberi di altezza k, per
1<=k<=lgN
Quanto vale |Iu|?
lgN

Iu= k=1
S
(2k+1-k-2)=
lgN
= 2* k=1
S
2k
lgN
S
k=1
2k+1
lgN
– k=1
S (k+2)
lgN
- k=1
S k -2*lgN
m
m
h=1
i=0
Poichè S h =m(m+1)/2 e S 2i=2m+1-1, risulta
= 2*(2lgN+1-2) –lgN(lgN+1)/2 -2*lgN
= 4*N -4 –lgN(lgN+1)/2 -2lgN
= O(N)
2)Assegnamento di chiavi Li,j a Si,j

2°Caso: Li,j calcolate attraverso un generatore pseudo
casuale

G:{0,1}n

S – label casuale del nodo,
S
{0,1}3n
G_L (S)

G_L(S) – label del figlio sinistro,

G_R(S) – label del figlio destro,
G_M(S) – chiave del nodo.
G (S) =
G_L (S)
G_M (S)

G_R (S)
G_R (S)
Calcolo della chiave Li,j associata a Si,j
S=Li
vi
G_L (Li)
G_R (Li)
G_L(G_L (Li))
G_R(G_L(G_L (Li)))
G_L(G_L(G_L (Li)))
vj
…
…
…
LABELi,j = G_R(G_L(G_L (Li)))
Li,j = G_M (LABELi,j )
Calcolo e distribuzione delle etichette LABELi,j



Ogni utente corrisponde ad una foglia
dell’albero.
Ad ogni nodo interno vi viene associato un
valore casuale Li
Le etichette LABELi,j associate ai sottoinsiemi
differenza Si,j sono calcolate a partire da Li
Calcolo e distribuzione delle etichette LABELi,j



Per ogni antenato vi di u con label
casuale Li, u riceve tutte le etichette
pseudocasuali LABELi,j associate ai nodi
vj che sono a distanza uno dalla path da
vi ad u.
vi
A partire da esse, l’utente u può
calcolare le etichette di tutti i
sottoinsiemi differenza Si,j a cui
appartiene,
relativamente
all’albero
radicato in vi.
Calcolata l’etichetta LABELi,j, l’utente
può calcolare la chiave Li,j
u
Etichette


Quante etichette deve memorizzare u per poter calcolare le
chiavi Li,j di tutti i sottoinsiemi differenza a cui appartiene?
Ogni path con k nodi contribuisce con k-1 etichette, quindi
lgN+1
#totetichette = S (k-1)+1
k=1
= lgN*(logN+1)/2+1
= O(lg2N)
Perché funziona? (light …)
• Osservazione 1. Ogni nodo vj che non è un antenato di u in Ti
ha un’etichetta LABELi,j che può essere calcolata a partire da
un’etichetta di un nodo a distanza uno dalla path u – root di Ti
• Osservazione 2. Un utente u non è in grado di calcolare chiavi
associate a sottoinsiemi differenza a cui non appartiene
LSD (Layered Subset Difference)

Idea: “sfoltire” la collezione di sottoinsiemi di SD {S1…Sw} e
permettere di ricoprire N\R ancora con O(r) sottoinsiemi ma
in modo tale che l’utente u memorizzi O(lg3/2N) etichette
vi
1
vk
2
3
vj
4
8
5
9
10
6
11
12
7
13
14
15
Si,,j = Si,k U Sk,,j
Se vi,vk,vj sono vertici che occorrono in questo ordine lungo una
path radice-foglia allora Si,j può sempre essere ottenuto come
l’unione di Si,k e Sk,j, cioè, se “serve” Si,j si possono usare Si,k e Sk,j

La collezione di insiemi Si,j in LSD si ottiene restringendo i
livelli in cui i vertici vi e vj possono stare
Livello
Speciale
lgN
Strato
2lgN
Livelli speciali e strati

Identifichiamo nell’albero lgN livelli speciali. I livelli tra due
livelli speciali compresi gli estremi formano uno strato. Si,j è
nella collezione di sottoinsiemi di LSD se e solo se :

vi giace su un livello speciale

vi e vj appartengono allo stesso strato
Esempio di funzionamento
v1
v2
v3
v4
v5
v8
u1
v9
u2
u3
u4
v6
v10
u5
v11
u6
u7
u8
v12
u9
v7
v13
v14
v15
u10 u11 u12 u13 u14 u15 u16
SD: Sv4,u1, Sv10,u5, Sv11,u8, Sv3,u12;
LSD: Sv4,u1, Sv10,u5, Sv11,u8, Sv3,v6, Sv6,u12;
Livelli speciali
Strati
Collezione di sottoinsiemi LSD

Insiemi Si,j che soddisfano le condizioni sono detti utili

lgN(lgN* lgN) + lgN*lgN = 0(lg3/2N)
#strati
#etichette di
ogni strato
#livelli
speciali
#posizioni di vj nel caso
peggiore(vi sul 1°livello
speciale)
Riferimenti
D. Naor, M. Naor and J. Lotspiech.
Revocation and Tracing Schemes for Stateless Receivers.
Advances in Cryptology, Proceedings of Crypto'01, Lecture Notes in
Computer Science, Vol. 2139, pp. 41--62, 2001.
D. Halevy and A. Shamir.
The LSD Broadcast Encryption Scheme.
Advances in Cryptology, Proceedings of Crypto '02, Lecture Notes in
Computer Science, Vol. 2442, pp. 47--60, 2002.
Scarica

SD-LSD