Рубрика:
Безопасность /
Механизмы защиты
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ВЛАДИМИР МЕДВЕДЕВ, руководитель ИТ-направления ГК «Колизей Технологий». Интересуется управлением и внедрением ИТ-систем, технологиями виртуализации, информационной безопасностью и криптографией
Конфиденциальность гарантируется Сценарии создания, импорта и экспорта PGP-ключей
Прежде чем начать пользоваться криптосистемой GnuPG на предприятии, пользователям необходимо сгенерировать ключи, организовать их обмен. В статье даны практические рекомендации, как это сделать
Работа с PGP-ключами на предприятии
В прошлой статье [1] была рассмотрена установка и настройка комплекса криптографических программ, состоящих из корпоративного сервера PGP-ключей SKS, криптосистемы GnuPG и графической оболочки к нему – GPGshell. В настоящей статье будут предложены готовые сценарии по созданию, обмену и распространению ключей на предприятии.
В качестве справочников по параметрам командной строки использовались источники [2, 3 и 4].
Для удобства работы с компонентами GPGshell рекомендуется использовать программу GPGtray, входящую в комплект поставки данного набора утилит и предоставляющую быстрый доступ к часто используемым функциям прямо из области уведомлений панели задач Windows.
Рисунок 1. GPGtray – удобная утилита, обеспечивающая простое и быстрое решение типовых задач по работе с GnuPG
Рисунок 2. Главное окно менеджера ключей GPGkeys
Вначале предстоит решить, где пользователи будут хранить свои личные ключи шифрования. С одной стороны, можно оставить путь по умолчанию – профиль текущего пользователя (%userprofile%application datagpgshell для MS Windows 2000/XP/2003 и %userprofile%appdata oaminggpgshell для MS Windows Vista/2008/7/2008 R2). С другой стороны, для мобильных пользователей и сотрудников без персональных ноутбуков удобно хранить свою связку ключей на флэш-диске.
Для выбора каталога для хранения связки ключей удобно воспользоваться приложением GPGconfig, в котором можно задать значение параметра HomeDir – расположение связки ключей.
Рисунок 3. Настройка HomeDir в программе GPGconfig
Создание ключей
Работа с пакетом GnuPG начинается с генерирования ключей. Для этого воспользуемся меню «Запуск -> GPGkeys». Перед нами откроется окно программы-менеджера ключей. С помощью меню «Ключ(и) -> Новый...» вызовем диалог создания нового ключа.
Рисунок 4. Диалог создания ключа в GPGkeys
Программе потребуется указать ряд параметров: алгоритм шифрования, длину ключа, имя и адрес электронной почты. Здесь же устанавливается срок действия ключа. В целях безопасности желательно не задавать срок действия ключа более 1-2 лет.
Затем последует предложение ввести ключевую фразу для защиты ключа. Не стоит отказываться от данного предложения. Помните, что безопасность ключа зависит главным образом от сложности указанной ключевой фразы.
Рисунок 5. Предложение GPGkeys задать ключевую фразу для только что созданного ключа
После завершения процесса программа создаст пару ключей, один из которых будет открытым, а другой – закрытым. Каждый ключ имеет свой собственный уникальный шестнадцатеричный ID – идентификатор, который используется, когда необходимо явно указать тот или иной ключ при выполнении с ним различных операций. Например, только что созданная пара ключей имеет идентификатор 0x46F8F881 (краткий вариант записи, представляющий собой последние 8 символов полной – 0xA52F8E8046F8F881).
Для того чтобы создать ключ в консольном режиме, необходимо выполнить следующую команду, последовательно ответив на все задаваемые вопросы:
gpg --gen-key
Интересной возможностью является создание нескольких подключей для каждого из используемых способов связи, отличающихся сроком использования и алгоритмами шифрования.
Созданный открытый ключ нужно отправить на корпоративный сервер ключей [1], выделив его и проследовав в меню «Ключ(и) -> Отослать на сервер», в котором перечислен список настроенных серверов ключей. По умолчанию в нем присутствуют сервера hkp://keys.gnupg.net, hkp://pgpkeys.pca.dfn.de, hkp://pgp.uni-mainz.de, hkp://the.earth.li и hkp://subkeys.pgp.net. Необходимо изменить этот список, добавив в него адрес корпоративного сервера (см. подраздел «Настройки GnuPG»).
После отправки открытый ключ станет доступен всем желающим.
Для основного ключа можно и нужно создать отзывающий сертификат. Это может потребоваться, например, если ключ будет украден или утерян. Даже если ключевая фраза очень надежна, стоит заранее, еще на этапе создания ключа, подумать о возможности его отзыва в будущем.
Получив отзывающий сертификат, сервер ключей помечает соответствующий ключ как недействительный. Впрочем, любой желающий все равно будет иметь возможность воспользоваться им для проверки цифровой подписи и расшифровки ранее полученных сообщений.
Выбрав нужный ключ в окне программы, проследуем в меню «Ключ(и) -> Отозвать...» и подтвердим запрос на создание отзывающего сертификата для выбранного ключа.
Отзывающий сертификат нужно сохранить в надежном и недоступном для посторонних месте (например, на другом носителе или вообще в печатном виде), так как любой завладевший этим сертификатом может сделать ключ недействительным и ввести в заблуждение всех обратившихся к нему.
Чтобы активировать сертификат, нужно просто импортировать его, а затем отослать на сервер ключей. Рассмотрим описанный процесс подробнее.
Создать отзывающий сертификат также можно и посредством командной строки:
gpg –output отзывающий-сертификат.asc --gen-revoke $KEYID
где $KEYID – это ID ключа, для которого будет создан отзывающий сертификат. Сам сертификат будет сохранен в файл отзывающий-сертификат.asc. Вместо ID ключа также может быть указан адрес электронной почты его владельца.
Для импорта сертификата служит команда:
gpg --import отзывающий-сертификат.asc
Импортированный отзывающий сертификат затем отсылается на корпоративный сервер ключей [1]:
gpg --send-keys $KEYID
Свойства любого ключа могут быть отредактированы с помощью меню «Ключ(и) -> Редактировать». Для изменения доступны срок действия ключа, ключевая фраза, степень доверия, фото ID и подключи, предпочитаемый сервер ключей и другие параметры [3].
Для редактирования свойств ключа в режиме командной строки служит команда:
gpg --edit-key $KEYID
GnuPG позволяет отозвать сертификат с разрешения владельца ключа, что может быть востребовано в корпоративной среде. Например, сотрудник заболел, не вышел на работу или был уволен.
Для того чтобы воспользоваться этой возможностью, владельцу ключа в режиме редактирования необходимо с помощью команды addrevoker добавить доверенных пользователей, которым разрешено отзывать данный ключ.
Теперь доверенный пользователь сможет отозвать данный ключ, сгенерировав отзывающий сертификат с помощью команды:
gpg --desig-revoke $KEYID
С помощью команды keyserver может быть установлен предпочитаемый сервер ключей для редактируемого ключа. В ответ на нее будет предложено ввести URL сервера.
Важно помнить, что если удалить или утратить иным образом закрытый ключ, то расшифровать файл или сообщение, зашифрованное с его помощью, невозможно. Аналогичным образом, не получится расшифровать файл или сообщение, если ключевая фраза будет утеряна.
Настройки GnuPG
Ниже приведен ряд настроек, которые упростят дальнейшее использование GnuPG и облегчат обмен ключами между пользователями системы.
После генерации ключей и подключей проследуем в меню «Настройки -> GnuPG...». В появившемся диалоговом окне выберем ключ для шифрования по умолчанию в поле [default-key].
Там же настроим GnuPG на использование нашего корпоративного сервера ключей [1], нажав кнопку «Изменить список серв....» и задав в появившемся диалоговом окне адрес узла сервера ключей или его IP-адрес, например, hkp://keys.domain.local. Затем в поле [keyserver] выберем только что введенный адрес.
В полях [comment] можно указать дополнительные комментарии, которые помогут другим участникам системы идентифицировать владельца ключа.
Все параметры будут записаны в конфигурационный файл gpg.conf, хранящийся в одном каталоге со связкой ключей GnuPG. Приблизительное содержание данного файла приведено ниже:
# Комментарий comment work phone +1 111 111-11-11, fax: +1 111 111-00-00
# ID ключа по умолчанию default-key 0xA52F8E8046F8F881
# Имя или адрес узла сервера ключей по умолчанию keyserver hkp://keys.gnupg.net
Рисунок 6. Настройка параметров GnuPG в программе GPGkeys
Обмен ключами
Пользователи системы должны обменяться своими открытыми ключами для того, чтобы конфиденциально общаться друг с другом. Просмотреть список имеющихся открытых ключей можно в главном окне программы GPGkeys.
Для каждого ключа выводится ID пользователя, ID ключа, размер, степени доверия, даты создания и истечения срока действия ключа, а также краткое описание.
В консоли список ключей выводится с помощью такой команды:
gpg --list-keys
Будет выведен список ключей, показывающий их статус (pub – публичный, sub – второстепенный), длину и метод шифрования, дату создания и уникальный идентификатор.
Вместо --list-keys может быть использован параметр --fingerprint, тогда программа выведет список ключей с их отпечатками.
Для отправки своего открытого ключа и получения ключей других участников системы служат операции экспорта и импорта.
Экспорт ключей
Перед тем как отправить кому-либо свой открытый ключ, пользователь должен его экспортировать. Для этого служит меню «Ключ(и) -> Экспорт...». Программа уведомит о результатах операции и предложит также экспортировать и закрытый ключ.
Для экспорта ключей в режиме командной строки используется команда:
gpg --output экспортируемый-ключ.asc --export --armor $KEYID
Экспортируемый ключ будет сохранен в файл экспор-тируемый-ключ.asc. Если не указать программе, куда сохранить ключ, его содержимое будет выведено в консоль. Параметр --armor служит для сохранения ключа в ASCII-виде (иначе будет использоваться менее удобный двоичный формат).
Для того чтобы получатели могли сверять цифровые подписи и расшифровывать полученные сообщения, необходимо передать им открытый ключ. Сделаем это путем отправки ключа на корпоративный сервер ключей.
Для отправки служит меню «Ключ(и) -> Отослать на сервер», в котором перечислены настроенные сервера PGP-ключей, в том числе и наш hkp://keys.domain.local. Программа попытается отправить ключ на сервер и сообщит о результатах пользователю.
В консольном режиме отправка открытых ключей на сервер осуществляется с помощью команды:
gpg --send-key $KEYID --keyserver keys.domain.local
В описанном примере используется параметр --keyserver с указанием имени сервера ключей, который следует использовать программе.
Если данный параметр не задан, то будет использован сервер по умолчанию, который берется из файла gpg.conf.
В тех случаях, когда по каким-то причинам воспользоваться сервером ключей невозможно, экспортированный ключ передается получателю с помощью электронной почты или путем размещения ключа на веб-сайте.
Рисунок 7. Сообщение об успешном экспорте открытого ключа
Импорт ключей
Импорт открытого ключа из файла производится командой «Ключ(и) -> Импорт...». По окончании процесса программа GPGkeys сообщит о результате импорта.
В режиме командной строки импорт выполняется следующим образом:
gpg --import импортируемый-ключ.asc
Открытый ключ получателя, которому требуется отправить сообщение, также может быть найден на сервере ключей. Для выполнения поиска следует ввести имя владельца ключа, его адрес электронной почты или сразу ID ключа в нижнее поле, находящееся под списком ключей. После нажатия кнопки «Поиск на сервере» будет выведен список найденных ключей, которые затем могут быть загружены в локальную базу ключей.
Для загрузки ключа с сервера в консоли служит команда:
gpg --recv-key $KEYID --keyserver keys.domain.local
Параметр --keyserver keys.domain.local служит для переназначения сервера ключей по умолчанию.
Рисунок 8. Сообщение об успешном импорте открытого ключа
Сеть доверия
Для подтверждения достоверности импортированных ключей GnuPG использует гибкую модель проверки подлинности, не требующую личной проверки достоверности каждого из них. Однако достоверность некоторых ключей пользователям приходится проверять самостоятельно.
В идеальном случае пользователь сверяет отпечаток ключа при личной встрече с его владельцем, по телефону или любым другим подходящим способом. Совпадение отпечатков ключей говорит о том, что пользователь владеет достоверной копией ключа. Отпечаток ключа можно увидеть, используя меню «Ключ(и) -> Отпечаток».
Подписывание ключей производится с помощью «Ключ(и) -> Редактировать -> Подписать...».
В режиме командной строки ключ подписывается так:
gpg --sign-key $KEYID
где $KEYID – это ID ключа респондента. Ключ также может быть подписан в режиме редактирования. В этом случае используется параметр --edit-key.
Подписанный ключ затем экспортируется и отправляется его владельцу, чтобы тот мог импортировать его к себе.
Рисунок 9. Настройка степени доверия
Так как доверие является субъективным, предусмотрена дополнительная возможность для пользователя установить свой собственный уровень доверия владельцу ключа. Всего в GnuPG доступно 5 уровней степени доверия:
- I don"t know or won"t say – я ничего не знаю о владельце этого ключа или не хочу говорить об этом;
- I do NOT trust – я не доверяю этому человеку;
- I trust marginally – я знаю этого человека и доверяю ему, но не уверен, что ключ принадлежит ему;
- I trust fully – я знаю этого человека и лично убедился в том, что ключ принадлежит ему;
- I trust ultimately – я знаю этого человека, у меня есть доступ к его секретному ключу.
Для присвоения ключу уровня доверия используется меню «Ключ(и) -> Редактировать -> Доверие...». В командной строке для этого служит команда trust режима редактирования ключа.
Стоит отметить, что присвоенный ключу уровень доверия не экспортируется с ключом. Данная информация является сугубо личной и хранится отдельно от ключей в специальной базе данных.
Рисунок 10. Задание ключевой фразы в GnuPG
***
С помощью GnuPG можно сделать значительно больше, чем было описано в данной статье. Более подробные сведения обо всех возможностях и параметрах командной строки могут быть получены в руководстве к программе [3].
В следующей статье будет рассмотрен сценарий практического применения описываемой криптосистемы для работы с файлами и буфером обмена.
- Медведев В. Конфиденциальность гарантируется. Применение криптосистемы GnuPG в масштабах предприятия. //Системный администратор. №4, 2010 г. – С 44-47 (http://samag.ru/archive/article/959).
- Защищаем себя средствами GnuPG – http://www.nixp.ru/articles/Защищаем-себя-средствами-GnuPG.html.
- Страница man для gpg на русском языке – http://www.gnupg.org/documentation/manpage.ru.html.
- Описание GNU Privacy Guard – http://ulm.uni.udm.ru/~saratoff/html/book1.html.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|