101 votes

Stockage sécurisé des mots de passe pour une utilisation en python script.

Duplicata possible :
J'ai besoin de stocker de manière sécurisée un nom d'utilisateur et un mot de passe en Python, quelles sont mes options ?

Je cherche un moyen de stocker de manière sécurisée les mots de passe que j'ai l'intention d'utiliser dans certains scripts Python. Je vais me connecter à différentes choses et je ne veux pas stocker les mots de passe en texte clair dans le script lui-même.

Au lieu de cela, je me demandais s'il existe quelque chose qui soit capable de stocker en toute sécurité ces mots de passe et de les récupérer en utilisant quelque chose comme un mot de passe principal que je pourrais entrer dans le script au début.

46voto

CppLearner Points 3982

Connaissez vous-même la clé maîtresse. Ne le codez pas en dur.

Utilisez py-bcrypt (bcrypt), puissante technique de hachage pour générer soi-même un mot de passe.

En gros, vous pouvez faire ceci (une idée...)

import bcrypt
from getpass import getpass
master_secret_key = getpass('tell me the master secret key you are going to use')
salt = bcrypt.gensalt()
combo_password = raw_password + salt + master_secret_key
hashed_password = bcrypt.hashpw(combo_password, salt)

enregistrez le sel et le mot de passe haché quelque part, de sorte qu'à chaque fois que vous devez utiliser le mot de passe, vous lisez le mot de passe crypté et vous le testez par rapport au mot de passe brut que vous entrez à nouveau.

C'est ainsi que la connexion devrait fonctionner de nos jours.

21voto

Pratik Mandrekar Points 2805

J'ai généralement un secrets.py qui est stocké séparément de mes autres scripts python et n'est pas sous contrôle de version. Ensuite, chaque fois que cela est nécessaire, vous pouvez faire from secrets import <required_pwd_var> . Ainsi, vous pouvez vous appuyer sur le système de sécurité des fichiers intégré au système d'exploitation sans avoir à réinventer le vôtre.

Utilisation de Base64 L'encodage/décodage est aussi une autre façon d'obscurcir le mot de passe, bien qu'il ne soit pas complètement sûr.

Plus ici - Cacher un mot de passe dans un script python (obfuscation non sécurisée uniquement)

10voto

Ted Shaw Points 1355

Le moyen le plus sûr est de crypter vos données sensibles par AES et la clé de cryptage est dérivée par la fonction de dérivation de clé basée sur un mot de passe (PBE), le mot de passe principal utilisé pour crypter/décrypter la clé de cryptage pour AES.

mot de passe maître -> clé sécurisée-> crypter les données par la clé

Vous pouvez utiliser pbkdf2

from PBKDF2 import PBKDF2
from Crypto.Cipher import AES
import os
salt = os.urandom(8)    # 64-bit salt
key = PBKDF2("This passphrase is a secret.", salt).read(32) # 256-bit key
iv = os.urandom(16)     # 128-bit IV
cipher = AES.new(key, AES.MODE_CBC, iv)

assurez-vous de stocker le sel/iv/passphrase, et décryptez en utilisant le même sel/iv/passphase.

Weblogic utilise une approche similaire pour protéger les mots de passe dans les fichiers de configuration.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X