Sicurezza Reti e Calcolatori
university- Prof: Bergadono
Cifrari Simmetrici
Cifrari sono sempre esistiti, tra i cifrari pre-informatici piú famosi ci sono i cifrari simmetrici character-oriented
:
- Cifrario di Cesare, cifrari monoalfabetici a 1 lettera
- Cifrario di Playfair, monoalfabetico a 2 lettere
- Cifrari monoalfabetici a N lettere
- Cifrario di Vigenére, polialfabetico
I cifrari polialfabetici sostituiscono una lettera ogni volta in modo diverso, a seconda della sua posizione nel testo. |
Questi cifrari si possono ancora suddividere in base alla tecnica utilizzata:
- a sostituzione
- a permutazione
Da quest’ultimo derivano i cifrari simmetrici bit-oriented
:
In questi cifrari al posto dell’operazione di sostituzione alfabetica viene utilizzato \(\oplus\) (Exclusive Or).
I cifrari simmetrici moderni sono caratterizzati da:
- uso del calcolatore
- combinazione di permutazioni e sostituzioni
- uso di numerose fasi, round
Di questi ne esistono diversi:
Una proprietá desiderabile in un encryption algorithm é chiamata avalanche effect
- un cambiamento marginale in un input (chiave o plaintext) dovrebbe produrre un grande cambiamento nel ciphertext
Queste tecniche sono utilizzate nel contesto della bulk encryption
Cifrari a blocchi
Utilizzando chiavi lunghe e testi arbitrariamente lunghi
- cifrare a 2 fasi
- suscettibile all’attacco meet in the meddle
- con known plaintext
- conoscendo
<P1,C1> <P2,C2>
- servono estrambe per incrociare la ricerca, i match sono diversi per blocco
- ci sono molte piu' chiavi che blocchi
- brute force sulla prima fase di cifratura, su \(2^{56}\) possibilita' su DES
- suscettibile all’attacco meet in the meddle
- cifrare a 3 fasi
triple DES
o3DES
- sicuro, chiave di \(3\cdot 56=168\)
- normalmente si utilizza
K1 = K3
- la forza sta nelle 3 fasi, non nelle 3 chiavi
- si puo' utilizzare
3DES-EDE
con 3 chiavi uguali, che equivale aDES
Per testi lunghi
- Electonic Codebook
- divisione in blocchi esatti e criptarli tutti con la stessa chiave
- vulnerabilita' alla criptoanalisi statistica, utilizzabile solamente con testi corti
- divisione in blocchi esatti e criptarli tutti con la stessa chiave
- Cipher Block Chaining
- ogni blocco cifrato e' mette in \(\oplus\) con il successivo plaintext
- il primo blocco e' in \(\oplus\) con un initialization vector \(IV\)
- solitamente publico
- il piu' usato, sicuro, semplice, efficiente
- un errore di 1 bit rende indecifrabile il blocco successivo
- Cipher FeedBack
- cifrario a flusso
- simile al Cifrario di Vernam
- inefficiente, viene scartato del lavoro
- un errore di un bit effendoci feedback crea effetto valanga
- Output Feedback
- molto simile al Cipher Feedback
- il feedback e' fatto utilizzando gli \(i\) bit di output del cifrario a blocchi
- di fatto si divide in 2 fasi la procedura
- prima di conoscere il testo si produce la sequenza di \(i\) bit
- utilizzare questa informazione bufferizzata per cifrare in \(\oplus\)
- simile al One-time Pad e al Cifrario di Vernam
- solo simile in quanto il vettore di \(i\) e' solo pseudocasuale
Metodi dell’avversario
L’avversario puó decodificare i cifrari monoalfabetici a una lettera facilmente attraverso una Crittanalisi Statistica.
Questa analisi risulta molto piú difficile con un cifrario polialfabetico:
- in conoscenza di \(n\) é possibile fare la stessa analisi per lettere che distano \(n\) posizioni nel testo
- per cui quindi vale la stessa sostituzione
Di conseguenza un testo cifrato di questo tipo risulta tanto piú facile da decifrare tanto é piú lungo, ancor di piú in presenza di parti di testo fisse.
Cifrari Asimmetrici
Si utilizzano 2 chiavi, una per criptare e una per decriptare Le due chiavi non sono solo diverse nella forma, sono generate insieme e non e' possibile ottenere una dall’altra La difficolta' per un avversario non é piú informativa ma computazionale Questi cifrari non sostituiscono quelli tradizionali, simmetrici, in quanto piú impegnativo a livello computazionale, infatti i primi sono molto recenti (Diffie-Hellman Key Exchange).
- il protocollo piú utilizzato in questo ambito é RSA.
- sono spesso combinati con cifrari simmetrici e funzioni di hash
- vedi Digital Envelope
É possibile classificare l’uso di questi sistemi in:
- Encryption/Decryption
- sender encrypts with recipient public key
- Digital Signature
- sender signs with its private key
- Key Exchange
- le parti collaborano per scambiarsi una chiave segreta

