Sicurezza Aspetto di crescente rilevanza nei sistemi distribuiti Necessità di introdurre la sicurezza fra gli aspetti di progetto Protezione di integrità di informazioni e risorse privatezza Condivisione di risorse Politiche di sicurezza indipendenti dalla implementazione Meccanismi di sicurezza Crittografia come base dei meccanismi di sicurezza chiave pubblica chiave privata protocolli ibridi Evoluzione dei problemi e requisiti di sicurezza 1965-75 1975-89 1990-99 Current Piattaforma Sistemi Multi-utente timesharing Sistemi distribuiti basati su reti locali Servizi Internet Reti WAN Internet e sistemi mobili Risorse condivise Memoria, files Servizi locali (e.g. NFS), rete locale Email, web sites, E-commerce Oggetti distribuiti Codice mobile Requisiti di sicurezza Identificazione e autenticazione Protezione dei servizi Sicurezza elevata per transazioni commerciali Ambienti di Unica authority, Unica authority, Molti authorities, gestione della unica autorizzazione autorizzazione repli- Nessun controllo sicurezza a database cata su di authority databases (e.g. NIS) completo sulla rete Controllo degli accessi ei singoli oggetti, codice mobile sicuro Authorities per ogni attività, gruppi con responsabilità condivise C7.2 1 Tipi di problemi Leakage Tampering Vandalismo acquisizione non autorizzata di informazioni modifica non autorizzata di informazioni interferenza non autorizzata e senza scopo di una operazione propria ‘Canale’ di comunicazione spiare - ottenere copie non autorizzate di messaggi mascherare - mandare/ricevere messaggi fingendosi un altro danneggiare - modificare un messaggio rispondere - memorizzare un messaggio e rinviarlo successivamente rendere indisponibile un servizio - sommergere un canale o risorsa con messaggi per renderne impossibile l’uso Applicazioni sensibili commerciali posta elettronica bancarie e finanziarie accesso ad archivi di dati privati sistemi mobili C7.3 Modello Modello di sicurezza • Processi che incapsulano le risorse e regolano l’accesso tramite interfacce I processi principali sono autorizzati ad operare sulle risorse Ogni risorsa è protetta da accessi non autorizzati • Processi interagenti tramite una rete condivisa anche da nemici I nemici tentano letture e copie di messaggi o inserimenti fingendosi altri Canale sicuro Nella fase di progetto occorre - elencare tutti i possibili tipi di attacco - mostrare che il sistema è in grado di garantire la sicurezza per ognuno - usare ipotesi di caso pessimo (rete, programmi, codici e interfacce vulnerabili, i nemici conoscono gli algoritmi ed hanno accesso alle risorse,…) C7.4 2 Tecniche di sicurezza •crittografia codifica basata su chiavi e algoritmi di codifica e decodifica usata per la firma digitale •certificazioni certificato: documento con una dichiarazione del principale catena di certificazioni fino ad una autorità accettata e credibile formato standard dei certificati •controllo degli accessi tipicamente usato nei sistemi operativi nei sistemi distribuiti il controllo viene operato solitamente dal servente che riceve richieste del tipo <op, principal, risorsa> domini di protezione: insieme di <risorsa, diritti>, implementazioni - lista di capabilities o lista di controlli di accesso <dominio, op> •credenziali insieme di informazioni che garantiscono il diritto di accesso certificazione di una autorità •firewall controlla tutti le comunicazioni da e per una rete (intranet) meccanismo rudimentale, non protegge da attacchi interni C7.5 Crittografia Approcci algoritmi di codifica basati su: • chiave segreta condivisa • chiave pubblica (condivisa dai due comunicanti) e chiave privata per la decodifica Obbiettivo: mantenere la segretezza e integrità dell’informazione A {M}K B AB • chiave segreta condivisa A codifica il messaggio M con la funzione E(KAB, M) B decodifica il messaggio M con la funzione D(KAB, M) Problemi: comunicazione della chiave segreta, autenticità del mittente • comunicazione basata su chiave pubblica per condividere la chiave segreta A accede al servizio (certificato) di distribuzione della chiave pubblica KBPub A crea una chiave KAB e codificandola con KBPub la invia a B che la decodifica B definisce una chiave di decodifica KBPriv Problemi: comunicazione della chiave pubblica C7.6 3 Schemi usuali di nomi usati per le componenti nei protocolli di sicurezza Alice Primo partecipante Bob Secondo partecipante Carol partecipante in un protocollo con tre e quattro elementi Dave partecipante in un un protocollo con quattro elementi Eve Eavesdropper spia Mallory Attaccante malizioso (intenzionale) Sara Un servente C7.7 Notazione in crittografia KA Chiave segreta di Alice KB Chiave segreta di Bob KAB Chiave segreta condivisa da Alice e Bob KApriv Chiave privata di Alice (nota solo ad Alice) KApub Chiave pubblica di Alice (pubblicata da Alice per la lettura) Messaggio M codificato con chiave K Messaggio M firmato con chiave K {M}K [M]K C7.8 4 Esempio: certificato del conto bancario di Alice 1. 2. 3. 4. 5. Tipo di certificato : Nome: Conto : Authority di certificazione : Signature: Numero di conto Alice 6262626 Banca di Bob {Digest (field 2 + field 3)}KBpriv C7.9 Certificato con chiave pubblica per la banca di Bob 1. Tipo di certificato : Chiave pubblica 2. Nome: Banca di Bob 3. Chiave pubblica : KBpub 4. Authority di certificazione : Fred – The Bankers Federation {Digest (field 2 + field 3)}KFpriv 5. Signature: C7.10 5 Algoritmi Chiave segreta algoritmi simmetrici Codifica E(K,M) = M Decodifica D(K, E(K,M))=M funzione relativamente facile da calcolare funzione molto difficile (impossibile) da calcolare one-way function Un algoritmo di forza bruta ha complessità ... Chiave pubblica algoritmi asimmetrici Trap-door function Funzione calcolabile in una direzione, ma di inversa non calcolabile senza la conoscenza di una chiave segreta Manipolazione di M secondo principi della teoria dell’informazione: - confusione (es. uso di shift circolari, di XOR,…) - diffusione rompere le regolarità e ripetizioni C7.11 Cipher block chaining Divisione dei dati in blocchi di lunghezza costante plaintext blocks n+3 n+2 n+1 XOR E(K, M) ciphertext blocks n-3 n-2 n-1 n Per diminuire la probabilità di riconoscere ripetizioni molti algoritmi usano la concatenazione dei blocchi nella codifica (CBC) Alla ricezione la decodifica opera una operazione inversa alla codifica: si decodifica il blocco n+1 e si esegue XOR con il blocco codificato precedente (n) ottenendo il plaintext n+1 Corretto perché XOR applicata due volte riporta allo stesso risultato (idempotenza) Vettore di inizializzazione per distinguere sequenze altrimenti uguali Scarsa tolleranza ai guasti C7.12 6 Stream cipher Codifica incrementale su un flusso di bit number generator keystream n+3 n+2 n+1 E(K, M) buffer XOR ciphertext stream plaintext stream Generazione di un flusso di chiavi, codifica anche in anticipo e memorizzazione, operazione XOR con il flusso di bit Uso di generatori di numeri pseudocasuali per generare le chiavi, concordando il seme fra mittente e destinatario Efficiente Si può combinare stream cipher con CBC C7.13 Algoritmi simmetrici Esistono molti algoritmi DES (Data Encription Standard) sviluppato da IBM è uno standard US che è stato molto usato ma è superato perché basato su chiavi di 56 bit, oggi attaccabili discreta complessità computazionale, realizzazione VLSI uguale funzione di codifica e decodifica IDEA è un algoritmo efficiente di tipo simmetrico e a blocchi con chiavi di 128 bit uguale funzione di codifica e decodifica AES (Advanced Encription Standard) invito a proporre standard dalla NIST da pubblicare nel 2001 TEA (Tiny Encription Algorithm) opera su blocchi di 64 bit (due interi di 32 bit) e chiave di 128 bit (quattro interi) rotazioni, XOR e shift per creare confusione e diffusione più efficiente del DES C7.14 7 Funzione crittografica TEA void encrypt(unsigned long k[], unsigned long text[]) { unsigned long y = text[0], z = text[1]; unsigned long delta = 0x9e3779b9, sum = 0; int n; for (n= 0; n < 32; n++) { sum += delta; y += ((z << 4) + k[0]) ^ (z+sum) ^ ((z >> 5) + k[1]); z += ((y << 4) + k[2]) ^ (y+sum) ^ ((y >> 5) + k[3]); } text[0] = y; text[1] = z; } dove 1 2 3 4 5 6 7 ^ è XOR >> e << sono shift logici C7.15 Funzione crittografica TEA void decrypt(unsigned long k[], unsigned long text[]) { unsigned long y = text[0], z = text[1]; unsigned long delta = 0x9e3779b9, sum = delta << 5; int n; for (n= 0; n < 32; n++) { z -= ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]); y -= ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]); sum -= delta; } text[0] = y; text[1] = z; } C7.16 8 TEA in funzione void tea(char mode, FILE *infile, FILE *outfile, unsigned long k[]) { /* mode is ’e’ for encrypt, ’d’ for decrypt, k[] is the key.*/ char ch, Text[8]; int i; while(!feof(infile)) { i = fread(Text, 1, 8, infile); /* legge 8 bytes da infile in Text */ if (i <= 0) break; while (i < 8) { Text[i++] = ' ';} /* completa l’ultimo blocco con spazi */ switch (mode) { case 'e': encrypt(k, (unsigned long*) Text); break; case 'd': decrypt(k, (unsigned long*) Text); break; } fwrite(Text, 1, 8, outfile); /* write 8 bytes from Text to outfile */ } } C7.17 Algoritmi asimmetrici Esistono pochi algoritmi chiavi Ke e Kd per codifica e decodifica numeri molto grandi D(Kd , E(Ke,M))=M la chiave di decodifica è segreta, quella di codifica può essere pubblica RSA (Rivest, Shamir, Adelman) si basa sul prodotto di due numeri primi molto grandi (>10100), poiché la fattorizzazione di un numero in numeri primi è computazionalmente intrattabile e di fatto non calcolabile molto usato C7.18 9 RSA Encryption - 1 Trovare una coppia di chiavi e, d: 1. Scegliere due numeri primi grandi, P e Q (> 10100), e calcolare: N=PxQ Z = (P–1) x (Q–1) 2. Scegliere d come un qualsiasi numero relativamente primo a Z (senza fattori comuni). Esempio di computazione con piccoli valori interi per P e Q: P = 13, Q = 17 –> N = 221, Z = 192 d=5 3. Trovare e dall’equazione: e x d = 1 mod Z ovvero, e x d è il più piccolo numero divisibile per d nella serie Z+1, 2Z+1, 3Z+1, ... . e x d = 1 mod 192 = 1, 193, 385, ... 385 è divisibile per d e = 385/5 = 77 C7.19 RSA Encryption - 2 Per crittografare i dato con il metodo RSA, il testo è diviso in blocchi di lunghezza uguale di k bit con 2k < N , ovvero tale che il numero del blocco sia sempre < N; in applicazioni pratiche k è in [ 512, 1024] k = 7, since 27 = 128 La funzione di codifica di un solo blocco di plaintext M è: E'(e,N,M) = Me mod N per un messaggio M, il ciphertext è M77 mod 221 La funzione di decodifica di un blocco di chipertext c per riprodurre il testo originale è: D'(d,N,c) = cd mod N Si dimostra che E' e D' sono mutuamente inverse E'(D'(x)) = D'(E'(x)) = x per ogni valore di P , 0 ≤ P ≤ N. parametri e,N : chiave per la funzione dei codifica Ke = <e,N> parametri d,N : chiave per la funzione di decodifica Kd = <d,N> allora la funzione di codifica: E(Ke, M) ={M}K Il messaggio codificato può essere decodificato solo da chi ha la chiave privata Kd e ìèD(Kd, ={M}K ) = M C7.20 10 Algoritmi ibridi Gli algoritmi a chiave pubblica sono costosi, ma utili per applicazioni per le quali si vuole evitare di trasmettere la chiave segreta Algoritmi ibridi uso della chiave pubblica per comunicare la chiave segreta comunicazione basata sulla chiave segreta Esempio: SSL (Secure Socket Layer) standard de facto come protocollo d i sicurezza per applicazioni di commercio elettronico C7.21 Firma digitale con chiave pubblica M doc firmato H(M) Firma h E(Kpri, h) M 128 bits {h}Kpri Verifica {h}Kpri D(Kpub,{h}) h' H(doc) h M h = h'? C7.22 11 Firme a basso costo con chiave segreta condivisa M doc firmato H(M+K) Firma h M K M h Verifica h = h'? K H(M+K) h' C7.23 X509 Certificate format Subject Distinguished Name, Public Key Issuer Distinguished Name, Signature Period of validity Not Before Date, Not After Date Administrative information Version, Serial Number Extended Information C7.24 12 Prestazioni degli algoritmi di codifica sicura Dimensione chiave Velocità PRB ottimizzata estrapolata (kbytes/s) /dimesione dell’hash (kbytes/sec.) TEA 128 700 - DES 56 350 7746 Triple-DES 112 120 2842 IDEA 128 700 4469 RSA 512 7 - RSA 2048 1 - MD5 128 1740 62425 SHA 160 750 25162 C7.25 Protocollo di autenticazione di chiave segreta Needham–Schroeder Header Message Note 1. A->S: A, B, NA A requests S to supply a key for communication with B. S returns a message encrypted in A’s secret key, containing a newly generated key KAB and a ‘ticket’ encrypted in B’s secret key. The nonce NA demonstrates that the message was sent in response to the preceding one. A believes that S sent the message because only S knows A’s secret key. A sends the ‘ticket’ to B. 2. S->A: {NA , B, KAB, {KAB, A}KB}KA 3. A->B: {KAB, A}KB 4. B->A: {NB}KAB 5. A->B: {NB - 1}KAB B decrypts the ticket and uses the new key KAB to encrypt another nonce NB. A demonstrates to B that it was the sender of the previous message by returning an agreed transformation of NB. C7.26 13 Architettura di sistema di Kerberos Kerberos Key Distribution Centre Step A 1. Request for TGS ticket Authentication service A Authentication database Ticketgranting service T 2. TGS ticket Client C Login session setup Server session setup DoOperation Step B 3. Request for server ticket 4. Server ticket Step C 5. Service request Request encrypted with session key Service function Server S Reply encrypted with session key C7.27 Algoritmo SSL Sviluppato per transazioni sicure da Netscape, dal 1994 Supportato dai browser web e usato per transazioni elettroniche via web Utilizzato da vari protocolli e applicazioni (http, ftp, telnet, …) TLS (Transport Layer Security) protocollo adottato come standard di Internet (RFC 2246) estensione di SSL 1. fase di negoziazione degli algoritmi di codifica e di autenticazione che possono differire in un ambiente eterogeneo può fallire 2. Codifica a chiave pubblica per scambiarsi la chiave privata condivisa 3. Comunicazione sicura con codifica con chiave privata SSL Record Protocol Layer implementazione del canale sicuro, trasmissione di messaggi per la codifica e l’autentica (livello sessione) Handshake Layer protocollo handshake e altri per gestire la sessione (livello applicazione) C7.28 14 Pila di protocolli SSL SSL Handshake protocol SSL Change Cipher Spec SSL Alert Protocol HTTP Telnet SSL Record Protocol Livello Trasporto (TCP) Livello rete (IP) Protocolli SSL : altri protocolli: C7.29 Protocollo handshake SSL Stabilisce la versione del protocollo, session ID, cipher suite, metodo di ClientHello ServerHello Compressione, scambio di numeri casuali Certificate Eventualmente invia il certificato del server e e richiede il certificato del cliente Certificate Request ServerHelloDone Client Certificate Certificate Verify Change Cipher Spec Finished Server Manda eventualmente la risposta al certificato del cliente Modifica la chiper suite e termina l’handshake Change Cipher Spec Finished C7.30 15 SSL handshake: opzioni di configurazione (cipher suite) Componente Descrizione Esempio Metodo si scambio Metodo da usare per lo scambio RSA con Della chiave di sessione certificato di chiave della chiave pubblica Cipher per trasferimento block o stream cipher da usare per i dati IDEA Per creare codici di autenticazione di messaggi (MACs) SHA dati Message digest function C7.31 SSL record protocol abcdefghi Application data Fragment/combine Record protocol units abc def ghi Compress Compressed units Hash MAC Encrypt Encrypted Transmit TCP packet C7.32 16 Architettura di Millicent Vendor Purchase(item name, scrip payment) Customer Validator Master scrip secrets Spent scrip list Master customer secrets Browser Completion(item, scrip change) scrip Scrip store Customer secret Optional secure channel based on customer secret Scrip layout Vendor Value Scrip ID Customer ID Expiry date Properties Certificate C7.33 17