Dan's Brain

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

  1. 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
  2. cifrare a 3 fasi
    • triple DES o 3DES
    • 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 a DES

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
  • 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
      1. prima di conoscere il testo si produce la sequenza di \(i\) bit
      2. 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

É possibile classificare l’uso di questi sistemi in:

  1. Encryption/Decryption
    • sender encrypts with recipient public key
  2. Digital Signature
    • sender signs with its private key
  3. 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

  1. DES-CBC - MAC-CBC
    • si usa l’ultimo blocco cifrato (o una parte) come MAC
  2. 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

Firma elettronica

  • basata su cifrari asimmetrici
  • firma con la chiave privata, verifica con la chiave pubblica di chi firma

In questo caso:

  1. RSA con MD5/SHA-1
    • \(\textsc{sha-1}(M)\): digest
    • \(\textsc{rsa}(K^-(A),\text{digest})\)
  2. DSA con SHA-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