Anteprima
Vedrai una selezione di 3 pagine su 7
MAC (Massage Auth Code) Pag. 1 MAC (Massage Auth Code) Pag. 2
Anteprima di 3 pagg. su 7.
Scarica il documento per vederlo tutto.
MAC (Massage Auth Code) Pag. 6
1 su 7
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Tutti questi attacchi mirano ad attaccare l’autenticità del messaggio e sono classificabili in 3

categorie in base alla caratteristica che si desidera evitare che questi attacchi abbiano successo: i

primi due sono attacchi alla riservatezza della comunicazione; la seconda categoria è quella degli

attacchi che possiamo combattere con l’autenticazione del messaggio (rientrano in questa

categoria il 3-4-5); la terza categoria di attacchi sono attacchi al ripudio e comprendono gli ultimi

due dove possiamo combatterli con la firma digitale.

Per fare l’autenticazione del messaggio ci sono 2 fasi:

- Ottenere un indicatore chiamato autenticatore che è un oggetto digitale che può essere

utilizzato per l’autenticazione del messaggio

- Utilizzare l’autenticatore tramite qualche procedura per effettuare l’autenticazione del

messaggio.

Ci sono 3 diversi metodi per effettuare l’autenticazione del messaggio:

- Applicare le funzioni hash (GIA’ VISTO)

- Applicare la cifratura del messaggio: in questo caso l’autenticatore è costituito dallo stesso

messaggio cifrato.

- MAC: si usa come input al meccanismo dove il messaggio stesso è una chiave e produce

una uscita di lunghezza fissa come l’hash. La differenza rispetto all’hash è che questo

impiega una chiave segreta.

Funzioni hash

GIA VISTO

Cifratura del messaggio

Qui i meccanismi di cifratura sono applicati non per nascondere il messaggio ma per effettuare

l’autenticazione del messaggio. Per quanto riguarda i meccanismi di cifratura a chiave simmetrica

si ottiene riservatezza ed autenticazione (tramite l’utilizzo della chiave segreta k perchè se

l’attaccante volesse modificare il messaggio e farlo arrivare al destinatario facendogli credere che

è il messaggio originario allora dovrebbe cifrarlo con la chiave k; l’attaccante però dovrebbe sapere

la chiave k e poiché la chiave k è per assunzione segreta e nota solo al mittente e destinatario

allora solo il mittente può aver cifrare quel messaggio e mandarlo); questo meccanismo non è un

meccanismo di firma digitale perché è vero che solo il mittente può aver mandato il messaggio con

la chiave k, ma questo è vero solo se il destinatario non lo ha fatto a sua volta nel senso che tutto

è legato alla conoscenza della chiave k.

Il problema di questo meccanismo è quello sapere, dopo aver decifrato il messaggio, che il

messaggio è effettivamente quello originario; se il messaggio di partenza è un messaggio che ha

una sua semantica corretta allora si può vedere se quello che arrivato ha un formato in una

qualche lingua allora può essere il messaggio originario; ma se si è cifrato il risultato ad esempio di

un algoritmo di compressione dopo che decifro riottengo un file compresso e chi ci dice che è il

messaggio corretto? questo può essere risolto usando un sottoinsieme dei possibili messaggi

oppure se il messaggio ha una sua semantica può essere affidabile oppure si può appendere un

FCS (frame check sequence) oppure usare qualche altra informazione di struttura che l’attaccante

non sa come modificare.

Vediamo ora come queste tecniche di controllo degli errori si possono applicare:

Il controllo degli errori che utilizza un FCS attaccato al messaggio si può applicare nei due modi

dello schema superiore:

- Nel primo schema (controllo degli errori interni) del messaggio viene calcolato l’FCS e lo si

concatena (quindi viene trasmesso il messaggio e il FCS tutti cifrati insieme): quindi la

cifratura avviene in blocco per messaggio + blocco di controllo degli errori. A destinazione

si decifra; questo restituisce sia il messaggio e sia il blocco di controllo degli errori; dal

messaggio ci si ricalcola l’FCS e questi devono coincidere. Se non coincidono vuol dire che

il messaggio non è quello che inizialmente era stato mandato. Si chiama controllo degli

errori interno perché l’FCS si calcola prima della cifratura.

- Nel secondo schema (controllo degli errori esterni) si cifra subito il messaggio e si calcola

l’FCS sul messaggio cifrato; poi lo si concatena. A destinazione abbiamo direttamente

l’FCS e poi dal messaggio cifrato ci si ricava l’FCS; se sono uguali allora non è stata fatta

nessuna modifica. Per decifrare il messaggio si fa una decifratura con la chiave k. Si

chiama controllo degli errori esterno perché l’FCS viene fatto a valle della cifratura.

Per quanto riguarda invece i meccanismi a chiave pubblica si cifra on la chiave pubblica e decifra

con la chiave privata; qui si garantisce la riservatezza ma non l’autenticità del messaggio. Per

garantire entrambe basta utilizzare entrambe le chiavi andando ad operare in cascata: un

problema è che si devono usare il doppio dei meccanismi di computazione ossia utilizzare 4

meccanismi di cifratura/decifratura al posto di 2.

A volte si desidera fare l’autenticazione senza la cifratura perché:

- L’architettura del sistema che è stata pensata ha dei meccanismi di cifratura e decifratura

che devono essere svolti con meccanismi diversi;

- Se il messaggio viene mandato a diverse destinazioni, allora non è conveniente chiedere a

tutti i destinatari di fare l’autenticazione del messaggio; si desidera avere solo uno dei

destinatari per l’autenticazione e poi di comunicare a tutti gli altri se l’autenticazione è

andata a buon fine;

