Java Security Extensions(J2SE)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Java Security Extensions(J2SE)"

Transcript

1 Università degli Studi di Bologna IIª Facoltà di Ingegneria - Cesena Anno Accademico 2010/2011 OUTLINE Java Security Extensions(J2SE) Prof. Enrico Denti Dipartimento di Elettronica, Informatica e Sistemistica Telefono JAVA SECURITY EXTENSIONS (JSE) PIATTAFORMA JAVA PER LA SICUREZZA Situazione fino al JDK 1.3 Architettura per la sicurezza (JCA) parte del JDK Estensioni per la sicurezza (JSE) fornite a parte (soprattutto per problemi di esportazione dagli USA) Java Web Start fornito a parte Java 2 Security Platform (J2SE 1.4) Java Authentication and Authorization Service (JAAS) Java 2 Security Architecture Novità JDK 1.4 Situazione dal JDK 1.4 (e 1.5) Estensioni JSE fornite insieme al JDK standard Java Web Start fornito insieme al JDK standard Altri miglioramenti: adattamento della gestione dei permessi al modello JAAS gestione dinamica delle politiche di sicurezza miglioramento della sicurezza nella gestione delle applet Java Secure Socket Extension (JSSE) Java Cryptography Extension (JCE) package java.security Java Cryptography Architecture (JCA) Java Generic Security Service (JGSS) Java Certification Path (CertPath) JAVA CRYPTOGRAPHY ARCHITECTURE (JCA) & JAVA CRYPTOGRAPHY EXTENSION (JCE) Il supporto crittografico in Java è articolato su due livelli: la Java Cryptography Architecture (JCA), che definisce la cornice generale per la crittografia: definisce le classi astratte per la gran parte delle funzionalità ma implementa solo alcune funzionalità specifiche in particolare il calcolo di impronte digitali e firme digitali di messaggi la Java Cryptography Extension (JCE), che definisce le API complete e implementa tutte le altre funzionalità in particolare, quelle di cifratura e decifratura di messaggi con algoritmi a piacere JAVA CRYPTOGRAPHY ARCHITECTURE (JCA) Due principi indipendenza dall implementazione e interoperabilità estendibilità e indipendenza degli algoritmi che si traducono in due tipologie di classi: classi astratte "engine" che dichiarano le funzionalità di un certo algoritmo crittografico classi concrete "provider" che implementano un insieme di funzionalità entro un Cryptographic Service Provider (CSP) Molteplicità di provider Più provider possono coesistere ed interoperare il provider di default si chiamasun e fa parte del JRE nuovi provider possono essere installati anche dinamicamente un'applicazione può sia richiedere una implementazione qualsiasi di un algoritmo, sia richiedere quella di un dato provider

2 PRINCIPALI CLASSI "ENGINE" Packagejava.security Key definisce le funzionalità condivise da chiavi opache KeySpec definisce una chiave di tipo trasparente KeyFactory rende una chiave opaca o trasparente KeyPairGenerator genera una coppia di chiavi asimmetriche AlgorithmParameters gestisce i parametri di un algoritmo AlgorithmParameterGenerator genera i parametri di un algoritmo MessageDigest calcola l hash (message digest) di un messaggio SecureRandom genera numeri casuali o pseudo-casuali Signature appone o verifica la firma digitale di un messaggio CertificateFactory crea e revoca certificati di chiavi pubbliche KeyStore gestisce il database (keystore) di chiavi e certificati NB: opaco e trasparente non sono sinonimi di cifrato e in chiaro. opaco = non si può accedere a ciò che costituisce la chiave direttamente, ma solo tramite i metodi dell'interfaccia Key; trasparente = non opaco. CHIAVI: INTERFACCE E CLASSI KeyFactory (JCA) + SecretKeyFactory (JCE) Key INTERFACCE DERIVATE DHPrivateKey DHPublicKey DSAPrivateKey DSAPublicKey SecretKey PBEKey PrivateKey PublicKey RSAMultiPrimePrivateCrtKey RSAPrivateCrtKey RSAPrivateKey RSAPublicKey PublicKey generatepublic (KeySpec keyspec) PrivateKey generateprivate(keyspec keyspec) SecreteKey generatesecret (KeySpec keyspec) KeySpec CLASSI IMPLEMENTATIVE DHPrivateKeySpec DHPublicKeySpec DSAPrivateKeySpec DSAPublicKeySpec SecretKeySpec PBEKeySpec RSAPrivateKeySpec RSAPublicKeySpec EncodedKeySpec DESedeKeySpec DESKeySpec KeySpec getkeyspec(key key, Class keyspec) COSA IMPLEMENTA: gli algoritmi di message digest MD5 e SHA-1 l algoritmo di firma digitale DSA (Digital Signature Algorithm) e i relativi enti di supporto specifici per DSA: KeyFactory e KeyPairGenerator AlgorithmParameters e AlgorithmParameterGenerator e inoltre: IL PROVIDERsun l algoritmo di generazione casuale SHA1PRNG (algoritmo proprietario, raccomandazione standard IEEE P1363) unacertificatefactory per certificati X.509 e per Certificate Revocation List una implementazione del KeyStore proprietario JKS Oltre al provider sun ne vengono forniti (JDK 1.4) altri due che estendono l'insieme delle funzionalità disponibili: rsajca SunJCE ALTRI PROVIDER PREDEFINITI in particolare verso l algoritmo di firma digitale RSA solo per firma e verifica svariati algoritmi di cifratura tra cui: DES, TripleDES, Blowfish (e relativi generatori di chiavi) Diffie-Hellman per negoziazione di chiavi INSTALLAZIONE DI NUOVI PROVIDER Se le funzionalità offerte dal provider Sun non bastano, si possono installare altri provider, sia staticamente sia dinamicamente. 1. INSTALLAZIONE STATICA porre l archivio JAR del nuovo provider nella cartella relativa alle estensioni del JRE, $JAVA_HOME/jre/lib/ext aggiungere al file delle specifiche di sicurezza java.security (contenuto in $JAVA_HOME\jre\lib\security) la riga security.provider.n =ProviderName dove N rappresenta la priorità di quel provider; la macchina virtuale Java sceglie i provider seguendo tale ordine. 2. INSTALLAZIONE DINAMICA non ci sono passi preliminari da compiere. INSTALLAZIONE STATICA: ESEMPIO I provider predefiniti sono elencati nelle prime 5 righe del file $JAVA_HOME/jre/lib/security/java.security security.provider.1=sun.security.provider.sun security.provider.2=com.sun.net.ssl.internal.ssl.provider security.provider.3=com.sun.rsajca.provider security.provider.4=com.sun.crypto.provider.sunjce security.provider.5=sun.security.jgss.sunprovider security.provider.6=org.bouncycastle.jce.provider.bouncycastleprovider In questo esempio, la sesta riga installa staticamente il provider BouncyCastle (www.bouncycastle.com), il cui file JAR dev'essere posto nella directory $JAVA_HOME/jre/lib/ext

