В современном мире каждый аспект нашей личной жизни записывается на компьютеры. Один из способов защиты наиболее важной информации - шифрование файлов и каталогов. Во время шифрования содержимое файлов перемешивается с избыточными данными в соответствии с установленным алгоритмом, таким образом, что расшифровать его можно только имея специальный пароль или ключ.
В операционной системе Linux есть замечательный инструмент с открытым исходным кодом для шифрования файлов - GNU Privacy Guard или просто GPG, который может быть использован для шифрования любого файла из командной строки или в графическом режиме. О нем и пойдет речь в сегодняшней статье.
Содержание статьи
- Утилита GPG
- Шифрование файлов с помощью пароля
- Шифрование с использованием ключей
- Подписи и шифрование
- Выводы
Утилита GPG
Перед тем как перейти к использованию утилиты, давайте рассмотрим ее синтаксис:
$ gpg опции файл параметры
Опции указывает что необходимо сделать с файлом, как это сделать и какие возможности использовать. Давайте рассмотрим самые основные опции, которые мы будем использовать в этой статье:
- -h - вывести справку по утилите;
- -s, --sign - создать цифровую подпись, эта опция используется вместе с другими опциями для шифрования;
- --clearsign - подписать незашифрованный текст;
- -e, --encrypt - зашифровать данные, с помощью ключа;
- -с, --symmetric - зашифровать данные, с помощью пароля;
- -d, --decrypt - расшифровать данные, зашифрованные с помощью ключа или пароля;
- --verify - проверить подпись;
- -k, --list-keys - вывести доступные ключи;
- --list-sigs - вывести доступные подписи;
- --fingerprint - вывести все ключи вместе с их отпечатками;
- --delete-key - удалить ключ;
- --delete-secret-key - удалить секретный ключ;
- --export - экспортировать все ключи;
- --export-secret-keys - экспортировать все секретные ключи;
- --import - импортировать ключи;
- --send-keys - отправить ключи на сервер, должен быть указан сервер ключей;
- --recv-keys - получить ключи от сервера ключей;
- --keyserver - указать сервер ключей;
- --fetch-keys - скачать ключи;
- --gen-key - создать ключ;
- --sign-key - подписать ключ;
- --passwd - изменить пароль для ключа.
А теперь рассмотрим по порядку, что нам нужно для того, чтобы выполнять шифрование файлов Linux.
Шифрование файлов с помощью пароля
Симметричный шифр - самый простой и в то же время надежный способ шифрования файлов linux. Расшифровать файл сможет любой у кого есть пароль. Для использования просто запустите терминал и выполните команду gpg с параметром -c:
gpg -c имя файла
Утилита создаст файл с расширением gpg. Для расшифровки используйте:
gpg имя_файла.gpg
Шифрование с использованием ключей
Асимметричный шифр более надежный так как для шифрования используется два ключа - публичный, собственно для шифрования, которым может воспользоваться любой, и приватный - для расшифровки. Причем файл можно расшифровать только с помощью приватного ключа, даже если вы зашифровали файл, без приватного ключа вы его не расшифруете.
Сначала необходимо настроить gpg, создать пару ключей, для этого наберите:
gpg --gen-key
Программа задаст ряд вопросов для настройки ключа:
Выберите требуемый тип ключа.
Выберите нужный размер для ключа, обычно 2048 будет достаточно.
Выберите срок действия для ключа.
Проверьте все ли правильно.
Введите имя нового ключа, фактически, это имя пользователя, но вы будете использовать его чтобы зашифровать файл linux, поэтому выбирайте обдумано.
Введите ваш email адрес.
Описание ключа, если нужно.
Финальная проверка, затем нажмите O для завершения.
Процесс генерации может занять некоторое время. Когда все будет готово в каталоге ~./gnupg появятся два файла. В файле pubring.gpg публичный ключ, а в secring.gpg приватный.
ls ~/.gnupg/
Также вы можете посмотреть список доступных ключей:
gpg --list-keys
Если вы собираетесь шифровать файлы на другом компьютере необходимо экспортировать публичный ключ, для этого есть опция -а:
gpg -a -o gpgkey.asc --export имя_ключа
Затем передаем файл на целевое устройство и импортируем ключ:
gpg --import gpgkey.asc
После импорта ключа уровень доверия к нему по умолчанию будет неизвестным поэтому при каждом шифровании gpg будет спрашивать действительно ли вы доверяете этому ключу. Чтобы этого избежать нужно указать уровень доверия. Для этого воспользуйтесь редактором ключей:
gpg --edit-key Username
Для выбора уровня доверия введите команду trust:
Для своих ключей можно использовать пункт абсолютно доверяю с номером 5, вы же знаете что это именно ваш ключ.
Теперь можно переходить к шифрованию. Для того чтобы зашифровать файл linux используйте команду:
gpg -e -r ид_пользователя имя_файла
Ид пользователя нужно указывать тот что вы использовали при создании ключа. Для расшифровки используйте:
gpg -d имя_файла.gpg
Для каталогов действия аналогичны только сначала нужно создать архив с помощью tar:
А для расшифровки:
gpg -d каталог.gpg | tar -xvf
Подписи и шифрование
Для проверки подлинности файлов может использоваться не шифрование, а подпись. Тогда на основе файла и ключа создается отпечаток, который записывается в файл. Если файл будет изменен, то отпечаток уже не совпадет.
Вы можете подписать файл с помощью опции --sign:
gpg --sign имя_файла
Если вы не хотите изменить исходный файл, то можно создать подпись в отдельном файле:
gpg -b имя_файла
Тогда в каталоге, рядом с файлом появиться файл .sig с подписью. Дальше, чтобы проверить достаточно использовать команду verify:
gpg --verify textfile.sig textfile
Если файл был изменен, то вы увидите, что подпись не сходиться.
Выводы
В этой статье мы рассмотрели как выполняется шифрование файла linux, а также настройка утилиты gpg. Шифрование gpg linux используется людьми для хранения важных данных, а механизм подписей популярен среди разработчиков дистрибутивов. Если у вас остались вопросы, спрашивайте в комментариях!
На завершение отличное видео о том, как работает асимметричный алгоритм шифрования:
Как расшифровывать файлы на другом компьютере (windows)
Название не соответствует заявленному контенту. Удалить.
нехера не шифруется. почему нет описание что такое команда -r? или тут одни гиги вас читаю по умолчанию. при наборе gpg -e -r ид_пользователя имя_файла. много раз послан нахер. шел 2022 год линукс побеждал винду гдето в паралельной вселеной
--recipient имя
-r
Шифровать для идентификатора пользователя имя. Если не указан ни этот параметр, ни --hidden-recipient, GnuPG запрашивает идентификатор пользователя, если не задан --default-recipient.
Дополните пж, что для расшифровки файла нужно использовать вот так:
gpg --d имя_зашифрованного_файла > расшифрованный_файл
Иначе оно вываливает в консоль, это не очень. Особенно, если расшифровывать архив.