7
votes

Stockage des mots de passe avec python

J'ai un programme que j'écris à Python et j'ai la nécessité de stocker des mots de passe. Ces mots de passe seront les mots de passe des serveurs FTP, il est donc important qu'ils ne soient pas simplement visibles à tous. Cela signifie également que je ne peux pas stocker un hasch non réversible du mot de passe comme si vous seriez sur un serveur Web, car je ne vérifie pas si quelqu'un saisit le bon mot de passe, je vais simplement relancer le mot de passe à quelqu'un d'autre.
Alors, quelle est la meilleure façon de stocker des mots de passe? J'utilise Python et le programme sera Linux uniquement.


1 commentaires

Voir Stackoverflow.com/questions/721436/... .


5 Réponses :


2
votes

Selon la distribution, vous pouvez probablement le stocker dans le porte-clés si on est disponible.

Sinon, jetez un coup d'œil à certains des algorithmes de cryptage disponibles (PGP / GPG, DES, DES, AES, etc.) et de leurs ports / modules Python, mais c'est des trucs difficiles que vous avez à obtenir. < / p>


4 commentaires

Oui Utilisez un service d'OS fourni plutôt que d'écrire le vôtre.


Si vous utilisez PGP ou AES ou autre, vous n'avez pas à stocker un mot de passe dans le script Python pour décoder les mots de passe, alors une personne pourrait simplement ouvrir le fichier source Python et lire la clé pour décoder le mot de passe?


Pas si vous faites ce mot de passe une entrée utilisateur. Un mot de passe unique pour se souvenir de tout cela :-) ou vous pouvez également utiliser des bornes de clés sans phrases. Je ne sais pas à quel point sa sécurité a besoin de sa sécurité.


Si le mot de passe est userinput ... Ensuite, vous auriez besoin de stocker le plainte dans le fichier afin que l'utilisateur puisse alors le chiffrer avec leur clé personnalisée.



2
votes

Il y a la manière pratique et précaire: il suffit de les stocker en tant que texte en clair et si vous utilisez vraiment FTP (et non, par exemple SFTP), ils seront aussi sécurisés que la machine qu'elles sont hébergées (ce qui signifie pas vraiment très en sécurité. ). FTP a été écrit à un moment où l'envoi d'un mot de passe en clair sur le fil a été considéré comme "suffisamment sûr"; Ces jours sont partis. Même encoder les mots de passe en plainte dans la source Python ne vous aide pas vraiment comme à un moment donné que vous devez les désencéder.

Les méthodes sécurisées nécessitent un peu plus de configuration. Voici un Tutoriel décent , je m'attends à ce qu'il y en ait mieux.


0 commentaires

6
votes

Vous pouvez utiliser l'anneau de clé du système, par exemple. Bague à clé GNOME ou portefeuille KDE.

Il y a un module Python appelé KeyRing qui prend en charge plusieurs fournisseurs de clés. Je l'ai seulement essayé sur Windows, où cela ne fonctionne pas encore correctement. On dirait que le développement n'est pas très actif, mais vous devriez essayer d'essayer. Vous pouvez également essayer le package "python-gnomebyring" qui est spécifique à gnome et plus bas niveau.


3 commentaires

Merci, c'est exactement ce que je cherche pour sécuriser mes scripts python :)


J'ai donné KeyRing un spin rapide et il semble fonctionner parfaitement. Pourriez-vous revoir votre réponse, soit pour prendre en charge plus fermement keyring (ou un meilleur module si vous en avez trouvé un), ou de plus en détail spécifiquement ce que vous avez trouvé ne fonctionne pas avec elle?


J'ai testé KeyRing sur OS X et Windows et il semble fonctionner parfaitement sur chaque plate-forme. J'ai également vérifié la mise en œuvre (puisqu'il s'agit de python pur, c'est assez facile) et je ne peux rien voir à ce sujet.



-4
votes

Je recommanderais hachage Le mot de passe Un hachage est une fonction à sens unique afin de trouver une version texte simple du mot de passe (contrairement à un cryptage).

MD5 est un algorithme que j'aime et est déjà implémenté dans Python. Vous pouvez toujours ajouter un sel au hasch comme abdasswordabda où le mot de passe est le mot de passe. Ensuite, stockez le hachage dans un fichier ou une base de données et il suffit de le hacher avant qu'il ne soit coché. SHA1 est un autre algorithme de hachage que vous pourriez utiliser.


3 commentaires

Il ne peut pas utiliser les hachages, car il fournit les mots de passe, ne les couvre pas.


Outre l'utilisation d'un PW hachée pour l'authentification ne vous aide pas, car ceux-ci donnent toujours accès à votre DB.


Je n'ai pas voté, mais cette réponse acquise -4 probablement parce que les deux algorithmes de hachage mentionnés sont un mauvais choix pour le hachage de mot de passe. Ils sont trop rapides.



0
votes

Vérifiez NETRC sur Linux (utilisez Man ou Ceci ) puis regardez Ce module Python

Si la NETRC dispose des informations appropriées, vous pouvez utiliser FTP à la ligne de commande sans entrer l'utilisateur et le mot de passe - ils sont recherchés dans le fichier. Certaines choses à noter: Le fichier est restreint à l'utilisateur Lecture / écriture uniquement (0600) ou peut être rejeté par FTP. Si cela fonctionne, vous êtes prêt à l'utiliser de Python.

Une bien meilleure idée serait d'éviter complètement FTP (où le mot de passe est envoyé en texte brut) et utilisez SFTP. Copiez votre clé publique de la machine exécutant le script Python sur chaque machine cible et laissez SSH se connecter automatiquement pour vous dans une mode sécurisée.


0 commentaires