MINI RC5 Frequently Asked Question


Il presente tutorial è nato da una mia vecchia e-mail, a sua volta basata sull'articolo "RC5 - Come un crack diventa un test" di Elio Giannatempo apparso sul numero 1 di AMIGAzette (18/12/1997), la fanzine cartacea pubblicata dall'AGI Bari, dalle cui ceneri è nata The NEW AMIGAzette.


Cosa è RC564?
E' una gara LEGALE di forzatura di un codice cifrato indetta dalla RSA.
Il cui scopo è dimostrare che gli attuali algoritmi di crittografia sono al limite della loro efficacia, e che è opportuno ricercarne di nuovi.
Alla scorsa edizione "RC5 56bit" hanno partecipato circa 2600 computer sparsi in tutto il mondo. La facilità con cui è stato violato il sistema con chiavi a 56bit ha spinto diverse aziende che operano nel settore della sicurezza dei dati ad annunciare nuovi investimenti nella ricerca.
Ora l'obiettivo e di far saltare anche le chiavi a 64bit, questa volta il compito si è rilevato più arduo con un inevitabile dilatamento dei tempi nonostante un incremento considerevole del numero dei partecipanti.

Cosa è il DES?
La sigla DES sta per Data Encryption Standard, e come dice l'acronimo è la tecnica standard per la crittazione dei dati trasmessi per via elettronica. Ormai è rienuta insicura, e proprio gare come questa sono servite a dismostrarlo. Tra le soluzioni temporanee suggerite ci sono le seguenti: usare chiavi con più bit e/o codificare in cascata gli stessi dati con chiavi deverse, oggi è in uso il Triple DES, ovvero si applica in cascata 3 volte il DES. L'algoritmo del DES è molto più semplice di quello dell'RC5, così ogni tanto viene rallentata l'RC5 per effettuare il crack del DES, ogni partecipante è libero di sceglie in quale contesto gareggiare. L'ultima gara DES è durata appena 10 giorni, anche se la chiave è stata trovata in appena 2.5 giorni da un supercomputer progettato e realizzato ad hoc dalla Electronic Free Frontier, una delle maggiori associazioni no-profit operanti nell'ambito dell'afabetizzazione informatica.


Come funziona la gara?
Piuttosto che utilizzare raffinate tecniche di critonalisi si è deciso di utilizzare la forza bruta di un supercomputer, il quale prova con tutte le possibili chiavi a decodificare il messaggio crittato alla ricerca della frase nascota dagli organizzatori della gara. Ovviamente un super computer capace di esaurire tutte le chiavi a 64bit possibili in tempi ragionevoli non esiste ancora, ma può essere simulato con buona approssimazione da una miriade di personal, workstation, mainframe che lavorano in rete ridistribuendosi il lavoro. L'intero spazio delle chiavi è stato partizionato in settori e questi in blocchi. Ad ogni partecipante, a seconda delle sue richieste, sono inviati alcuni blocchi di chiavi che verranno usati dal client per forzare il messaggio. Quando tutte le chiavi contenute nei blocchi sono state provate il client invia il risultato al server, il quale controlla se il messaggio è stato decodificato, determinando così la fine della gara e la vittoria del suo scopritore, ed aggiorna le classifiche personali e dell'eventuale TEAM a cui si aderisce, aggiungento il numero dei blocchi appena verificati.
Il numero dei blocchi controllati determina la posizione nella classifica generale, comunque è solo la fortuna, seguita da una buona dose di costanza, che consente di vincere.

