L'attaccante ha sempre una probabilità non nulla (e talvolta non trascurabile) di scoprire la chiave segreta. La probabilità diminuisce man mano che la lunghezza della chiave aumenta.
$$ Data \ k \ chiave, vale\ sempre: \ Pr[guess(k)] = \frac{1}{2^{|k|}} $$ Elementi che irrobustiscono la chiave:
- non avere una dimensione fissa (se l'attaccante non conosce la lunghezza, deve fare molte più prove)
- avere chiavi molto lunghe
Un crittosistema è sicuro quando la probabilità di indovinare è inferiore a questa equazione.
📔 Definizione: L'unico modo per estrarre il testo in chiaro da un crittotesto è decodificare quest'ultimo con la stessa chiave usata per costruirlo. $$ D(\Epsilon(m,k)) = m \ (enunciato\ di \ correttezza) \ \forall k', k' ≠ k \rightarrow D(\Epsilon(m,k), k') ≠ m (enunciato \ di \ robustezza) \ $$ Questo crittostistema è anche detto "a chiave condivisa".
Fissato un agente
Da questa affermazione deduciamo quindi che nessuna chiave sia segreta per sempre. Chiamiamo invece le chiavi a breve termine "chiavi di sessione", con un tempo di vita molto più breve.
Tipicamente grazie alla chiave a lungo termine otteniamo delle chiavi di sessione.
Se l'attaccante riesce ad esfiltrare la chiave di sessione può avere accesso ai dati che due agenti si scambiano.
Ci sono dei problemi di funzionali oltre che di sicurezza, visto che il legittimo agente, diciamo
-
$A$ non vuole rivelare$k_a$ a$B$ , quindi questo non può decriptare- Sia
$k_{ab}$ una chiave dedicata specificatamente a questa sessione fra$A$ e$B$ -
$k_{ab}$ è detta chiave a breve termine o chiave di sessione - Può essere condivisa tra i due agenti
- Sia
- Servirebbe una chiave di sessione per ogni coppia di agenti che vogliono comunicare
- Come condividere
$k_{ab}$ fra$A$ e$B$ pur mantenendola confidenziale?
Lo scambio del primo segreto è quindi il punto problematico.
📔 Definizione:
- Ogni chiave
$k$ ha una sua inversa denotata$k^{-1}$ - Ciascuna chiave non si può ricavare dall'altra, pertanto la coppia va generata monoliticamente
- L'unico modo per estrarre il testo in chiaro da un crittotesto è decodificare quest'ultimo con l'inversa dalla chiave usata per costruirlo
Chiamiamo
Fissato un agente
-
$k_a$ resa nota a tutti, detta anche chiave pubblica di$A$ -
$k_a^{-1}$ segreto di A, detta anche chiave privata di$A$
L'intruder
Rimosso il problema della condivisione del segreto iniziale ma perdiamo la segretezza. Come risolvere?
Utilizziamo una coppia di chiavi asimmetriche per ogni legittimo agente come segue.
Ho tre alternative per cifrare un messaggio che parte dall'agente
- con la chiave
$k_a{-1}$ (ottengo autenticazione di$A$ con$B$ , ma non confidenzialità) - con la chiave
$k_b$ (ottengo confidenzialità di$A$ con$B$ , ma non autenticazione) - con la chiave
$k_a$ (questa misura è inutile perché solo A potrebbe decifrare)
Sommo (annido) le prime due misure per ottenere le entrambe le proprietà.
Astraendo dalle proprietà del criptosistema l'ordine di annidamento è irrilevante, se scendiamo nelle specifiche può avere importanza.
Indichiamo un messaggio cifrato con questo metodo come $ { m_{kb} }_{{k_a}^{-1}}$
È importante notare come, per decifrare un messaggio, serva la chiave inversa della controparte. Un messaggio cifrato da un'eventuale attaccante, decifrato con la chiave legittima dell'agente A difatti non produrrà un messaggio in chiaro valido.
L'associazione
Dobbiamo quindi certificare che la chiave appartenga all'agente legittimo.
- Certificazione: come associare correttamente una chiave pubblica al suo legittimo proprietario, ovvero al legittimo proprietario della metà privata.
- Cosa succede se l'associazione non funziona?
Limiti crittografia simmetrica | Limiti crittografia asimmetrica |
---|---|
Scambio del primo segreto | Certificazione dell'associazione |
📔 Definizione:
- Sia calcolato
$\Epsilon(m,k)$ per ogni testo$m$ e chiave$k$ - Sia calcolato:
- Allora l’accesso a
$n$ non aumenti significativamente la probabilità di un attaccante di indovinare$m$ o sue porzioni
Un buon hash crittografico necessita di requisiti, facili da definire in teoria ma difficili da garantire nella pratica. Nella pratica un buon hash non è invertibile in maniera efficiente.
Elenco di lettura