Sauvegarde de fichiers cryptés sur serveurs distants

Description

Il y a 3 programmes:
- Serveur
- Client
- Gestion des utilisateurs

Ces logiciels utilise la classe Socket du .NET Framework en mode asynchrone.

Les algorithmes de cryptage suivants sont utilisés :
- AES (Rijndael) pour le cryptage et le décryptage.
- SHA512 pour l?authentification des fichiers transmis.

Pour utiliser le logiciel client, l?utilisateur doit disposer de :
- Un login et un password valide (existant dans la table des utilisateurs de la
base de données SQL server).
- Une clé secrète de 32 octets (256 bits). Cette clé ne devra en aucun cas être
transmise par Internet. Si l?utilisateur perd cette clé tous les fichiers transmis
seront perdus. Pratiquement, cette clé est stockée dans un fichier?

Login.
------
Sur demande de connection par le client au serveur, le login et le password sont
envoyés à l?adresse IP et au port du serveur.
Le serveur cherche dans la table des utilisateurs de la base de données SQL server
l?existence et la correspondance du login et du password.
Si l?authentification de l?utilisateur est correcte, le serveur signale au client un accès
valide et crée une session ; autrement l?accès est refusé.

Upload.
------------------------------------------
Client :
Crypte le fichier et le charge dans un fichier temporaire.
Hache le fichier temporaire crypté avec SHA512 pour obtenir sa signature de
hachage.
Envoie un message au serveur, contenant :
- Une demande d?autorisation d?envoi de fichier.
- Le nom du fichier.
- La date de dernière modification du fichier.
- Le nombre d?octets du fichier.
- La signature de hachage du fichier (64 octets).

Serveur:
Vérifie l?autorisation d?accès de l?utilisateur et que le nombre d?octets alloués à
l?utilisateur n?est pas dépassé.
Si OK : Enregistre les infos précédemment transmises dans la session de
l?utilisateur et envoie un message au client signalant qu?il a suffisamment d?infos
pour recevoir le fichier.
Si pas OK : Envoie un message d?erreur au client.

Client :
Sur réception de l?autorisation d?envoi : envoie le fichier temporaire crypté (8kb
par 8kb), l?efface puis attend la confirmation de réception.

Serveur:
Enregistre les octets du fichier crypté dans un fichier temporaire (8kb par 8kb).
Dés que le nombre d?octets du fichier est atteint effectue les opérations
suivantes :
- Calcule la signature de hachage.
- Compare la signature de hachage obtenue avec celle envoyée par le
client. Si les signatures ne sont pas identiques, envoie un message
d?erreur au client.
- Vérifie l?existence du fichier. Si le fichier existe, remplace le fichier. Si le
fichier n?existe pas, le fichier est ajouté.
- Enregistre les infos du fichier reçu dans la DB.
- Envoie un message de succès de transfert au client.
- Efface le fichier temporaire.
Si le nombre d?octets reçu est plus grand que celui attendu, envoie un message
d?erreur au client.
Si le client arrête la transmission avant que le nombre d?octets à transférer soit
atteint, attend un certain temps (à fixer) puis envoie un message d?erreur au
client.

Client :
Affiche le succès ou l?échec du transfert.

Download
--------
Client :
Envoie un message de demande transfert, accompagné du nom du fichier.

Serveur :
Vérifie l?autorisation d?accès de l?utilisateur et l?existence du fichier dans la base
de données.
Si pas OK, envoie un message d?erreur au client.
Si OK, hache le fichier crypté avec SHA512 pour obtenir sa signature.
Envoie un message au client, contenant :
- Une demande d?autorisation d?envoi de fichier.
- La date de dernière modification du fichier.
- Le nombre d?octets du fichier.
- La signature de hachage du fichier (64 octets).

Client :
Sur confirmation du serveur:
Enregistre les octets du fichier crypté dans un fichier temporaire (8kb par 8kb).
Dés que le nombre d?octets du fichier est atteint effectue les opérations
suivantes :
Calcule la signature de hachage.
Compare la signature de hachage obtenue avec celle envoyée par le serveur.
Si les signatures ne sont pas identiques, affiche un message d?erreur.
Décrypte le fichier temporaire en le copiant à sa destination.
Affiche un message de succès.
Efface le fichier temporaire.
Si le nombre d?octets reçu est plus grand que celui attendu, affiche un message
d?erreur. Efface le fichier temporaire.
Si le serveur arrête la transmission avant que le nombre d?octets à transférer
soit atteint, attend un certain temps (à fixer) puis affiche un message d?erreur.
Efface le fichier temporaire.

File list
---------
Client :
Envoie un message demandant la liste des fichiers de l?utilisateur.

Serveur :
Exécute une requête SQL pour obtenir la liste des fichiers.
Envoie un message contenant la liste.

Client :
Affiche la liste.

Delete file
-----------
Client :
Envoie un message contenant une demande de suppression accompagnée du
nom du fichier.

Serveur :
Exécute une requête SQL pour vérifier l?existence du fichier.
Si le fichier existe, efface le fichier et envoie un message de confirmation.
Si le fichier n?existe pas, envoie un message d?erreur.

Client :
Affiche le message.

Conclusion :


Installation.

SQL server 2005.
Avec le Management Studio:
- Ouvrir le fichier CreateDB.sql
- Ajuster les paramètres de création de la DB pour votre système
- Executer le script

Créer le répertoire qui contiendra les fichiers cryptés des utilisateurs. (Côté serveur)

Visual Studio 2005.
- Ouvrir la solution SecureFiles
- Dans le projet SFServer, ouvrir le fichier app.config
- Remplacer "GLARDSOFT" par le nom de votre Data Source dans la connectionString
- Remplacer "F:\SecureFiles\" par le nom du répertoire que vous venez de créer
- Dans le projet SFUser, ouvrir le fichier app.config
- Effectuer les mèmes remplacements
- Compiler... Tester...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.