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.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
RSA
Diffie-Hellman
DSS (Digital Signature Standard)
ECC (Elliptic Curve Cryptography)
Digital Signatures
Certificates
Digital Envelopes
Numeri Random
Crittografia Simmetrica
La crittografia simmetrica è una delle tecniche fondamentali per garantire la confidenzialità dei dati, sia
quando vengono trasmessi sia quando vengono archiviati. La caratteristica principale di questa tecnica è che
utilizza una singola chiave segreta per crittografare e decrittografare i dati. Sia chi invia che chi riceve i dati
devono condividere questa stessa chiave in modo sicuro.
Ecco un modello semplificato di crittografia simmetrica:
Plaintext: Questo è il messaggio originale o i dati non criptati che vengono inseriti nell'algoritmo di
crittografia come input.
Encryption Algorithm: L'algoritmo di crittografia esegue una serie di sostituzioni e trasformazioni sul testo
in chiaro per renderlo illeggibile.
Secret key: La chiave segreta viene inserita anche nell'algoritmo di crittografia. Le esatte sostituzioni e
trasformazioni eseguite dall'algoritmo dipendono dalla chiave.
2. Cryptographic Tools 1
Ciphertext: Questo è il messaggio criptato prodotto in output dall'algoritmo di crittografia. Dipende sia dal
testo in chiaro che dalla chiave segreta.
Decryption Algorithm: Questo è sostanzialmente l'algoritmo di crittografia eseguito in modo inverso.
Prende il testo cifrato e la chiave segreta come input e produce il testo in chiaro originale.
Esistono due approcci generali per tentare di violare uno schema di crittografia simmetrica:
Cryptanalysis: Questo tipo di attacco sfrutta le caratteristiche dell'algoritmo per tentare di dedurre un
testo in chiaro specifico o la chiave utilizzata. Se l'attacco riesce a dedurre la chiave, l'effetto è
catastrofico: tutti i messaggi futuri e passati crittografati con quella chiave sono compromessi.
Brute-force attack: Il metodo della forza bruta consiste nel provare ogni possibile chiave su un pezzo di
testo cifrato fino a ottenere una traduzione comprensibile del testo in chiaro.
DES (Data Encryption Standard)
DES (Data Encryption Standard) utilizza un blocco di testo in chiaro di 64 bit e una chiave di 56 bit per
produrre un blocco di testo cifrato di 64 bit. Questo algoritmo ha due problemi:
Il primo aspetto si riferisce alla possibilità che sia possibile eseguire attacchi di crittoanalisi sfruttando le
caratteristiche dell'algoritmo DES. Nel corso degli anni ci sono stati numerosi tentativi di trovare e
sfruttare debolezze nell'algoritmo, il che ha reso DES l'algoritmo di crittografia più studiato al mondo.
Nonostante vari tentativi di attacchi crittoanalitici, non sono state trovate vulnerabilità letali nell'algoritmo
stesso. Questo significa che la struttura interna di DES è ancora robusta, ma può essere indebolita a
causa della chiave corta.
Una preoccupazione più seria riguarda la lunghezza della chiave. Con una chiave di 56 bit, esistono 2^56
possibili chiavi, che corrisponde approssimativamente a 7,2 × 10¹⁶ chiavi. Dato il livello di velocità dei
processori commerciali attuali, questa lunghezza di chiave è chiaramente insufficiente.
3DES (Triple DES)
La vita del DES è stata prolungata con l'uso del Triple DES (3DES), che implica la ripetizione dell'algoritmo di
base del DES per tre volte. Il 3DES ha due punti di forza che ne hanno garantito un ampio utilizzo nei
successivi anni:
1. Sicurezza contro attacchi a forza bruta: Con una lunghezza della chiave di 168 bit (56 bit per chiave), il
3DES supera la vulnerabilità agli attacchi a forza bruta del DES, che usava solo 56 bit.
2. Robustezza dell'algoritmo: L'algoritmo di crittografia sottostante del 3DES è lo stesso del DES. Questo
algoritmo è stato studiato e analizzato più di qualsiasi altro algoritmo di crittografia, e non sono stati trovati
attacchi crittoanalitici efficaci che si basino sull'algoritmo (invece della forza bruta). Perciò, c'è un alto
livello di fiducia che il 3DES sia molto resistente alla crittoanalisi. Se la sicurezza fosse l'unico fattore da
considerare, allora il 3DES sarebbe una scelta appropriata come algoritmo di crittografia standard per
decenni.
AES (Advanced Encryption Standard)
L’AES lavora su blocchi di 128 bit, una lunghezza di blocco più sicura e moderna rispetto ai 64 bit di
DES/3DES. Inoltre, supporta chiavi di lunghezze variabili (128, 192 e 256 bit), permettendo una maggiore
flessibilità e sicurezza a seconda delle necessità dell'applicazione.
ECB (Electronic Codebook)
2. Cryptographic Tools 2
Tipicamente, la crittografia simmetrica viene applicata a una quantità di dati più grande di un singolo blocco
da 64-bit o 128-bit. Messaggi e-mail, pacchetti di rete, record di database e altre fonti di testo in chiaro
devono essere suddivisi in una serie di blocchi a lunghezza fissa per essere crittografati da un cifrario a
blocchi simmetrico. L'approccio più semplice per crittografare più blocchi è noto come modalità Electronic
Codebook (ECB).
Con ECB, il testo in chiaro viene suddiviso in blocchi di dimensione fissa (tipicamente 64 bit o 128 bit), e ogni
blocco viene crittografato separatamente usando la stessa chiave.
Problema: se due blocchi di testo in chiaro sono uguali, produrranno lo stesso blocco cifrato, anche se sono
in posizioni diverse nel messaggio. Questo può permettere a un crittoanalista di riconoscere schemi ripetitivi
nel testo cifrato e usare queste informazioni per tentare di decifrare l'intero messaggio. Più lungo è il
messaggio, più è probabile che si ripetano blocchi di testo in chiaro, rendendo più facile per un attaccante
raccogliere indizi dal testo cifrato.
Stream Cipher
Il cifrario a flusso funziona in modo diverso: invece di crittografare blocchi di dati fissi, genera un flusso
continuo di byte pseudocasuali chiamato keystream. Questo flusso di chiavi viene combinato con il testo in
chiaro un byte alla volta usando l'operazione XOR. I cifrari a flusso sono spesso più efficienti per applicazioni
che richiedono la crittografia di dati in tempo reale (ad esempio, trasmissioni video o comunicazioni in rete)
perché cifrano i dati a livello di byte piuttosto che di blocco. Se il flusso di chiavi è generato correttamente, i
cifrari a flusso possono essere molto sicuri, poiché il risultato cifrato non mostra ripetizioni evidenti, anche se
ci sono schemi ripetitivi nel testo in chiaro.
2. Cryptographic Tools 3
Message Authentication
E’ molto importante assicurarsi che un messaggio sia autentico e corretto. Questo tipo di protezione è
chiamato autenticazione dei messaggi o dei dati, e serve a garantire che un messaggio sia autentico, cioè
non modificato e proveniente dalla fonte dichiarata. Una tecnica comune di autenticazione dei messaggi
utilizza un codice di autenticazione (MAC), generato con una chiave segreta condivisa tra mittente e
destinatario. Il MAC viene calcolato combinando il messaggio e la chiave segreta, e viene poi trasmesso
insieme al messaggio. Il destinatario ricalcola il MAC e lo confronta con quello ricevuto: se coincidono, il
messaggio è integro e autentico. Se un attaccante modifica il messaggio, il MAC generato dal destinatario non
coinciderà, evidenziando la manomissione. Il MAC non deve essere reversibile, come invece accade per la
decrittazione. Questo lo rende meno vulnerabile rispetto a un algoritmo di crittografia.
Hash Function
Una funzione di hash è un algoritmo che prende un input di lunghezza arbitraria (ad esempio, un messaggio o
un file) e produce un output a lunghezza fissa, chiamato digest o valore hash. Questo valore hash
rappresenta una sorta di “impronta digitale” unica del dato di input. La stessa funzione di hash applicata allo
stesso input produrrà sempre lo stesso output. Non è possibile risalire all’input originale partendo dal valore
hash (a meno che non si provi ogni possibile input, cosa computazionalmente impraticabile).
Usi comuni delle funzioni di hash:
2. Cryptographic Tools 4
Verifica dell’integrità:
Vengono utilizzate per controllare che un dato (file, messaggio, ecc.) non sia stato alterato. Ad esempio,
confrontando l’hash di un file scaricato con l’hash ufficiale fornito dal sito.
Autenticazione:
In sistemi di sicurezza, si utilizza l’hash per autenticare messaggi (ad esempio, nei MAC o HMAC).
Gestione password:
Le password non vengono mai memorizzate direttamente, ma come hash, rendendo più difficile per un
attaccante risalire alla password originale.
Il digest generato può essere autenticato in vari modi.
Cifratura simmetrica: Il digest viene cifrato con una chiave condivisa tra mittente e destinatario. In questo
modo, solo loro possono autenticare il messaggio.
Cifratura a chiave pubblica: Il digest viene cifrato con la chiave privata del mittente. Oltre
all'autenticazione, questo fornisce una firma digitale.
Hash con chiave segreta (MAC basato su hash): Usa una chiave segreta condivisa per calcolare l'hash. Il
messaggio e l'hash vengono inviati al destinatario, che ricalcola l'hash per verificare l'integrità e
l'autenticità del messaggio.
2. Cryptographic Tools 5
Ci sono due tipi di approcci per attaccare una funzione Hash:
Crittanalisi: sfrutta le debolezze logiche dell'algoritmo.
Forza bruta: dipende dalla lunghezza del codice hash. Più lungo è l'hash, più è difficile forzarlo.
Funzioni di hash più usate:
SHA-1 (160 bit) era molto diffuso, ma è stato indebolito nel tempo.
Versioni più recenti come SHA-256, SHA-384 e SHA-512 offrono maggiore sicurezza grazie a hash più
lunghi e algoritmi aggiornati. SHA-1 è stato gradualmente sostituito dal 2010.
Applicazioni delle funzioni di hash:
Password: i sistemi operativi memorizzano l'hash delle password invece delle password stesse,
riducendo il rischio di furti.
Rilevamento delle intrusioni: il valore hash dei file viene memorizzato in modo sicuro per rilevare
eventuali modifiche ai file.
Differenza tra funzione di hash e crittografia:
Crittografia Asimmetrica
La crittografia a chiave pubblica, proposta per la prima volta da Diffie e Hellman nel 1976, ha rappresentato
una vera e propria rivoluzione nel campo della crittografia, poiché introduce un approccio completamente
nuovo basato su funzioni matematiche complesse piuttosto che su semplici operazioni sui bit, come avviene
nella crittografia simmetrica.
2. Cryptographic Tools 6
La caratteristica più innovativa della crittografia a chiave pubblica è la sua asimmetria: utilizza due chiavi
distinte, una pubblica e una privata, mentre la crittografia simmetrica si basa su una singola chiave condivisa
tra le parti.