Tecniche di Sicurezza Basate sui Linguaggi

dott. Ivano Salvo, con la collaborazione del dott. Daniele Gorla
anno accademico 2005/06


Ultima modifica: 25 maggio 2006


Introduzione

L'idea fondamentale della Language Based Security è quella di spostare l'onere di verificare proprietà di sicurezza
(quali ad esempio la protezione contro accessi indesiderati in memoria, virus, worms etc.)
dal livello del sistema operativo, al livello delle applicazioni.
Il corso ha l'obiettivo di presentare tecnologie utilizzate o in corso di sviluppo per scrivere software dimostrabilmente sicuro.
In larga parte, le tecnologie presentate sono applicazioni alla Sicurezza di concetti introdotti per lo studio dei Linguaggi
di Programmazione: semantica operazionale, sistemi di tipo, equivalenze osservazionali.

Programma del corso

Introduzione [3]:Il problema della Sicurezza: approccio classico: limiti e potenziali alternative.
Introduzione ai sistemi di tipo: il lambda calcolo tipato semplice: principali proprietà e loro conseguenze.

Typed Assembly Language [7]: sintassi, semantica, sistema dei tipi di un linguaggio assembler (TAL)
Garanzie di sicurezza assicurate dalla proprietà di type soundness.
Estensioni di TAL: polimorfismo, stack, heap.
Typed Preserved Compilation: compilazione di un piccolo linguaggio type safe (TINY) in TAL.

Information Flow [6]: vari tipi di flussi impliciti; un semplice linguaggio imperativo (sintassi e semantica operazionale).
Sistema di tipi per evitare flussi impliciti (subject reduction e non-interference).
Generalizzazione dei risultati a un linguaggio imperativo multi-threaded
(gestione di flussi basati su tempo e terminazione tramite sistemi di tipi). Cenni sulla declassification.

Reference Monitors [4]: politiche di sicurezza che si possono forzare via monitor.
Instrumentazione del codice per evitare accessi di memoria illegali.
Formalismi per definire politiche di sicurezza application dependent: automi e guarded command.
Generazione del codice instrumentato dalla specifica di una politicha di sicurezza.
Clasi di Complessità e politiche di Sicurezza.

Materiale e testi di consultazione

I materiali del corso saranno prevalentemente articoli scientifici che saranno via via distribuiti a lezione e/o resi disponibili qui sotto:

Letture consigliate:

Gli studenti con spiccato interesse alla teoria, possono consultare l'articolo fondamentale sul Typed Assembly Language: From System F to Typed Assembly Language Greg Morrisett, David Walker, Karl Crary, Neal Glew: si tratta di un articolo tecnicamente ostico, destinato a un pubblico adulto e motivato.
Chi viceversa fosse interessato a vedere come le cose viste a lezione prendono forma in tool per lo sviluppo di software, può consultare il lavoro: TALx86: A Realistic Typed Assembly Language Greg Morrisett et al.

Oltre ai materiali segnalati, esistono numerose pagine dedicate a progetti connessi a Language Based Security, che spesso contengono link utili.
Una raccolta di link particolarmente completa, è la seguente Language Based Security Notes and Papers curata da Greg Morrisett.

Orario


Modalità d'esame

L'esame sarà diviso in due parti:

Avvisi

La lezione di martedì 23 maggio è annullata
causa occupazione aula alfa per la seduta di laurea.