3 INSTALLAZIONE DINAMICA: ESEMPIO L'installazione dinamica si svolge da programma Java, utilizzando le apposite API della classesecurity: static int addprovider(provider provider) static Provider getprovider(string name) static Provider[] getproviders() static Set getalgorithms(string servicename) static int insertproviderat(provider provider, int position) Ad esempio, per installare il provider IAIK (scaricabile da import javax.crypto.*; import iaik.security.provider.*; IAIK provider = new IAIK(); Security.addProvider(provider); LE JAVA SECURITY EXTENSIONS Le estensioni JCE e JSSE implementano due provider che estendono le funzionalità del provider di base: SunJCE SunJSSE crittografia a livello locale crittografia a livello di rete Altri package forniscono funzionalità di sicurezza aggiuntive, complementari alla JCA: JAAS servizi di autenticazione, autorizzazione e amministrazione CertPath gestione di catene di certificati (certification paths) JGSS meccanismi di comunicazione generici e specifici (Kerberos v5) JCA & JSE: SCHEMA D'USO Tutte le classi engine della JCA e della JSE si usano secondo il pattern "Factory", ossia: non si istanziano oggetti direttamente, tramite new si usa invece un metodo statico "di fabbrica", che nasconde e incapsula la fase di creazione esplicita: getistance(string nomeistanza) Questo metodo può così restituire formalmente delle interfacce, separando completamente l'uso (espresso dalle interfacce) dagli aspetti implementativi (legati alle classi utilizzate internamente). ESEMPI: KeyGenerator kg = KeyGenerator.getInstance("TripleDES"); KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); Signature sig = Signature.getInstance("MD5WithRSA"); CertificateFactory cf = CertificateFactory.getInstance("X.509"); JCE: CARATTERISTICHE La Java Cryptography Extension (JCE) fornisce una implementazione completa delle funzionalità di cifratura e decifratura dichiarate dalla JCA Supporta cifrari simmetrici (a blocchi e a flusso), cifrari asimmetrici e cifrari con password, unitamente ai meccanismi di MAC (Message Authentication Code) e generazione / negoziazione di chiavi; tutti gli algoritmi sono applicabili su dati, stream di I/O e oggetti serializzabili. Il package principalejavax.crypto include fra le altre: Cipher (cifratura e decifratura di dati con uno specifico algoritmo) CipherInputStream /CipherOutputStream (canale sicuro, ossia un Cipher + un InputStream o un OutputStream) KeyGenerator (generazione di chiavi per algoritmi simmetrici e per lo scambio Diffie-Hellmann DH) Mac (Message Authentication Code MAC) MODALITÀ e PADDING (RIEMPIMENTI) La MODALITÀ definisce come il cifrario debba applicare l'algoritmo di cifratura: può essere a blocchi o a flusso. Casi tipici sono: ECB [Elettronic Code Book]: uno stesso blocco di testo, anche se ripetuto, dà sempre luogo allo stesso blocco di testo cifrato CBC [Cipher Block Chaining]: ogni blocco cifrato dipende sia dal relativo blocco in chiaro, sia da tutti i blocchi precedenti, sia da un opportuno vettore di inizializzazione. Il PADDING stabilisce come completare un blocco che non raggiunge la dimensione fissa prestabilita. PKCS#5 [Public Key Criptography Standard n 5] è lo schema di riempimento più usato per la cifratura simmetrica: ai byte che mancano per riempire un blocco si assegna un valore pari al numero di byte mancanti. h e l l o t e s t c i p h e r 2 2 ESEMPIO CON 3DES: inizializzazione import java.security.*; import javax.crypto.*; Istanzia un generatore di public class TripleDES { chiavi di tipo TripleDES public static void main (String[] args) { Con il provider BouncyCastle si String text = "Hello world!"; userebbe la stringa "DESede" if (args.length == 1) text = args[0]; KeyGenerator keygen = KeyGenerator.getInstance("TripleDES"); keygen.init(168); Key key = keygen.generatekey(); Cipher cipher = Cipher.getInstance("TripleDES/ECB/PKCS5Padding"); Inizializza il generatore con la lunghezza in bit della chiave Per TripleDES, è sempre 168 Generazione della chiave Crea il cifrario, indicando: Tipo di chiave [TripleDES] Modalità [ECB] Padding [PKCS5Padding]

