Anteprima
Vedrai una selezione di 10 pagine su 169
Reti di calcolatori Pag. 1 Reti di calcolatori Pag. 2
Anteprima di 10 pagg. su 169.
Scarica il documento per vederlo tutto.
Reti di calcolatori Pag. 6
Anteprima di 10 pagg. su 169.
Scarica il documento per vederlo tutto.
Reti di calcolatori Pag. 11
Anteprima di 10 pagg. su 169.
Scarica il documento per vederlo tutto.
Reti di calcolatori Pag. 16
Anteprima di 10 pagg. su 169.
Scarica il documento per vederlo tutto.
Reti di calcolatori Pag. 21
Anteprima di 10 pagg. su 169.
Scarica il documento per vederlo tutto.
Reti di calcolatori Pag. 26
Anteprima di 10 pagg. su 169.
Scarica il documento per vederlo tutto.
Reti di calcolatori Pag. 31
Anteprima di 10 pagg. su 169.
Scarica il documento per vederlo tutto.
Reti di calcolatori Pag. 36
Anteprima di 10 pagg. su 169.
Scarica il documento per vederlo tutto.
Reti di calcolatori Pag. 41
1 su 169
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

D (E (X)) = XK KD (E (X)) = errore se H ≠ KK H 101Andrea Mansi UNIUD 2019/2020 Riassunto Reti Di Calcolatori v1.5 – 17/2/2020

Si assume inoltre che l’algoritmo usato per la cifratura sia noto anche all’attaccante, infatti, secondo il principio di Kerckhoff, la sicurezza del messaggio deve dipendere solo ed esclusivamente dalla segretezza della chiave usata (non quindi dalla segretezza dell’algoritmo). L’unica informazione non nota all’attaccante è la chiave. Infatti, tutti gli algoritmi di cifratura, tranne quelli militari, sono open source.

I sistemi crittografici si caratterizzano per:

  • Tipo di operazioni di cifratura usate:
    • sostituzione (di bit, bytes, caratteri, ... o anche dell’intero plaintext)
    • trasposizione (riadattamento del plaintext)
    • prodotto (una composizione delle due operazioni precedenti)
  • Numero di chiavi utilizzate:
    • singola chiave simmetrica/privata/convenzionale
    • due chiavi asimmetriche/pubbliche

Modalità con cui il plaintext viene elaborato:

  • a blocchi: i dati vengono elaborati in blocchi di misura prefissata
  • a flusso: i dati vengono processati un elemento per volta

Crittoanalisi

La crittoanalisi è il processo che tenta di scoprire il testo in chiaro corrispondente al testo cifrato, o meglio, di scoprirne la chiave. Prevede diverse tipologie di approcci (attacchi):

