💾 Archived View for tilde.team › ~rami › alias_gpg.gmi captured on 2024-05-10 at 11:36:15. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-12-28)

-=-=-=-=-=-=-

~Rami ₪ MANUALS

רמי

SUBJECT: GNUPG: Алиасы для .bashrc

AUTHOR: Rami Rosenfeld

DATE: 09/10/22

TIME: 01.00

LANG: ru, en

LICENSE: GNU FDL 1.3

TAGS: gnu, gnome, software, opensource, linux, system, man, manual, bash, privacy, security, gnupg, pgp, alias

GNUPG: АЛИАСЫ ДЛЯ .BASHRC

INTRO

Два простых алиаса GNUPG для .bashrc, сжимающих данные в текущем каталоге, симметрично шифрующих и уничтожающих исходный архив + расшифровывающих содержимое. Удобны, быстры, позволяют не запоминать длинные команды. Возможная область применения - создание защищенных резервных копий пользовательских файлов и каталогов (с последующим хранением на внешних носителях или в "облаке").

Важно! Игорь Павлов, создатель архиватора 7z, предупреждает в своем руководстве, что 7z НЕ ПОДДЕРЖИВАЕТ сохранение UNIX-свойств owner:group (владелец:группа) отдельных файлов и каталогов. Поэтому Алиас 1 (Crypt) не следует использовать для системных файлов и каталогов, у которых важно сохранить вышеуказанные параметры. Для преодоления этой проблемы я советую предварительно архивировать данные с помощью tar - см. Алиас 2 (tarcrypt), а лишь затем сжимать их 7z и шифровать GNUPG.

NOTE

В .bashrc необходимо разместить следующие алиасы и затем перегрузить Bash.

АЛИАС 1 (crypt)

Симметричное (парольное) шифрование содержимого текущего каталога при помощи GNUPG (алгоритм AES256). Команда максимально сожмет данные во временный архив формата 7z, используя в качестве имени текущую дату и время, затем зашифрует его (запросив пароль) и уничтожит временный архив при помощи 7-проходного перезаписывания командой shred.

alias crypt='7z a -mx=9 $(date "+%Y-%m-%d-at-%T").7z * && gpg2 --symmetric --cipher-algo=AES256 *.7z && shred -n 7 -fuzv *.7z && echo -e "\a\n Данные сжаты и зашифрованы. Временный архив уничтожен"'

Примечание: Не располагайте в текущем каталоге никаких сторонних данных (файлов, каталогов, архивов), которые не предназначены для обработки.

Примечание: Не используйте Алиас 1 для обработки априорно несжимаемых файлов, например мультимедийных: jpg, jpeg, webm, png, mp3, etc - это лишняя потеря времени. Для создания защищенных архивов с ними используйте архиватор tar (он работает без компрессии и практически молниеносно) - см. ниже.

АЛИАС 2 (tarcrypt)

alias tarcrypt='tar --create --file archive.tar --verbose *.* && gpg2 --symmetric --cipher-algo=AES256 archive.tar && shred -n 7 -fuzv archive.tar && echo -e "\a\n Данные архивированы (но не сжаты) и зашифрованы. Временный архив уничтожен"'

Примечание: Для сохранения свойств owner:group сначала создайте архив в формате tar, затем сожмите его архиватором 7z и потом зашифруйте gpg2.

Соответственно, при применении tar необходимые изменения следует внести и в Алиас 3 (decrypt) - см. ниже.

АЛИАС 3 (decrypt)

Расшифрование симметрично зашифрованного файла, полученного в пп. 1 или 2.

Важно! После набора алиаса в командной строке необходимо вставить пробел и имя зашифрованного архива.

По умолчанию файл будет расшифрован в текущий каталог под именем decrypted-archive.*. В ином случае (без указания файла вывода) существует опасность, что в STDOUT отобразится бинарный файл.

alias decrypt='gpg2 --decrypt --output decrypted-archive.7z'

При использовании Алиаса 2 замените в строке выше "decrypted-archive.7z" на "decrypted-archive.tar".

alias decrypt='gpg2 --decrypt --output decrypted-archive.tar'

Примеры

ПРИМЕР 1. Создание архива и его шифрование:

$ ls

-rw-------. 1 20K 2022-10-04 23:10 test_file_1.txt

-rw-------. 1 40K 2022-10-08 15:39 test_file_2.txt

-rw-------. 1 60K 2022-10-08 15:39 test_file_3.txt

$ crypt

Scanning the drive:

3 files, 121143 bytes (119 KiB)

Creating archive: 2022-10-08-at-15:40:13.7z

Items to compress: 3

Files read from disk: 3

Archive size: 5134 bytes (6 KiB)

Everything is Ok

[ЗАПРОС ПАРОЛЬНОЙ ФРАЗЫ]

shred: '2022-10-08-at-15:40:13.7z': проход 1/8 (random)…

shred: '2022-10-08-at-15:40:13.7z': удаление

shred: '2022-10-08-at-15:40:13.7z': переименован в 0000

shred: '2022-10-08-at-15:40:13.7z': удалён

[ВЫВОД КОМАНДЫ SHRED СОКРАЩЕН]

"Данные сжаты и зашифрованы. Временный архив уничтожен"

$ ls

-rw-r--r--. 1 5,2K 2022-10-08 15:40 2022-10-08-at-15:40:13.7z.gpg

-rw-------. 1 20K 2022-10-04 23:10 test_file_1.txt

-rw-------. 1 40K 2022-10-08 15:39 test_file_2.txt

-rw-------. 1 60K 2022-10-08 15:39 test_file_3.txt

ПРИМЕР 2

Расшифрование архива:

$ decrypt 2022-10-08-at-15:40:13.7z.gpg

[ВВОД ПАРОЛЬНОЙ ФРАЗЫ]

gpg: AES256.CFB encrypted data

gpg: зашифровано одной фразой-паролем

$ ls

-rw-r--r--. 1 5,2K 2022-10-08 15:40 2022-10-08-at-15:40:13.7z.gpg

-rw-r--r--. 1 5,1K 2022-10-08 15:46 decrypted-archive.7z

-rw-------. 1 20K 2022-10-04 23:10 test_file_1.txt

-rw-------. 1 40K 2022-10-08 15:39 test_file_2.txt

-rw-------. 1 60K 2022-10-08 15:39 test_file_3.txt

Тестирование расшифрованного архива на ошибки:

$ 7z t decrypted-archive.7z

[ВЫВОД КОМАНДЫ 7Z СОКРАЩЕН]

Path = decrypted-archive.7z

Type = 7z

Physical Size = 5134

Headers Size = 203

Method = LZMA2:17

Solid = +

Blocks = 1

Everything is Ok

Files: 3

Size: 121143

Compressed: 5134

Подробнее см.: man gpg2, 7z, tar

The GNU Privacy Guard Official

₪ Back to home ₪

🄯 Rami Rosenfeld, 2022. GNU FDL 1.3.