CryptoAnalisisServer(CAS) Reti di Calcolatori LS progetto di Carpenè Michele, Busacca Fulvio...

Post on 01-May-2015

217 views 0 download

Transcript of CryptoAnalisisServer(CAS) Reti di Calcolatori LS progetto di Carpenè Michele, Busacca Fulvio...

CryptoAnalisisServer(CAS)Reti di Calcolatori LS

progetto di Carpenè Michele, Busacca Fulvio

Servizio distribuito basato sul calcolo parallelo per operazioni di crittanalisi

 A.A. 2004/2005

PARTE I (Carpenè)

Struttura e funzionamento-bilanciamento

del carico-prima implementazione

La crittanalisi: 2 parole

• La Crittologia è la scienza che studia come difendere l’informazione da attacchi intenzionali

• due distinte discipline: • Crittografia: gli algoritmi e i protocolli che

occorrono a fronteggiare gli attacchi degli intrusi

• Crittanalisi: valuta la robustezza esaminando come, in quanto tempo e con quali risorse è possibile rompere le difese

Il sistema

sistema distribuito per effettuare attacchi con forza bruta:

proviamo tutte le combinazioni possibili di chiave per giungere comunque a una soluzione del problema, anche in un periodo di tempo lungo.

Obiettivi:

comprendere come il calcolo parallelo sia uno strumento efficace per risolvere problemi di calcolo in tempi ragionevoli e cimentarci con una caso pratico  

Possibili architetture (1)

server centrale con funzione di manager

manager replicato su tutti i nodi clienti

Possibili architetture (2)

simmetrico

Possibili architetture (3)

Architettura del Manager

Listener:Allocazione statica

RequestManager,Esecutor:Allocazione dinamica

Il bilanciamento del carico

• carico = coefficiente prestazione macchina + numero chiavi + lunghezza file

•Se aumentiamo i processori l’efficienza tende a zero

Necessità di stimare un lowerbound

Caso due processori

Ipotesi: caso peggiore I due processi partono insieme

tmono > trandevouztot + tmono /N

tmono *(N-1)/N > trandevouztot

tmono > N/(N-1)*trandevouztot

Dove:

trandevouztot = trandevouzcliente +tloadbalancing +N*(trandevouzhost+tallocazioneprocessi)

Caso generale di N processori : 

tmono > trandevouztot + tricercalocale

Caso generale di N processori : 

tcontrollofile*nchiavi > N/(N-1)*trandevouztot

nchiavi > N*trandevouztot /[(N-1)*tcontrollofile]

L > log2 (N*trandevouztot /[(N-1)*tcontrollofile]) Lowerbound

nchiavi = 2^L (L lunghezza chiave)

Attenzione!!! gli host potrebbero essere già carichi!

È interessante notare come nel caso di un numero elevato di processori la funzione di lower-bound possa essere approssimata:

Infatti per N tendente a un numero elevato diventa

nchiavi > trandevouztot /tcontrollofile

e quindi:

Lowerbound log2 (trandevouztot/tcontrollofile)

prova con un file di 16 righe cifrato con una chiave TriploDes a 168 bit, con tre

slave attivi.

nettamente inferiore a 2^168

Usando valori temporali indicativi è

risultato in queste condizioni un lower bound minimo di 375468 chiavi.

Ripartizione del carico

per ogni slave viene calcolato il carico corrispondente in base al carico di cui è già gravato e in base al carico totale.

Per ognuno di essi è:

 NKey = (K/N)*(1-CaricoSlave/CaricoTotale)

Nkey=0 nessun carico assegnato

Esempio di esecuzione (1)

Esempio di Esecuzione (2)

E se il carico totale è inferiore al lwb???

• si è previsto di assegnare ugualmente il compito ripartendolo su un sottoinsieme degli host attivi.

• Necessarie due procedure:

• La prima ricalcola il lwb

• La seconda determina le n macchine meno cariche

Nel caso in cui sia presente un unico host attivo la soluzione è semplice:

il carico viene assegnato interamente a quell’host.

Il client e lo slave (1)

• Il processo client si occupa di fornire una semplice interfaccia grafica che permetta all’utente di inserire i dati (nome del file, lunghezza della chiave e algoritmo di codifica),

• quindi il client invia la richiesta al processo Listener che si occuperà di servirla e rimane in attesa del risultato.

Il client e lo slave (2)

• Lo slave invia costantemente un messaggio di disponibilità ad effettuare il servizio al Listener e si occupa di istanziare un oggetto GestoreRichiesta che fa fisicamente l’operazione di ricerca

• Invia il nome del gestore al ServerManger

Se non ci sono slave attivi il sistema risponde:

Spiacente nessuno slave presente

Impossibile effettuare l’operazione

Il client e lo slave (3)

• Il formato del pacchetto richiesta è questo:

 • mentre il pacchetto dello slave è

semplicemente questo:

La comunicazione

Il risultato

Implementazione

• Implementazione in java

• 20 classi

• Uso della libreria matematica BigInteger

• Per la comunicazione inter-processo: java-RMI

Conclusioni

• Dipendenza dello speed-up dalla probabilità di trovare la chiave subito

• La sequenza del rande-vouz limita lo speed-up del sistema

Sviluppi futuri

• Prevenzione di fenomeni di congestione

• Eventuale gestione dinamica del bilanciamento

Bibliografia

• [1] R.Laschi, R.Montanari: Appunti di Tecnologie per la sicurezza (Progetto Leonardo Bologna).

• [2] Dispense di reti di calcolatori LA (Docente: Antonio Corradi, università di Bologna).

• [3] Dispense di reti di calcolatori LS (Antonio Corradi)