JAIL: Javacard Abstract Interpretation-based Lifeguard



Documenti analoghi
Oggetti Lezione 3. aspetti generali e definizione di classi I

Algoritmi di Ricerca. Esempi di programmi Java

Interpretazione astratta in praticaun analizzatore generico per Ja

Esercitazione n 4. Obiettivi

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Java: Compilatore e Interprete

Elementi di semantica operazionale

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Elementi di semantica denotazionale ed operazionale

Programmazione A.A Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)

Protezione. Protezione. Protezione. Obiettivi della protezione

Concetto di Funzione e Procedura METODI in Java

Programmazione a Oggetti Lezione 10. Ereditarieta

Esercizi della lezione 5 di Java

Object Oriented Software Design

Esercizio 1: trading on-line

Object Oriented Programming

Introduzione al MATLAB c Parte 2

Il Software. Il software del PC. Il BIOS

Prova di Laboratorio di Programmazione

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

con ANTLR tesi di laurea Anno Accademico Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Punti Fissi. Mappe tra insiemi parz. ordinati. Siano (P, P ) e (Q, Q ) due insiemi parzialmente ordinati. Una funzione ϕ da P a Q si dice:

10 - Programmare con gli Array

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

STRUTTURE NON LINEARI

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Programmazione ad oggetti

Programmazione in Java Parte I: Fondamenti

Funzioni in C. Violetta Lonati

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Sistema operativo: Gestione della memoria

Verifica del codice con Interpretazione Astratta

Progettazione : Design Pattern Creazionali

Realizzazione di un Tool per l iniezione automatica di difetti all interno di codice Javascript

Introduzione alla programmazione in C

Sistemi Operativi (modulo di Informatica II) I processi

Definizione di nuovi tipi in C

Sequenza alternativa degli eventi: Variazione di prezzo superiore al 20% per almeno un articolo.

Artifact Centric Business Processes (I)

GESTIONE DEI PROCESSI

GESTIONE INFORMATICA DEI DATI AZIENDALI

Interpretazione astratta

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Invio SMS. DM Board ICS Invio SMS

Elementi di UML (7): Diagrammi dei componenti e di deployment

Organizzazione degli archivi

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Introduzione a Classi e Oggetti

Allocazione dinamica della memoria - riepilogo

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Esercizio data base "Biblioteca"

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Parola chiave extends

Semantica Assiomatica

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Monitor. Introduzione. Struttura di un TDA Monitor

dall argomento argomento della malloc()

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Mac Application Manager 1.3 (SOLO PER TIGER)

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Panoramica: che cosa è necessario

Linguaggio C - Stringhe

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

INFORMATICA 1 L. Mezzalira

Il Metodo Branch and Bound

Tipi di Dato Ricorsivi

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

FONDAMENTI di INFORMATICA L. Mezzalira

Esercitazione 4 JDBC

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Fasi di creazione di un programma

Per effettuare la stampa di una cartella di lavoro si accede al comando. Stampa dal menu File o si utilizza il pulsante omonimo sulla barra

Scheduling della CPU Simulazione in linguaggio Java

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

UML Component and Deployment diagram

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Eclipse - Nozioni Base

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Database. Si ringrazia Marco Bertini per le slides

Transcript:

JAIL: Javacard Abstract Interpretation-based Lifeguard Pietro Ferrara Università Ca Foscari di Venezia Dipartimento di Informatica Ecole Polytechnique, Paris Pisa, 16 febbraio 2006

Obiettivi Abbiamo implementato un analizzatore statico generico per Java Card parametrizzato: sulla proprietà da analizzare sul dominio astratto usato per catturare informazioni sulle variabili numeriche su alcuni valori numerici per permettere all utente di decidere se avere un analisi più lenta e precisa o più veloce e approssimata

Java Card 1 Sottoinsieme di Java per lo sviluppo e l implementazione di applicazioni per smart card 2 Limitate risorse hardware a disposizione, supporta solo un subset di Java (non supporta il multithreading) 3 Essenziali le proprietà di sicurezza, in particolare è definita la proprietà di applet isolation dal JavaCard Runtime Environment

applet space context 1 context 2 applet A applet C m1 m0 no context switch context switch applet B context restore applet D m2... Package A Package B Applet firewall Figure: Context switching

Semantica Concreta Vogliamo avere un dominio semantico che supporti l aliasing di oggetti e che permetta a ciascun oggetto di avere il proprio ambiente: Ambiente: funzione parziale che, dato il nome di una variabile, ritorna il suo indirizzo (E : N A); Store: funzione parziale che, dato un indirizzo, ritorna il valore contenuto in esso (S : A V ); Valore: può essere un oggetto (il cui stato è contenuto in un ambiente), un valore numerico o un array (V = E PV AR); Funzione delle eccezioni: funzione che, dato il nome dell eccezione, ritorna lo stato in cui è stata lanciata l eccezione (EX : N ST ); Stato: tripla composta da un ambiente, uno store e una funzione delle eccezioni (ST = E S EX )

