IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Mot de passe dans une application


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2020
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2020
    Messages : 28
    Par défaut Mot de passe dans une application
    Bonjour,

    Dans une application C#, l'utilisateur doit un moment saisir un mot de passe dans l'application et dans le code, je compare ce que l'utilisateur saisit avec le mot de passe en clair dans la code.

    Je sais que ce n'est pas bien de mettre le code en dur dans le code, et je voulais savoir quelle est la bonne pratique dans ce cas là pour ne pas mettre le mot de passe en claire dans le code ?
    Auriez-vous un exemple précis avec du code ?

    Merci.

  2. #2
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    C'est effectivement une très mauvaise pratique et pour plusieurs raisons. Mot de passe facilement accessible (même une fois le programme compilé), il peut se retrouver dans le gestionnaire de code source et sur des dépôts, etc...

    Le strict minimum a faire est de ne pas comparer le mot de passe, mais le mot de passe hashé avec utilisation d'un sel.

    L'usage d'un sel permet de se prémunir des attaques par table arc-en-ciel (rainbow table attack).

    Le hashage doit être fait avec un algorithme robuste. On oublie donc le MD5 et le SHA1 pour lesquels les attaques par collision sont possibles. On privilégie une solution à base de SHA2, PBKDF2, bcrypt etc.

    Le strict minimum, c'est SHA2(salt + password) car sans doute le plus simple d'utilisation tout en étant un minimum sécurisé.

    Ensuite, il existe bien évidemment d'autres possibilités pour la gestion des mots de passe, comme externaliser le stockage des hash dans un fichier ou BD (avec des restrictions d'accès en lecture !), l'usage de certificat, etc. Mais ce sont de ssolutions qui peuvent être plus lourdes/plus intrusives à déployer sur une architecture déjà existante.

  3. #3
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2020
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2020
    Messages : 28
    Par défaut
    Le sel ajouté au mot de passe est en clair dans le code source ?

    Mais si le sel est connu par une personne, est-ce que cela rend cette technique inefficace ?

    A partir d'un hash, on peut donc par un calcul revenir en arrière et donc trouver le mot de passe, c'est cela ?

    Merci.

  4. #4
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par speedcristal Voir le message
    Le sel ajouté au mot de passe est en clair dans le code source ?

    Mais si le sel est connu par une personne, est-ce que cela rend cette technique inefficace ?
    Ce n'est pas gênant. Le sel n'a pas besoin d'être secret. Son objectif est simplement de rendre inopérant des attaques par tables précalculées (les attaques rainbow table)


    Citation Envoyé par speedcristal Voir le message
    A partir d'un hash, on peut donc par un calcul revenir en arrière et donc trouver le mot de passe, c'est cela ?
    Non.

    Un bon algorithme de hashage rend l'opération inverse extrêmement difficile. Donc, à partir d'un hash, si l'algorithme est robuste, il est quasi impossible de retrouver la valeur d'origine. Pour déterminer si les mots de passe sont bon, il faut donc faire la comparaison sur les hash et non plus sur les mots de passe.

    Ainsi, au moment où un utilisateur souhaite s'identifier, son mot de passe est hashé, et c'est ce hash qui est comparé au hash sauvegardé.

  5. #5
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour François,

    Je suis entièrement d accord avec tout ce que tu as dis.
    Cependant, à mon sens même si le Pwd est hashé il serait assez facile de debugger le binaire (reverse engineering) et remplacer le booléen de comparaison pour que l attaquant puisse se voir donner l acces aux fonctionnalités de l appli.
    A mon sens, en dotnet nous ne devons pas stocker d informations sensibles.
    Le + secure serait en effet d'utiliser un service web. .conjoint a des requêtes web sécurisées....
    Mais il s agit la d un grand débat......

    Cordialement.

  6. #6
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    Cependant, à mon sens même si le Pwd est hashé il serait assez facile de debugger le binaire (reverse engineering) et remplacer le booléen de comparaison pour que l attaquant puisse se voir donner l acces aux fonctionnalités de l appli.
    Un programme .NET n'est pas fait pour faire de l'obfuscation. Donc, de ce point de vue, je ne peux qu'être d'accord avec toi. Comme tu le disais, la sécurisation d'une application .NET est un grand débat (ce n'est pas pour rien que la classe SecureString est dépréciée par exemple, car donnant un faux sentiment de sécurité).

    Je ne faisais que répondre à la question initiale (comment stocker un mot de passe pas en clair dans le code). La question est simple quand on se limite à ce cadre

Discussions similaires

  1. Sécurité des mots de passes dans une application - Java
    Par RcsLogan10 dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2020, 09h59
  2. mot de passe dans une application delphi
    Par Dark_Wishmaster dans le forum Delphi
    Réponses: 1
    Dernier message: 30/04/2007, 20h31
  3. Mot de passe dans une archive
    Par Jibees dans le forum Linux
    Réponses: 1
    Dernier message: 04/12/2006, 23h08
  4. Réponses: 2
    Dernier message: 22/02/2006, 11h18
  5. sécuriser le mot de passe dans une page asp
    Par Redouane dans le forum ASP
    Réponses: 2
    Dernier message: 10/03/2004, 21h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo