Я написал следующий скрипт Python для получения ключа из пароля с использованием hashlib.scrypt, а затем передачи ключа в шестнадцатеричной кодировке в gpg. Скажите, пожалуйста, является ли это безопасным подходом. Это для моих личных резервных копий, и я пытаюсь собрать что-то простое, надежное и не требующее слишком большой специальной разработки.
Использую scrypt, потому что gpg использует s2k с SHA512, который для насколько мне известно, это всего лишь алгоритм хеширования, а не KDF (просветите меня, если я что-то упускаю).
def encryptFile(tarFile):
N = 2**16
R = 8
P = 2
mem = N * P * R * 65
salt = "some random hardcoded salt"
passPhrase = "user provided password"
key = scrypt(password=passPhrase, salt=salt, n=N, r=R, p=P, maxmem=mem).hex()
subprocess.run(
[
"gpg",
"--no-symkey-cache",
"--verbose",
"-o",
gpg_output_file,
"--s2k-mode",
"0", # using hexadecimal key derived from password using scrypt
"--symmetric",
"--s2k-cipher-algo",
"AES256",
"--pinentry-mode",
"loopback",
"--passphrase",
key,
tarFile,
]
)
Подробнее здесь: https://stackoverflow.com/questions/790 ... on-correct