Semantica Astratta - Indirizzi nel concreto un indirizzo essenzialmente è un valore numerico nell astratto non possiamo usare un contatore numerico che viene incrementato ogni volta che si crea una nuova cella nello store. In questo modo infatti non è garantita la convergenza dell analisi A # = P Int Stack dove il primo valore intero identifica univocamente il punto del codice sorgente che ha allocato l indirizzo (P è l insieme degli identificatori univoci dei punti del programma) il secondo valore contiene il numero di iterazioni effettuati nell analisi di un ciclo while, nel caso in cui l indirizzo venga allocato all interno di un tale ciclo lo stack contiene le chiamate a metodi effettuate fino ad arrivare al punto in cui la cella viene allocata

Semantica Astratta - Ambienti A differenze della semantica concreta, nell astratto una variabile può essere collegata a uno o più indirizzi: E # : N (A # ) Relazione d ordinamento: ê 1 E # ê 2 dom(ê 1 ) dom(ê 2 ) n dom(ê 1 ) : ê 1 (n) ê 2 (n) Funzione d astrazione: α E (e) = ê : N (A)# such that dom(ê) = dom(e) n dom(e) : ê(n) = α A (e(n)) Funzione di concretizzazione: γ E (ê) = {e i : N A i [1..n]} such that i [1..n] : dom(e i ) = dom(ê) n dom(ê) : e i (n) γ A (ê(n)) n dom(ê) : i [1..n] e i(n) = γ A (ê(n))

Semantica Astratta - Store S # : A # V # Relazione d ordinamento: Funzione d astrazione: ŝ 1 S # ŝ 2 dom(ŝ 1 ) dom(ŝ 2 ) â dom(ŝ 1 ) : ŝ 1 (â) V # ŝ 2 (â) α S (s) = ŝ : A# V # such that dom(ŝ) = a dom(s) α A (a) a dom(s) : ŝ(α A (a)) = α V (s(a)) Funzione di concretizzazione: γ S (ŝ) = {s i : A V i [1..n]} such that i [1..n] : dom(s i ) = â dom(ŝ) γ A(â) â dom(ŝ), a γ A (â) : s i (a) γ V (ŝ(â)) â dom(ŝ) : i [1..n],a γ A (â) s i(a) = γ V (ŝ(â))

Semantica Astratta - Funzione delle eccezioni EX # : N ST # Relazione d ordinamento: êx 1 EX # êx 2 dom(êx 1 ) dom(êx 2 ) n dom(êx 1 ) : êx 1 (n) ST # êx 2 (n) Funzione d astrazione: α EX (ex) = êx : N ST # such that dom(êx) = dom(ex) n dom(ex) : êx(n) = α ST (ex(n)) Funzione di concretizzazione: γ EX (êx) = {ex i : N ST i [1..n]} such that i [1..n] : dom(ex i ) = dom(êx) n dom(êx) : ex i (n) γ ST (êx(n)) n dom(êx) : i [1..n] ex i(n) = γ ST (êx(n))

Semantica Astratta - Stati ST # = E # S # EX # Relazione d ordinamento: ŝt 1 ST # ŝt 2 ê 1 E # ê 2 ŝ 1 S # ŝ 2 êx 1 EX # êx 2 Funzione d astrazione: α ST ((e, s, ex)) = (α E (e), α S (s), α EX (ex)) Funzione di concretizzazione: γ ST ((ê, ŝ, êx)) = (e, s, ex) such that e γ E (ê), s γ S (ŝ), ex γ EX (êx) st=(e,s,ex) γ ST ((ê,ŝ, bex)) e = γ E (ê), st=(e,s,ex) γ ST ((ê,ŝ, bex)) s = γ S(ŝ), st=(e,s,ex) γ ST ((ê,ŝ, bex)) ex = γ EX (êx)

Operatore di least upper bound (1/2) Ambienti: ê 1 E # ê 2 = {ê : n â ê 1 (n) if n dom(ê 1 ) \ dom(ê 2 ) â = ê 2 (n) if n dom(ê 2 ) \ dom(ê 1 ) ê 1 (n) ê 2 (n) if n dom(ê 1 ) dom(ê 2 ) } Store: ŝ 1 S # ŝ 2 = {ŝ : â ˆv ŝ 1 (â) if â dom(ŝ 1 ) \ dom(ŝ 2 ) ˆv = ŝ 2 (â) if â dom(ŝ 2 ) \ dom(ŝ 1 ) } ŝ 1 (â) V # ŝ 2 (â) if â dom(ŝ 1 ) dom(ŝ 2 )

Operatore di least upper bound (2/2) Eccezioni: êx 1 EX # êx 2 = {êx : n ŝt êx 1 (n) if n dom(êx 1 ) \ dom(êx 2 ) ŝt = êx 2 (n) if n dom(êx 2 ) \ dom(êx 1 ) êx 1 (n) ST # êx 2 (n) if n dom(êx 1 ) dom(êx 2 ) } Stati: ŝt 1 ST # ŝt 2 = (ê 1 E # ê 2, ŝ 1 S # ŝ 2, êx 1 EX # êx 2 )

