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 linformazione 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 lefficienza tende a zero Necessità di stimare un lowerbound
Caso due processori Ipotesi: caso peggioreI 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 > log 2 (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 log 2 (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 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 quellhost.
Il client e lo slave (1) Il processo client si occupa di fornire una semplice interfaccia grafica che permetta allutente 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 loperazione di ricerca Invia il nome del gestore al ServerManger
Se non ci sono slave attivi il sistema risponde: Spiacente nessuno slave presente Impossibile effettuare loperazione
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)