PRINCIPLES OF CORRECT AND SECURE COMPILATION
- Anno accademico
- 2024/2025 Programmi anni precedenti
- Titolo corso in inglese
- PRINCIPLES OF CORRECT AND SECURE COMPILATION
- Codice insegnamento
- PHD209 (AF:545155 AR:311539)
- Modalità
- In presenza
- Crediti formativi universitari
- 6
- Livello laurea
- Corso di Dottorato (D.M.226/2021)
- Settore scientifico disciplinare
- INF/01
- Periodo
- Annuale
- Anno corso
- 1
- Sede
- VENEZIA
- Spazio Moodle
- Link allo spazio del corso
Inquadramento dell'insegnamento nel percorso del corso di studio
In particolare, gli obbiettivi del corso sono: introdurre le studentesse/gli studenti alla sintassi e alla semantica dei linguaggi di programmazione in Coq (un proof assistant); insegnare alle studentesse/agli studenti i principi e le motivazioni della compilazione corretta e sicura; mostrare alle studentesse/agli studenti come usare Coq per supportare prove meccaniche della correttezza/sicurezza dei compilatori. Le ultime ore del corso saranno dedicate ad aspetti più avanzati, come tecniche di prova moderne o applicazioni allo stato dell'arte.
Risultati di apprendimento attesi
1. Conoscenza e comprensione
1.1. acquisire i fondamenti della sintassi e semantica dei linguaggi di programmazione in Coq;
1.2. acquisire i principi e le motivazioni della compilazione corretta e sicura
2. Capacità di applicare conoscenza e comprensione
2.1. sapere modellare un semplice linguaggio e il suo compilatore in Coq;
2.2. sapere formalizzare i requisiti di sicurezza e correttezza del compilatore in Coq;
2.3. sapere utilizzare Coq per dimostrare semplici proprietà dei compilatori.
3. Capacità di giudizio
3.1. sapere valutare le alternative formulazioni di correttezza e sicurezza dei compilatori, discutendone pregi e difetti
Prerequisiti
Contenuti
+ Introduzione al software sicuro e motivazioni
+ (Laboratorio guidato) Fondamenti di Coq
+ (Laboratorio) Q&A su Coq; Esercizi
* Blocco 2 (4h + 2h laboratorio)
+ Sintassi e semantica dei linguaggi di programmazione
+ Esempi: imperativo, funzionale e a basso livello
+ Introduzione ai compilatori, la loro struttura e terminologia di base
+ Correttezza dei compilatori
+ (Laboratorio guidato) Definizione di un semplice linguaggio di programmazione e del suo compilatore; Dimostrazione di correttezza
* Blocco 3 (4h + 2h laboratorio)
+ Ulteriori approfondimenti sulla correttezza dei compilatori, ottimizzazioni
+ Introduzione alla sicurezza dei compilatori
+ Fully Abstract Compilation (FAC) e la sua relazione con la correttezza
+ Breve panoramica delle tecniche di prova di base per la FAC; Osservazioni ed esempi
+ (Laboratorio) Esercizi su correttezza e FAC
* Blocco 4 (4h + 2h laboratorio)
+ Concetti formali di sicurezza: trace properties, loro caratteristiche
+ Non-interferenza, generalizzazione alle hyperproperties e la loro preservazione; Attaccanti attivi
+ (Laboratorio) Modellazione e dimostrazione dell preservazione della non-interferenza
* Blocco 5 (4h)
+ Argomenti avanzati
* Blocco 6 (4h)
+ (Laboratorio) Q&A; Altri esercizi
Testi di riferimento
[1] B. C. Pierce et al., "Software foundations, Vol 1: Logical Foundations", https://softwarefoundations.cis.upenn.edu/lf-current/index.html
[2] B. C. Pierce et al., "Software foundations, Vol 2: Programming Language Foundations", https://softwarefoundations.cis.upenn.edu/plf-current/index.html
[3] X. Leroy, "A formally verified compiler back-end", Journal of Automated Reasoning, vol. 43, pp. 363–446,
2009.
[4] D. Patterson and A. Ahmed, "The next 700 compiler correctness theorems (functional pearl)",
Proceedings of the ACM on Programming Languages, vol. 3, no. ICFP, pp. 1–29, 2019.
[5] F. Piessens, "Security across abstraction layers: old and new examples", in 2020 IEEE European
Symposium on Security and Privacy Workshops (EuroS&PW), 2020, pp. 271–279.
[6] M. Patrignani, A. Ahmed, and D. Clarke, "Formal approaches to secure compilation: A survey of fully
abstract compilation and related work", ACM Computing Surveys (CSUR), vol. 51, no. 6, pp. 1–36, 2019.
[7] M. Busi, L. Galletta, and Others, "A brief tour of formally secure compilation", in ITASEC 2019.
[8] C. Abate, R. Blanco, D. Garg, C. Hritcu, M. Patrignani, and J. Thibault, "Journey beyond full abstraction:
Exploring robust property preservation for secure compilation", in 2019 IEEE 32nd Computer Security
Foundations Symposium (CSF), 2019, pp. 256–25615.
[9] A. Ahmed, D. Garg, C. Hritcu, and F. Piessens, "Secure compilation (Dagstuhl seminar 18201)", in
Dagstuhl Reports, 2018, vol. 8.
[10] D. Chisnall, D. Garg, C. Hritcu, and M. Payer, "Secure Compilation (Dagstuhl Seminar 21481)", in
Dagstuhl Reports, 2022, vol. 11.
Modalità di verifica dell'apprendimento
* Seminario: organizzare un seminario di 45 minuti/1 ora su un argomento avanzato a scelta
* Progetto: sviluppare un'estensione non banale a uno degli esercizi/argomenti trattati nel corso (ad esempio, funzionalità aggiuntive su un compilatore)