Segue una descrizione delle tipologie di attacco principali:

  • Ciphertext-Only: il crittoanalista/attaccante, conoscendo solo l'algoritmo di cifratura e il testo cifrato (ciphertext), tramite lo sniffing dei dati cerca di leggere il messaggio o di trovare la chiave.
  • Known-Plaintext: il crittoanalista/attaccante conosce il testo in chiaro e il corrispondente testo cifrato (Med M') e, tramite lo sniffing di altri messaggi cifrati cerca di scoprire la chiave di cifratura.

102Andrea Mansi UNIUD 2019/2020 Riassunto Reti Di Calcolatori v1.5 - 17/2/2020

L'attaccante riesce a fare in modo che il messaggio da cifrare sia quello che vuole lui, forzando il mittente a inviare uno specifico messaggio con lo scopo di analizzarne il risultato cifrato e di ottenere la chiave. →Chosen-Ciphertext l'attaccante è in grado di scegliere uno o più ciphertext e ottenerne il testo in chiaro

Dei buoni algoritmi di cifratura, per essere considerati tali, devono essere in grado almeno di affrontare attacchi di tipo Known-Plaintext.

Come fa un attaccante a sferrare un attacco? In generale può adottare due tipi di strategie:

  • Crittoanalitiche
  • Brute-force

Le strategie crittoanalitiche cercano falle e debolezze nella struttura matematica dell'algoritmo di cifratura.

Esempio ⊕E (M) = M Kk 0 1⊕⊕C = E (M) = M K 0 0 1k ⊕D (E (M)) = C K quindi:k k 1 1 0⊕ ⊕ ⊕ ⊕ ⊕D (E (M)) = (M K) K = M (K K) = M 0 = Mk k ⊕E (M) = M KK ⊕C = E (M) = M K quindi:K⊕

  1. ⊕ ⊕ ⊕C M = M K M = K 0 = K 103Andrea Mansi UNIUD 2019/2020 Riassunto Reti Di Calcolatori v1.5 – 17/2/2020
  2. Le strategie brute-force prevedono di provare tutte le possibili chiavi fino a trovare quella corretta. Necessitano però di saper riconoscere quando una chiave è errata.
  3. Sicurezza incondizionata e sicurezza computazionale

È possibile ottenere due tipi di sicurezza dal processo di cifratura:

  1. Sicurezza incondizionata: non importa quanta potenza di calcolo o tempo si abbia a disposizione, l’algoritmo non potrà mai essere violato perché il testo cifrato non fornisce abbastanza informazioni per determinare univocamente il testo in chiaro corrispondente.
  2. Sicurezza computazionale: fare in modo che il costo necessario per rompere l’algoritmo sia superiore al valore delle informazioni cifrate.

La strategia brute-force, a livello teorico, è sempre possibile e il tempo stimato per il completamento dipende dalla

dimensione della chiave e dalla potenza di calcolo a disposizione.

Cifrario di Vigenere e One-Time Pad

Si tratta di un semplice algoritmo di sostituzione polialfabetico in cui ogni lettera della chiave indica il numero di spostamenti in avanti del corrispondente carattere nel messaggio originale. Per la decodifica si attuano spostamenti all'indietro. Esempio: È vulnerabile ad attacchi crittoanalitici in quanto la frequenza delle lettere non viene cancellata dall'algoritmo di cifratura (usa la chiave "deceptive" che si ripete).

Per questo motivo è stato tentato un miglioramento: One-Time Pad o cifrario di Vernam. Si supponga di avere una chiave di cifratura lunga come il testo da cifrare ma che sia una sequenza di caratteri totalmente casuale. Questo tipo di cifratura risulta robusto perché il testo cifrato non fornisce nessuna relazione statistica con il testo in chiaro; inoltre, per ogni messaggio in chiaro esiste più di una chiave.

che permette di ottenere un messaggio di senso compiuto ma non è possibile sapere quale sia quello corretto. Per esempio, dato il testo cifrato EQNVZ usando la chiave XMCKL si ottiene HELLO mentre usando la chiave EFZOZ si ottiene ALOAH e non è possibile identificare quale sia l'alternativa corretta. È fondamentale per questo tipo di cifrari che una chiave venga usata una sola volta, altrimenti si perde il vantaggio della casualità; inoltre, le chiavi presentano l'inconveniente di dover avere la stessa lunghezza del plaintext. Per di più la chiave deve essere nota sia al mittente sia al destinatario. Come trasmettere questa informazione? Andrea Mansi UNIUD 2019/2020

Riassunto Reti Di Calcolatori v1.5 – 17/2/2020

Cifrari a flusso
Elaborano il messaggio bit per bit costruendo uno pseudo random number generator per creare un keystream (flusso usato come chiave): data la stessa chiave verrà restituito sempre lo stesso

messaggio(quindi non è totalmente casuale).Viene eseguito lo XOR bit a bit tra il plaintext e il keystream:

C = M keystream⊕i i i

La casualità del keystream elimina le proprietà statistiche del messaggio.

Non bisogna però mai usare la stessa chiave per messaggi diversi, altrimenti si otterrà la seguente situazione vulnerabile mostrata con questo esempio: ⊕C = M KS⊕C’ = M’ KS⊕ ⊕ ⊕ ⊕ ⊕C C’ = (M KS) (M’ KS) = M M’⊕)

