Назад | Перейти на главную страницу

Лучший скрипт шифрования / дешифрования PGP / GPG

Есть ли хороший Python по умолчанию или простой сценарий оболочки, который я могу использовать для шифрования и дешифрования файлов через PGP / GPG? Я бы запускал этот скрипт каждые 5 минут.

Вам не нужен симметричный шифр

Если вам нужно запустить шифрование автоматически, вы не хотите использовать симметричный шифр с парольной фразой (это то, что gpg -ac делает). Хранить кодовую фразу в скрипте или в cron недопустимо и бессмысленно (серьезно, это звучит грубо, но вы также можете его испортить).

Если вы используете шифрование, недостаточно просто «изменить разрешения» сценария. Если бы это было так, вы могли бы просто изменить права доступа к данным, которые хотите скрыть. Шифрование на этом уровне, очевидно, предназначено для того, чтобы не дать тем, кто получил доступ к вашей учетной записи (скорее всего, злонамеренно), прочитать данные, как только они получат доступ.

В этом случае вам нужна криптография с открытым ключом. Вы генерируете закрытый ключ (который снова зашифровывается симметричным шифром с паролем) и открытый ключ. Открытый ключ можно распространять где угодно. Кто угодно может зашифровать данные, которые вы можете прочитать своим закрытым ключом. Никто не должен иметь доступа к вашему закрытому ключу. Так что для того типа шифрования, который вам нужен, он идеально подходит. Вы можете хранить свой открытый ключ на сервере и с его помощью зашифровать все свои данные. Если у злоумышленника есть ваш открытый ключ и ваши зашифрованные данные, он ничего не сможет сделать.

Ваш закрытый ключ должен быть той загадкой, которую всегда не хватает потенциальному злоумышленнику. Вам нужно это скрыть. то есть зашифровать данные, которые вы можете прочитать, легко. Расшифровать это должно быть сложно. С симметричным шифром сложность обоих одинакова (если вы хотите думать об этом в этих терминах, это, вероятно, не самая лучшая аналогия).

GPG делает общедоступную криптовалюту относительно безболезненной, но в первую очередь вам нужно сгенерировать пару ключей (это делается не на вашем сервере, а на вашем рабочем столе или в другом безопасном месте, вы счастливы, имея свой закрытый ключ):

$ gpg --gen-key

Просмотрите вопросы там.

Затем вы хотите экспортировать свой открытый ключ GPG, скопировать и вставить его на свой сервер:

$ gpg --list-keys
$ gpg --armor --export me@mydomain.com > pub.key

Скопируйте pub.key на свой сервер и затем импортируйте с помощью:

$ gpg --import pub.key

Если вы в первую очередь рассматриваете возможность использования шифрования, очевидно, потому, что у вас есть конфиденциальные данные. Подчеркну еще раз: вам нужно серьезно подумать о том, как вы шифруете эти данные, поскольку это требует больших усилий без всякой выгоды, если вы просто используете симметричный шифр, в котором пароль может быть доступен тривиально.

Последующий crontab линия вызовет secretfile быть зашифрованным каждые 5 минут с указанной парольной фразой, не раскрывая пароль для ps aux и аналогичные запросы. Конечно, вы, вероятно, также захотите что-то сделать с исходным файлом и зашифрованным результатом, но это зависит от вас.

*/5 * * * * gpg -c --passphrase-fd 3 secretfile 3<<<"passphrase"
#!/bin/bash
gpg -ac passphrase="secret" < $1

Хотя, кажется, нет необходимости делать его отдельным скриптом.