Funzioni di Hash
Una funzione di Hash \(H\) accetta un blocco di dati \(M\) di lunghezza variabile e produce un valore di hash \(h = H(M)\) di lunghezza fissa.
- una buona funzione di Hash ha la proprietá che applicata a un gran numero di input gli output siano ben distribuiti e apparentemente random
- un cambiamento a un qualsiasi bit o bits in \(M\) causa, probabilmente, un cambiamento nel codice hash generato
In crittografia si una un particolare tipo di funzione di hash, che ha ulteriori proprietá:
one-way property
- infeasible to find an object mapping to a pre-specified hash
collision-free property
- infeasible to find two objects mapping to the same hash
Queste funzioni di hash sono utilizzate per:
- autenticare messaggi con i
message digest
- sender e recipient applicano entrambi la funzione e comparano i risultati
digital signature
one-way password file
intrusion detection
virus detection

La funzione di hash piú utilizzata in tempi recenti é stato il Secure Hash Algorithm
Un birthday attack é effettuato generando collissioni:
- \(2^{m}\) messaggi
- codici di \(c\) bit
- \(P(\text{collision}) > 0.5\) per \(m > \frac{c}{2}\)
- quindi per 64 bit bastano \(2^{32}\) messaggi
Autenticazione
NB Un messaggio cifrato non é necessariamente autentico, un messaggio autenticato puó essere leggibile. Spesso questi ultimi non vengono cifrati.
Simmetrica
- basata su cifrari simmetrici
- chiave condivisa
\(\textsc{mac}_{K}(M)\) - Message Authentication Code
- DES-CBC -
MAC-CBC
- si usa l’ultimo blocco cifrato (o una parte) come
MAC
- si usa l’ultimo blocco cifrato (o una parte) come
- Keyed Hash Function -
HMAC
MAC
generato applicando \(H\) a una combinazione di \(M\) e una chiave segreta- \(\textsc{hmac}_{K}(M) = H((K''\oplus \text{opad}) || H((K'' \oplus \text{ipad}) || M'))\)
- \(K''\): una chiave segrete \(K'\) con padding di 0 fino a \(j\) bit
- \(\text{ipad}\): 00110110 ripetuto \(j/8\) volte
- \(\text{opad}\): 01011010 ripetuto \(j/8\) volte
- efficiente quanto \(H\)
- molto piú efficiente che
MAC-CBC
- molto piú efficiente che
Firma elettronica
- basata su cifrari asimmetrici
- firma con la chiave privata, verifica con la chiave pubblica di chi firma
In questo caso:
- RSA con
MD5/SHA-1
- \(\textsc{sha-1}(M)\): digest
- \(\textsc{rsa}(K^-(A),\text{digest})\)
DSA
conSHA-1
Per far funzionare questo meccanismo é necessario risolvere il problema della distribuzione delle chiavi pubbliche.
- una terza parte
C
puó ricevere \(<ID,K^+(ID)>\) e restituirne un certificato - questo poi viene condivisto da altre terze parti o dagli stessi che lo hanno richiesto
Alla fine il messaggio autenticato avrá la forma:
M - FirmaElettronica - Certificato - Timestamp