Testi del Syllabus

Transcript

Testi del Syllabus
Testi del Syllabus
Resp. Did.
DENARO GIOVANNI
Anno offerta:
2016/2017
Insegnamento:
E3101Q123 - SICUREZZA ED AFFIDABILITA'
Corso di studio:
E3101Q - INFORMATICA
Anno regolamento:
2014
CFU:
8
Anno corso:
3
Periodo:
Secondo Semestre
Matricola:
001643
Testi in italiano
Contenuti
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.
Testi di riferimento
C.L. Pfleeger, S.L. Pfleeger. Sicurezza in informatica. 2 ed, Pearson, 2008
Mauro Pezzè, Michal Young. Software Testing and Analysis: Process, Principles
and Techniques. John Wiley, 2008
Obiettivi formativi
Alla fine del corso lo studente avrà maturato consapevolezza dei problemi di
sicurezza e affidabilità delle applicazioni software. In particolare, 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.
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.
Metodi didattici
Lezioni ed esercitazioni in aula. Attività di laboratorio assistita in aula.
Modalità di verifica
dell'apprendimento
La verifica dell'apprendimento comprende una prova scritta e una eventuale
discussione del risultato.
La verifica dell'apprendimento può inoltre derivare dall'esito di prove intermedie
parziali.
Programma esteso
1 "Rischi nell'uso dei sistemi informativi, ruoli e competenze
"
2 "Tecniche e protocolli per la sicurezza:
- Crittografia, errori di implementazione e attacchi
- Sicurezza nei sistemi operativi e nelle strutture di rete"
3"
Programmazione sicura:
- Errori di sicurezza nelle applicazioni
- Analisi di noti programmi che presentano vulnerabilita'
"
4 Programmi pericolosi: troiani, back-door, bombe logiche, virus, worm
5 Difese: Intrusion Detection System, attacchi di verifica, firewall
6 Convalida di affidabilità del software: dimensioni del problema.
7 " 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.
- Test basato su modelli: macchine a stati finiti, strutture di decisione e grafi di
flusso.
- Infrastrutture per l'esecuzione dei test: driver, stub e oracoli"
8 "Analisi dei programmi:
- Distinzione fra analisi statica e analisi dinamica
- Tecniche di analisi dinamica: analisi di memoria e lockset analysis
- Tecniche di analisi statica: analisi basata su modelli data-flow, analisi simbolica"
Testi in inglese
Contenuti
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.
Testi di riferimento
C.L. Pfleeger, S.L. Pfleeger. Sicurezza in informatica. 2 ed, Pearson, 2008
Mauro Pezzè, Michal Young. Software Testing and Analysis: Process, Principles
and Techniques. John Wiley, 2008
Obiettivi formativi
By the end of the course, the perspective student will be knowledgeable of the
problems of information security and software validation. In particular, they will be
able to analyze the risks and the criticality of an information system, to administer
the tools for defending an information system, to understand the phases of an
attack, and to analyze and design solutions in application contexts that require
validation of the software.
Prerequisiti
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
Metodi didattici
Lessons in class. Laboratory work in class.
Modalità di verifica
dell'apprendimento
Learning assessment includes a written exam and possibly a discussion of the
result.
The assessment can also be the result of intermediate partial tests.
Programma esteso
1 "Risks when using an information system, and related roles and expertise
"
2 "Techniques and protocols for security
- Criptography, implementation errors and attacks
- Security in operating systems and networks"
3"
Secure programming
- Security errors in applications
- Analysis of known programs that exhibit vulnerabilities
"
4 Malicious software: troians, back-doors, locgical bombs, viruses, worms
5 Defenses: Intrusion Detection System, verification attacks, firewall
6 Software validation: dimensions of the problem.
7 " 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.
- Model based testing: finite state machines, decision structures and flow graphs.
- Test infrastructures: driver, stub and oracles"
8 "Program analysis:
- The difference between static and dynamic analysis
- Dynamic analysis: memory analysis and lockset analysis
- Static analysis: techniques based on data-flow models, symbolic analysis"