Come si partecipa?
E' sufficiente decidere con quale squadra partecipare e prelevare i relativi client dal loro sito. Questa FAQ si riferisce alla squadra Bovine il cui HeadQuarter è http://www.distributed.netLa squadra si occupa di realizzare i client per le varie piattaforme e di aggiornare le classifiche della gara. Ogni patecipante che usa un client Bovine partecipa per proprio conto, ma può aggregarsi con altri partecipanti per formare un TEAM, anche la comunità AMIGA ha costituito un proprio team AMIGA RC5 TEAM EFFORT, che nel momento in cui scrivo l'articolo è collocato al 7 posto, che è un raguardevole piazzamento viste le velocità dei processori usate dagli altri team.
Come prima cosa è necessario prelevare ed installare il client qundi fargli calcolare qualche blocco (almeno 1), anche in modalità random, e spedire il risultato al sito della Bovine. E' bene non esagerare con la modalità random, in quanto quei blocchi potrebbero già essere stati calcolati o attribuiti a qualche altro partecipante, ma per cominciare vanno bene lo stesso. Entro 24/48 ore il server predisporrà una nostra pagina, per ritrovarla dobbiamo andare su una pagina delle classifiche, per esempio http://rc5stats.distributed.net/emtop100.html, e cercare il gadget "search for e-mail" ed inserire l'e-mail indicata nel file di config del client, altrimenti come fa a riconoscerci? E poi premere GO per avviare la ricerca, che purtroppo sarà estremamente lenta. Se i blocchi sono stati già ispezionati dal server la vostra attesa non sarà stata vana, altrimenti vi conviene riprovare dopo qualche giorno, magari inviate qualche altro blocco già calcolato, tanto non andranno persi, prima o poi ricompariranno. In questa pagina c'è un gadget per la richiesta della password, utilizzatelo, altrimenti non la riceverete e non potrete affiliarvi ad alcun gruppo. Quasi certamente l'indomani riceverete una strana lettera con la password. Avuta la password ritornate nella pagina delle vostre classifiche personali ed inserite la password nell'apposito requester, accederete ad una nuova pagina che vi consentirà di editare alcune vostre informazioni, come la squadra di appartenenza, per indicare il A.RC5 T.E. dovete inserire "200" in "Team
Affliation", e quindi premere su "Update Participant Information". Se non avete commesso errori tutti i vostri vecchi blocchi ed i futuri saranno attribuiti anche al team indicato. Ora la registrazione è terminata, e siete a tutti gli effetti un membro del A. RC5 T.E., è opportuno fare anche una seconda iscrizione presso la pagina ufficiale "Amiga", in modo che si possano stilare delle classiche all'interno della squadra, o semplicemente sapere quanta gente vi partecipa e con quali macchine. Il form di registrazione si trova in una sottopagina di http://distributed.amiga.org.

I campi da riempire riguardano il numero di macchine a disposizione, il vostro nominativo o nickname, eventuale homepage, l'e-mail per le comunicazioni, se desiderate rimanere anonimi, il tipo di macchina, e la velocità della vostra macchina. A quest'ultima voce bisogna prestare molta attenzione, infatti non va inserita la velocità in MegaHertz, ma quella stimata attraverso il benchmark del client RC5. Per effettuare il benchmark usate il seguente comando:


rc5des -benchmark2





Il numero così ottenuto non va brutalmente inserito, ma bisogna dividerlo per 1000, per esempio se ottente 12339,38 Keys/s dovete inserire 12, infatti il requester si riferisce alle KKeys/s, ovvero migliaia di chiavi al secondo e non alle chiavi al secondo macinate.

Dove si scaricano i client?
Andando sulla pagina principale del gruppo Bovine si trova il link per scaricare il client aggiornato per la propria piattaforma, ma chi usa Amiga può prelevarlo direttamente dalla pagine del Team Amiga: http://distributed.amiga.org/RC5-64/fm-download-0.html
A questo indirizzo si troveranno altri interessanti link, come una FAQ dettagliata, l'elenco dei partecipanti, come iscriversi alla ML dell'Amiga
RC5 Team Effort, o il Front-end "Myzar" per il client Amiga, ecc...


Come si installa il software?
Una volta preso l'archivio dal sito va scompattato, di solito è sufficiente questo per farlo funzionare correttamente. Prima di lanciare il client è bene editarne la configurazione, i nuovi automaticamente mostreranno una serie di domande per creare la configurazione. E' bene limitarsi ad alterare solo alcuni campi, come l'e-mail, necessaria per informare il server sull'identità del partecipante, e le dimensioni dei buffer. I buffer devono essere sufficientemente grandi per garantire al client di poter lavorare senza doversi collegare spesso al server per inviare e prelevare i dati, cosa che richiederebbe per altro una connessione ad internet sempre attiva.

