Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
RSA
Il funzionamento di RSA è basato sui numeri primi, e può essere schematizzato nei seguenti punti: 1. Si scelgono due numeri primi (P e Q) 2. Si calcola il loro prodotto chiamato modulo (dato che tutta l'aritmetica seguente è modulo N) 3. Si sceglie poi un numero (chiamato esponente pubblico), tale che sia primo rispetto a E e che sia (P-1)(Q-1) < E < P*Q 4. Si calcola il numero (chiamato esponente privato) tale che D = E mod (P-1)(Q-1) Così facendo si ottengono una chiave pubblica (N, E) e una chiave privata (N, D). RSA può cifrare solo dati il cui valore sia inferiore al modulo di N (è una sorta di algoritmo a blocchi); il plaintext deve essere minore di N (p < N) e viene cifrato tramite la formula: E * c = p mod N Mentre la decifratura avviene tramite la formula: D * p = c mod N Solitamente le chiavi pubbliche hanno E = 3, 17, 65537... perché sono numeri primi.binari composti=da solamente due 1, quindi l'elevamento a potenza richiede meno tempo per cui si ottiene una velocità in cifratura e di verifica della firma maggiore.
Debolezze di RSA:
- Scelta di piccoli esponenti della chiave pubblica
- Uso della stessa chiave per firma e cifratura
- Uso dell'utente come se fosse un "oracolo"
Soluzioni alle debolezze:
- Con la codifica PKCS#1 v1.5, usare E 0x10001=
- Aggiungere sempre del padding random fresco (il "sale", almeno 8 byte) prima di cifrare il messaggio
- Usare chiavi RSA diverse per cifratura e firma
- Applicare uno specifico formato all'input prima di cifrarlo o firmarlo (non accettare di cifrare o firmare dati grezzi)
- In decifratura, controllare il formato del blocco decifrato; se diverso da quello atteso restituire un errore e non il blocco decifrato
- In verifica di una firma, se c'è un qualunque errore segnalare solo genericamente "firma"
"nonvalida" 152.3.2 Distribuzione delle chiavi con Diffie-Hellman
L’algoritmo permette di scambiare le chiavi senza la necessità che le due parti si siano scambiate informazioni in precedenza, le chiavi vengono calcolate tramite i seguenti passi:
- A e B scelgono due interi pubblici (generatore) e (numero primo grande) tali che 1 < g < pg p
- A sceglie un intero grande e calcola x> 0 = g mod px X
- B sceglie un intero grande e calcola y> 0 = g mod py Y
- A e B si scambiano X e Y
- A calcola x= Y mod pK
- B calcola y= X mod pK
- Si ottengono xK = K = g mod p
12.3.3 Integrità dei messaggi
Una persona che intercetta una comunicazione cifrata non può leggerla ma può comunque modificarla, quindi per garantire l’integrità dei dati si utilizza un ovvero è un "riassunto" a digest, lunghezza fissa del messaggio da proteggere; viene calcolato tramite una funzione di hash univoca.
L’importante durante la creazione
Dei digest è evitare l'aliasing (collisioni), occorrono quindi digest con molti bit.
2.4 Autenticazione tramite cifratura simmetrica
2.4.1 Introduzione
Key Derivation Function (KDF)
Una chiave per essere sicura deve essere scelta randomicamente, ovvero ogni bit deve avere il 50% di probabilità di essere 0 o 1, solitamente gli utenti scelgono password prevedibili che diminuiscono la sicurezza di un sistema.
Caratteristiche per avere una password efficace:
- password o passphrase che l'utente deve ricordare
- salt, sequenza di valori randomici che associati alla password ne derivano la complessità
- numero di iterazioni delle funzioni base (per rallentare chi attacca)
itc: MIC, MAC, MID
- (Message Integrity Code): si aggiunge per garantire l'integrità dei messaggi
- (Message Authentication Code): si aggiunge per garantire l'autenticazione
- (Message IDentifier): si aggiunge per evitare attacchi di tipo replay
MID
162.4.2 Funzionamento
In questo caso non interessa che il messaggio venga letto da altri infatti può essere inviato in chiaro, l'importante è che il destinatario sia sicuro della sorgente del messaggio; per essere sicuri che questo accada si invia anche una copia cifrata dei dati:
- Il mittente cifra M (M' = enc(K, M))
- Si trasmettono M e M'
- Il ricevente riceve i messaggi e decifra M' (X = dec(K, M'))
- Il ricevente verifica che X sia uguale a M
Il vantaggio di questo metodo è che ho una verifica dell'integrità mentre gli svantaggi sono: operazioni più complesse, raddoppio dei dati trasmessi e tempo di trasmissione più che raddoppiato.
2.4.3 Autenticazione tramite cifratura simmetrica con digest
Per velocizzare la trasmissione dei dati invece che una copia cifrata viene inviato un che digest, ha dimensioni minori rispetto al messaggio.
Calcolo del digest:
- Il mittente calcola l'Hash
- (H enc(K, hash(M))=• Si trasmettono M e H
- • Il ricevente riceve i dati e decifra l'Hash (X dec(K, H))
- • Il ricevente verifica che X sia uguale all'Hash di M
- 172.4.4 Autenticazione tramite keyed-digest
- Questo metodo invia un digest calcolato non solo sui dati ma anche su una chiave:
- • Il mittente calcola il digest (d digest(K, M))
- • Si trasmettono M e d
- • Il ricevente riceve i dati e calcola il proprio digest (d' digest(K, M))
- • Il ricevente verifica che il digest ricevuto corrisponda al proprio digest
- Possibili errori
- Se il keyed-digest è calcolato su H (K || M) si può cambiare il messaggio post-ponendo uno o più blocchi: kd' H (K || M || M') f(kd, M')
- mentre se il keyed-digest è calcolato su H (M || K) si può cambiare il messaggio premettendo un opportuno blocco: kd H (M' || M || K) scegliendo=M' t.c. IV f (IV, M')
- Per risolvere questo problema si possono utilizzare
- Inserire tra i dati la lunghezza di M
- Definire kd H (K || M || K)
- Usare un keyed-digest standard2.4.5 CBC-MAC
- Una sola chiave ed un solo algoritmo
- Maggiore velocità
- Meno probabilità di errori nel combinare le funzioni
- Il mittente calcola l'hash dei dati da inviare e lo cifra con la chiave privata
- Il mittente invia il messaggio
- Il ricevente riceve il messaggio in chiaro e ne calcola l'hash
- Il ricevente verifica che i messaggi siano uguali
- Il firmatario
- Version
- Serial number
- Signature algorithm
- Issuer
- Validity
- Subject
- Subject public key info
- CA digital signature
- (Certificate Revocation List): elenco dei certificati revocati, firmato dalla CA o da un CRL delegato
- (On-line Certificate Status Protocol): permette di verificare un certificato in tempo reale, sfruttando l'interrogazione da parte del client usando il numero di serie del certificato per indicare al richiedente se tale certificato è stato revocato oppure no
- Version
- Signature
tre metodi:
Frutta un algoritmo di cifratura simmetrico a blocchi, in modalità CBC con IV nullo, prendendo come MAC la cifratura dell'ultimo blocco; questo metodo di cifratura garantisce confidenzialità e integrità.
182.5 Integrità e riservatezza
2.5.1 Authenticate and encrypt (A&E)
In questo caso si fa prima l'autenticazione e successivamente si cifra (enc(K , p) || mac(K , p)). L'integrità deve essere sempre verificata prima di decifrare.
2.5.2 Authenticate then encrypt (AtE)
In questo caso si concatena il testo in chiaro con il mac e successivamente si cifra tutto il messaggio (enc(K , p || mac(K , p))). L'integrità deve essere verificata dopo la decifratura.
Sia A&E che AtE sono soggette ad attacchi di tipo DoS, perché l'attaccante può cambiare il messaggio, ma il
ricevente prima di scoprirlo deve decifrare, perdendo tempo.
2.5.3 Encrypt then Authenticate (EtA)
Si calcola la cifratura e poi si fa l'autenticazione (enc(K , p) || mac(K , (enc(K , p))). Il ricevente
1 2 1può verificare subito se il mac è errato, quindi non si perde tempo a decifrare.
2.5.4 Authenticated encryption
Fa un'unica operazione per riservatezza, autenticazione e integrità:
2.6 Autenticazione tramite digest e cifratura asimmetrica
2.6.1 Firma digitale
Come si cifra e decifra quando si utilizza la firma digitale:
2.6.2 Firma e verifica
calcola l'hash dei dati e cifra con la chiave privata• Viene trasmesso il dato con la concatenazione della firma• Il verificatore riceve il messaggio e con la chiave pubblica decifra la firma e calcola l'hash del dato
Chapter 3
Certificati
3.1 Certificato a chiave pubblica
Un certificato è una struttura dati per legare in modo sicuro una chiave pubblica ad alcuni attributi, tipicamente lega chiave a identità, ma sono possibili altre associazioni; un certificato è firmato in modo elettronico dall'emettitore (autorità ha una scadenza temporale di certificazione); può essere revocato prima della scadenza sia dall'utente che dall'emettitore.
Verifica di un certificato
3.1.1 Public-Key Infrastructure (PKI)
È l'infrastruttura tecnica ed organizzativa predisposta alla creazione, distribuzione e revoca dei certificati a chiave pubblica. La verifica dei certificati a chiave pubblica ha una struttura gerarchica in
cui ogni certificato è firmato da una CA di livello più alto.
Autorità di certificazione
213.1.2 Struttura di un certificato X.509
3.2 Revoca dei certificati
Un certificato può essere revocato prima della sua scadenza quando non è più valido, su richiesta del titolare o autonomamente dall'emettitore.
3.2.1 Meccanismi di revoca
3.2.2 Certificate Revocation List (CRL)
algorithm• Issuer• thisUpdate• userCertificate revocationDate• userCertificate revocationDate• CA digital signature
Estensioni critiche
Un’estensione può essere definita critica o non critica; nel processo di verifica devono essere rifiutati i certificati che contengono un’estensione critica non riconosciuta mentre un’estensione non critica può essere ignorata se sconosciuta.