4 ESEMPIO CON 3DES: cifratura. cipher.init(cipher.encrypt_mode, key); byte[] plaintext = text.getbytes("utf8"); System.out.println("\nPlain text: "); for (int i=0;i<plaintext.length;i++) System.out.print(plaintext[i]+" "); Inizializza il cifrario per cifrare Converte una stringa in un array di byte specificando la codifica. ESEMPIO CON 3DES: decifratura cipher.init(cipher.decrypt_mode, key); byte[] decryptedtext = cipher.dofinal(ciphertext); String output = new String(decryptedText,"UTF8"); System.out.println("\nDecrypted Text: "+output);. Inizializza il cifrario per decifrare (usiamo la stessa chiave) Decifra i dati byte[] ciphertext = cipher.dofinal(plaintext); System.out.println("\nCipher text: "); for(int i=0;i<ciphertext.length;i++) System.out.print(ciphertext[i]+" ");. Cifra i dati COMPILAZIONE ED ESECUZIONE: C:> javac TripleDES.java C:> java TripleDES testoinchiaro Supponiamo: "Hello world!" NB: prima di cifrare chiamandodofinal, si possono eventualmente aggiungere altri dati invocando il metodoupdate(byte[]); anche in tal caso occorre ricordarsi di specificare la codifica. Plain text: Cipher text: Decrypted Text: Hello world! ESEMPIO CON 3DES: COMPLETAMENTO Per funzionare, il codice precedente dev'essere completato con la gestione delle eccezioni: catch (NoSuchAlgorithmException e1) { System.out.println("Algoritmo non supportato"); catch (InvalidAlgorithmParameterException e2) { System.out.println("Parametro non valido"); catch (NoSuchProviderException e2) { System.out.println("Algoritmo non supportato dal provider"); catch (NoSuchPaddingException e3) { System.out.println("Padding non supportato"); catch (BadPaddingException e4) { System.out.println("Padding non riuscito"); catch (InvalidKeyException e5) { System.out.println("Chiave non valida"); catch (IllegalBlockSizeException e6) { System.out.println("Dimensione blocco non corretta"); catch (UnsupportedEncodingException e7) { System.out.println("Codifica non supportata"); CAMBIARE ALGORITMO: ESEMPI Cambiare algoritmo significa solo creare un diverso cifrario. Ad esempio, volendo utilizzare Blowfish anziché 3DES: KeyGenerator keygen = KeyGenerator.getInstance("Blowfish"); keygen.init(128); Cipher c = Cipher.getInstance("Blowfish/ECB/PKCS5Padding"); Analogamente per l'algoritmo Rijndael, che opera in modalità CBC: Cipher c = Cipher.getInstance("Rijndael/CBC/PKCS5Padding"); byte[] initvect = new byte[16]; 16 byte casuali necessari SecureRandom random = new SecureRandom(); per la generazione del random.nextbytes(initvect); seme IvParameterSpec spec = new IvParameterSpec(initVect); cipher.init(cipher.encrypt_mode, key, spec); Inizializza il cifrario passando anche il semespec CIFRATURA CON PASSWORD (PBE) Password-Based Encryption (PBE): caratteristiche password di un utente medio = circa 6 caratteri 48 bit contro le chiavi di 448 bit di 3DES e Blowfish password tipiche = parole con un qualche significato spazio delle chiavi ancora più limitato soggette ad attacchi con dizionario Due difese contemporanee: ing = aggiunta di un insieme di bit casuali alla password in modo ampliare lo spazio delle chiavi Conteggi di ripetizione = chiave del cifrario PBE separata rispetto alla password: la chiave PBE è ottenuta ripetendo molte volte un'operazione sulla password base. in chiaro Password CIFRARIO CON PASSWORD + SALT CIFRARIO PBE DATI CIFRATI cifrato DATI CIFRATI cifrato cifrato cifrato Password CIFRARIO PBE in chiaro

