Où et comment souvegarder des mots de passe en toute sécurité?

Signaler
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
-
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
-
Bonjour,

je réalise une application de gestion de caméra IP.
Pour se connecter au flux des caméras, l'utilisateur doit donner un nom d'utilisateur et un mot de passe par caméras.
Je souhaiterai, une fois que l'utilisateur à entré ces informations, les sauvagarder pour le prochain lancement de l'application.
Mais les mots de passe sont des données sensibles et je ne veux pas les mettre dans un fichier .ini.
Actuellement, je les met dans l'isolateStorage dans un fichier xml. Donc, si quelqu'un va dans ce répertoire (j'ai pas réussi à le trouver :) ) il n'aura qu'a ouvrir le fichier xml et voir les mot de passe en clair. Ce niveau ne sécurité est insufidant.

Alors je me demande bien comment faire pour sauvegarder les mot de passe car il semblerait qu'il n'est pas possible de modifier le fichier .exe de l'application en cour d'utilisation, que de les mettre en ressource n'est pas très sécurisé également, alors je en sais vraiment plus comment faire là.

Quelqu'un aurait il une solution?

f.colo

11 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Salut

Tu pourrais, basiquement, enregistrer seulement la signature MD5 ou SHA de ton mot de passe, comme ca il n'existera pas en clair.
Mx
MVP C# 
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
2
Mais une signature consiste juste à vérifier que les données sont identique.
Ce n'est pas réversible, à partir du hash MD5 ou SHA je ne peux pas retrouver le mot de passe si?
En fait, dans mon cas particulier, pour récupérer le flux il faut une authentification par htaccess, donc j'utilisase un credential pour ma requette HTTP, il me faut donc, en interne de mon programme, le mot de passe en clair.
Je ne comprends pas comment utiliser ta methode par signature MD5 ou SHA. Pourrais tu m'expliquer ce que tu voulais me dire?

f.colo
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Non, tu ne pourras pas retrouver le mot de passe. Et c'est le but ;)
L'utilisateur enregistre son mot de passe -> Tu hashes son entrée, et tu l'enregistres.

Plus tard, l'utilisateur veut se connecter : il tape son mot de passe.
Tu hashes le mot de passe, et tu le compare au hashes que tu as enregistré.
Meme signature : Meme mot de passe (ou alors vraiment pas de bol). Pas la meme signature, mauvais mot de passe.

Par contre, si tu as obligatoirement besoin du mot de passe en clair, alors la c'est sur que ca ne marchera pas.

Mx
MVP C# 
Messages postés
492
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
16 mai 2007
11
Salut
Ce que tu peux faire, c'est "coder" le mot de passe (avec une méthode connue ou une que tu inventes toi-même) et puis le stocker dans le registre.
Pour le récupérer, tu vas le rechercher dans le registre et le décode et obtiendras ainsi le mot de passe en clair.

A++
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
Salut, pour XP par exemple les fichiers sont dans un sous répertoire de "Documents and Settings\user\Application Data\..". Je pense pas qu'un mécanisme de protection des données soit dispo automatiquement pour le stockage isolé contrairement au fichier de configuration. Je suppose que tu utilises un IsolatedStorageFileStream alors regardes si tu peux crypter tes données avec un CryptoStream.
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
2
Effectivement, j'utilise un IsolatedStorageFileStream et je crée un fichier xml avec toutes les valeurs à sauvegarder (@IP,path,user,pass,nbImg/s par caméra + des parametre pour la form en général) mais je ne trouve pas ça très pratique le xml pour le chargement.
Je vais me renseigner pour le CryptoStream que je ne connais pas.

Par contre, tu indique:
un mécanisme de protection des données soit dispo automatiquement pour
le stockage isolé contrairement au fichier de configuration
Qu'entends tu par 'fichier de configuration'? le fichier monappli.exe.config ??? Si c'est le cas, je ne l'ai jamais utilisé mais il semblerai que ce soit de l'XML egalement (d'après ce que j'ai lu si je ne me trompe pas).

Je vais également voir pour coder le mot de passe, je ne sais pas ce qu'il y a de dispo comme algorithme de codage en natif en C#, pour coder le nom d'utilisateur avec un mot de passe fixe, et ensuite coder le mot de passe avec le resultat du codage du nom d'utilisateur.

Merci pour votre aider, je vais tester tout ca et je reviens :)

f.colo
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
Regardes en page 2 du lien, je montre comment écrire le fichier de config et comment utiliser la classe ConfigurationManager.

Il y'a un mécanisme pour protéger les passwords dans le fichier *exe.config, mais j'ai pas encore étudié le truc.

http://www.csharpfr.com/infomsg_APP-CONFIG_750223.aspx
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
2
Je viens de voir ton bout de code mais je ne comprend pa pkoi mais mon SharpDevelop et mon VisualStudio ne connaisse rien du namespace System.Configuration .
j'ai bien mon using System.Configuration;
mais ta ligne Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); est considérée comme invalide.
Pourtant dans le MSDN ils donne seulment ce namespace pour utiliser le ConfigurationManager.

Serais me dire ce que je fais de mal?

f.colo
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
Tu as oublié d'ajouter la référence  system.configuration.dll à ton projet.

Le fichier de configuration c'est super pratique avec la classe ConfigurationManager par contre si tu as plusieurs utilisateurs tu es obligé de sauvegarder leur données dans le même fichier, ça c'est pas génial. :/
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
2
Effectivement, ca marche mieux avec la bonne référence :).
Je teste tout ca et je vais voir pour le mécanisme de protection de password dans le *exe.config
Je vous riens au courant et valide dès que ca fonctionne :)

f.colo
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
2
Voila, j'ai déposé une source suite au message de Litunore ICI traitant du cryptage du fichie de configuration.
f.colo