Operatore di greatest lower bound Ambienti: ê 1 E #ê 2 = {ê : n â â = ê 1 (n) ê 2 (n) if n dom(ê 1 ) dom(ê 2 )} Store: ŝ 1 S #ŝ 2 = {ŝ : â ˆv ˆv = ŝ 1 (â) V #ŝ 2 (â) if â dom(ŝ 1 ) dom(ŝ 2 )} Eccezioni: êx 1 EX # êx 2 = {êx : n ŝt ŝt = êx 1 (n) ST # êx 2 (n) if n dom(êx 1 ) dom(êx 2 )} Stati: ŝt 1 ST # ŝt 2 = (ê 1 E # ê 2, ŝ 1 S # ŝ 2, êx 1 EX # êx 2 )

Operatore di widening Ambienti: ê 1 E #ê 2 = ê 1 E # ê 2 Store: ŝ 1 S #ŝ 2 = {ŝ : â ˆv ŝ 1 (â) if â dom(ŝ 1 ) \ dom(ŝ 2 ) ˆv = ŝ 2 (â) if â dom(ŝ 2 ) \ dom(ŝ 1 ) ŝ 1 (â) V #ŝ 2 (â) if â dom(ŝ 1 ) dom(ŝ 2 ) } Eccezioni: êx 1 EX #êx 2 = {êx : n ŝt êx 1 (n) if n dom(êx 1 ) \ dom(êx 2 ) ŝt = êx 2 (n) if n dom(êx 2 ) \ dom(êx 1 ) êx 1 (n) ST #êx 2 (n) if n dom(êx 1 ) dom(êx 2 ) } Stati: ŝt 1 ST #ŝt 2 = (ê 1 E #ê 2, ŝ 1 S #ŝ 2, êx 1 EX #êx 2 )

Teoremi E stato provato che: γ ST è monotona: ŝt 1, ŝt 2 ST #, ŝt 1 ST ŝt 2 : γ ST (ŝt 1 ) ST γ ST (ŝt 2 ) α ST è monotona: ST 1, ST 2 ST, ST 1 ST 2 : α ST (ST 1 ) ST α ST (ST 2 ) ST ST γ ST (α ST (ST )) ŝt = α ST (γ ST (ŝt)) ST è un operatore di least upper bound ST è un operatore di greatest lower bound ST è un operatore di widening

Proprietà Per l analisi di una proprietà abbiamo inserito il concetto di firewall astratto. Tale firewall (su cui è parametrizzata la nostra analisi) interviene quando: si accede ad un campo di un oggetto si invoca un metodo di un oggetto Tale firewall analizza l oggetto e cosa si accede, e in base a ciò può intervenire lanciando (nell analisi astratta) un eventuale eccezione. Esempio: nel corso dell analisi della proprietà di applet isolation, si invoca un metodo di un oggetto. Il firewall controlla se il package da cui si accede l oggetto è lo stesso dell oggetto acceduto. Se così non è, controlla se il metodo invocato è condivisibile. Se non è così, non invoca il metodo e inserisce il lancio dell eccezione all interno dell analisi astratta.

Analisi statica modulare di linguaggi ad oggetti L analizzatore è stato implementato a partire dai concetti proposti e sviluppati nella tesi di dottorato di Francesco Logozzo ( Modular static analysis of object-oriented languages, 15/06/2004, Ecole Polytechnique, Paris). Semantica concreta di una classe: l insieme di tutti i possibili stati degli oggetti che possono essere istanziati a partire da questa. Un approssimazione sound di tale semantica concreta è data dalla soluzione del seguente sistema di equazioni.

dove: s 0 = init Constructors M[[init]](, init) s i = s i 1 ST s i = s i 1 ST me Methods me Methods M[[me]](s i 1, me ) if i [1..l ci ] M[[me]](s i 1, me ) if i > [l ci ] M[[me]] rappresenta la semantica del metodo me, a partire da uno stato iniziale e dal valore dei parametri del metodo Constructors è l insieme dei costruttori della classe analizzata Methods è l insieme dei metodi della classe analizzata me contiene la lista dei parametri del metodo me ciascuno con valore

Struttura del tool public class Applet1 {...} public class Applet2 {...} PARSER Albero sintattico ANALIZZATORE Output JAIL Limiti numerici Dominio astratto per interi Proprietà da analizzare

Screenshot

Risultati L analizzatore è stato implementato e può essere provato all url http://www.dsi.unive.it/ ferrara/jail Sono stati implementati vari domini astratti numerici (intervalli, segni, congruenze,...) e alcune proprietà (assenza di NullPointerException, rispetto della proprietà di applet isolation di JavaCard,...) In particolare è stata sviluppata nel dettaglio l analisi della proprietà di applet isolation

Future works Estensione dell analizzatore ad altre proprietà, tra cui l assenza di nested transactions, proprietà definita dal JavaCard Runtime Environment Progettazione e implementazione di un dominio astratto per valori numerici relazionale (dominio ottagonale) Implementazione della semantica completa delle librerie Java Card