GPG с PowerShell - пароль безопасности

Я использую gnupg для шифрования и дешифрования данных с помощью сценария powershell, и проблема в том, что в коде есть парольная фраза. Возможно, это не лучшее решение. Какой самый лучший и безопасный способ предоставить фразу-пароль для сценария? Спасибо.

C:\"Program Files"\GNU\GnuPG\gpg2.exe --passphrase mypassphrase --batch --output C:\Z\$decrypted_file.xls --decrypt C:\_Zo\$encrypted_file

1 ответ

Решение

Вы можете зашифровать пароль или пароль на диске.

Следующее решение использует компьютер в качестве пользователя.

Следующие два сценария сборки.NET платформы securot.

Для серверных компьютеров можно защитить секрет с помощью идентификатора компьютера. Этот код использует тот факт, что любой человек, который может запустить код на компьютере, может получить доступ к паролю. Таким образом, файл пароля может быть передан по сети, он может быть декодирован только самим сервером. Вы можете добавить ACL в файл паролей, чтобы он мог быть прочитан только группой пользователей.

Шифрование (необходимо выполнить на сервере):

# Mandatory Framework .NET Assembly 
Add-Type -assembly System.Security

# String to Crypt
$passwordASCII = Read-Host -Prompt "Entrer le mot de passe"

# String to INT Array
$enc = [system.text.encoding]::Unicode
$clearPWD_ByteArray = $enc.GetBytes( $passwordASCII.tochararray())

# Crypting
$secLevel = [System.Security.Cryptography.DataProtectionScope]::LocalMachine
$bakCryptedPWD_ByteArray = [System.Security.Cryptography.ProtectedData]::Protect($clearPWD_ByteArray, $null, $secLevel)

# Store in Base 64 form
$B64PWD_ByteArray = [Convert]::ToBase64String($bakCryptedPWD_ByteArray)
Set-Content -LiteralPath c:\Temp\pass.txt -Value $B64PWD_ByteArray

Декодирование:

# Mandatory Framework .NET Assembly
Add-Type -assembly System.Security

# Getting from Base 64 storage
$resCryptedPWD_ByteArray = [Convert]::FromBase64String((Get-Content -LiteralPath c:\Temp\pass.txt))

# Decoding
$secLevel = [System.Security.Cryptography.DataProtectionScope]::LocalMachine
$clearPWD_ByteArray = [System.Security.Cryptography.ProtectedData]::Unprotect( $resCryptedPWD_ByteArray, $null, $secLevel )

# Dtring from int Array
$enc = [system.text.encoding]::Unicode
$enc.GetString($clearPWD_ByteArray)
Другие вопросы по тегам