Classi Java per la protezione della riservatezza Tecnologie per la Sicurezza L-S AA 2006-2007 Anna Riccioni

Slides:



Advertisements
Presentazioni simili
Argomenti della lezione
Advertisements

Costruttori e Distruttori
Linguaggio C++ Operatori – numeri pseudocasuali - costanti.
Numeri casuali.
SSL/TLS.
La sicurezza nelle Griglie
Sicurezza II Prof. Dario Catalano Errori di Implementazione.
Sicurezza II Prof. Dario Catalano
Autenticazione dei messaggi e funzioni hash
Cifratura multipla e DES
A.A. 2007/2008Corso: Sicurezza 1 © Danilo Bruschi Sicurezza dei calcolatori e delle reti Proteggere la rete: protocolli crittografici Lez. 12.
SSL (Secure Socket Layer)
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
AlmaChannel Piattaforma AlmaChannel e laboratori virtuali Tecnologie per la Sicurezza L-S AA Anna Riccioni
RSA O PTIMAL A SYMMETRIC E NCRYPTION P ADDING Tecnologie per la Sicurezza LS Anno 2007 / 2008 Alessio Della Motta Optimal Asymmetric Encryption Padding.
Introduzione alla sicurezza in Java
VLab 2.0 Esercitazione di Tecnologie per la Sicurezza.
Java base III: Array e Stringhe
Comunicazione sicura sulle reti
I-Memo è un prodotto completamente nuovo progettato per risolvere i seguenti problemi: Memorizzare password e codici molto complessi, senza il problema.
06/12/2007 Progetto cedolini online di Lottomatica Automatizzare il processo di consegna dei cedolini delle buste paga.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Cronoscalata Recupero in scioltezza a 50 w Progressivo con finale al max alte rpm mani basse Recupero in scioltezza a 50 w.
Crittografia MITTENTE DESTINATARIO messaggio messaggio chiave-1
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Esercitazione sull’ ordinamento 20 maggio 2003
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à.
Crittografia. Introduzione  La rete può essere utilizzata per diversi scopi: informazione, scambio dati, scambio messaggi, trasferimento denaro.  Nel.
+ Gestire la persistenza Nicolò Sordoni. + Meccanismi di persistenza dei dati In Windows Phone, come negli altri ambienti, abbiamo tre soluzioni principali.
Cenni di Crittografia Luigi Vetrano TechnoLabs S.p.A. L’Aquila, Aprile 2011.
Steganografia in un file di testo Corso di Sicurezza dei sistemi informatici Prof. Giuseppe Mastronardi Anno Accademico 2006/07.
I circuiti elettrici.
XXXII CONVEGNO NAZIONALE Società Italiana di Chimica Agraria
Il problema dello zaino
Campi di gravità e topografia: analisi con QGIS
Ciclo di Seminari e Corso
Le verifiche empiriche del teorema di Heckscher-Ohlin: il paradosso di Leontief Wassily Leontief realizzò la prima verifica empirica del teorema di HO.
 π BUZZO GIACOMO D’AGOSTINO ALBERTO DE ANGELIS FEDERICA
LA PREVENZIONE INCENDI NELLE STRUTTURE RELIGIOSE APERTE AL PUBBLICO
LE NOVITÀ DEL BILANCIO 2016 …………………………………………………………………………………………………………..
Le unità territoriali per le analisi socio-economiche
ISTITUZIONI (regole scritte e nn scritte che governano l’interazione tra individui) → d.p. e contratti → norme sociali con appropriati Δ delle regole.
Convegno europeo sui minori
ATIPICITA’ DEL FATTORE UMANO NEL PILOTAGGIO DEI DRONI
RAEE è l’acronimo di Rifiuti da Apparecchiature Elettriche ed Elettroniche; ogni elettrodomestico ha un ciclo di vita terminato il quale, sia per malfunzionamento.
Maria Antonietta Volonté Dipartimento di Neurologia
IL CONFLITTO NELLA CHIESA PRIMITIVA
Vitamine Sono sostanze organiche a basso peso molecolare strutturalmente assai varie indispensabili per lo svolgimento delle funzioni vitali, di origine.
I PRINCIPI NUTRITIVI Quali sono, I test per individuarli &
Un reddito per tutti? Sette tesi su lavoro e welfare
ADOZIONE INTERNAZIONALE
Asl Vco – Direzione Generale
Nota AIFA 75 Determinazione 18 novembre 2010 (GU 29 novembre 2010, n. 279): modifiche, con riferimento alla nota AIFA 75,  alla determinazione del 4 gennaio.
SINTOMI DEL BASSO APPARATO URINARIO 4 MARZO 2017
Associazione Sindrome X Fragile Puglia
Programmazione prevista Classi Prime, Seconde, Terza e Quarta
Il fenomeno dei flussi migratori dal mondiale al locale
Corso di Laurea Magistrale in Produzioni agroalimentari e gestione degli agroecosistemi corso di Tecniche Irrigue Docente, PhD Giovanni Rallo telefono:
Analisi di Raggruppamento
Corso di Astronomia avanzato 2014/15
di fronte alla materia in un nuovo stato
Il sistema della pena in Italia
Imposta personale e imposta societaria
BIOLOGIA IL CORPO UMANO
Liceo delle Scienze Umane «BLAISE PASCAL» Voghera
Fasi della politica economica europea: dal dopoguerra all’Unione monetaria 1. Dopo la II guerra mondiale i principali paesi europei avviano un processo.
Giordano Scuderi Unico SRL Catania
Transcript della presentazione:

Classi Java per la protezione della riservatezza Tecnologie per la Sicurezza L-S AA Anna Riccioni

