Шифруем файлы с использованием GnuPG | Популярный Linux

VSL аватар
Опубликовано VSL в Чт, 25/12/2008 — 15:05

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

Шифрование симметричным алгоритмом

В данном случае вам не нужны ключи, используется только пароль, пароль для шифрования и расшифровки должен быть один и тот же:

  1. -c, —symmetric (опция)
  2. gpg -c /путь/name — зашифровать файл name симметричным алгоритмом, вы получите зашифрованный файл с расширение name.gpg
  3. gpg -o /путь/name —decrypt /путь/name.gpg — расшифровать зашифрованный файл name.gpg

Для выполнения операций вам будет необходим пароль. Вы получите расшифрованный файл с именем name. Если система сообщит, что целостность сообщения не защищена, это означает, что в вашем случае не использовался MDC (modification detection code) — это хеш, проверяющий целостность сообщения. Это может быть, если на стороне шифрования применяли старую версию программы, которая не поддерживает MDC и не обязательно означает, что файл изменен в результате, к примеру, атаки, хотя это и возможный вариант. Для принудительного использования MDC (определенные старые версии GnuPG хоть и поддерживают MDC, но не используют ее по умолчанию) при шифровании можно использовать опцию —force-mdc. Для ввода пароля используйте клавиатуру в латинской раскладке. Регистр букв имеет значение.

Если после параметра вы поставите параметр -a (через пробел), то программа сделает зашифрованный файл в кодировке ASCII, расшифрование файла в этом случае производится той же командой, что и расшифрование файла name.gpg.

По умолчанию gpg использует качественный алгоритм CAST5. Если вы хотите для зашифровки иcпользовать другой алгоритм, то можете указать это параметром —cipher-algo. Список доступных алгоритмов вы можете посомтреть командой gpg —version. Например для того, что бы зашифровать файл алгоритмом AES256, можно воспользоваться командой:

  1. gpg —cipher-algo AES256 -c /путь/name

где name — зашифровывемый файл.

Если вы шифруете файл, лежащий в текущем каталоге (например в домашнем), то операция шифрования совсем проста

  1. gpg -c name

Вычисление хеш-функций

  1. gpg —print-md sha256 /dev/sda3 — вычисление хеш-значения хеш-функции sha256 для раздела диска sda3
  2. gpg —print-md sha1 /путь/name — вычисление хеш-значения хеш-функции sha1 для файла с именем name

Шифрование файла с помощью ключа

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

  1. -e, encrypt
  2. gpg -e /путь/name

Программа попросит ввести текущих получателей, вы должны ввести ID ключа получателя файла (или просто e-mail получателя) и нажать Enter
Если после параметра -e вы поставите параметр -a, то программа сделает зашифрованный файл в кодировке ASCII, расшифрование файла в этом случае производится той же командой.

Расшифрование файла, зашифрованного с помощью ключа

  1. gpg -o /путь/name —decrypt /путь/name.gpg

Программа попросит ввести пароль к вашему ключу и создаст файл с именем name

Создание электронной цифровой подписи

Для файлов удобнее всего использовать отделенную подпись

  1. -b, —detach-sign
  2. gpg -b /путь/name

вы получите файл подписи с расширением sig

Проверка цифровой подписи

  1. gpg —verify /путь/name.sig /путь/name

где name.sig — файл подписи, name — подписанный файл.
Вы получите отчет о проверке цифровой подписи

Зашифровывание файла с автоматической постановкой цифровой подписи

  1. -s, —sign (опция подписи)
  2. gpg -e -s /путь/name

Расшифровка файла с автоматической проверкой цифровой подписи

  1. gpg -o /путь/name —decrypt /путь/name.gpg

Используется та же команда, что и для расшифровки файла, при этом подпись проверяется автоматически. Т.е. при расшифровке файла вы получите файл и автоматическую проверку цифровой подписи.

Зашифровывание файла с автоматической постановкой цифровой подписи в формате ASCII

  1. gpg -e -s -a /путь/name

вы получите файл с именем name.asc

Расшифровка с автоматической проверкой цифровой подписи

  1. gpg -o /путь/name —decrypt /путь/name.asc

Создание прозрачной подписи

В данном случае удобно подписывать текстовые документы. При этом вы получите новый файл с добавленным расширением asc, цифровая подпись в формате ASCII будет добавлена в конец текста подписываемого текста файла.

  1. gpg —clearsign /путь/name

Проверка прозрачной подписи

  1. gpg —verify /путь/name.asc

Обратите внимание, что файл, для которого осуществляется проверка ЭЦП, должен находится в том же каталоге, что и файл подписи с расширением sig

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

Посмотреть подписи ключей вы можете командой

  1. gpg —list-sigs [e-mail или ID ключа]

Посмотреть параметры ключа с указанием параметров доверия вы можете командой

  1. gpg —edit-key [e-mail или ID ключа]

выход из данного меню осуществляется командой q

Генерирование пароля

  1. gpg -a —gen-random 2 15

Просмотр отпечатка одного из ключей, находящегося в вашей связке ключей

  1. gpg —fingerprint [ID ключа]

Более полный список опций вы можете посмотреть дав команды gpg —help, man gpg либо в одном из многочисленных руководств в сети интернет.

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

Если вы не хотите использовать командную строку, то можете воспользоваться оболочкой Kgpg, в меню которой разобраться не очень сложно. В системе Ubuntu 8.10 (впрочем вполне возможно и в других системах, использующих ту же или более новую версию Gnome) вы можете добавить апплет шифрования на одну из панелей задач, производящую шифрование на лету вашего буфера обмена.

Уничтожение файлов
После шифрования файлов удалите оригинальные файлы с винчестера. Сделать это можно командой:

  1. shred -u /путь/файл

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

Дополнительные параметры команды можно посмотреть с помощью команды shred —help, но два из них я опишу здесь:
-nX сделать X количество проходов (вместо 25-ти проходов по умолчанию)
-v показывать прогресс (не имеет смысла задавать этот параметр в том случае, если вы удяляете файлы, перемещая их на иконку запуска, созданную на рабочем столе)

Например команда удаления файла name семью проходами может выглядеть так:

  1. shred -u -n7 -v name

при этом вы увидите примерно следующее:

shred: name: проход 1/7 (random)…
shred: name: проход 2/7 (ffffff)…
shred: name: проход 3/7 (aaaaaa)…
shred: name: проход 4/7 (random)…
shred: name: проход 5/7 (000000)…
shred: name: проход 6/7 (555555)…
shred: name: проход 7/7 (random)…
shred: name: удаление
shred: name: переименован в 0000
shred: 0000: переименован в 000
shred: 000: переименован в 00
shred: 00: переименован в 0
shred: name: удален

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

Не доверяйте шредеру от Kgpg (команда kgpg -X %U), к GPG он не имеет отношения и файлы с носителя по настоящему не удаляет.

Операции шифрования/подписания электронной почты можно полностью автоматизировать, используя почтовый клиент Thunderbird с установленным расширением Enigmail (есть русифицированный). При этом вам не нужно знать ни одной команды GnuPG, но одновременно вы получите мощный и удобный инструмент, обеспечивающий прозрачную и удобную работу с одновременным обеспечением приватности вашей почты как в пути, так и на вашем рабочем месте.

В следующей статье мы поговорим о том, как с помощью GPG закрыть для посторонних лиц ваш Jabber-канал общения, там же будут рассмотрены некоторые вопросы обмена и управления ключами.






Ваша оценка: Ничего Средняя оценка: 9.7 (14 votes)






Запись опубликована в рубрике Вопросы по сервисам. Добавьте в закладки постоянную ссылку.