Program Tip

Python 스크립트에서 사용할 암호를 안전하게 저장

programtip 2020. 11. 2. 08:23
반응형

Python 스크립트에서 사용할 암호를 안전하게 저장


중복 가능성 :
사용자 이름과 비밀번호를 Python에 안전하게 저장해야합니다. 옵션은 무엇입니까?

일부 Python 스크립팅에서 사용할 암호를 안전하게 저장하는 방법을 찾고 있습니다. 나는 다른 것에 로그인 할 것이며 스크립트 자체에 암호를 일반 텍스트로 저장하고 싶지 않습니다.

대신 나는 그 암호를 안전하게 저장할 수있는 것이 있는지 궁금해서 처음에 스크립트에 입력 할 수있는 마스터 암호와 같은 것을 사용하여 검색했습니다.


마스터 키를 직접 알아 두십시오. 하드 코딩하지 마십시오.

사용 py-bcrypt(bcrypt), 강력한 해싱 기술은 암호를 직접 생성합니다.

기본적으로 할 수 있습니다 (아이디어 ...)

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)

소금과 해시 된 암호를 어딘가에 저장하여 암호를 사용해야 할 때마다 암호화 된 암호를 읽고 다시 입력하는 원시 암호에 대해 테스트합니다.

이것은 기본적으로 요즘 로그인이 작동하는 방식입니다.


일반적으로 secrets.py다른 Python 스크립트와 별도로 저장되며 버전 제어가 없습니다. 그런 다음 필요할 때마다 from secrets import <required_pwd_var>. 이 방법을 사용하면 자체적으로 재창조하지 않고도 운영 체제에 내장 된 파일 보안 시스템에 의존 할 수 있습니다.

Base64인코딩 / 디코딩을 사용 하는 것은 완전히 안전하지는 않지만 암호를 난독 화하는 또 다른 방법입니다.

추가 정보 -Python 스크립트에서 비밀번호 숨기기 (안전하지 않은 난독 화만 해당)


안전한 방법은 AES로 민감한 데이터를 암호화하는 것이며 암호화 키는 AES의 암호화 키를 암호화 / 복호화하는 데 사용되는 마스터 비밀번호 인 PBE (암호 기반 키 파생 기능)에 의해 파생됩니다.

마스터 비밀번호-> 보안 키-> 키로 데이터 암호화

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)

salt / iv / passphrase를 저장하고 동일한 salt / iv / passphase를 사용하여 해독하십시오.

Weblogic은 유사한 접근 방식을 사용하여 구성 파일의 암호를 보호했습니다.

참고 URL : https://stackoverflow.com/questions/12042724/securely-storing-passwords-for-use-in-python-script

반응형