5 CIFRATURA CON PBE: ESEMPIO import java.security.*; import javax.crypto.*; import java.util.*; public class ProvaPBE { private final int ITERATIONS = 1000; import java.security.spec.*; import javax.crypto.spec.*; public static String encrypt(char[] password, String plaintext) { Random random = new Random(); byte[] salt = new byte[8]; random.nextbytes(salt); PBEKeySpec keyspec = new PBEKeySpec(password); Crea la chiave PBE SecretKeyFactory keyfactory = data la password SecretKeyFactory.getInstance("PBEWithMD5AndDES"); SecretKey key = keyfactory.generatesecret(keyspec); PBEParameterSpec paramspec = new PBEParameterSpec(salt, ITERATIONS); Incapsula salt e numero di iterazioni Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES"); cipher.init(cipher.encrypt_mode, key, paramspec); byte[] ciphertext = cipher.dofinal(plaintext.getbytes("utf8")); return new String(salt) + new String(ciphertext); DECIFRATURA CON PBE: ESEMPIO public static String decrypt(char[] password, String input) { byte[] salt = input.substring(0,8).getbytes("utf8"); byte[] ciphertext = input.substring( 8 ).getbytes("utf8"); Separa il salt dal testo cifrato e li converte in array di byte PBEKeySpec keyspec = new PBEKeySpec(password); SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES"); SecretKey key = keyfactory.generatesecret(keyspec); PBEParameterSpec paramspec = Tutto come prima new PBEParameterSpec(salt, ITERATIONS); Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES"); cipher.init(cipher.decrypt_mode, key, paramspec); byte[] plaintextarray = cipher.dofinal(ciphertext); return new String(plaintextArray ); a parte ovviamente il DECRYPT MODE e lo scambio di ruoli fra testo in chiaro e testo cifrato MEMORIZZAZIONE SICURA DELLA CHIAVE PROBLEMA: DOVE memorizzare la chiave? su floppy disc o smart card? scomodo (servono mezzi fisici esterni) su disco fisso? comodo.. ma la sicurezza..? è opportuno cifrare la chiave, ad esempio con PBE non è male poi proteggere ulteriormente la chiave, ad esempio impostando i permessi di accesso al file Cifratura: byte[] keybytes = key.getencoded(); cipher.init(cipher.encrypt_mode, password, paramspec); byte[] encryptedkeybytes = cipher.dofinal(keybytes); Decifratura: cipher.init(cipher.decrypt_mode, password, paramspec); byte[] keybytes = cipher.dofinal(encryptedkeybytes); SecretKeySpec key = new SecretKeySpec(keyBytes, "Blowfish"); Alcuni provider forniscono un mezzo più comodo per cifrare la chiave, evitando la conversione da byte[] akey Si incapsula una chiave segreta configurando un cifrario PBE in WRAP_MODE (anzichéencrypt_mode) e poi usandowrap anzichédofinal. Analogamente si recupera la chiave operando sul cifrario in UNWRAP_MODE (anzichédecrypt_mode) e poi usandounwrap anzichédofinal. Cifratura: INCAPSULAMENTO ED ESTRAZIONE DELLA CHIAVE cipher.init(cipher.wrap_mode, password, paramspec); byte[] encryptedkeybytes = cipher.wrap(key); Decifratura: cipher.init(cipher.unwrap_mode, password, paramspec); Key key = cipher.unwrap(encryptedkeybytes, "Blowfish", Cipher.SECRET_KEY); CipherInputStream ecipheroutputstream realizzano il concetto di canale sicuro combinando automaticamente uninputstream o unoutputstream con uncipher incaricato di gestire cifratura e decifratura. Creazione stream cifrati: STREAM CIFRATI CipherOuputStream cipheroutput = new CipherOutputStream(new FileOutputStream(cipherFileName), cipher); CipherInputStream cipherinput = new CipherInputStream( new FileInputStream( cipherfilename), cipher); Uso (trasparente) di stream cifrati: int ch = 0; Un Inputstream qualsiasi Ogni carattere scritto viene automaticamente cifrato while ((ch = input.read())!=-1) { cipheroutput.write(ch); cipheroutput.close(); OGGETTI SIGILLATI Gli oggetti sigillati (SealedObject) sono oggetti cifrati che incapsulano il cifrario Sono utili per memorizzare e trasportare una versione cifrata di un oggetto (serializzabile) import java.io.*; import javax.crypto.*; import java.security.*; public class SealedObjectExample { public static void main (String[ ] args) { String secretmessage = "Ci vediamo domani alle 15"; KeyGenerator keygenerator = KeyGenerator.getInstance("Blowfish"); Key key = keygenerator.generatekey(); Cipher cipher = Cipher.getInstance("Blowfish/ECB/PKCS5Padding"); cipher.init(cipher.encrypt_mode, key); SealedObject so = new SealedObject(secretMessage, cipher); String decryptedmessage = (String) so.getobject(key); System.out.println("Messaggio decifrato: " + decryptedmessage);

6 CIFRATURA ASIMMETRICA FIRMA DIGITALE: GENERAZIONE e INVIO Algoritmo di impronta CIFRATURA ASIMMETRICA FIRMA DIGITALE: RICEZIONE e VERIFICA Algoritmo di impronta Messaggio da firmare Impronta del messaggio Messaggio ricevuto Impronta del messaggio Chiave privata del mittente Chiave pubblica del mittente UGUALI? Impronta del messaggio Lato Mittente Algoritmo di firma Firma digitale da inviare al destinatario insieme al messaggio Firma digitale ricevuta dal mittente Algoritmo di verifica della firma Lato Destinatario RSA vs DSA: CONFRONTO Firmare con RSA significa cifrare con la chiave privata decifrare con la pubblica Questa operazione non nasconde i dati (che sono decifrabili con la chiave pubblica) ma prova l identità del firmatario L'algoritmo DSA (Digital Signature Algorithm) è analogo a RSA per la firma, ma non può essere usato per cifrare DSA è più veloce a generare le firme, RSA a verificarle poiché una firma viene convalidata più spesso di quanto venga generata, RSA è solitamente più veloce APPOSIZIONE DI UNA FIRMA DIGITALE import java.security.signature; import java.security.signatureexception; KeyPairGenerator keypairgen = KeyPairGenerator.getInstance("RSA"); keypairgen.initialize(1024); KeyPair keypair = keypairgen.genkeypair(); byte[] msg = "Non esistono più le mezze stagioni".getbytes("utf8"); Signature sig = Signature.getInstance("MD5WithRSA"); sig.initsign(keypair.getprivate()); sig.update(msg); byte[] signaturebytes = sig.sign(); Per firmare occorre un oggetto Signature PROCEDURA DI FIRMA: si inizializza l'oggetto Signature con la chiave PRIVATA del mittente gli si passano mediante update i dati da firmare si calcola la firma invocando sign che restituisce i byte costituenti la firma E CORRISPONDENTE VERIFICA import java.security.signature; import java.security.signatureexception; sig.initverify( keypair.getpublic() ); sig.update(msg); boolean verified = false; try { verified = sig.verify(signaturebytes); catch (SignatureException se) { System.out.println("Formato non valido"); Anche per verificare la fiorma occorre un oggetto Signature PROCEDURA DI VERIFICA: si inizializza l'oggetto Signature con la chiave PUBBLICA del mittente gli si passano mediante update i dati da VERIFICARE si verifica la firma invocandoverify che restituisce un boolean CIFRATURA ASIMMETRICA vs. CIFRATURA SIMMETRICA DIFFERENZE RISPETTO AL CASO SIMMETRICO MODALITÀ: nei cifrari asimmetrici, si usa quasi sempre ECB PADDING: nei cifrari asimmetrici non si usa più PKCS#5, ma bensì (con RSA) PKCS#1 e OAEP (Optimal Asymmetric Encryption Padding) COSA SI CIFRA: tipicamente solo la (corta) chiave di sessione da usarsi da lì in poi con un algoritmo simmetrico. COSA OCCORRE solo per firmare digitalmente un messaggio e verificarlo: basta il provider JCE standard per cifratura e decifratura: un provider che supporti tutto RSA BouncyCastle o IAIK

7 CIFRATURA ASIMMETRICA con RSA import javax.crypto.*; import java.security.*; KeyPairGenerator keypairgen = KeyPairGenerator.getInstance("RSA"); keypairgen.initialize(1024); KeyPair keypair = keypairgen.genkeypair(); Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(cipher.encrypt_mode, keypair.getpublic() ); Tipicamente il messaggio da cifrare sarà la chiave di sessione byte[] messagebytes = "il mio messaggio".getbytes("utf8"); byte[] ciphertext = cipher.dofinal(messagebytes); cipher.init(cipher.decrypt_mode, keypair.getprivate() ); byte[] decryptedmessagebytes = cipher.dofinal(ciphertext); System.out.println( new String(decryptedMessageBytes,"UTF8") ); CIFRATURA ASIMMETRICA con RSA DI UNA CHIAVE (simmetrica) DI SESSIONE KeyPairGenerator keypairgen = KeyPairGenerator.getInstance("RSA"); keypairgen.initialize(1024); KeyPair keypair = keypairgen.genkeypair(); Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(cipher.encrypt_mode, keypair.getpublic() ); KeyGenerator sessionkeygen = KeyGenerator.getInstance("Blowfish"); sessionkeygen.init(128); Key blowfishkey = sessionkeygen.generatekey(); byte[] blowfishkeybytes = blowfishkey.getencoded(); byte[] ciphertext = cipher.dofinal(blowfishkeybytes); cipher.init(cipher.decrypt_mode, keypair.getprivate() ); byte[] decryptedkeybytes = cipher.dofinal(ciphertext); SecretKey reconstructedblowfishkey = new SecretKeySpec(decryptedKeyBytes,"Blowfish");

UNIVERSITÀ DEGLI STUDI DI TRENTO DOCUMENTO ELETTRONICO, FIRMA DIGITALE E SICUREZZA IN RETE.

UNIVERSITÀ DEGLI STUDI DI TRENTO DOCUMENTO ELETTRONICO, FIRMA DIGITALE E SICUREZZA IN RETE. UNIVERSITÀ DEGLI STUDI DI TRENTO DOCUMENTO ELETTRONICO, FIRMA DIGITALE E SICUREZZA IN RETE. INTRODUZIONE ALL ARGOMENTO. A cura di: Eleonora Brioni, Direzione Informatica e Telecomunicazioni ATI NETWORK.

Dettagli

Altri cifrari a blocchi

Altri cifrari a blocchi Altri cifrari a blocchi Barbara Masucci Dipartimento di Informatica ed Applicazioni Università di Salerno masucci@dia.unisa.it http://www.dia.unisa.it/professori/masucci RC2 [1989] IDEA (International

Dettagli

LA CRITTOGRAFIA Le applicazioni della crittografia e della firma digitale a cura di Sommaruga Andrea Guido

LA CRITTOGRAFIA Le applicazioni della crittografia e della firma digitale a cura di Sommaruga Andrea Guido INDICE LA FIRMA DIGITALE O ELETTRONICA...2 LA LEGISLAZIONE IN MATERIA...5 NOTA SUI FORMATI DI FILE...6 COME FUNZIONA IL MECCANISMO DELLE FIRME ELETTRONICHE...7 FIRMA DI PIÙ PERSONE... 7 DOCUMENTO SEGRETO...

Dettagli

Accordo su chiavi. (key agreement) Alfredo De Santis. Marzo 2015. Dipartimento di Informatica Università di Salerno

Accordo su chiavi. (key agreement) Alfredo De Santis. Marzo 2015. Dipartimento di Informatica Università di Salerno Accordo su chiavi (key agreement) Alfredo De Santis Dipartimento di Informatica Università di Salerno ads@dia.unisa.it http://www.dia.unisa.it/professori/ads Marzo 2015 Accordo su una chiave Alice Bob??

Dettagli

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

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

R.Focardi Laboratorio di Ingegneria del Software 6. 1

R.Focardi Laboratorio di Ingegneria del Software 6. 1 Networking Java permette comunicazioni in rete basate sul concetto di socket, che permette di vedere la comunicazione in termini di flusso (stream), in modo analogo all input-output di file, usando Stream

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

SMARTCARD Studente: Elvis Ciotti Prof: Luciano Margara 1

SMARTCARD Studente: Elvis Ciotti Prof: Luciano Margara 1 SMARTCARD Studente: Elvis Ciotti Prof: Luciano Margara 1 Introduzione SmartCard: Carta intelligente Evoluzione della carta magnetica Simile a piccolo computer : contiene memoria (a contatti elettrici)

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java Fondamenti di Informatica Dichiarazione, creazione e gestione di array in Java Array in Java - creazione La creazione fa una inizializzazione implicita: num = new int[10]; con valore 0 per int e double,

Dettagli

esercizi Esercizi / problemi

esercizi Esercizi / problemi Sistemi informativi applicati (reti di calcolatori): esercizi 1 Esercizi / problemi 1. Creare un applicazione che calcoli la media aritmetica dei seguenti valori interi: 35, 117, 23 e ne visualizzi il

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Sicurezza delle reti wireless. Alberto Gianoli alberto.gianoli@fe.infn.it

Sicurezza delle reti wireless. Alberto Gianoli alberto.gianoli@fe.infn.it Sicurezza delle reti wireless Alberto Gianoli alberto.gianoli@fe.infn.it Concetti di base IEEE 802.11: famiglia di standard tra cui: 802.11a, b, g: physical e max data rate spec. 802.11e: QoS (traffic

Dettagli

Guida all'installazione di SLPct. Manuale utente. Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it

Guida all'installazione di SLPct. Manuale utente. Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it Guida all'installazione di SLPct Manuale utente Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it Premessa Il redattore di atti giuridici esterno SLpct è stato implementato da Regione

Dettagli

UNIVERSITÀ DEGLI STUDI DI PARMA

UNIVERSITÀ DEGLI STUDI DI PARMA UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di scienze Matematiche Fisiche e Naturali Corso di Laurea in INFORMATICA Tesi di laurea in RETI DI CALCOLATORI Autenticazione Centralizzata con il sistema CAS, integrando

Dettagli

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

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

Decreto 2 novembre 2005 Regole tecniche per la formazione, la trasmissione e la validazione, anche temporale, della posta elettronica certificata

Decreto 2 novembre 2005 Regole tecniche per la formazione, la trasmissione e la validazione, anche temporale, della posta elettronica certificata Decreto 2 novembre 2005 Regole tecniche per la formazione, la trasmissione e la validazione, anche temporale, della posta elettronica IL MINISTRO PER L'INNOVAZIONE E LE TECNOLOGIE - Visto l articolo 17

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

Protocollo SSH (Secure Shell)

Protocollo SSH (Secure Shell) Università degli Studi Roma Tre Dipartimento di Informatica ed Automazione Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Tesina per il corso di Elementi di Crittografia Protocollo SSH

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

CARATTERISTICHE DELLE CRYPTO BOX

CARATTERISTICHE DELLE CRYPTO BOX Secure Stream PANORAMICA Il sistema Secure Stream è costituito da due appliance (Crypto BOX) in grado di stabilire tra loro un collegamento sicuro. Le Crypto BOX sono dei veri e propri router in grado

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione Sede di Latina Corso di Laurea in Ingegneria dell Informazione Consorzio Nettuno La fase di realizzazione si occupa

Dettagli

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

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it SMS API Documentazione Tecnica YouSMS SOAP API YouSMS Evet Limited 2015 http://www.yousms.it INDICE DEI CONTENUTI Introduzione... 2 Autenticazione & Sicurezza... 2 Username e Password... 2 Connessione

Dettagli

LA SICUREZZA NEI SISTEMI INFORMATIVI. Antonio Leonforte

LA SICUREZZA NEI SISTEMI INFORMATIVI. Antonio Leonforte LA SICUREZZA NEI SISTEMI INFORMATIVI Antonio Leonforte Rendere un sistema informativo sicuro non significa solo attuare un insieme di contromisure specifiche (di carattere tecnologico ed organizzativo)

Dettagli

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono","e-mail"}; //nomi delle colonne della tabella

Finestra.java. static String nomicolonne[] = {ind.,cognome,nome,telefono,e-mail}; //nomi delle colonne della tabella import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.windowevent; import java.awt.event.windowlistener; import java.io.*; import java.util.*;

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Semplici Algoritmi di Ordinamento

Semplici Algoritmi di Ordinamento Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono

Dettagli

Guida alla scansione su FTP

Guida alla scansione su FTP Guida alla scansione su FTP Per ottenere informazioni di base sulla rete e sulle funzionalità di rete avanzate della macchina Brother, consultare la uu Guida dell'utente in rete. Per ottenere informazioni

Dettagli

Ricorsione. Corso di Fondamenti di Informatica

Ricorsione. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Ricorsione Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e

Dettagli

Marco Giorgi. Palazzo di Giustizia di Torino 30 marzo 2012

Marco Giorgi. Palazzo di Giustizia di Torino 30 marzo 2012 Marco Giorgi Palazzo di Giustizia di Torino 30 marzo 2012 Post mortem (Dopo lo spegnimento del sistema) Si smonta il dispositivo e lo si collega ad un PC dedicato all'acquisizione Live forensics (Direttamente

Dettagli

Contenuti. Dov e` il nemico?

Contenuti. Dov e` il nemico? Contenuti SICUREZZA INFORATICA Sicurezza Problemi Requisiti Attacchi Crittografia Crittografia simmetrica e asimmetrica Criptoanalisi Autenticazione Firma Digitale etodi per la Firma Digitale Certificati

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0

AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0 AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0 Con questo aggiornamento sono state implementate una serie di funzionalità concernenti il tema della dematerializzazione e della gestione informatica dei documenti,

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

2009 Elite Computer. All rights reserved

2009 Elite Computer. All rights reserved 1 PREMESSA OrisDent 9001 prevede la possibilità di poter gestire il servizio SMS per l'invio di messaggi sul cellulare dei propri pazienti. Una volta ricevuta comunicazione della propria UserID e Password

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

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

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

Un oggetto per la lettura dalla tastiera

Un oggetto per la lettura dalla tastiera Fondamenti di informatica Oggetti e Java ottobre 2012 1 Un oggetto per la lettura dalla tastiera Le API di Java hanno un oggetto System.in che rappresenta la tastiera del calcolatore, ma che non è semplice

Dettagli

Regole tecniche del servizio di trasmissione di documenti informatici mediante posta elettronica certificata

Regole tecniche del servizio di trasmissione di documenti informatici mediante posta elettronica certificata Regole tecniche del servizio di trasmissione di documenti informatici mediante posta elettronica certificata Pagina 1 di 48 INDICE 1 MODIFICHE DOCUMENTO...4 2 RIFERIMENTI...4 3 TERMINI E DEFINIZIONI...4

Dettagli

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

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Di seguito sono descritti i prerequisiti Hardware e Software che deve possedere la postazione a cui viene collegata l Aruba Key.

Di seguito sono descritti i prerequisiti Hardware e Software che deve possedere la postazione a cui viene collegata l Aruba Key. 1 Indice 1 Indice... 2 2 Informazioni sul documento... 3 2.1 Scopo del documento... 3 3 Caratteristiche del dispositivo... 3 3.1 Prerequisiti... 3 4 Installazione della smart card... 4 5 Avvio di Aruba

Dettagli

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1 Tutorial Configuration Managment Configurare il servizio EC2 su AWS Pagina 1 Sommario 1. INTRODUZIONE... 3 2. PROGRAMMI NECESSARI... 4 3. PANNELLO DI CONTROLLO... 5 4. CONFIGURARE E LANCIARE UN ISTANZA...

Dettagli

Il World Wide Web: nozioni introduttive

Il World Wide Web: nozioni introduttive Il World Wide Web: nozioni introduttive Dott. Nicole NOVIELLI novielli@di.uniba.it http://www.di.uniba.it/intint/people/nicole.html Cos è Internet! Acronimo di "interconnected networks" ("reti interconnesse")!

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

AUTENTICAZIONE CON CERTIFICATI DIGITALI MOZILLA THUNDERBIRD

AUTENTICAZIONE CON CERTIFICATI DIGITALI MOZILLA THUNDERBIRD AUTENTICAZIONE CON CERTIFICATI DIGITALI MOZILLA THUNDERBIRD 1.1 Premessa Il presente documento è una guida rapida che può aiutare i clienti nella corretta configurazione del software MOZILLA THUNDERBIRD

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

Modello OSI e architettura TCP/IP

Modello OSI e architettura TCP/IP Modello OSI e architettura TCP/IP Differenza tra modello e architettura - Modello: è puramente teorico, definisce relazioni e caratteristiche dei livelli ma non i protocolli effettivi - Architettura: è

Dettagli

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

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

1 EJB e Portal Component Object http://desvino.altervista.org

1 EJB e Portal Component Object http://desvino.altervista.org 1 EJB e Portal Component Object http://desvino.altervista.org In questo tutorial studiamo come sfruttare la tecnologia EJB, Enterprise JavaBean, all interno del SAP Netweaver Portal. In breve, EJB è un

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute DNS: Domain Name System I name DNS Persone: identificatori: CF, nome, Numero di Passaporto Host e router Internet: Indirizzo IP ( bit) - usato per instradare i pacchetti nome, per es., massimotto.diiie.unisa.it

Dettagli

Dati importati/esportati

Dati importati/esportati Dati importati/esportati Dati importati Al workspace MATLAB script Dati esportati file 1 File di testo (.txt) Spreadsheet Database Altro Elaborazione dati Grafici File di testo Relazioni Codice Database

Dettagli

Ricerca sequenziale di un elemento in un vettore

Ricerca sequenziale di un elemento in un vettore Ricerca sequenziale di un elemento in un vettore La ricerca sequenziale o lineare è utilizzata per ricercare i dati in un vettore NON ordinato. L algoritmo di ricerca sequenziale utilizza quan non ha alcuna

Dettagli

INTRODUZIONE AL PROGETTO

INTRODUZIONE AL PROGETTO SETEFI INTRODUZIONE AL PROGETTO Il nostro obiettivo è quello di illustrare la struttura e le caratteristiche di fondo che stanno alla base delle transazioni online operate tramite Setefi, società del gruppo

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

Specifiche tecnico-funzionali per comunicazione e conservazione dati da parte dei Sistemi Controllo Accessi. INDICE

Specifiche tecnico-funzionali per comunicazione e conservazione dati da parte dei Sistemi Controllo Accessi. INDICE Specifiche tecnico-funzionali per comunicazione e conservazione dati da parte dei Sistemi Controllo Accessi. INDICE 1.1 CARATTERISTICHE DEL SUPPORTO IMMODIFICABILE E SUO FILE-SYSTEM... 2 1.2 SICUREZZA

Dettagli

Manipolazione di testi: espressioni regolari

Manipolazione di testi: espressioni regolari Manipolazione di testi: espressioni regolari Un meccanismo per specificare un pattern, che, di fatto, è la rappresentazione sintetica di un insieme (eventualmente infinito) di stringhe: il pattern viene

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo.

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo. In una rete di ampie dimensioni, ciascuna sottorete (es. LAN, WAN) è connessa ad altre sottoreti tramite router. Internet è un insieme di reti connesse tra loro. Essenzialmente, in una rete alcune macchine

Dettagli

Serduino - SERRA CON ARDUINO

Serduino - SERRA CON ARDUINO Serduino - SERRA CON ARDUINO 1 Componenti Facchini Riccardo (responsabile parte hardware) Guglielmetti Andrea (responsabile parte software) Laurenti Lorenzo (progettazione hardware) Rigolli Andrea (reparto

Dettagli

Il linguaggio Java. Concetti base. I packages

Il linguaggio Java. Concetti base. I packages Il linguaggio Java I packages Concetti base Un package è una collezione di classi ed interfacce correlate che fornisce uno spazio dei nomi ed un controllo sugli accessi Un package facilita il reperimento

Dettagli

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Cos è una stringa (1) Stringhe DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Una stringa è una serie di caratteri trattati come una singola unità. Essa potrà includere lettere, cifre, simboli e caratteri

Dettagli

Firma Digitale Remota. Manuale di Attivazione, Installazione,Utilizzo

Firma Digitale Remota. Manuale di Attivazione, Installazione,Utilizzo Firma Digitale Remota Manuale di Attivazione, Installazione,Utilizzo Versione: 0.3 Aggiornata al: 02.07.2012 Sommario 1. Attivazione Firma Remota... 3 1.1 Attivazione Firma Remota con Token YUBICO... 5

Dettagli

Problema: al momento dell autenticazione si riceve il messaggio Certificato digitale non ricevuto Possibili cause: 1) La smart card non è una CNS e

Problema: al momento dell autenticazione si riceve il messaggio Certificato digitale non ricevuto Possibili cause: 1) La smart card non è una CNS e Problema: al momento dell autenticazione si riceve il messaggio Certificato digitale non ricevuto Possibili cause: 1) La smart card non è una CNS e non contiene il certificato di autenticazione: è necessario

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

EUROPEAN COMPUTER DRIVING LICENCE. IT Security. Syllabus

EUROPEAN COMPUTER DRIVING LICENCE. IT Security. Syllabus EUROPEAN COMPUTER DRIVING LICENCE IT Security Syllabus Scopo Questo documento presenta il syllabus di ECDL Standard IT Security. Il syllabus descrive, attraverso i risultati del processo di apprendimento,

Dettagli

Protocollo HTTP. Alessandro Sorato

Protocollo HTTP. Alessandro Sorato Un protocollo è un insieme di regole che permettono di trovare uno standard di comunicazione tra diversi computer attraverso la rete. Quando due o più computer comunicano tra di loro si scambiano una serie

Dettagli

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica A.A. 2007-08 CORSO DI INGEGNERIA DEL SOFTWARE Prof. Giulio Destri http://www.areasp.com (C) 2007 AreaSP for

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

TorrentLocker Enti Italiani sotto riscatto

TorrentLocker Enti Italiani sotto riscatto Digital Forensics Bureau www.difob.it TorrentLocker Enti Italiani sotto riscatto Paolo DAL CHECCO, Giuseppe DEZZANI Studio DIgital Forensics Bureau di Torino 20 ottobre 2014 Da mercoledì 15 ottobre stiamo

Dettagli

Il Sistema Operativo: il File System

Il Sistema Operativo: il File System Il Sistema Operativo: il File System Il File System è quella parte del S.O. che si occupa di gestire e strutturare le informazioni memorizzate su supporti permanenti (memoria secondaria) I file vengono

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli