Introduzione alla sicurezza in Java

Slides:



Advertisements
Presentazioni simili
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Advertisements

Costruttori e Distruttori
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
Miglioramento della protezione dei dati mediante SQL Server 2005 Utilizzo della crittografia di SQL Server 2005 per agevolare la protezione dei dati Pubblicato:
Configuring Network Access
SSL/TLS.
Sistema di gestione flussi documentali
Laurea Magistrale in Informatica Reti 2 (2007/08)
Java Enterprise Edition (JEE)
Massa Laura Mela Enrica
UNIVERSITA DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica Progetto e sviluppo di.
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
La sicurezza nelle Griglie
Come programmare servizi di rete?
Per crittografia si intende la protezione
Secure Shell Giulia Carboni
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio Java
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Struttura dei sistemi operativi (panoramica)
Security Enhanced Linux (Selinux) A cura di : De Pascale Filippo 1.
SSL (Secure Socket Layer)
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
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.
AlmaChannel Piattaforma AlmaChannel e laboratori virtuali Tecnologie per la Sicurezza L-S AA Anna Riccioni
Classi Java per la protezione della riservatezza Tecnologie per la Sicurezza L-S AA Anna Riccioni
Architettura Java/J2EE
Comunicazione sicura sulle reti
1 Applicazioni contabili
Modulo 7 – reti informatiche u.d. 2 (syllabus – )
Acer Mnemonick presentazione commerciale
Internet Keyed Payment Protocol Pietro Montanari & Cosimo Basile.
Java Contardi Carlo A.S. 2008/09.
SERVIZIO EDI – Primo Accesso
U N INFRASTRUTTURA DI SUPPORTO PER SERVIZI DI FILE HOSTING Matteo Corvaro Matricola Corso di Reti di Calcolatori LS – Prof. A. Corradi A.A.
Stefano Di Giovannantonio ECM Consulting Solution Expert
Namespaces 1. Utilizzati per contenere tipi (classi, strutture, interfacce … ) ed altri namespaces La Class Library è organizzata gerarchicamente mediante.
Il Comune di Pavia è tra i pochi comuni italiani a svolgere direttamente funzioni di Registration Authority.
“La firma elettronica per Pavia Digitale”
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
06/12/2007 Progetto cedolini online di Lottomatica Automatizzare il processo di consegna dei cedolini delle buste paga.
Sicurezza aziendale informatica. Protezione Regolamenti – Normative - Informazione Spear phishing (una pagina esplicativa qui)qui.
L’architettura a strati
IPSec Fabrizio Grossi.
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
SIARL ARCHITETTURA DEL SISTEMA E GESTIONE DELLA SICUREZZA Milano, 5 novembre 2003 Struttura Sistemi Informativi e Semplificazione.
Analisi e sperimentazione di una Certification Authority
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Sicurezza informatica
Procedure di Sicurezza nella Soluzione UPMT per la Mobilità Verticale in Reti IP 1.
PKI e loro implementazione Corso di Sisitemi Informativi Teledidattico A.A. 2006/07
Lucia Melotti 1/14 Bologna, 7 luglio 2004 Aspetti di sicurezza nello scambio di messaggi XML tra un partner ebXML ed un Web Service di Lucia Melotti Relatore:
Elgamal Corso di Sicurezza – A.A. 2006/07 Angeli Fabio29/05/2007.
Reti di calcolatori e sicurezza “Configurare il web-server Apache” a cura di Luca Sozio.
1 Certificati a chiave pubblica strutture dati che legano una chiave pubblica ad alcuni attributi di una persona sono firmati elettronicamente dall’ente.
Alex Marchetti Infrastruttura di supporto per l’accesso a un disco remoto Presentazione del progetto di: Reti di calcolatori L-S.
Layered Grid Architecture. Application Fabric “Controlling elements locally”: Access to, & control of, resources Connectivity “Talking to Grid elements”:
Mobile Agent and Enterprise Architecture Integration Il Gestore di Librerie e Servizi Lambertini Riccardo.
Progettazione e realizzazione di un’applicazione J2EE Parte 2.
Mots, programmazione collaborativa di Ettore Ferranti.
SICUREZZA E PROTEZIONE DATI Sicurezza nei sistemi informatici significa non permettere la violazione o la lettura dei dati memorizzati in un computer.
La firma digitale. Che cosa é la firma digitale? La firma digitale è una informazione aggiunta ad un documento informatico al fine di garantirne integrità.
Giuseppe Bianchi Università di Roma Tor Vergata March June 2014
Programmazione orientata agli Oggetti Introduzione a Java.
Cenni di Crittografia Luigi Vetrano TechnoLabs S.p.A. L’Aquila, Aprile 2011.
FESR Trinacria Grid Virtual Laboratory La sicurezza dei dati in ambiente Trigrid Giordano Scuderi.
Crittografia e crittoanalisi Crittografia: tecnica che consente di rendere visibili o utilizzabili le informazioni solo alle persone a cui sono destinate.
Framework di sicurezza della piattaforma OCP (Identity & Access Management) Smart Cities and Communities and Social Innovation Bando MIUR D.D. 391/Ric.
Transcript della presentazione:

