- Sicurezza ed Affidabilità
- Introduzione
Syllabus del corso
Obiettivi
Il corso ha l'obiettivo di fornire consapevolezza dei problemi di sicurezza e affidabilità delle applicazioni software, e competenza sulle tecniche per affrontarli. In particolare, alla fine del corso lo studente avrà maturato la capacità di analizzare i punti di rischio e criticità nei sistemi informatici, di amministrare gli strumenti di difesa dei sistemi, di comprendere le fasi di un attacco osservato, e di analizzare e progettare soluzioni nei contesti applicativi che richiedono la convalida di affidabilità del software.
Contenuti sintetici
Origine del problema della sicurezza informatica. Eterogeneità delle competenze richieste nel settore sicurezza. Ruoli di attacco e di difesa nei sistemi informatici. Il problema di convalidare l'affidabilità del software. Metodi per il test del software: test funzionale, test strutturale, test basato su modelli. Infrastrutture per l'esecuzione del test. Tecniche di analisi statica e dinamica di programmi.
Programma esteso
-
Rischi nell'uso dei sistemi informativi, ruoli e competenze
-
Tecniche e protocolli per la sicurezza:
-
Crittografia, errori di implementazione e attacchi
-
Sicurezza nei sistemi operativi e nelle strutture di rete
- Programmazione sicura:
-
Errori di sicurezza nelle applicazioni
-
Analisi di noti programmi che presentano vulnerabilita'
-
Programmi pericolosi: troiani, back-door, bombe logiche, virus, worm
-
Convalida di affidabilità del software: dimensioni del problema.
-
Testing:
-
Test funzionale: fonti di informazione per derivare casi di test, il test funzionale o black-box, vantaggi e svantaggi rispetto ad un approccio random.
-
Test Combinatorio: partizione delle categorie, combinazioni a coppie.
-
Test Strutturale: copertura delle istruzioni, decisioni, condizioni e cammini.
-
Infrastrutture per l'esecuzione dei test: driver, stub e oracoli
- Analisi dei programmi:
-
Distinzione fra analisi statica e analisi dinamica
-
Tecniche di analisi statica: analisi simbolica
Prerequisiti
Nessun prerequisito essenziale. E' utile la comprensione di alcuni concetti base trattati negli insegnamenti di Fondamenti dell'informatica, di Programmazione 1, di Programmazione 2, di Reti e Sistemi Operativi, e di Analisi e Progettazione del Software.
Modalità didattica
Lezioni ed esercitazioni:
- 16 lezioni da 2 ore svolte in modalità erogativa in presenza;
- 10 esercitazioni da 2 ore svolte in modalità erogativa in presenza;
Attività di laboratorio assistita in aula:
- 6 attività di laboratorio da 3 ore svolte in modalità interattiva in presenza;
- 1 attività di laboratorio da 2 ore svolta in modalità interattiva in presenza;
Lingua di erogazione: italiano.
Materiale didattico
Testi di riferimento
Ross Anderson. Security Engineering. 2 ed, Wiley 2008
Mauro Pezzè, Michal Young. Software Testing and Analysis: Process, Principles and Techniques. John Wiley, 2008
Periodo di erogazione dell'insegnamento
Secondo semestre
Modalità di verifica del profitto e valutazione
La verifica dell'apprendimento comprende una prova scritta e una eventuale colloquio orale.
La prova scritta consiste nella risoluzione di esercizi che richiedono calcolo, esercizi che richiedono sviluppo di una soluzione ad un problema assegnato, domande sulle nozioni presentate, e domande di ragionamento e deduzione. Tutte le domande proposte sono a risposta aperta. Gli esercizi hanno la finalità di controllare le competenze di problem solving acquista durante il corso, e le domande permettono il controllo intensivo delle conoscenze teoriche e sulle capacità di riflessione autonoma su punti critici del programma. Solitamente la prova scritta si compone di 3 esercizi e 5 domande a risposta aperta. Gli esercizi sono valutati in base alla correttezza della soluzione proposta, e le domande aperte in base alla completezza e precisione delle risposte corrispondenti.
Il colloquio orale è opzionale e, se richiesto dallo studente, consiste in un colloquio che verte su tutti i punti del programma. Il risultato del colloquio complementa, in positivo o in negativo, il voto che deriva dalla valutazione della prova scritta.
La verifica dell'apprendimento può inoltre derivare dall'esito di due prove intermedie parziali, svolte in forma scritta con modalità equivalenti alla prova complessiva, ma vertenti sui contenuti di metà del programma ognuna. La prima prova parziale riguarda la parte di programma su convalida di affidabilità, test e analisi del software. La seconda prova parziale riguarda la parte di programma sulla sicurezza informatica. La valutazione finale deriva dalla media delle valutazioni delle due prove parziali, che devono però essere necessariamente entrambe sufficienti.
Orario di ricevimento
Su appuntamento
Sustainable Development Goals
Aims
This course aims to provide knowledge of the problems of software security and software validation, and competencies on techniques to address these problems. In particular, by the end of this course, the perspective students will be capable of analyzing risks and critical points of an information system, administering tools for defending information systems, understanding the phases of an attack, and analyzing and designing solutions in application contexts that require software validation.
Contents
The problem of information security. Heterogeneity of expertise required in the field of security. Attack and defense roles in information systems. The problem of software validation. Methods of software testing: functional testing, structural testing, model-based testing. Infrastructures for test execution. Static and dynamic analysis of programs.
Detailed program
-
Risks when using an information system, and related roles and expertise
-
Techniques and protocols for security
-
Criptography, implementation errors and attacks
-
Security in operating systems and networks
- Secure programming
-
Security errors in applications
-
Analysis of known programs that exhibit vulnerabilities
4, Malicious software: troians, back-doors, locgical bombs, viruses, worms
-
Software validation: dimensions of the problem.
-
Testing:
-
Functional testing: sources of information to design tests, functional (black-box) testing, pros and cons in comparison to the random approach
-
Combinatorial testing: category partition, pairwise combinations.
-
Structural testing: coverage of statements, branches, conditions and paths.
-
Test infrastructures: driver, stub and oracles
- Program analysis:
-
The difference between static and dynamic analysis
-
Static analysis: symbolic analysis
Prerequisites
No essential prerequisite. It can be useful to master the base concepts from the following courses: Fondamenti dell'informatica, Programmazione 1, Programmazione 2, Reti e Sistemi Operativi, Analisi e Progettazione del Software
Teaching form
Lessons and exercises in class:
- 16 lessons of 2 hours in "didattica erogativa" mode in person;
- 10 exercise sessions of 2 hours in "didattica erogativa" mode in person;
Laboratory work in class:
- 6 lab activities of 3 hours in interactive mode in person;
- 1 lab activity of 2 hour in interactive mode in person;
Lessons will be given in Italian.
Textbook and teaching resource
Textbooks:
Ross Anderson. Security Engineering. 2 ed, Wiley 2008
Mauro Pezzè, Michal Young. Software Testing and Analysis: Process, Principles and Techniques. John Wiley, 2008
Semester
Second semester
Assessment method
The assessment method consists of a written exam, and possibly of an oral exam.
The written exam consists of exercises that require calculations, exercises that require to solve an assigned problem, questions on the presented notions, and questions that require reasoning and deductions. All questions are open questions. The exercises aim to control the problem solving competencies acquired as a result of the course, and the open questions allow for in-depth control of the theoretical topics and on the capability of the students to autonomously and critically reflect on the critical points of the course programme. Usually the written exam includes 3 exercises and 5 open questions. The exercises are evaluates based on the correctness of the proposed solution, and the open questions based on the completeness and precision of the corresponding answers.
The oral exam is options and, if requested by a student, consists on a discussion on all points of the course programme. The result of the oral exam complements, either positively or negatively, the grade that derives from the evaluation of the written exam.
Furthermore the assessment can be accomplished with two separate partial exams, which are both written exams and evaluated with in the same way as the entire written exam explained above. Each partial exam addresses half of the course programme. The first partial exam focuses and the programme on software validation, test and analysis. The second partial exam focuses on the programme on software security. The final evaluation is the average of the evaluations of the partial exams, which must necessarily be both sufficient.
Office hours
By appointment
Sustainable Development Goals
Scheda del corso
Staff
-
Pietro Braione
-
Giovanni Denaro
-
Luca Guglielmo