JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox....

25
JAVA Security

Transcript of JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox....

Page 1: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

JAVA Security

Page 2: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Jdk1.0

Page 3: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

sandBox

Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox.

In base a tale politica tutte le applicazioni eseguite in locale so sicure per default, mentre gli applet sono tutte insicure (ad esempio non hanno accesso al filesystem).

Page 4: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Jdk 1.1

Page 5: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Jdk1.1

La jdk1.1 estende la sandBox della jdk1.0 e permette di definire sicure alcuni applet.

Fornisce infatti un metodo per apporre sull’applet un a firma digitale in base alla quale riconoscere se concedere l’accesso alle risorse del sistema.

Page 6: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Jdk1.1 e jdk1.2

Il jdk1.1 viola però il principio del minimo privilegio:

tutti gli applet che possiedono tale firma e provengono da tale host (anche il browser deve essere configurato in modo da ritenere sicuri gli applet provenienti da un certo URL) sono considerati sicuri

Il jdk1.2 permette di assegnare ad applet, firmati da diverse persone, ma provenienti dallo stesso URL, diversi gradi di accesso alle risorse.

Page 7: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

J2SE

Page 8: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

sandBox jdk1.2

Page 9: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Fine-grained access control.

• Questa caratteristica esisteva dall’inizio ma richiedeva al programmatore di specializzare delle classi (SecurityManager ed il ClassLoader classes).

• Il browser HotJava 1.0 è un’applicazione che permette all’utente del browser di slezionare un piccolo numero di levelli di sicurezza.

• Questo tipo di programmazione e estremamente complicato e richiede esperienza nel campo della sicurezza.

Page 10: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Easily extensible access control structure.

• Per gestire nuovi tipi di permessi occorreva con jdk1.1 estendere il security manager

• Con jdk1.2 e sufficiente creare nuovi Permessi che vengono gestiti automaticamente dal sistema

• Non occorre creare nuovi metodi per il security manager

Page 11: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Extension of security checks to all Java programs

• Non c’è più il presupposto che tutto il codice con codebase locale è trusted

• Il codice locale (packages non di sistema istallati sul filesystem locale) viene gestito come qualunque apllet.

• È possibile costruire politiche che ddanno al codice remoto gli stessi privilegi di quello locale

• Gli stessi principi applicati alle applet firmate possono essere applciati alle applicazioni

Page 12: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Execution Threads

• Un thread in esecuzione invoca più classi appartenenti a domini diversi

• Un dominio con un più limitato ser di permessi non può acquisirne altri chiamando o essendo chiamato da domini con maggiori privilegi

Page 13: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Execution Threads

• L’insieme di permessi concessi ad un thread è considerato l’intersezione dei permessi di tutti I domeni di protezione attraversati dal thread

• Chiamando un metodo doPrivilieged() e possibile abilitare una parte di codice temporaneamente ad accedere a più di quelle direttamente concesse all’applicazione chiamante.

Page 14: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Easily configurable security policy.

Esisteva nelle prime versioni ma non era utilizzabile in maniera così semplice

È preferibile scrivere file di policies che codice

Page 15: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

La norma di sicurezza

Mentre nelle versioni precedenti di jdk1.0 solo il programmatore poteva implementare un SecurityManager personalizzato, con jdk1.2 è possibile stabilire una norma di sicurezza compilando un apposito fille nella cartella:

jdk1.2\lib\security\java.policy

Page 16: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Altri possibili metodi

•Creando o modificando il file java.policy nella directory dell’utente

•Sostituendo il valore della proprietà di sistema policy.java con il nome di un altro file contenente la nuova norma

•Per aggiungere una norma di sicurezza all’esecuzione di un programma:

java –Djava.security.policy=“test.policy” Test

java –Djava.security.policy==“test.policy” Test

Page 17: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Sintassi della norma di sicurezza

Grant [SignedBy “Piero,Luisa”] [, CodeBase “URL”]{

voci permesso

};

Piero e Luisa sono i firmatari, mentre l’URL è l’indirizzo da cui deve provenire l’applet da sottomettere alla norma.

Es: http://www.trusted.com

file:/local/applets

Page 18: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Voci di permesso

permission nome_classe_Permesso [“nome_destinatario”] [, “action_list”] [, SignedBy “nomi_firmatari”];

ES:

permission java.io.FilePermission ”.”,“read,write,delete,execute”;

permission java.lang.RuntimePermission “queueJob”

Page 19: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Creare un nuovo Permesso

Page 20: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Gestione del Permesso

Policy:

grant codeBase  "http://java.sun.com/" {

permission com.abc.TVPermission "channel-5", "watch"; }

Codice: com.abc.TVPermission tvperm = new

com.abc.TVPermission("channel-5", "watch"); AccessController.checkPermission(tvperm);

Page 21: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

KeyStore

Creare un keyStore:

keytool –genkey –alias “Me” –keysore “MyStore”

Quindi viene richiesta una password e le seguenti informazioni:

E un database che consente di gestire coppie di chiavi pubblica/privata per l’autenticazione e certificati digitali.

Page 22: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Firmare un applet

•Si compili il file ReadFileApplet

•Si crei un file ReadFileApplet.jar con il comando:

jar cf ReadFileAplet.jar ReadFile*.class

•Si elimino ReadFileApplet.class e ReadFileApplet$ButtonHandler.class

•Si esegua:

jarsigner –keystore Mystore –storepass Mypassword –keypass MyPassword ReadFileApplet.jar Me

Page 23: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.

Esempio

•Applet ReadFileApplet

•File html

Page 24: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.
Page 25: JAVA Security. Jdk1.0 sandBox Ilo sistema di sicurezza JAVA si basa sulla struttura della seandBox. In base a tale politica tutte le applicazioni eseguite.