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

cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 5 juin 2006 à 12:44
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 16 juin 2006 à 11:36
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

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 juin 2006 à 13:00
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# 
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
5 juin 2006 à 13:46
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
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 juin 2006 à 13:50
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# 
0
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
5 juin 2006 à 14:08
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++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
5 juin 2006 à 14:41
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.
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
6 juin 2006 à 09:58
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
6 juin 2006 à 20:41
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
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
7 juin 2006 à 11:22
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
7 juin 2006 à 15:24
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. :/
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
7 juin 2006 à 15:45
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
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
16 juin 2006 à 11:36
Voila, j'ai déposé une source suite au message de Litunore ICI traitant du cryptage du fichie de configuration.
f.colo
0
Rejoignez-nous