Introduzione alla sicurezza in Java Tecnologie per la Sicurezza L-S AA 2006-2007 Anna Riccioni anna.riccioni@gmail.com

Sicurezza in Java Java è una piattaforma sicura Linguaggio nato per: applicazioni multipiattaforma applicazioni da distribuire attraverso internet applicazioni da eseguire su diversi dispositivi (cellulari, ...) Sicurezza: obiettivo di progetto già dalle prime release security model iniziale evoluzione continua nelle versioni successive

Sicurezza e Crittografia Sicurezza (computer security) applicazione di misure orientate a far sì che determinate informazioni, nel momento in cui vengono elaborate, archiviate o comunicate siano affidabili ed accessibili alle sole entità autorizzate Crittografia (cryptography) applicazione di tecniche di codifica dell’informazione che la trasformino in un formato decifrabile solo dal destinatario designato

Sicurezza e Crittografia Sicurezza (computer security) applicazione di misure orientate a far sì che determinate informazioni, nel momento in cui vengono elaborate, archiviate o comunicate siano affidabili ed accessibili alle sole entità autorizzate Crittografia (cryptography) applicazione di tecniche di codifica dell’informazione che la trasformino in un formato decifrabile solo dal destinatario designato Controllo degli accessi Gestione della memoria Controllo dei permessi di accesso alle risorse … Testo in chiaro Testo cifrato f(px1,px2, .., pxn) g(py1,py2, .., pym)

Sicurezza e Crittografia Sicurezza (computer security) può utilizzare può essere integrata con Crittografia (cryptography)

Piattaforma Java SDK API, strumenti e servizi per la sicurezza piattaforma su cui eseguire applicazioni Java in modo sicuro API, strumenti e servizi per la sicurezza framework che consente ad amministratori e programmatori di gestire applicazioni in modo sicuro e di scrivere applicazioni che si appoggiano ad algoritmi, meccanismi e protocolli per la sicurezza

Sicurezza in Java Meccanismi di controllo per evitare errori causa di comportamenti imprevedibili delle applicazioni linguaggio fortemente tipizzato controllo degli indici negli accessi a stringhe e array gestione automatica della memoria (garbage collection)

Sicurezza in Java Livelli di visibilità differenziata applicabili a classi, metodi e campi private protected public package

Sicurezza in Java Verifica, prima dell’esecuzione, della conformità del bytecode alle Java Language Specification rispetto del formato e vincoli strutturali imposti per i file .class che la JVM deve interpretare assenza di stack underflows / overflows nessuna violazione della memoria nessun cast non permesso

Sicurezza in Java Ulteriori meccanismi di controllo a run-time Class Loader: gestisce il caricamento e il linking delle classi coinvolte nell’esecuzione all’interno degli opportuni namespace Security Manager: valida gli accessi alle risorse di sistema mediati dalla JVM modello a SandBox: limita il contesto di esecuzione di codice potenzialmente dannoso

