Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SAUVEGARDE DE FICHIERS CRYPTÉS SUR SERVEURS DISTANTS


Information sur la source



Description

Cliquez pour voir la capture en taille normale
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...

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de wizad le 23/03/2007 14:23:27

ça a l'air intérréssant. Peut-tu détaillé aussi le système client serveur que tu as implémenté dans ta description. Le projet étant conséquent ça pourrait aider ceux intérrésser par ton code.

signaler à un administrateur
Commentaire de Vallorbain le 23/03/2007 17:15:31

La description contient les spécifications de trafic client - serveur.
Ces programmes ont été testé au travers d'Internet : OK
Le facteur limitant est la taille des fichiers...
Les firewalls sont peut-être à paramètrer pour accepter serveur et client...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

C#.Net Socket tcp pour ping? icmp impossible. [ par troukatruc ]    Bonjour,Je suis actuellement en stage et je developpe des appli pour pocket pc en c# avec .Net.( Je sais qu'il existe un forum pdafr tcp socket + envoi d'objet [ par Blacknight91 ] bonjour,voilà je voudrais créer une connexion tcp client/serveur pour envoyer des données. Ces données sont dans des objets (une datatable par exemple envoi de fichier sur socket UDP ou TCP [ par jackachi ] Bonjour, J'ai trouvé beaucoup de code pour envoyer des datas "txt" sur une socket UDP ou TCP. Pourtant je ne trouve rien sur comment envoyé Envoie "passage à la ligne" dans socket TCP/IP [ par nicompx ] Bonjour,Comment faire pour envoyer une passage à la ligne dans un socket   exeple : socket.Send(...);   ???????????Je met simplement un " \n " mais ce Socket TCP [ par DCWeb ] Bonjour,Dans le cadre d'un serveur acceptant des connections TCP sur plusieurs ports, est il possible de connaitre le port sur lequel l'appli client s Recevoir des réponses à un broadcast UDP [ par obones ] Bonjour à toutes et tous,J'essaye actuellement de recevoir des réponses à un broadcast UDP que j'ai envoyé et je parviens pas à faire fonctionner ça. Socket URL [ par nicompx ] Bonjour, Je veux ouvrire un socket mais je ne connais pas l'adresse IP du serveur et bien son URL.Comment passer l'URL à la place de l'adresse IP. Connection site internet sécurisé avec les socket [ par Plugman ] Bonjour,J'aimerais savoir comment je peux naviguer dans un site sécurisé par une page avec login et mot de passe grâce aux socket (httpWebRequest) ?J' Thread et erreur [ par sheorogath ] bjr a tous , je vien d'un environnement java et ayant envi de me changer les idee j'ai decider d'essayer de faire passe une de mes programme java en c Probleme: client IRC multi-threading [ par Skurcey ] Quand je me connecte a un serveur irc, je recois un peu de reponse du serveur puis j ai une erreur qui me dis que un thread ne peux etre execute depui


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.