24
Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile 2008 Dipartimento di Informatica

Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Sicurezza di programmimulti-threaded distribuiti

Matteo Centenaro e Riccardo Focardi

Terzo Workshop di Dipartimento17 Aprile 2008

Dipartimento di Informatica

Page 2: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

SICUREZZA?

Page 3: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile
Page 4: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile
Page 5: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Information Flow

Page 6: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Un attaccante distingue/vedesolo la parte pubblica

m1 =L m2

m1 m2

h : 0 h : 1l1 : 2 l1 : 2l2 : 0 l2 : 0

Page 7: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Un programma C e sicuro solose non produce memoriedistinguibili

Noninterference∀m1,m2. m1 =L m2,〈C ,m1〉 →∗ m′1, 〈C ,m2〉 →∗ m′2 em′1 =L m′2

Page 8: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

l := h

NON SICURO

m1

h : 1l : 0

m′1h : 1l : 1

m2

h : 0l : 0

m′2h : 0l : 0

Page 9: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

l := h

NON SICURO

m1

h : 1l : 0

m′1h : 1l : 1

m2

h : 0l : 0

m′2h : 0l : 0

Page 10: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

if (h) then

l := 1

else

l := 0

NON SICURO

m1

h : 1l : 0

m′1h : 1l : 1

m2

h : 0l : 0

m′2h : 0l : 0

Page 11: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

if (h) then

l := 1

else

l := 0

NON SICURO

m1

h : 1l : 0

m′1h : 1l : 1

m2

h : 0l : 0

m′2h : 0l : 0

Page 12: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

if (l = 5) then

h := h + 1

else

l := l +1

SICURO!

m1

h : 1l : 5

m′1h : 2l : 5

m2

h : 0l : 5

m′2h : 1l : 5

Page 13: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

if (l = 5) then

h := h + 1

else

l := l +1

SICURO!

m1

h : 1l : 5

m′1h : 2l : 5

m2

h : 0l : 5

m′2h : 1l : 5

Page 14: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

...CON LA CIFRATURA?

encrypt(x , k) ↓m {v , c}k

Page 15: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

l : = encrypt(a,k)

NON SICURO! :(

m1

a : 1234l : 0

m′1h : 1234l : {1234, c1}k

m2

h : 5678l : 0

m′2h : 5678l : {5678, c2}k

Page 16: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

l : = encrypt(a,k)

NON SICURO! :(m1

a : 1234l : 0

m′1h : 1234l : {1234, c1}k

m2

h : 5678l : 0

m′2h : 5678l : {5678, c2}k

Page 17: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Assumiamo che il cifrario siaperfetto...

{v , c}kCosa vede un attaccante?

2c

{v , c}k ≈C {v ′, c ′}′k se 2c = (2c ′)ρ

{1234, c1}k ≈C {5678, c2}k ,2c1 = (2c2)[c2 7→ c1]

Page 18: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Assumiamo che il cifrario siaperfetto...

{v , c}kCosa vede un attaccante? 2c

{v , c}k ≈C {v ′, c ′}′k se 2c = (2c ′)ρ

{1234, c1}k ≈C {5678, c2}k ,2c1 = (2c2)[c2 7→ c1]

Page 19: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Assumiamo che il cifrario siaperfetto...

{v , c}kCosa vede un attaccante? 2c

{v , c}k ≈C {v ′, c ′}′k se 2c = (2c ′)ρ

{1234, c1}k ≈C {5678, c2}k ,2c1 = (2c2)[c2 7→ c1]

Page 20: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Non dimentichiamo il confrontobit-a-bit...

l := encrytpt(b,k)

send(ch,l)

if (h) then

l := encrypt(a,k)

else

skip

Page 21: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

IDEA: pattern

{(l ,2c1), (ch,2c1)}

{(l ,2c ′2), (ch,2c ′1

)}

Page 22: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Per iniziare...Language-Based Information-Flow SecurityAndrei Sabelfeld and Andrew C. Myers

Il nostro lavoro...Information Flow Security of Multi-ThreadedDistributed ProgramsMatteo Centenaro and Riccardo Focardi (mail us)

Domande?

BUON PRANZO :)

Page 23: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Per iniziare...Language-Based Information-Flow SecurityAndrei Sabelfeld and Andrew C. Myers

Il nostro lavoro...Information Flow Security of Multi-ThreadedDistributed ProgramsMatteo Centenaro and Riccardo Focardi (mail us)

Domande?

BUON PRANZO :)

Page 24: Matteo Centenaro e Riccardo Focardi · 2008-04-22 · Sicurezza di programmi multi-threaded distribuiti Matteo Centenaro e Riccardo Focardi Terzo Workshop di Dipartimento 17 Aprile

Per iniziare...Language-Based Information-Flow SecurityAndrei Sabelfeld and Andrew C. Myers

Il nostro lavoro...Information Flow Security of Multi-ThreadedDistributed ProgramsMatteo Centenaro and Riccardo Focardi (mail us)

Domande?

BUON PRANZO :)