Security Model (da Java 1.4) JDK 1.4 Security Model

Security Model (da Java 1.4) Evoluzione rispetto al modello precedente superamento del modello ON/OFF: sono possibili diversi domini intermedi tra la SandBox e l’accesso completo alle risorse maggiore granularità a livello di insiemi di permessi maggiore flessibilità differenziazione di permessi in funzione di singole operazioni e singoli utenti aggiornamento dinamico delle politiche di sicurezza

Crittografia e Sicurezza in Java Dalla versione 1.4 di Java: integrazione in un’unica Java 2 Security Platform di Java Cryptography Architecture Java Cryptography Extension Java Secure Socket Extension Java Authentication and Authorization Service aggiunta dei package Java Certification Path Java Generic Security Service

Java Cryptography Architecture Framework di base per la Crittografia Provider-based Architecture indipendenza dall’implementazione interoperabilità (provider e applicazioni non sono strettamente legati) estendibilità Application JCE/JCA API JCE/JCA SPI Provider Internal Classes invocation response Abstraction Layer Service Provider Interface Provider Functionality

Provider-based Architecture Cryptographic Service Provider uno o più package che implementano uno o più servizi crittografici esposti dalla JCA più provider installati, anche se di produttori differenti, possono coesistere Responsabilità un’applicazione richiede un oggetto (MessageDigest)... ... che implementa uno specifico servizio (hash calcolato in base all’algoritmo SHA-1)... ... e riceve un’implementazione fornita da uno dei provider installati (BouncyCastle)

Provider-based Architecture Pattern Factory X Factory getInstance XZ XY “abc...” Implementazione classi astratte di tipo Engine dichiarano le funzionalità offerte classi concrete contenute nel provider implementano le funzionalità dichiarate

Provider-based Architecture Concretamente un oggetto viene istanziato non più con la parola chiave new ma grazie al metodo statico getInstance(String nome) Esempi MessageDigest hash = MessageDigest.getInstance(“SHA-1”); KeyGenerator kGen = KeyGenerator.getInstance(“TripleDES”);

Provider-based Architecture Indipendenza dall’implementazione più provider possono coesistere nello stesso JRE provider diversi possono offrire funzionalità diverse provider diversi possono offrire implementazioni diverse delle stesse funzionalità Vantaggio scegliere autonomamente il provider più adatto alle specifiche esigenze

Provider-based Architecture Scelta consapevole del provider il nome del provider viene specificato come parametro all’interno del metodo getInstance() utilizzato per istanziare l’oggetto richiesto Esempi MessageDigest hash = MessageDigest.getInstance(“SHA-1”, “BC”); KeyGenerator kGen = KeyGenerator.getInstance(“TripleDES”, “BC”);

Installazione di un CSP Installazione statica inserire l’archivio jar che implementa il provider tra le librerie esterne del JRE <JAVA_HOME>\jre\lib\ext modificare il file java.security che si trova nella directory <JAVA_HOME>\jre\lib\security aggiungendo il nome del provider come ultimo elemento della lista che ha il formato security.provider.n=provider Esempio security.provider.7 = org.bouncycastle.jce.provider.BouncyCastle Provider

Installazione di un CSP Installazione dinamica il provider va importato all’interno dell’applicazione il metodo addProvider(String nome) della classe java.security.Security consente di aggiungere il provider desiderato a run-time Esempio import java.security.Security; import org.bouncycastle.jce.provider.BouncyCastle Provider; Security.addProvider(new BouncyCastleProvider());

Provider-based Architecture Nessuna preferenza nella scelta del provider il nome del provider non viene specificato come parametro all’interno del metodo getInstance() utilizzato per istanziare l’oggetto richiesto Ricerca ordinata per preferenze file java.security la ricerca continua finché non si trova il primo provider che implementa la funzionalità richiesta

Provider-based Architecture