- Poiché l’autenticazione è un meccanismo oneroso, si può decidere, in situazioni di carico

pesante, di rilasciare il requisito sull’autenticazione ed non effettuarlo su tutti i messaggi

(questo è possibile farlo solo se l’autenticazione è separata dalla cifratura).

MAC

Ci possono essere diverse forme di MAC:

- La prima è la forma base. Qui il messaggio viene combinato con una chiave segreta e

quello che si ottiene lo si appende al messaggio originario e questo viene mandato sul

canale. Si può dire che il messaggio qui viaggia in chiaro con appeso un blocco che

corrisponde al MAC. A destinazione si ricalcola il codice MAC usando la stessa chiave

segreta, e lo si confronta con quello che è arrivato attraverso il canale; se sono uguali

significa che il messaggio è quello originario. L’autenticatore in questo caso è il codice

MAC.

- Nel secondo schema si prende il messaggio, si calcola il codice MAC con una chiave K1;

poi si concatena il codice MAC con il messaggio e si cifra con l’altra chiave k2. A

destinazione si fa l’operazione inversa ossia si decifra con la chiave k2, si riottiene l’insieme

di messaggio + MAC e poi ci si ricalcola il MAC; se il MAC che otteniamo è uguale al MAC

che ci è arrivato il messaggio non è stato corrotto.

- Nel terzo schema si cifra il messaggio con k2; poi si applica il codice MAC sul messaggio

cifrato; si concatena e si manda sul canale; a questo punto si ha il messaggio cifrato ed il

MAC calcolato sul messaggio cifrato. A destinazione, si può prima calcolare il codice MAC

sul messaggio cifrato e confrontarlo e se il risultato è corretto allora si decifra.

Tipicamente si preferisce lavorare sul secondo schema.

I requisiti sul MAC sono:

- Si vuole evitare che l’attaccante sia in grado di ricostruire un messaggio nuovo che ha lo

stesso MAC del messaggio originario in modo da evitare le collisioni;

- Si vuole che dal punto di vista statistico, il codice MAC abbia una distribuzione uniforme.

- Riguarda il caso in cui il MAC sia sottoposto a qualche funzione/trasformazione: si deve

evitare che se si sottopone il MAC a qualche operazione di trasformazione, questo renda la

distribuzione di probabilità delle configurazioni in uscita disuniforme.

Un attacco a forza bruta consiste come nell’hash nel trovare collisioni ossia trovare degli input che

applicandogli il MAC coincidano. L’attacco a forza bruta può dirigersi verso 2 obiettivi: attaccare lo

spazio delle chiavi; attaccare il valore di uscita del MAC.

Le caratteristiche degli attacchi a forza bruta sono:

- C’è una chiave k più lunga di n;

- Al primo giro si provano tutte le chiavi per trovare quelle che corrispondono al codice MAC;

k-n

- Ci saranno 2 CHIAVI per ogni possibile codice MAC k-2n

- Al secondo giro il numero di chiavi che danno luogo allo stesso MAC è 2

k-alfa

- Dopo un numero di giri pari ad alfa si vuole arrivare ad 2 = 1

k

Il numero medio di tentativi/giri per trovare la chiave è 2 .

HMAC

Un codice MAC importante è HMAC (dove H sta per hash). In questo caso il MAC viene costruito

partendo da una funzione hash crittografica.

Il motivo è che funzioni di hash crittografiche come MD5 ed SHA sono realizzate con software più

veloci rispetto alla cifratura simmetrica a blocchi come DES; inoltre c’è una vasta libreria di codici

software.

Gli obiettivi dell’HMAC sono:

- Usare funzioni hash già disponibili;

- Permettere una facile sostituzione delle funzioni hash;

- Le prestazioni della funzione hash non devono essere peggiori;

- Le chiavi devono essere gestite in maniera semplice;

- Deve essere possibile valutare la robustezza del meccanismo MAC a partire da quello della

funzione hash.

L’implementazione dell’HMAC è la seguente:

Bisogna dire che il problema principale di usare una funzione hash dentro MAC è che la funzione

hash non ha chiavi segrete mentre la funzione MAC prevede chiavi segrete, quindi bisogna trovare

un metodo per usare funzioni hash ma allo stesso tempo usare una chiave segreta. Il precedente

schema riesce a farlo. In questo schema notiamo che la chiave k viene trattata in modo da farla

diventare un numero di bit pari a b ossia viene allungata per renderla coerente con la scelta fatta

per b; poi viene fatto un XOR con una stringa di 8 bit (chiamata ipad) costituita da 4 bit di zeri e 4

bit di uno. Il compito di questa stringa ipad è quello di cambiare metà dei bit della chiave iniziale

usando le caratteristiche della pseudo casualità. Alla stringa che si ottiene viene appeso il

messaggio e di questo viene fatto un hash; la funzione hash che si ottiene viene a sua volta

appesa ad un altro termine che deriva sempre dalla chiave ma fatta in XOR con un’altra stringa di

8 bit (con un altro ipad).

A questo punto si fa un’altra funzione di hash e si ottiene infine il codice HMAC di n bit. In questo

modo si riesce ad ottenere il codice MAC desiderato.

Questa è una struttura abbastanza complessa e si può fare una modifica per avere una struttura

più veloce. La modifica consiste nel fare offline le attività che non riguardano strettamente il

messaggio cioè la parte f è la modifica di compressione che sta dentro il modulo hash; qu

Dettagli
Publisher
A.A. 2016-2017
7 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Daniele9292 di informazioni apprese con la frequenza delle lezioni di Sicurezza informatica 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 Roma Tor Vergata o del prof Naldi Maurizio.