Backup dati

Lapplicazione svolge la funzione di backup via rete. L'applicativo prevede l'archiviazione di dati presso un server esterno all'azienda, risieddente in una server farm, sfruttando la rete internet come canale di trasferimento dati.


Analisi preliminare:
Il software che svolgerà l'applicazione sarà diviso in due parti distinte comunicanti tra loro. La prima parte risiederà sul client e da questo preleverà i dati da archiviare. La seconda parte risiederà sul server e si occuperà di archiviare i files inviati. I file risiedenti sul server saranno cifrati e saranno visibili solamente da proprietario. In più il trasferimento avverrà tramite un canale sicuro altrettanto cifrato.

In fase di analisi si è deciso di utilizzare come tecnologie di sviluppo i linguaggi java [1] e il linguaggio C# [2], come protocollo di trasferimento Web-dav [3]; la parte del server girerà su piattaforma Apache [4], precisamente nell'implementazione del protocollo web-dav.

Descrizione tecnica
Come sopracitato l'applicazione risiederà una parte sul server ed una sul client, ora si andrà a spiegare il funzionamento di entrambe:

Client:
L'applicativo verrà installato su ogni client è composto da un'interfaccia user-friendly sviluppata con il linguaggio C# utilizzando il framework .net v.2.
Tale interfaccia permette di creare vari profili di backup. Ogni profilo conterrà varie informazioni tra cui i file da trasferire, la schedulazione del processo, la possibilità di criptazione. Tali informazioni verranno salvate in un file xml [5] creato ad-hoc.
Il file xml verrà quindi letto dalla seconda parte dell'applicativo presente sulla macchina cliente, scritto in java. Tale programma avrà un thread sempre attivo che leggerà i file xml dei profili e quindi attiverà il trasferimento nel momento opportuno.
Nel momento in cui verrà attivato un processo di backup il programma eseguirà i seguenti passi:

• Lettura del file xml contenete la parte del filesystem da trasferire
• criptazione dei singoli file tramite l'algoritmo AES [6]
• Creazione di un archivio tar con tali file
• compressione dell'archivio tramite algoritmo di compressione aritmetica [7]
• creazione di un hash dell'archivio per garantire il corretto trasferimento dei dati [8]
• split dell'archivio in token più piccoli (dell'ordine della decina di Mb)
• apertura della connessione verso il server
• trasferimento dei vari token

A questo punto l'applicativo ha concluso il trasferimento, da qui in poi il lavoro verrà svolto dal server.


Server:
L'applicativo risieddente sul server è sviluppato in linguaggio java e si occuperà di ricevere i file inviati dai vari client.
Nel caso in cui riceva una richiesta di trasferimento il server procede in questo modo:

• Autentica il client
• apre un canale sicuro di trasferimento
• riceve i vari token inviati dal client
• ricompone i token in un unico archivio
• decomprime l'archivio
• salva i files ancora criptati in una cartella

Nel caso in cui il client richieda dei file o un intero profilo di backup, il programma server compierà gli stessi passi del client.


Fondamentale soffermarsi su alcuni punti:

1. Il client è l'unico ad avere la chiave per decriptare i file, di conseguenza i file trasferiti sul server non sono leggibili da nessun altro se non dal possessore della chiave.

2. Nella creazione dei profili di backup sarà possibile decidere se i file verranno salvati in modo incrementale oppure integrale. Inoltre nel caso in cui si decida di fare il backup incrementale si potrà stabilire per quanto tempo tenere i dati vecchi (una settimana, un mese, più mesi); una volta trascorso tale tempo i file verranno sovrascritti, ovviamente partendo dal più vecchio.

3. In ogni momento il client può monitorare lo stato dei suoi processi oltre che lo spazio occupato su disco.

4. In ogni momento il client potrà decidere di scaricare i file presenti sul server: in maniera parziale o in maniera completa.

5. Ogni operazione compiuta verrà monitorata e salvata in file di log.

6. Ad ogni operazione di backup verrà inviata una mail all'amministrazione con il report delle azioni compiute.

 

Limiti dell'applicativo:
L'applicativo utilizza la rete internet come mezzo per trasferire i dati, di conseguenza porta con se tutti i limiti di questo. L'applicativo non è stato sviluppato per trasferire grosse quantità di dati ma principalmente i dati sensibili dell'azienda.

 

Linkografia:

[1] Java: http://java.sun.com/

[2] C#: http://msdn2.microsoft.com/en-us/vcsharp/default.aspx

[3] Web-Dav: http://www.webdav.org/

[4] Apache: http://www.apache.org/

[5] Xml: http://www.w3.org/

[6] AES: http://en.wikipedia.org/wiki/Advanced_Encryption_Standard, http://www.iaik.tu-graz.ac.at/research/krypto/AES/

[7] Compressione Aritmetica: http://en.wikipedia.org/wiki/Arithmetic_coding, http://datacompression.info/ArithmeticCoding.shtml

[8] Hash: http://en.wikipedia.org/wiki/SHA_hash_functions

 
Image

Image