Come effettuo il prelievo o l'invio dei dati?
Ci sono due possibilità. La prima consiste nel lanciare il client, mentre si è on-line con i seguenti parametri:


rc5des -fetch        (prelievo di n blocchi, dove n è indicato nella config)
rc5des -flush (invio di tutti i blocchi già calcolati)
rc5des -update (effettua entrambi le fasi)




E' importante notare che se nel file di config si è impostato un valore 10 come dimensione del buffer-in, e se ne sono già calcolati 8 alla prossima operazione di FETCH o di UPDATE saranno scaricati i blocchi per riportare il contenuto del buffer a 10. Mentre se il buffer-out è impostato a 10 una volta completo il client cercherà di connettersi al server, se non ci riesce smetterà di calcolare i restanti blocchi fino a quando non si provvederà a svuotare il buffer-out. Quindi è necessario specificare dei valori che consentano di operare correttamente il più a lungo possibile.

La seconda possibilità consiste nell'adoperare la posta elettronica sia per prelevare che per inviare i blocchi già calcolati. Gli indirizzi sono rispettivamente:


flush@distributed.net
fetch@distributed.net




Per prelevare nuovi blocchi è necessario inviare un msg con i seguenti campi nel corpo del msg:


numblocks=yyyy
blocksize=xx




Dove yyyy può variare da 1 a 1000, e xx da 28 a 31. Dopo alcuni istanti, ma a volte il giorno dopo, riceverete una lettera con in attachment i nuovi buff-in.rc5 e/o buff-in.des. Basta salvare questi file nella directory del client, ed il gioco è fatto. E' bene notare che un blocco da 30 è quattro volte più grande di uno da 28, e quindi il computer ci mettere quattro volte il tempo richiesto per uno da 28, quindi non spaventatevi se improvvisamente il computer vi sembrerà più lento :)


Per inviare i blocchi e sufficiente creare un msg, anche vuoto, ed inserire come allegato il buffer-out.rc5 o buffer-out.des (a seconda della gara) e spedire comodamente il tutto alla prima connessione. E' importante però rimuovere tale buffer, subito dopo, per evitare che i nuovi blocchi vengano accodati a quelli già spediti, piuttosto che cancellarli suggerisco di rinominarli, aggiungendo la data del loro invio nel nome.
In caso di controversie saranno sempre disponibili.

Come si lancia o arresta il client?
Per maggiori dettagli si rimanda al file readme che viene allegato in ogni archivio, giusto per cominciare si può usare la presente sintassi:


rc5des -runbuffer -frequent




Il primo parametro dice al client che deve limitarsi ad usare solo le chiavi che trova nel buff-in, una volta che questo è esaurito deve terminare spontaneamente l'esecuzione, una variante consiste nell'indicare -runoffline, opera come ne caso predecente con la sola variante che non appena esaurisce le chiavi assegnate comincia a provare con delle chiavi random, ovviamente queste verranno attribuite solo se non siano già state calcolate da altri partecipanti. Il secondo parametro -frequent informa il client che si desidera salvare spesso i risultati dell'elaborazione. Questa impostazione genera due diversi compotamenti a seconda che si sia online o offline, nel primo caso i risultati vengono direttamente spediti al server, ma richiede una connessione internet sempre attiva, nel secondo i risultati intermedi verranno salvati nel checkpoint o direttamente nei buffer a seconda che il blocco sia incompleto o terminato. Ovviamente il client deve girare il più a lungo possibile, e quindi sarebbe bene fare in modo che venga lanciato all'accensione ed arrestato allo spegnimento. Per far ciò si può aggiungere qualche riga nella user-startp, mentre per arrestarlo bisogna necessariamente inviare il comando a mano. Grazie allo sforzo di Roberto Patriarca ora possediamo un Front-end basato su MUI per gestire il client, si chiama Myzar,prima si è accennato al suo download. Myzar permette di settare la configurazione del client e come deve operare, può essere usato per effettuare il flush ed il fetch dei blocchi, e soprattutto da MENU' consente di arrestare il client. Per maggiori chiarimenti si rimanda alla documentazione allegata al front-end. .

Nei prossimi numeri si tornerà a parlare di altri tipi di applicazioni di calcolo distribuito.

Francesco De Napoli