Scheda programma d'esame
LANGUAGE-BASED TECHNOLOGY FOR SECURITY
GIAN-LUIGI FERRARI
Anno accademico2021/22
CdSCYBERSECURITY
Codice714AA
CFU9
PeriodoSecondo semestre
LinguaInglese

ModuliSettoreTipoOreDocente/i
LANGUAGE-BASED TECHNOLOGY FOR SECURITYINF/01LEZIONI72
CHIARA BODEI unimap
GIAN-LUIGI FERRARI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Tradizionalmente, la sicurezza dei sistemi informatici è stata in gran parte affrontata a livello di sistemi operativi. Tuttavia, le politiche di sicurezza del sistema operativo sono politiche di basso livello (ad esempio le politiche di controllo dell'accesso, che proteggono particolari file), mentre molti attacchi sono di alto livello, o a livello di applicazione (come i worm di posta elettronica che passano attraverso i controlli di accesso fingendo di essere eseguiti per conto di un'applicazione mailer). La chiave per difendersi dagli attacchi a livello di applicazione è la sicurezza a livello di applicazione. Con il termine Language-based security si identificano quell'insieme di tecniche e strumenti che affrontano le problematiche di sicurezza a livello del linguaggio di programmazione. Il vantaggio diretto della laguage-based security è la capacità di esprimere in modo naturale le politiche di sicurezza e i loro meccanismi di esecuzione e verifica utilizzando le tecniche sviluppate per la realizzazione linguaggi di programmazione.

Knowledge

Traditionally, computer security has been largely enforced at the level of operating systems. However, operating-system security policies are low-level (such as access control policies, protecting particular files), while many attacks are high-level, or application-level (such as email worms that pass by access controls pretending to be executed on behalf of a mailer application). The key to defending against application-level attacks is application-level security. Because applications are typically specified and implemented in programming languages, this area is generally known as language-based security. A direct benefit of language-based security is the ability to naturally express security policies and enforcement mechanisms using the developed techniques of programming languages.

Modalità di verifica delle conoscenze

La valutazione continua è lo strumento principale adottato per la verifica delle conoscenze e monitorare i progressi di apprendimento degli studenti. Per effettuare la valutazione continua saranno considerati test di programmazione, progetti e gruppi di discussione tra il docente e gli studenti. 

Assessment criteria of knowledge

Ongoing assessment in the form of programming tests or discussion gruops between the lecturer and students will be carried out to monitor the learning progress of students.

Capacità

L'obiettivo del corso è quello portare gli studenti ad sviluppare una comprensione approfondita delle problematiche di sicurezza del software, insieme ad una familiarità più generale con le linee innovative delle ricerche nel settore. Il corso intende fornire una varietà di metodi e strumenti per affrontare i problemi di sicurezza del software. In dettaglio il socrso di propone di far

  • acquisire una comprensione e una familiarità con i metodi e gli strumneti di language-based security.
  • comprendere metodologie innovative per la progettazione e l'implementazione dei meccanismi di sicurezza.
  • compremdere a navigare all'interno della ricerca nell'area dei linguaggi di programmazione e della sicurezza.

Dopo il corso, gli studenti saranno in grado di applicare la conoscenza pratica della sicurezza per i moderni linguaggi di programmazione. Questo include la capacità di identificare le minacce alla sicurezza a livello di applicazione e di linguaggio, progettare e argomentare politiche di sicurezza a livello di applicazione e di linguaggi. Lo studente saranno in grado di dimostrare la conoscenza critica dei principi alla base di attacchi a livello applicativo come race condition, buffer overflow, code injection (per citare alcuni esempi).

Skills

The aim of the course is to allow each student to develop a solid understanding of application level security, along with a more general familiarity with the range of research in the field. In-course discussion will highlight opportunities for cutting-edge research in each area. The course intends to provide a variety of powerful tools for addressing software security issues

  • To obtain a deeper understanding of programming language-based concepts for computer security.
  • To understand the design and implementation of security mechanisms.
  • To understand and move inside the research in the area of programming languages and security.

After the course, students should be able to apply practical knowledge of security for modern programming languages. This includes the ability to identify application-and language-level security threats, design and argue for application- and language-level security policies, and design and argue for the security, clarity, usability, and efficiency of solutions, as well as implement such solutions in expressive programming languages. Student should be able to demonstrate the critical knowledge of principles behind such application-level attacks as race conditions, buffer overruns, and code injections. You should be able to master the principles behind such language-based protection mechanisms as static security analysis, program transformation, and reference monitoring.

Modalità di verifica delle capacità

