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