Facendo lo XOR (simbolo dei due messaggi cifrati con la stessa chiave è possibile ottenere lo XOR dei due testi in chiaro e quindi i testi in chiaro singoli.

Alcune considerazioni:

  • il periodo del keystream (ogni quanto si ripete uno stesso numero) deve essere lungo, senza ripetizioni;
  • la complessità del keystream dipende dalla sua stessa lunghezza.

RC4

Si tratta di un cifrario a flusso orientato ai byte che esegue l'operazione di XOR

tra un byte del testo in chiaro e un byte della chiave per produrre un byte di testo cifrato. La chiave segreta, da cui il key stream di chiavi mono byte viene generato, può avere dimensione variabile tra 1 e 256 byte.

RC4 è basato sul concetto di stato. In ogni momento, uno stato di 256 byte è attivo, dal quale viene selezionato casualmente un byte per essere usato come chiave di cifratura. La chiave può essere rappresentata come un array di byte: S[0] S[1] S[2] ... S[255]

vedi: https://www.youtube.com/watch?v=riIp6EQOJOg

Mai riusare una chiave in RC4, essendo un cifrario a flusso! 105 Andrea Mansi UNIUD 2019/2020 Riassunto Reti Di Calcolatori v1.5 – 17/2/2020

Il contenuto di ciascun elemento è quindi un byte (8 bit) che può essere interpretato come un intero compreso tra 0 e 255. La permutazione per creare il key stream viene ripetuta fin quando ci sono byte di testo in chiaro da cifrare. L'inizializzazione avviene in due step:

  1. Lo

stato s viene inizializzato ai valori 0,1, …, 255; viene anche creato un key array K[0], K[1], …, K[255].

Se la chiave segreta fornita (lunga max 256) ha esattamente 256 byte, i byte vengono copiati nel keyarray, altrimenti vengono ripetuti fino a riempire l’array.

for (i = 0 to 255) {
    S[i] i←K[i] Key[i mod KeyLength]
}

←2) Nel secondo step, lo stato inizializzato passa attraverso una permutazione (swap di elementi) basata sulvalore del byte in K[i]. Il byte-chiave viene utilizzato solo in questo step per definire quale elemento deveessere swappato.

j 0←for (1 = 0 to 255) {
    j (j + S[i] + K[i]) mod 256←swap(S[i], S[j])
}

Generazione del key stream:
Le chiavi k del key stream vengono generate una per una. Per prima cosa lo stato viene permutato in base alvalore degli elementi dello stato e al valore di due variabili individuali i e j. Successivamente, il valore dei dueelementi dello stato in posizione i e j vengono usati per definire l’indice

dell'elemento dello stato che servirà da chiave k. Il codice di seguito viene ripetuto per ogni byte del testo in chiaro per creare una nuova chiave nel key stream. Le variabili i e j sono inizializzate a 0 prima della prima iterazione, ma i valori vengono copiati da un'iterazione alla successiva.

i = (i + 1) mod 256

j = (j + S[i]) mod 256

swap(S[i], S[j])

k = S[(S[i] + S[j]) mod 256]

Andrea Mansi UNIUD 2019/2020 Riassunto Reti Di Calcolatori v1.5 – 17/2/2020

Cifrari a blocco

Lavorano con blocchi di dati di misura prefissata. È possibile pensare a un algoritmo di cifratura a blocco come a una scatola di sostituzione: a un determinato input corrisponde un determinato output random (funzione biettiva).

Scegliere la chiave vuol dire scegliere la funzione biiettiva che andrà a eseguire lo scambio. I blocchi rendono impossibili le analisi statistiche sulla frequenza delle lettere: più il blocco è grande più le frequenze vengono sparpagliate.

Molti cifrari a blocchi simmetrici sono basati sulla struttura del cifrario di Feistel illustrata di seguito.
Feistel Cipher Structure
Feistel Cipher Structure
Il cifrario di Feistel si basa sul concetto di cifrario a prodotto invertibile; divide i blocchi in input in due metà. Il cifrario combina tutti gli elementi non-invertibili in un'unità e usa la stessa unità sia nell'algoritmo di cifratura sia in quello di decifrazione. Gli effetti di una componente non invertibile nell'algoritmo di cifratura possono essere cancellati nell'algoritmo di decifrazione usando l'operatore OR esclusivo (XOR). Nel processo di cifratura, una funzione non invertibile f(K) accetta la chiave come input. L'output di questa componente viene messo in XOR con il testo in chiaro per ottenere il testo cifrato.
Dettagli
Publisher
A.A. 2019-2020
169 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Mansitos di informazioni apprese con la frequenza delle lezioni di Reti di calcolatori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Udine o del prof Miculan Marino.