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 :

Chiffrement Déchiffrement string


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Par défaut Chiffrement Déchiffrement string
    Bonjour,

    je fais un programme qui contient une fonction d'envoi de mail.
    Si le serveur SMTP demande authentification, je rentre login+mdp.
    Afin de sauvegarder cette config, je stocke login+mdp dans un fichier .ini que je gère avec ConfigObj (je sais, c'est pas secure, mais le soft n'est pas encore en prod )

    Donc ça fonctionne niquel.
    Je cherche à chiffrer/déchiffrer le mot de passe.

    Grâce à hashlib, j'arrive à le chiffrer, et dans mon .ini je vois bien une chaine de caractères, donc mon mdp est bien chiffré.

    Maintenant, mon bot d'envoi de mail a besoin de déchiffrer ce mot de passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                if auth_value == "True":
                    server.login(login_value, pass_value)
                else:
                    pass
    Car du coup, il essaie de se loger avec mon login et mon mot de passe : a543d1q5fq3f15 (au pif).
    J'ai l'impression que ce que je demande n'est pas faisable (on ne peut déchiffrer un mot de passe ?, seulement comparer deux chaines chiffrées ?)

    J'imagine que même si ce n'est pas possible, il y a une façon de contourner, je ne dois pas être le seul à vouloir stocker un mot de passe chiffré pour le réutiliser. Quelle est la bonne pratique pour chiffrer(crypter?)/stocker/Déchiffrer(Décrypter?)

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Par défaut
    Je pense avoir résolu mon problème.

    Mon principal but, n'étant pas un parano de la sécurité, était simplement de rendre le mot de passe dans mon fichier .ini illisible par un user lambda (un humain quoi ).

    En utilisant base64, j'arrive exactement à ça.
    "Crypter" (ce n'est sûrement pas le terme exact) le mot de passe dans mon fichier .ini, quelqu'un qui l'ouvre ne pourra pas utiliser le mot de passe livré comme ça.

    "Décrypter" lors de l'envoi du couple login/mdp pour m'authentifier sur mon serveur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    encodepwd = base64.b64encode("string")
    donne : Qzdfq5z4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decodepwd = base64.b64decode("Qzdfq5z4")
    donne : string

    Si quelqu'un à une solution plus sécurisée, je la veux bien, car j'imagine que c'est une faille énorme, je n'y connais pas grand chose en crypto, si cela en est ... En attendant je peux avancer sur mon soft.

    Merci

  3. #3
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Une fonction de hashage n’est pas la même chose qu’une fonction cryptographique.

    La première crée une sorte de "signature" correspondant aux données qui lui sont fournies, mais de façon qu’il soit impossible (normalement*!) de reconstituer les dites données à partir du hash. Cela permet par exemple à un site web de ne pas stocker un mot de passe, mais seulement sa signature. Lorsque l’utilisateur revient sur le site et s’identifie, l’appli web n’a qu’à comparer le hash du mot de passe fourni avec celui associé au compte de l’utilisateur, s’ils sont identiques, c’est que le mot de passe est le bon…

    La fonction cryptographique, elle, doit permettre la reconstitution parfaite des données, à partir du chiffre et de la clé. Le problème du base64, c’est que c’est de l’encodage, pas de la cryptographie (pas de clé), donc le premier petit malin venu le «*cassera*» sans peine… Les seuls trucs «*sûrs*», c’est pgp et compagnie (les chiffres historiques genre caesar sont crackables en quelques secondes, aujourd’hui…). Mais il faudra quand même que ton programme fournisse (et donc stocke) le mot de passe pgp… C’est le serpent qui se mord la queue (variante récursive).

    Avis qui vaut ce qu’il vaut, je n’ai rien d’un expert dans ce domaine*!

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Avis qui vaut ce qu’il vaut, je n’ai rien d’un expert dans ce domaine*!
    Menteur

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Par défaut
    Merci de ta réponse, mais je ne me sens pas de me lancer dans la crypto, j'ai un soft à finir et je vais pas me lancer dans l'étude de la crypto, même si je suis sûr que ça m'intéresserai.

    Concernant mon mot de passe en base64, effectivement, j'ai tapé décoder base64 dans google et le premier site m'a retrouvé mon mot de passe. Sécurité 0 à partir du moment ou l'user sait que c'est encodé en base64.

    Donc, avec mes maigres connaissances, et ma non-paranoïa en sécu , j'ai "créé" ma propre sécurité, en encodant avec base64, et en ajoutant à ma chaîne des caractères choisis dans une liste avec le module "Random", comme ça c'est pas possible de le décoder avec base64 :p

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Si quelqu'un à une solution plus sécurisée, je la veux bien, car j'imagine que c'est une faille énorme, je n'y connais pas grand chose en crypto, si cela en est ... En attendant je peux avancer sur mon soft.
    La sécurité est une construction de parades par rapport à des risques qu'on a +/- bien identifie. Ici, j'ai l'impression que le "risque" se résume à la crainte de se faire montrer du doigt parce que le mot de passe est écrit "en clair" dans le fichier de configuration.

    Stocker username et mot de passe "ailleurs" pourrait être une bonne idée ne serait-ce que pour écrire dans un premier temps les fonctions adhoc qui pourraient dans un premier temps se résumer à emballer de base64.b64encode / decode.

    Savoir s'il faut faire plus mérite d'être discuté ouvertement avec "le client", enfin la personne qui pourrait subir les dommages d'un "vol" ou d'une utilisation "hors contexte" du username/mot de passe.
    A défaut, ils pourraient se retourner contre vous en cas de problème et ce n'est certainement pas ce que vous souhaitez.

    Après tout dépend du contexte. Si c'est un sujet sensible, il devrait exister dans l'entreprise sinon un service au moins quelques règles de sécurité à "appliquer" pour ce cas particulier.

    Elles pourraient prescrire le stockage du fichier contenant ces informations dans un répertoire/fichier avec accès restreint, voire leur encodage avec des algos plus costauds.

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

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Par défaut
    Je n'avais absolument pas pensé à l'aspect juridique de la chose, merci d'avoir aborder le sujet.

    Pour l'instant je n'ai pas de craintes, car ce n'est pas un projet que je fais dans le cadre de mon métier, mais à titre perso. Mais j'espère qu'un jour je pourrai l'utiliser en entreprise.

    Quelle librairie me conseillez vous d'utiliser pour le cryptage de texte, ou même de fichier, sachant que je développe sous Windows, pour du Windows.

    Merci encore.

    EDIT : Sinon, une question bête ... Comment font les autres ? Je pense aux logiciels de sauvegarde, qui propose de retenir le mot de passe pour se connecter à une ressource distante, ce genre de choses. Comment doit-on stocker un mot de passe ?

Discussions similaires

  1. Exemple de chiffrement-déchiffrement 128 bits
    Par n5Rzn1D9dC dans le forum Contribuez
    Réponses: 2
    Dernier message: 16/05/2025, 02h28
  2. Chiffrement/déchiffrement très simple
    Par OphyTe dans le forum Sécurité
    Réponses: 4
    Dernier message: 11/12/2014, 00h12
  3. [C#] Chiffrement déchiffrement (RSA)
    Par mybetacompany dans le forum Débuter
    Réponses: 3
    Dernier message: 09/01/2014, 11h58
  4. chiffrement/déchiffrement fichier exercice du tutorial
    Par ghaddou dans le forum Débuter
    Réponses: 3
    Dernier message: 01/04/2012, 14h44
  5. Chiffrement et déchiffrement asymétrique
    Par Tristan Zwingelstein dans le forum Framework .NET
    Réponses: 2
    Dernier message: 23/11/2009, 08h56

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