Sono previste attività sperimentali di laboratorio su specifiche problematiche di sicurezza. La verifica delle capacità prevede la presentazione operativa dei progetti e una relazione scritta che documenti le attività svolte.

Assessment criteria of skills

There are lab assignments. The lab assignments are experimental activities about specific problems. To pass the course, students must pass the labs by making a presentation of the assignments in class and pass the requirements on a written report that documents the activities done.

Comportamenti

Gli studenti acquisiranno le tecniche per rilevare e prevenire le vulnerabilità dei sistemi software sfruttando una varietà di metodologie e strumenti di language-based security.

Behaviors

Students will acquire the techniques to detect and prevent vulnerabilies of software systems by exploiting a variety of programming language-based machineries.

Modalità di verifica dei comportamenti

I gruppi di discussione, il lavoro di gruppo e le attività sperimentali (laboratorio) costituiranno lo strumento principale di verifica dei comportamenti. All'interno di questa verifica verranno affrontati gli aspetti di modellazione delle minacce, standard di codifica, le revisioni del codice, test di sicurezza, strumenti di analisi statica (taint analysis), l'analisi del flusso di informazioni, la verifica del programma e la compilazione sicura.

Assessment criteria of behaviors

The discusssion groups and the expermental activities (lab) will asses the echniques to prevent or detect security vulnerabilities. This will include include threat modeling, coding standards, code reviews, "safe" programming languages, LangSec (language-theoretic security), security testing, static analysis tools and source code analyzers (incl. tainting), information flow analysis, program verification, and secure compilation.

Prerequisiti (conoscenze iniziali)

Competenze di base di programmazione, inclusa la familiarità con C e Java.

Competenze di base sui principi dei linguaggi di programmazione, incluso il compilatore e la struttura di run-time

Competenze di base sull'organizzazione del sistema (sistemi operativi e networking)

Competenze di base sulla crittografia.

Prerequisites

Basic programming skills, incl. familiarity with C and Java.

Basic skills on principle of programming languages inclu compiler and run-time structure

Basic slkils on system organization (operating systems and networking)

Basic skills on cryptography.

Indicazioni metodologiche

Le lezioni e le attività di laboratorio si concentreranno sulle cause sottostanti e sulle tecniche generali per migliorare la sicurezza del software.

Teaching methods

Lectures and lab activities will focus on (addressing) the underlying causes and general techniques to improve the security of software.

Programma (contenuti dell'insegnamento)
  • Security in the Software Development Life Cycle
  • The science of software security
  • Memory-corruption flaws
  • Control Flow Integry & Software Fault Isolation
  • Safe Programming Languages
  • Access Control, Sand-Boxing and Stack Inspection
  • Inline-Reference Monitor (Theory & Sperimentation)
  • Function as a Service
  • Local Security Policies in Java
  • Taint analysis
  • Information Flow and JS-Flow
  • Control Flow Analysis for Security
  • Secure Compilation
  • Lab and programming assignments
Syllabus
  • Security in the Software Development Life Cycle
  • The science of software security
  • Memory-corruption flaws
  • Control Flow Integry & Software Fault Isolation
  • Safe Programming Languages
  • Access Control, Sand-Boxing and Stack Inspection
  • Inline-Reference Monitor (Theory & Sperimentation)
  • Function as a Service
  • Local Security Policies in Java
  • Taint analysis
  • Information Flow and JS-Flow
  • Control Flow Analysis for Security
  • Secure Compilation
  • Lab and programming assignments.
Bibliografia e materiale didattico

Il materiale didattico include il materiale presentato a lezionie (vidoregistrazioni delle lezioni), i articoli scientifiici e note didattiche. Il materiale sarà reso disponibile sull'infrastruttura accademica di e-learning.

Bibliography

The reading material and exam material for the course includes the slides, academic research papers and notes. The reading material will be made available on the academic e-learning infrastructure.

Indicazioni per non frequentanti

Il programma e il contenuto delle lezioni e delle sessioni di laboratorio saranno resi disponibili sull'infrastruttura accademica di e-learning.

Non-attending students info

The schedule and the contents of lectures and lab sessions will be made available on the e-learning academic infrastructure.

 

Modalità d'esame

La prova di esame consiste in diverse parte:

  • Partecipazione alla lezione (gruppi di discussione)
  • Lavoro di progetto: progettazione e realizzazione di un prototipo di software
  • Prova scritta
  • Discussione orale
Assessment methods

The exam consits of 

  • Class participation (discussion groups)
  • Project work: design and implementation.of asoftware prototypes
  • Written exam 
  • Oral Exam
Ultimo aggiornamento 06/08/2021 08:19