Corso di Analisi Statica e Protezione

Università degli Studi di Verona
Corso di Laurea Magistrale in Ingegneria e Scienze Informatiche

ASP - Analisi Statica e Protezione


Introduzione al corso:

Un aspetto fondamentale della moderna scienza dei calcolatori è quello di fornire strumenti per poter ragionare sulle proprietà dei programmi. Le proprietà più interessanti sono quelle legate alla semantica dei programmi, ovvero a ciò che i programmi fanno indipendentemente dalla loro rappresentazione in un dato linguaggio di programmazione. Ad esempio, nei moderni sistemi distribuiti WWW è spesso necessario assicurare un corretto e sicuro flusso di informazioni affinchè non vengano violate privacy o venga compromessa la sicurezza dei sistemi di elaborazione. Analogamente, nei compilatori è importante conoscere il flusso delle informazioni all'interno delle varie strutture del programma (ovvero la semantica del programma) per potere trasformare questo al fine di ottenere un programma semanticamente equivalente ma migliore in prestazioni. Questi problemi hanno assunto risvolti particolarmente importanti nell'ambito della protezione del codice rispetto a violazioni (es. di copyright o di funzionalità). La natura indecidibile dei problemi legati alla semantica dei linguaggi di programmazione impone una necessaria approssimazione nella fase di analisi e verifica formale, approssimazione che rappresenta sia una limitazione della potenziale sicurezza di un sistema ma anche una forza contro attacchi che per loro natura non possono essere invincibili. Questo ruolo simmetrico dell'analisi di proprietà semantiche come strumento di protezione del codice ma anche come strumento di attacco al medesimo ed alla integrità di un sistema, pone il ruolo dell'analisi statica e dinamica come uno degli strumenti fondamentali per comprendere e misurare la sicurezza e l'affidabilità di un sistema SW complesso. Scopo de corso è quello di legare questi concetti di fondo della moderna computer scinece and security, proponendo un modello sia teorico che applicativo per lo studio, lo sviluppo e la protezione di sistemi SW relativamente sicuri ed affidabili. In particolare, nel corso vengono studiati i principali metodi e tecniche per l'analisi, la trasformazione e la protezione del codice. Le metodologie saranno orientate ad applicazioni nell'ambito dell'utilizzo sicuro ed affidabile del SW di qualsiasi dimensione, con particolare enfasi allo studio di tecniche di protezione rispetto ad attacchi basati su reverse engineering e malware.


Il Corso:

  • Docente: Roberto Giacobazzi (E-mail roberto.giacobazzi@univr.it);
  • Ricevimento studenti: Su appuntamento.
  • Crediti: 6 crediti - circa 45h
  • Prerequisiti: conoscenze elementari di Algebra, Logica, Programmazione imperativa e oggetti, Algoritmi, Calcolabilità e Complessità, Linguaggi di programmazione e compilatori.
  • Modalità d'Esame: Sviluppo di un progetto implementativo consistente in un analizzatore/trasformatore del codice con finalità di analisi e protezione di codice sorgente (Java, Bytecode, x86). In alternativa, analisi dettagliata di malware (in codice C o asm x86) per quanto concerne la loro componente di polimorfismo o metamorfismo o in genere di protezione, quest'ultimo eventualmente in sinergia con l'esame di Sicurezza dei Sistemi per quanto concerne gli aspetti di protezione.

  • Programma del Corso

  • ASP introduction

  • Mathematical Bases
  • Lattice theory
  • Fixpoint theory
  • Attack model
  • Attack and defence
  • Levels of interpretation and specialization
  • Data Flow Analysis
  • Static Attack
  • Decompilation and Disassembling
  • Dynamic Attack
  • Program Slicing
  • Program Monitoring
  • Theoretical foundation of code protection
  • Fixpoint approximation
  • Abstract Interpretation
  • Completeness
  • Incompleteness and obscurity
  • Obfuscation Theory: Impossibility results
  • Obfuscation via interpretation
  • Code obfuscation
  • Obfuscating Control-flow and Data-flow
  • Static obfuscation
  • Dynamic obfuscation
  • Virtualization
  • Code protection
  • Tamper-proofing transformations
  • Static Watermarking
  • Dynamic Watermarking
  • Abstract Watermarking
  • Digital forensics
  • Similarity analysis (non nel 2012-2013)
  • Law & order

  • Riferimenti bibliografici di base

  • H. A. Priestley, "Ordered sets and complete lattices" PDF
  • B. A. Davey and H. A. Priestley, "Introduction to Lattices and Order", Cambridge, 1992
  • J. B. Nation, "Notes on Lattice Theory." PDF
  • F. Nielson, H. R. Nielson and C. Hankin, "Principles of Program Analysis", Springer-Verlag, 1999
  • P. Cousot and R. Cousot, "Abstract Interpretation of Logic Programs." PS.
  • P. Cousot, The Calculational Design of a Generic Abstract Interpreter. Web Page.
  • C. Collberg and J. Nagra, Surreptitious Software. Addison-Wesley Professional, 2009.
  • R. Giacobazzi, Hiding Information in Completeness Holes - New perspectives in code obfuscation and watermarking. Web Page.
  • Neil D. Jones, Carsten K. Gomard, and Peter Sestof, Partial Evaluation and Automatic Program Generation, Prentice Hall, 1993.
  • Materiale supplementare di approfondimento

  • F. Nielson and H. R. Nielson, " Semantics with Applications".
  • G. Winskel, "The formal Semantics of Programming Languages" MIT Press, 1993
  • S. Burris and H. P. Sankappanavar, "A Course in Universal Algebra." PDF
  • D. Schmidt, "Denotational Semantics: A Methodology for Language Development." Web Page.
  • Program transformation and Types for program transformation (by Neil D. Jones)

  • Slides e materiale correlato (i files protetti sono disponibili solo per gli studenti frequentanti!)

    Slides del corso:
  • Code Protection (Intro)
  • Lattice Theory
  • Fixpoint Theory
  • Interpretation and Specialization 1, 2, 3
  • Static Attack
  • Dynamic Attack
  • Slicing Attack
  • Abstraction
  • Numerical Abstract Domains
  • Obfuscation Theory
  • Obfuscation
  • Tamperproofing
  • Introduzione al Watermarking
  • Watermarking


  • Slides del MIT course di Patrick Cousot sui fondamenti matematici e abstract interpretation
  • Mathematical Foundation
  • Fixpoint Theory Parte I
  • Fixpoint Theory Parte II
  • Abstraction Parte I
  • Abstraction Parte II

  • Ritorna alla mia Home Page.