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)
Top Related