Cifratura e decifrazione Classe Cipher (javax.crypto) –Creazione istanza Cipher c = Cipher.getInstance(TripleDES/ECB/PKCS5Padding); Cipher c = Cipher.getInstance(TripleDES/CBC/PKCS5Padding, BC); –Inizializzazione c.init(Cipher.ENCRYPT_MODE, key); c.init(Cipher.ENCRYPT_MODE, key, initVect);

Cifratura e decifrazione Classe Cipher (javax.crypto) –Alimentazione input (se non è completo nel momento in cui si inizia la cifratura) int ctLen = c.update(input, 0, input.length, cipherText, 0); –Completamento processo c.doFinal(input); int ctLen += c.doFinal(cipherText, ctLen);

Chiavi segrete random: generazione automatica Classe KeyGenerator (javax.crypto) –Creazione istanza KeyGenerator kGen = KeyGenerator.getInstance(TripleDES); KeyGenerator kGen = KeyGenerator.getInstance(TripleDES, BC); –Inizializzazione kGen.init(112); –Generazione chiave Key k = kGen.generateKey();

Chiavi segrete random: generazione automatica Classe SecureRandom (java.security) –Genera byte (pseudo)casuali –Creazione istanza SecureRandom sRand = SecureRandom.getInstance(SHA1PRNG); SecureRandom sRand = SecureRandom.getInstance(SHA1PRNG, BC); –Inizializzazione sRand.setSeed(seed); Inizializzazione forzata, basata su byte random precedentemente raccolti. In alternativa, loggetto può inizializzare autonomamente il proprio stato (meno efficiente)

Chiavi segrete random: generazione automatica Classe SecureRandom (java.security) –Creazione di byte random byte[] randByte = new byte[20]; sRand.nextBytes(randByte); –Creazione di byte di seed byte[] seed = sRand.generateSeed(20); genera il numero di byte di seed richiesto, utilizzando lalgoritmo di generazione del seme che loggetto SecureRandom usa per inizializzare se stesso

Chiavi segrete random: generazione semi-automatica Classe SecretKeySpec (javax.crypto.spec) –Converte un array di byte in un oggetto Key che può essere passato ad una istanza di Cipher –Utilizzo (array noto) byte[] keyBytes = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 }; SecretKeySpec key = new SecretKeySpec(keyBytes, AES);

Chiavi segrete random: generazione semi-automatica Classe SecretKeySpec (javax.crypto.spec) –Converte un array di byte in un oggetto Key che può essere passato ad una istanza di Cipher –Utilizzo (array non noto, generato con byte casuali) SecureRandom sRand = SecureRandom.getInstance(SHA1PRNG); byte[] keyBytes = new byte[24]; sRand.nextBytes(keyBytes); SecretKeySpec key = new SecretKeySpec(keyBytes, AES);

Vettore di inizializzazione Classe IVParameterSpec (javax.crypto.spec) –Converte un array di byte in un vettore di inizializzazione che può essere passato ad una istanza di Cipher –Utilizzo (array non noto, generato con byte casuali) SecureRandom sRand = SecureRandom.getInstance(SHA1PRNG); byte[] ivBytes = sRand.generateSeed(8); IVParameterSpec key = new IVParameterSpec(ivBytes);

Chiavi segrete: generazione basata su password Classe PBEParameterSpec (javax.crypto.spec) –Utilizzo char[] pwd = password.toCharArray(); byte[] salt = sRand.generateSeed(8); int iterCount = 2048; PBEKeySpec pbeKey = new PBEKeySpec(pwd); SecretKeyFactory kFact = SecretKeyFactory.getInstance(PBEWithSHAAnd3Key TripleDES, BC); Cipher c = Cipher.getInstance(PBEWithSHAAnd3Key TripleDES, BC); Key key = kFact.generateSecret(pbeKey); c.init(Cipher.DECRYPT_MODE, key, new PBEParameterSpec(salt, iterCount));

Passaggio delle chiavi Recupero dei byte di chiave e ricostruzione –Modalità meno portabile (piattaforme diverse possono effettuare ricostruzioni diverse) Key key = keyGen.generateKey(112); byte[] keyBytes = key.getEncoded();.... SecretKeySpec key = new SecretKeySpec(keyBytes, TripleDES);

Passaggio delle chiavi Wrapping / unwrapping della chiave –Modalità più portabile e sicura KeyGenerator keyGen = KeyGenerator.getInstance(AES, BC); Key key = keyGen.generateKey(128); Cipher c = Cipher.getInstance(AESWrap, BC); Key wrapKey = keyGen.generateKey(256); c.init(Cipher.WRAP_MODE, wrapKey); byte[] wrappedKeyBytes = c.wrap(key);.... c.init(Cipher.UNWRAP_MODE, wrapKey); Key key = c.unwrap(wrappedKeyBytes, AES, Cipher.SECRET_KEY);

Passaggio dei dati Dati semplici (file) –Convertiti in array di byte, tenendo conto delle specifiche codifiche, e successivamente cifrati byte[] input = plaintext.getBytes(UTF-8);.... byte[] ciphertext = c.doFinal(input);

Passaggio dei dati Dati complessi (oggetti serializzabili) –Un SealedObject incapsula un oggetto serializzabile cifrato ed il cifrario utilizzato Cipher c = Cipher.getInstance(DES/ECB/PKCS5Padding, BC); c.init(Cipher.ENCRYPT_MODE, desKey); SealedObject so = new SealedObject(obj, c); Cifra loggetto e lo incapsula allinterno del SealedObject assieme al cifrario utilizzato. Il SealedObject può poi essere trattato come ogni altro oggetto (serializzato, scritto su file, …)