Chapter2-Criptography Flashcards
Cos’è il cifrario di Cesare?
In crittografia, il cifrario di Cesare è uno dei più antichi algoritmi crittografici di cui si abbia traccia storica. È un cifrario a sostituzione monoalfabetica, in cui ogni lettera del
testo in chiaro è sostituita, nel testo cifrato, dalla lettera che si trova un certo numero di posizioni dopo nell’ alfabeto. Questi tipi di cifrari sono detti anche cifrari a sostituzione o cifrari a scorrimento a causa del loro modo di operare: la sostituzione avviene lettera per lettera, scorrendo il testo dall’inizio alla fine. Il cifrario di Cesare è vulnerabile ad attacchi:
- critto-analitici: guardo le frequenze con cui capitano le parole nel testo;
- brute force: provo tutte le possibili chiavi e decifro.
Cosa sono DES, 3DES ed AES?
Sono 3 algoritmi di cifratura/decifratura a chiave asimmetrica:
- DES(Data Encryption Standard): algoritmo che prende un testo in chiaro a 64 bit, una chiave di 56 bit, per produrre poi un testo cifrato di 64 bit. I due aspetti più critici di questo standard riguardano l’algoritmo in sé e la dimensione della chiave (troppo piccola). Al giorno d’oggi un supercomputer può violarlo in qualche ora.
- 3DES: standard che applica l’algoritmo DES 3 volte consecutive. Utilizza 2 o 3 chiavi, per una dimensione totale di 112 o 168 bit. Si tratta di un approccio molto più sicuro del singolo DES, però è 3 volte più lento e rimane il problema della lunghezza dei blocchi (64 bit).
- AES(Advanced encryption standard): utilizza blocchi a 128 bit e chiavi a 128, 192, 256 bit, rappresenta l’approccio più valido, sicuro ed efficiente, per ora…
Quali sono i principali vantaggi/svantaggi di DES?
L’algoritmo DES ha il grande vantaggio di essere stato tra i primi cifrari a essere stato adottato in grande scala, quindi ha subito molta più attenzione dai ricercatori rispetto a tutti gli altri cifrari, attenzioni che non hanno mai trovato riscontro in gravi mancanze in termini di architettura. I problemi di DES sono legati all’algoritmo utilizzato e alla lunghezza delle chiavi a 56 bit.
Infatti si è dimostrato negli anni che con l’attuale potenza computazionale DES è rompibile utilizzando brute force in un supercomputer anche in un’ora (per un pc normale occorrerebbe circa un anno).
Come funziona la crittografia simmetrica?
La crittografia simmetrica è una tecnica crittografica in cui viene utilizzata la stessa chiave per cifrare che per decifrare i dati, condivisa fra mittente e destinatario. L’aspetto chiave di questa tecnica è l’efficienza, visto che i tempi sono decisamente inferiori rispetto alla crittografia a chiave pubblica. L’aspetto negativo invece comporta la necessità di avere un canale sicuro per la condivisione della chiave segreta, perché nelle mani sbagliate compromette il sistema.
Andando nello specifico, è composta da più ingredienti:
- plaintext: Il messaggio in chiaro che il mittente A desidera spedire al destinatario B;
- Ciphertext: Messaggio ottenuto applicando una funzione che ha in input la chiave segreta ed il plaintext. Per un determinato messaggio si devono ottenere due ciphertext diversi utilizzando chiavi diverse;
- Encryption algorithm: è l’algoritmo utilizzato per la codifica del plaintext in ciphertext;
- Decryption algorithm: è l’algoritmo utilizzato per la codifica del ciphertext in plaintext.
Cos’è una public key certificate?
E’ una chiave pubblica certificata da un determinato ente detto certification authority.
Cos’è il Message Authentication Code (MAC)? A cosa serve?
Il Message Authentication Code (MAC) è una tecnica crittografica utilizzata per verificare l’integrità e l’autenticità di un messaggio o di un insieme di dati.
E’ un codice generato da una chiave segreta e poi aggiunto a un messaggio, in questo caso si presuppone che entrambe le figure nella comunicazione di questo messaggio siano a conoscenza della chiave segreta. A destinazione, al corpo del messaggio vengono effettuate le stesse operazioni che sono state effettuate in origine, e viene calcolato un nuovo MAC, che poi
viene confrontato con quello allegato al messaggio, allo scopo di verificarne l’autenticità. Il MAC consente di autenticare chi manda il messaggio, perché è l’unico a conoscere la chiave segreta e consente di stabilire se il messaggio è stato alterato. Se il messaggio
include anche un sequence number, il ricevente è sicuro del corretto ordine dei messaggi. Il MAC NON fornisce la confidenzialità del messaggio, perché utilizzando solamente il MAC il messaggio non viene cifrato. Un modo di generare il MAC è attraverso DES, oppure utilizzando una funzione di hash.
Che proprietà deve avere una secure hash function?
È una funzione che dato un input di una qualsiasi dimensione ritorna un output di dimensione fissa. Si dice one way perché deve essere impossibile dato un output risalire all’input. Per essere sicura una funzione di hash H deve essere:
Per essere sicura una funzione di Hash H deve rispettare queste caratteristiche:
- H può essere applicata ad un input di qualsiasi dimensione;
- H produce un output di dimensione finita e fissa;
- Per un output prodotto da H è computazionalmente impossibile ricavare l’input.
- Dati due blocchi x e y tali che x != y, è impossibile ottenere H(x) === H(y). La proprietà prende il nome di Weak Collision Resistant.
- Data H è computazionalmente impossibile trovare una coppia x e y tali che H(x) === H(y). Questa proprietà prende il nome di Strong Collision Resistant.
Quali sono gli svantaggi di 3DES?
Lentezza (3 volte più lento di DES) e la lunghezza dei blocchi (rimangono a 64 bit).
Quali sono gli strumenti utili per attaccare la crittografia simmetrica?
Sono principalmente 2, che sfruttano approcci opposti:
- Brute-force: tento di decifrare il messaggio utilizzando tutte le possibili chiavi, in media occorre provarne almeno la metà, quindi diventa inutile per chiavi di dimensione troppo elevata. Generalmente però, prima di tentare con tutte le possibili combinazioni di caratteri, provo con tutte le parole di un dizionario;
- Critto-analitico: lo scopo è di individuare le vulnerabilità dell’algoritmo di cifratura/decifratura, così da poter decriptare i testi cifrati. Se l’attacco ha successo, sono vulnerabili tutti i messaggi mandati in passato e in futuro con quell’algoritmo.
In molti casi viene sfruttato prima l’approccio brute-force, per diminuire il numero di combinazioni possibili (escludendo quelle che non hanno dato successo), solo dopo si applica l’approccio critto-analitico.
Quante chiavi utilizza 3DES?
Utilizza 2 o 3 chiavi, per una lunghezza totale di 112 o 168 bit
Cos’è l’approccio Keyed Hash MAC? Come funziona?
Si tratta di un’approccio in cui viene inserito un secret value in testa ed in coda al messaggio. Il messaggio modificato viene dato in pasto ad una funzione hash che ritornerà un digest, che verrà poi integrato al messaggio originale (senza secret value) prima di inviarlo. Il destinatario, similmente al mittente, essendo a conoscenza del secret value ricalcola il digest, verificando che sia il messaggio sia effettivamente autentico.
Cos’è OpenSSL?
OpenSSL è un’implementazione open source dei protocollo SSL e TSL, disponibile per la maggior parte di sistemi unix-like. Gli algoritmi implementati in questo protocollo sono cifrari, funzioni crittografiche come MD5, MD2 ecc, crittografia a chiave pubblica,
autenticazione di messaggi e certificati
Cosa significa processo Stream Cipher? Cosa cambia dal Block Cipher? Quando si usa uno a discapito dell’altro?
Uno stream cipher viene utilizzato nel caso in cui occorra processare l’input in maniera continuativa, un byte alla volta (comunicazione in streaming o trasmissione di dati in tempo reale). Differisce dal block cipher in quanto esso analizza in input un blocco alla volta e restituisce in output un blocco per ogni blocco di input (più lento ma più sicuro, quindi più indicato per applicazioni che richiedono una maggiore protezione di dati, come la critttografia di dati o protezione di dati sensibili).
Il block cipher può inoltre riutilizzare le chiavi (generalmente lo fa), può richiedere del padding (pessimo per l’efficienza) ed è più comune rispetto allo stream. Come controparte, lo stream cipher è più efficiente ed utilizza meno codice (meno complesso).
Cos’è una one-way hash function?
È una funzione che dato un input di una qualsiasi dimensione ritorna un output di dimensione fissa. Si dice one way perché deve essere impossibile dato un output risalire all’input. Per essere sicura una funzione di hash H deve essere:
Per essere sicura una funzione di Hash H deve rispettare queste caratteristiche:
- H può essere applicata ad un input di qualsiasi dimensione;
- H produce un output di dimensione finita e fissa;
- Per un output prodotto da H è computazionalmente impossibile ricavare l’input.
- Dati due blocchi x e y tali che x != y, è impossibile ottenere H(x) === H(y). La proprietà prende il nome di Weak Collision Resistant.
- Data H è computazionalmente impossibile trovare una coppia x e y tali che H(x) === H(y). Questa proprietà prende il nome di Strong Collision Resistant.
Quali sono gli algoritmi di crittografia asimmetrica più utilizzati?
- RSA(Rivest, Shamir, Adleman): RSA si basa sulla difficoltà di fattorizzare grandi numeri interi, il che rende computazionalmente difficile per un attaccante ricostruire la chiave privata a partire dalla chiave pubblica. Questa caratteristica rende RSA un algoritmo sicuro per la comunicazione crittografata.
- Diffie-Hellman key agreement: l’algoritmo si basa sul dare la possibilità a due utenti di raggiungere un accordo su un segreto condiviso che poi funge da chiave per la crittografia asimmetrica, l’algoritmo quindi si limita allo scambio di chiavi;
- Digital Signature Standard: fa uso di SHA-1 e presenta il DSA (digital signature algorithm);
- Elliptic curve cryptografy: questo sistema è diventato il maggior concorrente di RSA, pare che esso fornisca una sicurezza pari ad RSA ma con dimensioni in bit minori. Tuttavia ancora la ricerca da fare su questo metodo è tanta per cui il trust rivolto verso questo algoritmo è ancora minore rispetto a quello per RSA.