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

Python Discussion :

Règle de bonne pratique pour les mots de passe


Sujet :

Python

  1. #1
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2011
    Messages : 68
    Par défaut Règle de bonne pratique pour les mots de passe
    Bonjour,
    je n'ai rien trouvé qui me convienne tant sur le forum que dans la FAQ.
    Ma question est comment protéger efficacement un mot de passe écrit en dur dans un code.

    En effet la première chose que j'ai vu est d'utiliser un fichier de config (ui sera appelé) dans lequel est présent le mot de passe afin de pouvoir redistribuer facilement le programme (sur ce point je comprends).
    Par contre, existe t'il un quelconque moyen que le mot de passe soit stocké de manière sécurisée, autrement dit pas en clair.

    En effet si une tierce personne accède à l'ordinateur/le serveur où se trouve le code python et donc le mot de passe, celui-ci étant en clair, il n'est absolument pas protégé.

    Merci pour votre aide.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Salut,

    Potentiellement, vous avez ce problème avec n'importe quel langage.
    Le plus simple est de stocker le mot de passe dans un fichier utilisateur avec la protection système qui empêche aux autres utilisateur l'accès à ce fichier. De ce fait, ce sera de la responsabilité de l'utilisateur de verrouiller son PC lorsqu'il va à la machine à café, d'avoir un mot de passe un peu compliqué et de le changer souvent.
    note: vous pouvez aussi "chiffrer" le mot de passe contenu dans le fichier histoire de compliquer la tâche de ceux qui pourraient le dérober (et de donner du temps à l'utilisateur d'en changer s'il pense qu'il est compromis).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2011
    Messages : 68
    Par défaut
    Ok, je comprends.
    Toutefois, le problème se pose aussi lorsque le support de stockage (SD, disque dur) est mis sur un autre ordinateur en tant que support externe.
    A ma connaissance, la lecture des fichiers est possible et donc celle du mot de passe enregistré aussi.

    Par exemple, étant sur windows, je suis capable de lire des partitions windows présentes sur d'autres disque dur et ici dernièrement j'ai pu récupérer des fichiers d'une carte SD Linux avec permissions sans aucun problème.

    Je suis donc assez étonné que ce soit aussi simplement possible.

    Par exemple, dans le cas de tâches planifiées Windows le mot de passe de l'utilisateur est stocké a priori de façon sécurisée et permet de lancer des tâches.

    EN loccurence j'essaye me connecte à un FTP via une tâche planifié sous linux et j'aimerais que le mot de passe FTP soit protégé. Aucun moyen?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par totow Voir le message
    Toutefois, le problème se pose aussi lorsque le support de stockage (SD, disque dur) est mis sur un autre ordinateur en tant que support externe.
    A ma connaissance, la lecture des fichiers est possible et donc celle du mot de passe enregistré aussi.
    Pour pallier le vol d'un disque dur, on peut chiffrer tout le disque... et rendre ce chiffrement "transparent" aux applications. De toutes façons, vous exprimez des problèmes de sécurité des données qu'on adresse menace par menace avec un niveau adapté aux informations à protéger....
    Mais tout cela est sans rapport avec le langage Python ou la programmation.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2011
    Messages : 68
    Par défaut
    En l'occurrence, je me demandais s'il n'y avait pas un moyen en python de chiffrer le document qui contient le mot de passe tout en rendant le programme fonctionnel

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par totow Voir le message
    En l'occurrence, je me demandais s'il n'y avait pas un moyen en python de chiffrer le document qui contient le mot de passe tout en rendant le programme fonctionnel
    Je vous suggérais de ne chiffrer que le mot de passe. Mais si vous voulez chiffrer tout le fichier...
    Le plus important reste que ce fichier soit dans les répertoires utilisateurs et suffisamment protégé pour ne pas être accessible par n'importe qui trop facilement.


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    A mon avis, la solution la plus simple est:
    - on ne stocke le bon mot de passe que sous forme cryptée (jamais en clair), avec un algorithme de cryptage qui ne permet pas le retour en arrière (hashage).
    - à l'ouverture de session, l'utilisateur donne son mot de passe, et celui-ci est crypté avec le même algorithme, et ce sont les 2 signatures cryptées qui sont comparées.

    Dans ce cas, l'accès indiscret au bon mot de passe crypté ne sert pas à grand chose. On peut, bien sûr, empêcher en plus la lecture du fichiers des mots de passe cryptés, si l'OS en est capable.

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Dans ce cas, l'accès indiscret au bon mot de passe crypté ne sert pas à grand chose. On peut, bien sûr, empêcher en plus la lecture du fichiers des mots de passe cryptés, si l'OS en est capable.
    Si l'OS ne sait pas protéger l'accès aux fichiers, on peut remplacer le script Python qui saisi le mot de passe et le modifier pour stocker quelque part en clair dès que l'utilisateur aura entré un mot de passe valide.
    Ce qui rendra le chiffrement facilement contournable.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2011
    Messages : 68
    Par défaut
    Merci
    Je suis capable de hasher mon mot de passe dans le fichier python ce n'est pas un problème, comme conseillé. Mais ensuite comment l'utiliser?

    En effet, par exemple, voici deux cas sur lesquels je suis bloqué
    1. je me connecte à une page web qui nécessite un couple login/pwd due à un fichier .htaccess, je dois donc communiquer le mot de passe à cette page web mais le mot de passe est hasher et à priori je ne peux pas le "dé"hasher. Car ici ce n'est pas moi qui compare le mot de passe.

    2. je me connecte à un serveur ftp via login/mdp pour y envoyer un fichier mais le mot de passe hashé ne me convient pas.

    Il est évidemment possible que j'aie loupé une partie de la compréhension de vos réponses

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par totow Voir le message
    Il est évidemment possible que j'aie loupé une partie de la compréhension de vos réponses
    Il faut savoir déchiffrer pour pouvoir expédier le mot de passe en clair (sur une connexion sécurisée).
    Où est le problème?
    note: je n'ai jamais pensé que vos mots de passe allaient servir à authentifier les utilisateurs du système (ce à quoi pourrait s'appliquer la logique Tyrtamos).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2011
    Messages : 68
    Par défaut
    Ben justement, comment puis-je déchiffrer le mot de passe pour l'envoyer en clair?
    Le hash me permet juste de faire une comparaison.
    Si je crypte le mot de passe pour le décrypter, j'utilise a priori une passphrase ou autre que je dois stocker et du coup c'est cette passphrase qui est en clair quelque part.

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par totow Voir le message
    Si je crypte le mot de passe pour le décrypter, j'utilise a priori une passphrase ou autre que je dois stocker et du coup c'est cette passphrase qui est en clair quelque part.
    C'est ici que devient incontournable la protection d'accès aux fichiers apportée par l'environnement système. Le but d'un système d'exploitation est de définir des droits et des permissions pour accéder aux différentes ressources informatiques que sont CPU, mémoire, fichiers,...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2011
    Messages : 68
    Par défaut
    Ok, donc rien n'est natif en python. Merci beaucoup pour ces précisions.
    Auriez vous des connaissances car attribuez des droits à un fichier, je sais le faire mais force est de constater que sur un système Ubuntu,Debian ou Windows, lorsque j'enlève le support de stockage je parviens à lire ces fichiers sur un PC tierce.

    Dans le cas où je dois crypter le fichier, il faut que python puisse le décrypter et du coup comment faire car j'ai l'impression que pour cela il est nécessaire d'avoir de nouveau un mot de passe qui pour que la tache s'exécute sans personne doit être stocké quelque part (et j'ai l'impression que je tourne en rond.

  14. #14
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par totow Voir le message
    Si je crypte le mot de passe pour le décrypter, j'utilise a priori une passphrase ou autre que je dois stocker et du coup c'est cette passphrase qui est en clair quelque part.
    oui, et il n'y a pas de réelle solution à ce problème, on considère que l'application fait ce qu'elle peut; si l'application peut accéder à la donnée en clair un pirate le peut aussi, c'est très simple.

    une solution pourrait consister au lancement du programme à rentrer la passphrase permettant de déchiffrer le fichier de données de façon interactive -laquelle doit être assez balaise pour avoir un intérêt- quant au fichier on a coutume de chiffrer avec un algorithme symétrique suffisamment robuste comme AES256 par exemple (et on oubliera pas de del les variables qui contiennent des mots de passe après chaque utilisation, voire mieux)

    c'est contraignant mais une relative sécurité est à ce prix, et entre ça et rien du tout il y a la réalité des choix et contraintes du développeur...

  15. #15
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par totow Voir le message
    je sais le faire mais force est de constater que sur un système Ubuntu,Debian ou Windows, lorsque j'enlève le support de stockage je parviens à lire ces fichiers sur un PC tierce.
    "j'enlève le support de stockage" demande un accès physique ou des droit d'admin. s'il est en réseau.
    Si vous ne faites pas confiance à vos admin., les données sensibles ne se réduisent pas au mot de passe de votre application...
    note: le programmeur Python ne résoudra pas tous les problèmes de sécurité d'un environnement informatique.... Et il est préférable qu'il n'essaie même pas: il n'en a pas les moyens et ce n'est pas sa responsabilité.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  16. #16
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2011
    Messages : 68
    Par défaut
    Ce n'est pas une confiance dans l'admin mais plutôt dans le vol d'un PC.

    Je sais que lors d'un vol, il faut modifier ses mot de passe mais lorsqu'il s'agit par exemple d'un raspberry pi qui est utilisé en autonome et qu'il disparait, le temps entre le moment où il s'est volatilisé et où on s'en rend compte peut durer quelques heures/jours/semaines en fonction de l'application.

    Du coup j'aimerais que les mots de passes stockés en dur dans les applications python ne puissent pas être consultés.

  17. #17
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par totow Voir le message
    Je sais que lors d'un vol, il faut modifier ses mot de passe mais lorsqu'il s'agit par exemple d'un raspberry pi qui est utilisé en autonome et qu'il disparait, le temps entre le moment où il s'est volatilisé et où on s'en rend compte peut durer quelques heures/jours/semaines en fonction de l'application.

    Du coup j'aimerais que les mots de passes stockés en dur dans les applications python ne puissent pas être consultés.
    Qu'est ce qui vous oblige à stocker des mots de passe, qui plus est dans un fichier?
    Vous pourriez accéder aux sites distants sans mot de passe (en limitant le droit d'accès). En cas de vol du mot de passe, c'est quand même ce site distant qui sera en danger.
    Comme ces mots de passe sont utilisés pour accéder à des ressources distantes, vous pourriez télécharger au démarrage (en mémoire vive) des informations telles que les mots de passe.
    Ce que j'essaie de vous dire c'est que vous ne pouvez pas traiter le problème côté programmation. Vous devez le penser comme architecture (quels rôles y jouent les différentes pièces côté sécurité notamment).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  18. #18
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 401
    Par défaut
    Bonjour,

    Ton raspberry sera connecté à quel type de composant non transportable lors d'un vol ?
    Si ce composant possède un id ou autre données qui lui sont propres, peut-être devrais-tu récupérer une partie de ta clef de cryptage chez lui, comme ça si on te vol ta framboise, bah, le voleur ne pourra pas avoir les mots de passe aussi facilement que d'aller lire tes fichiers...

    C'est pas du sure à 100% mais ça augmente le challenge.

  19. #19
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2011
    Messages : 68
    Par défaut
    Le Rpi est connecté à rien sauf au WiFi.
    Il y a par exemple un fichier python qui se connecte à un ftp pour envoyer un BU (le tout est lancé par un cron à intervalle régulier)
    Dans ce fichier il y a actuellement le mot de passe nécessaire pour se connecter au FTP.
    Au temps je comprends que cela ne se traite pas par la programmation mais ce que je ne comprends pas c'est comment faire en sorte que le fichier python ne soit pas lisible par un tiers!

    Cela dit je ne comprends pas non plus la clé de cryptage...

    Désolé de ne pas vous comprendre.
    Je pense donc que le sujet est clos mais que je dois en ouvrir un dans une autre catégorie orientée sécurité. Mais que me conseillez vous de demander exactement car je suis perdu.

  20. #20
    Membre éclairé Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Par défaut
    comment faire en sorte que le fichier python ne soit pas lisible par un tiers!
    Le gestion des droits sur le fichier python vous permet d'autoriser ou non une personne à lire, écrire, exécuter votre fichier python.
    Etant donné que vous êtes sur un RPI, vous êtes sur une distribution Linux et cela se fait très simplement avec la commande chmod. Mais rapprochez vous de la documentation afin de bien comprendre comment tout ça fonctionne.

Discussions similaires

  1. [2.x] Les bonnes pratiques pour les journaux
    Par KLeMiX dans le forum Symfony
    Réponses: 3
    Dernier message: 05/04/2013, 13h18
  2. Bonnes pratiques pour les IHM
    Par Nebulix dans le forum Débats sur le développement - Le Best Of
    Réponses: 15
    Dernier message: 27/01/2011, 08h01
  3. Réponses: 2
    Dernier message: 07/01/2010, 12h41
  4. Bonnes pratiques pour les privilèges utilisateurs ?
    Par germaino_0 dans le forum Administration
    Réponses: 2
    Dernier message: 25/11/2008, 17h54

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