Опубликован: 20.02.2006 | Уровень: специалист | Доступ: платный
Лекция 9:

Криптографические средства

Установка GnuPG

Многие современные версии Linux и BSD поставляются с предустановленной системой GnuPG. Это можно проверить, набрав в командной строке gpg --version. Если появится листинг с информацией о программе, то можно пропустить данный раздел и сразу перейти к применению GnuPG.

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

  1. Распакуйте .tar-файлы, затем наберите обычные команды компиляции:
    ./configure
    make
    make install

    Программа создаст структуру каталогов с корнем .gnupg в вашем пользовательском каталоге, где будут храниться ключи и другая информация.

  2. (Необязательно) После установки GnuPG наберите make clean, чтобы избавиться от бинарных или временных файлов, созданных в процессе конфигурирования.

Создание ключевых пар

После установки программы прежде всего необходимо создать свою пару ключей открытый-секретный. Если у вас уже есть ключ и вы хотите импортировать его в GnuPG, воспользуйтесь командой:

gpg --import маршрутное_имя_файла_ключей

Следует выполнить эту инструкцию для вашего кольца открытых ключей и отдельно - для кольца секретных ключей. Обычные форматы для колец ключей - pubring.pkr и secring.skr.

Если ключей у вас еще нет, следуйте приведенной ниже процедуре.

  1. Наберите gpg --gen-key. Будет запущен процесс, который запросит у вас некоторые данные.
  2. GnuPG попросит задать длину ключей в битах (по умолчанию - 1024, что обычно достаточно для надежной криптографии с открытым ключом). Можно увеличить длину до 2048 для усиления безопасности.
  3. Как правило, вам не нужно, чтобы ваши ключи имели ограниченный срок годности, но в специальном случае, когда ключи будут применяться ограниченное время, можно указать, когда истечет срок их действия.
  4. GnuPG запросит у вас имя и адрес электронной почты. Эти данные важны, поскольку они определяют индексацию открытого ключа на серверах открытых ключей.
  5. Наконец, GnuPG предложит ввести парольную фразу. Она должна быть достаточно длинной и сложной, но в то же время легко запоминаемой. (См. описание парольной фразы выше в этой лекции, в разделе о PGP). После двукратного ввода парольной фразы GnuPG создаст ключи. Это может занять некоторое время. В ходе этого процесса следует немного подвигать мышью. GnuPG использует случайные сигналы клавиатуры и мыши для повышения энтропии своего датчика случайных чисел.

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

Создание сертификата отзыва

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

Чтобы создать сертификат отзыва, введите:

gpg - output revoke.asc - gen-revoke пользователь

где пользователь заменяется его уникальной фразой в вашем кольце секретных ключей. Создается файл revoke.asc. Необходимо переместить его с жесткого диска в какое-то безопасное место. Нежелательно оставлять его рядом с секретным ключом, поскольку если кто-то получит доступ к секретному ключу, то сможет помешать и его отзыву.

Публикация открытого ключа

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

gpg - keyserver имя_сервера_открытых_ключей - send-key пользователь

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

  • certserver.pgp.com
  • pgp.mit.edu
  • usa.keyserver.net

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

Для зашифрования файла служит команда -- encrypt, имеющая следующий формат:

gpg -- output зашифрованный_файл -- encrypt -- recipient адрес 
  шифруемый_файл

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

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

gpg --output зашифрованный_файл --symmetric шифруемый_файл

Расшифрование файлов

Для расшифрования полученных файлов при помощи GnuPG, воспользуйтесь следующей командой:

gpg --output расшифрованный_файл --decrypt зашифрованный_файл

Чтобы расшифровать файл, необходимо иметь в своем кольце секретных ключей ключ пользователя, для которого файл был зашифрован. У вас запросят парольную фразу, и если вы введете ее правильно, GnuPG создаст расшифрованный файл.

Подписывание файлов

Как упоминалось выше, имеется еще одно применение GnuPG и PGP - подписывание документов для контроля их целостности. Это можно сделать с помощью следующей команды:

gpg --output подписанный_файл --sign подписываемый_файл

Обычно GnuPG автоматически проверяет подпись при получении файла. Верификация файла по инициативе пользователя осуществляется с помощью команды

gpg --verify подписанный_файл

Можно создавать подписи в текстовом виде и отдельно от файла, если вы хотите, чтобы пользователи без GnuPG могли получить к ним доступ. Для этого имеются две команды. Команда

gpg -- clearsign подписываемый_файл

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

gpg --output файл_подписи --detache-sign подписываемый_файл

Модель сети доверия PGP/GnuPG

Как упоминалось ранее, вместо иерархической системы доверия, с цифровыми сертификатами и удостоверяющим их центром, в PGP и GnuPG используется модель сети доверия. Подписывая ключи людей, которых вы знаете, вы можете проверить, что их ключ заслуживает доверия. А если они подписывают ключи других людей, которых вы не знаете непосредственно, вы создаете цепочку доверия. Такая модель основана на идее "друг моего друга - мой друг". Модель, конечно, несовершенна; кто-нибудь в дальней части цепочки доверия может оказаться плохим парнем. Но основной принцип состоит в естественном росте цепочки без какой-либо инфраструктуры, и поэтому ее нельзя легко разрушить или "раздуть". Вы создаете сеть доверия, подписывая ключи каких-то людей и предоставляя им возможность подписывать ваши. В примере на рис. 9.6 Тони может неявно доверять ключам Джейн, Джо, Джона и Евы, хотя он не знает их непосредственно.

Модель сети доверия

Рис. 9.6. Модель сети доверия
Роман Попов
Роман Попов

После прохождения курса Стандарты инфрмационной безопасности мне предложено получение Удостоверения о повышении квалификации от НИУ ВШЭ по программе Менеджмент информационной безопасности. Программа включает в себя ряд курсов которые я уже ранее проходил. Какой порядок действий в данном случае? Как прозводится перезачет результатов? И какие экщамены мне надо еще доздать чтобы получить удостоверение?

Александр Путятинский
Александр Путятинский

Добрый день по окончании данного курса выдается сертификат?

Елена Гогонова
Елена Гогонова
Россия, Магнитогорск
Алина Архипова
Алина Архипова
Россия, г белорецк