Provider “Sun” Integrato nel JDK Include implementazioni di: algoritmo DSA KeyPairGenerator per DSA AlgorithmParameter per DSA AlgorithmParameterGenerator per DSA KeyFactory per DSA algoritmi MD-5 e SHA-1 (hash) algoritmo SHA1PRNG (SecureRandom) CertificateFactory per X.509 e CRLs KeyStore proprietario JKS

Java Cryptography Extension Integrato nel JDK Implementa in modo completo le funzionalità di cifratura e decifrazione dichiarate dalla JCA Offre il supporto all’utilizzo di cifrari simmetrici a blocchi e a flusso cifrari asimmetrici cifrari con password ... applicabili a Dati SerializableObjects I/O stream

Java Cryptography Extension Estende le funzionalità di cifratura e decifrazione dichiarate dalla JCA JCE API: package javax.crypto Classi principali Cipher CipherInputStream / CipherOutputStream KeyGenerator SecretKeyFactory SealedObject Mac

Java Cryptography Extension Integrato nel JDK Implementa ed estende le tecniche crittografiche definite dalla JCA provider “SunJCE” algoritmi di cifratura (AES, DES, TripleDES, PBE, ...) modalità di cifratura (ECB, CBC, OFB, CFB, CTR, PCBC) padding (NoPadding, PKCS5PADDING) facilities per la conversione delle chiavi da oggetti Java in array di byte e viceversa KeyGenerator algoritmi MAC

Provider BouncyCastle Non integrato nel JDK (va installato) Implementa ed estende le tecniche crittografiche definite dalla JCA e dalla JCE implementazione alternativa degli algoritmi di cifratura (AES, DES, TripleDES, PBE, ...) algoritmi di cifratura asimmetrica (RSA, ElGamal) algoritmi di firma digitale padding (None, PKCS1PADDING) facilities per diversi protocolli di KeyAgreement facilities per utilizzare cifrari simmetrici a flusso e a blocchi ...

Java Secure Socket Extension Integrato nel JDK Implementa ed estende le tecniche crittografiche definite dalla JCA a livello di rete Provider “SunJSSE” KeyManager (SunX509) KeyStore (PKCS12) protocolli SSL/TLS (SSLv3, TLSv1) Trust manager (PKIX)

Java Secure Socket Extension Offre funzionalità per autenticazione protezione dell’integrità dei dati protezione della riservatezza dei dati Opera a livello di rete protocolli per comunicazioni sicure Secure Socket Layer v.2.0 e v.3.0 Transport Layer Security v.1.0

Java Secure Socket Extension Le API JSSE (package javax.net e javax.net.ssl) estendono javax.crypto (JCE) java.security (JCA) java.net

Java Authentication and Authorization Service Integrato nel JDK Offre servizi per autenticazione: identificazione sicura autorizzazione: verifica dei permessi E’ composto da un framework di autenticazione estendibile una serie di moduli dedicati alle singole tecniche di autenticazione verifica username / password verifica di caratteristiche biometriche ...

Java Certification Path Integrato nel JDK Offre interfacce ed engine classes per gestire certificati certification path Le funzionalità principali riguardano Basic Certification Path Certification Path Validation Certification Path Building Certificate / CRL Storage

Java Generic Security Service Integrato nel JDK Ponte Java – Generic Security Service API GSS API: progettate dall’IETF per offrire un accesso uniforme a servizi di autenticazione e comunicazione peer-to-peer che adottano meccanismi di sicurezza I principali servizi offerti riguardano autenticazione riservatezza e integrità dei messaggi sequencing dei messaggi protetti replay detection

Architettura Java per la sicurezza JDK 1.4 Security Model Java 2 Security Platform (J2SE 1.4) Java Authentication and Authorization Service (JAAS) Java 2 Security Architecture java.security package Java Secure Socket Extension (JSSE) Java Generic Security Service (JGSS) Java Cryptography Architecture (JCA) Java Cryptography Extension (JCE) Java Certification Path (CertPath)