Журнал LinuxFormat - перейти на главную

LXF94:Электронные подписи

Материал из Linuxformat
Перейти к: навигация, поиск
Электронные_подписи

Содержание

Защити свои данные

ЧАСТЬ 2 Настало время подкрепить полученные знания практикой. Андрей Боровский расскажет как получить цифровой сертификат и использовать его в популярных открытых приложениях.

Как получить сертификат

Выбор способа получения сертификатов зависит от целей их использования. Если сертификаты используются для безопасной переписки несколькими людьми, которые знакомы между собой «в реале» (сотрудники небольшой компании, например), ничто не мешает им воспользоваться «самопальными» сертификатами, сгенерированными с помощью утилиты openssl (как это делается, я расскажу чуть ниже). Если сертификат необходим для обмена сообщениями с незнакомыми людьми в глобальной Сети, следует обратиться в один из отечественных или зарубежных удостоверяющих центров (УЦ). Наконец, если сертификат требуется для взаимодействия с госструктурами РФ, его следует получать в одном из УЦ, утвержденных нашими государственными органами (см. врезку «Особенности национальной сертификации»).

Получение бесплатного сертификата

Удостоверяющие центры работают на коммерческой основе, но получить сертификат, удостоверенный УЦ, можно и бесплатно (такая услуга предоставляется частным лицам и некоммерческим проектам многими крупными УЦ). Возможности применения бесплатных сертификатов несколько ограничены по сравнению с коммерческими – дело, разумеется, не в самих сертификатах, а в уровне услуг, предоставляемых УЦ. Обычно бесплатные сертификаты можно получать в онлайн-режиме, откуда следует, что по умолчанию бесплатный сертификат связывает с открытым ключом только те данные, которые могут быть проверены онлайн (то есть адрес электронной почты или доменное имя). Например, для удостоверения того, что некий адрес электронной почты действительно принадлежит лицу, обратившемуся за сертификатом, на этот адрес высылается письмо с запросом. Чтобы получить право вписать в сертификат дополнительные сведения, которые нельзя проверить по Сети, придется предпринять дополнительные усилия (см. врезку «Как попасть в сети доверия»).

Наибольшей известностью среди УЦ, предоставляющих часть услуг бесплатно, пользуются три: Thawte Consulting, CAcert и Comodo Group. У каждого из этих УЦ есть свои достоинства и недостатки.

(thumbnail)
Рис. 1. «Недоверенный» сертификат.

Компания Comodo Group (известная многим благодаря своему бесплатному брандмауэру для Windows) использует для распространения сертификатов возможности браузера Internet Explorer, поэтому ее услуги для нас не подходят (разумеется, установив сертификат в браузере Windows, его потом можно «перетащить» в любую другую программу, в том числе и на платформу Linux, но мы, конечно, этого делать не будем).

УЦ CAcert поддерживает и Windows, и Linux, и вообще предоставляет самый широкий спектр бесплатных услуг, но корневые сертификаты (КС) от CAcert не предустановлены в популярных браузерах и почтовых клиентах (по крайней мере, на данный момент), а это значит, что для удостоверения вашего сертификата CAcert вашему контрагенту придется самому устанавливать КС от CAСert. Далеко не каждый пользователь согласится что-то там устанавливать из Интернета, тем более что сообщения браузеров, не обнаруживших КС, выглядят пугающе. Например, IE 7 вообще советует уносить ноги с сайта CAcert (Рис. 1).

УЦ Thawte (основанный, кстати, небезызвестным Марком Шаттлвортом и проданный затем компании VeriSign) – большое имя в мире цифровых сертификатов – предоставляет бесплатные сертификаты для удостоверения электронной почты (но не для SSL). Этот УЦ позаботился о том, чтобы его сертификаты можно было установить в любой системе, кроме того, КС от Thawte предустановлены практически во всех программах, которые работают с цифровыми сертификатами. Если сертификат нужен вам для подписи и шифрования частной почты, бесплатные сертификаты Thawte – лучший выбор. Недостатком Thawte можно назвать то, что при выдаче бесплатных сертификатов не поддерживаются самостоятельно сгенерированные запросы на получение сертификатов (см. ниже), вдобавок Thawte не поддерживает установку сертификатов в Konqueror. Это означает, что для установки бесплатных сертификатов Thawte нужно использовать Firefox или Opera.

Получение сертификата по Сети

Существует две схемы получения сертификатов онлайн. В первом варианте и сертификат, и пара ключей генерируются вашим браузером и отправляются на сайт УЦ. Когда ваш сертификат появится на сайте УЦ, вы сможете установить сертификат (и прилагающийся секретный ключ) в вашем браузере. Чтобы импортировать сертификат и секретный ключ (СК) в Firefox, достаточно щелкнуть по ссылке, указывающей на сертификат на сайте УЦ. Учтите, что хотя ваш сертификат будет храниться на сервере УЦ, СК к сертификату вы можете получить только один раз, после чего УЦ его «забудет» (а без СК сертификат бесполезен).

Второй вариант – создать запрос на получение сертификата с помощью утилиты openssl и отправить его на сайт УЦ (похоже, что Konqueror не умеет генерировать правильные запросы на получение сертификата, так что если вы не пользуетесь Firefox или Opera, этот вариант – для вас). Запрос на получение сертификата представляет собой документ, подписанный с использованием секретного ключа из новой пары ключей. Чтобы создать запрос на получение сертификата, нужно сгенерировать ключи:

openssl genrsa -out client.key 2048

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

Запрос на получение сертификата (файл csr) создается с помощью команды:

openssl req -new -key client.key -out client.csr

Во время создания запроса на получение сертификата утилита попросит вас ввести несколько параметров, важнейшими из которых (коль скоро речь идет о бесплатных сертификатах) являются Common Name и Email Address (для сертификата, удостоверяющего почтовый адрес, в обоих параметрах указываем свой e-mail). Содержимое файла client.csr следует передать удостоверяющему центру. Сертификат, который выпустит УЦ, в этом случае, скорее всего, будет доступен вам в виде файла (в формате PEM или CRT). Сохраните этот файл на диске, и помните, что без файла, содержащего секретный ключ, файл сертификата не имеет особой ценности.

Установка сертификатов в программах Linux

Многими популярными программами Linux поддерживаются цифровые сертификаты X.509. Мы рассмотрим их установку и использование в программах KMail, Thunderbird и в пакете OpenOffice.org. Чтобы иметь возможность подписывать собственные сообщения, вы должны установить в программах секретный ключ и сертификат, удостоверяющий соответствующий ему открытый ключ. Для шифрования сообщений, предназначенных другим людям, достаточно установить сертификаты ваших корреспондентов (из этих сертификатов почтовая программа извлечет необходимые для шифрования открытые ключи). Сертификат вашего корреспондента вы можете получить, например, вместе с письмом, содержащим его электронную подпись.

Для установки и хранения сертификатов вместе с секретными ключами мы воспользуемся форматом PKCS#12 (см. врезку «Файлы сертификатов X.509»). Импортировав личный сертификат и секретный ключ с сайта УЦ в браузер Firefox, вы можете экспортировать его в виде пакета PKCS#12 с помощью менеджера сертификатов. В окне Настройки Firefox перейдите в группу настроек Дополнительно, откройте вкладку Шифрование и щелкните кнопку Просмотр сертификатов.

В открывшемся окне менеджера сертификатов выберите ваш сертификат и щелкните кнопку Резервная копия. Вам будет предложено указать пароль для защиты секретного ключа, после чего файл PKCS#12 можно будет сохранить на диске. С помощью менеджера сертификатов вы можете также импортировать пакет PKCS#12 в браузер Firefox.

Если вы получили сертификат и секретный ключ в формате PEM, можете воспользоваться утилитой openssl для преобразования его в PKCS#12. В окне консоли скомандуйте (мы сохраняем пакет PKCS#12 под именем cert.p12):

openssl pkcs12 -in cert.pem -export -out cert.p12

где cert.pem – файл с сертификатом и ключом в формате PEM, а cert.p12 – новый файл в формате PKCS#12.

При наличии сертификата и секретного ключа в формате *.crt, вы также можете преобразовать их в формате PKCS#12 с помощью openssl:

openssl pkcs12 -in cert.crt -export -out cert.p12

Если сертификат и секретный ключ хранятся в разных файлах (например, вы сгенерировали ключи сами, а потом создали запрос на получение сертификата), команда создания пакета PKCS#12 будет выглядеть иначе:

openssl pkcs12 -export -in cert.pem -inkey client.key -out cert.p12

Здесь cert.pem – файл сертификата, загруженный с сайта УЦ, а client.key – файл секретного ключа, который вы создали для генерации запроса на получение сертификата.

Во всех случаях утилита openssl предложит вам указать пароль для защиты пакета PKCS#12.

Установка сертификата в KDE/KMail

Чтобы импортировать пакеты сертификатов и секретных ключей из файлов PKCS#12 (и других форматов) в KDE, достаточно открыть файл сертификата в менеджере Konqueror и щелкнуть кнопку Import (при этом будет запрошен пароль, защищающий пакет PKCS#12). Импортировать сертификаты в KDE можно также с помощью программы Kleopatra (Рис. 2).

(thumbnail)
Рис. 2. Kleopatra.

Программа потребует пароль, которым защищен пакет PKCS#12, затем предложит указать дважды новый пароль для сохранения данных в настройках KDE. Установить сертификат в KDE можно также с помощью центра управления рабочим столом KDE. В окне центра управления перейдите в группу Security & Privacy -> Crypto, откройте вкладку Your Certificates и воспользуйтесь кнопкой Import для импортирования сертификата из файла. При этом программа спросит, должен ли данный сертификат быть доступен KMail.

(thumbnail)
Рис. 3. Окно настройки шифрования в Kmail.

Импортировав сертификат в KDE, вы можете настроить клиент KMail для работы с ним. В окне Edit Identity перейдите на вкладку Cryptography (Рис. 3) и выберите сертификат для подписи сообщений по протоколу S/MIME (S/MIME signing certificate) и шифрования сообщений (S/MIME encryption certificate). При установке сертификата для электронной подписи в KMail нужно следить за тем, чтобы почтовый адрес, включенный в сертификат, совпадал с адресом, для которого выполняется настройка, иначе почтовый клиент адресата выдаст сообщение о подлоге. Если вы подписываете письмо электронной подписью, KMail потребует у вас пароль, которым защищен соответствующий секретный ключ.

Ситуация несколько усложняется, если вы устанавливаете личный сертификат, заверенный корневым сертификатом, отсутствующим в вашей системе. Чтобы установить в KDE, например, КС от CAcert, его нужно сначала импортировать так же, как и личный сертификат. После этого необходимо добавить цифровой отпечаток SHA-1 корневого сертификата в список доверенных сертификатов gpgsm (список отпечатков доверенных сертификатов хранится в файле ~/.gnupg/trustlist. txt). Получить отпечатки SHA-1 всех установленных сертификатов вы можете с помощью команды

gpgsm --fingerprint
(thumbnail)
Рис. 4. Окно KwatchGnuPG.

Консольные утилиты gpgsm и gpg-agent выполняют все действия, связанные с обработкой сертификатов X.509 и связанных с ними ключей в KDE, программа KMail запускает их как внешние процессы. Посмотреть сообщения, выдаваемые этими утилитами, и выявить причину возможных сбоев можно с помощью программы KWatchGnuPG (Рис. 4).

Установка сертификата в Thunderbird

Установка сертификата и секретного ключа из файлов PKCS#12 в Thunderbird выполняется с помощью менеджера сертификатов этой программы (Thunderbird мог бы и сам извлекать сертификаты из хранилища Firefox, но он этого не делает). Откройте в Thunderbird окно Preferences, перейдите в группу Privacy, откройте вкладку Security и вызовите менеджер сертификатов, щелкнув кнопку View Certificates. Теперь вы можете добавить сертификат, щелкнув кнопку Import.

В процессе установки сертификата и секретного ключа из пакета PKCS#12 Thunderbird спросит у вас два пароля – мастер-пароль, который программа использует для защиты хранящихся в ее настройках секретных ключей, и пароль, которым защищен пакет PKCS#12. Если вы используете сертификат CAcert, вам необходимо также установить КС CAcert. (КС доступен на сайте CAcert, его следует устанавливать точно так же, как и личный сертификат). Установив КС, перейдите на вкладку Authorities в окне менеджера сертификатов, найдите в списке нужный КС, щелкните кнопку Edit и установите флажок This Certificate Can Identify Mail Users.

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

Подпись почтового сообщения с помощью openssl

Если ваша любимая почтовая программа не поддерживает сертификаты X.509 напрямую, это еще не значит, что вам нельзя ими пользоваться. С помощью утилиты openssl и пакета «сертификат + СК» в формате PEM (такой пакет можно создать, например, с помощью программы Kleopatra), вы можете подписывать почтовые сообщения, сохраненные в файле на диске:

openssl smime -sign -in message.eml -out message-signed.eml -signer
cert.pem -noverify

Опция -noverify отключает проверку сертификата, удостоверяющего подпись. Файл message-signed.eml будет содержать подписанное сообщение. Другие опции openssl позволяют встроить эту утилиту в цепочку программ, выполняющих создание и отправку сообщений. Советую ознакомиться с документацией к этой мощной утилите.

Использование сертификатов в OpenOffice.org

Программы из пакета OpenOffice.org могут использовать для подписи документов ключи и сертификаты, установленные в браузере Firefox (OpenOffice умеет извлекать сертификаты из хранилища Firefox автоматически). Если ваш личный сертификат не установлен в Firefox, вы можете установить его с помощью менеджера сертификатов Firefox, описанного выше. Чтобы подписать документ в OpenOffice.org, необходимо выбрать команду меню File | Digital Signatures и в открывшемся окне щелкнуть кнопку Add. Будет открыт список личных сертификатов, в котором можно выбрать сертификат/ключ для подписи.

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

Желтый треугольник с восклицательным знаком на пиктограмме свидетельствует о том, что проверить подлинность сертификата, подтверждающего подпись, не удалось. Такое может произойти, если соответствующий КС не установлен, или для него не установлено право удостоверения сертификата, предназначенного для подписи контента.

Для исправления этой ошибки откройте окно менеджера сертификатов Firefox и перейдите на вкладку Центры сертификации. Если КС для вашего сертификата отсутствует, его следует установить в Firefox. Если нужный КС установлен, выделите его в окне менеджера сертификатов и щелкните кнопку Изменить. Установите флажки Этот сертификат может идентифицировать пользователя электронной почты и Этот сертификат может идентифицировать программное обеспечение.

Жирный восклицательный знак на пиктограмме, отображающей состояние подписи документа OpenOffice, свидетельствует о том, что структура подписи была нарушена (или удостоверяющий корневой сертификат не валиден).


Особенности национальной сертификации

По вполне понятным причинам государства контролируют (по крайней мере, отчасти) применение систем шифрования своими гражданами, и наше государство не является исключением. Если я правильно понимаю соответствующие законы нашей страны (а я не претендую на абсолютно правильное их понимание), пользоваться программами, прошедшими государственную сертификацию, обязательно только внутри государственных органов РФ и при взаимодействии с таковыми. В остальных случаях пользователь вправе защищать свои данные теми средствами, которыми он располагает. Удостоверяющие центры в нашей стране есть, и их немало. В числе предлагаемых ими алгоритмов и протоколов электронной подписи можно найти как определенные ГОСТами, так и описанные в различных RFC и FIPS.

В качестве материала для размышлений (а возможно, и для медитации) привожу Статью N 5, пункт 2, Федерального закона от 10 января 2002 года «Об электронной цифровой подписи»: «При создании ключей электронных цифровых подписей для использования в информационной системе общего пользования должны применяться только сертифицированные средства электронной цифровой подписи. Возмещение убытков, причиненных в связи с созданием ключей электронных цифровых подписей несертифицированными средствами электронной цифровой подписи, может быть возложено на создателей и распространителей этих средств в соответствии с законодательством Российской Федерации».

С текстами законов РФ, регламентирующих использование электронной цифровой подписи и некоторых других средств, можно ознакомиться, например, на сайте http://www.ekey.ru/lib/1.

Файлы сертификатов X.509

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

  • *.cer – сертификат, сохраненный в стандарте CER. Может включать сертификат, секретный ключ, путь сертификации.
  • *.der – сертификат, сохраненный в стандарте DER. Может включать сертификат, секретный ключ, путь сертификации.
  • *.crt – файл сертификата в формате CER, DER или Netscape.
  • *.pem – сертификат в кодировке Base64. Может также включать полный путь удостоверения сертификата и секретный ключ.
  • *.p8 – файл, содержащий секретный ключ, защищенный по стандарту PKCS#8.
  • *.p12 (в Windows используется расширение *.pfx) – файл сертификата, защищенный по стандарту PKCS#12. Может включать сертификат, секретный ключ, путь сертификации.

Как попасть в «сети доверия»?

Если вы хотите внести в бесплатный цифровой сертификат какиелибо сведения о себе помимо адреса электронной почты, необходимо убедить УЦ в достоверности этих сведений. Для этого вам придется лично встретиться с кем-то, кому УЦ доверяет. Даже если вы сами не можете посетить УЦ, выдающий бесплатные сертификаты, отчаиваться не стоит: вполне возможно, что УЦ уже пришел к вам. Для удостоверения сертификатов «на местах» многие УЦ создают сети доверия (Webs of Trust, WoTs). Сети доверия есть и у CAcert, и у Thawte. Сеть доверия – это группа частных лиц, которые пользуются доверием УЦ (назовем их нотариусами). Нотариусы сетей доверия участвуют в процессе удостоверения дополнительных сведений о владельцах сертификатов, а также в удостоверении новых нотариусов (в результате чего сеть доверия может расти «сама собой»).


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


Почему нужно встречаться с несколькими нотариусами WoT? Как и многие другие УЦ, Thawte измеряет доверие пунктами [assertion points]. Нотариусы WoT не удостоверяют вас сами, они лишь присваивают вам определенное количество пунктов доверия. Чтобы внести имя в свой сертификат Thawte, вы должны набрать 50 пунктов, а чтобы самому стать нотариусом – 100 пунктов. В то же время каждый нотариус Thawte WoT может присвоить вам от 10 до 35 пунктов, не более (данное ограничение затрудняет обретение доверия путем подкупа нотариусов, использования личных связей с нотариусами, давления на них и т.п.). Все это немного напоминает ролевую игру с пунктами «экспы». Хорошо еще, что для получения вожделенных пунктов доверия не требуется выиграть поединок на пластиковых мечах!


Нотариусы Thawte WoT есть и в нашей стране (по крайней мере, в крупных городах; более точную информацию вы можете получить, зарегистрировавшись на сайте Thawte). Некоторые нотариусы предоставляют свои услуги бесплатно, другие – за скромное вознаграждение (1–2 у.е.). Если удостоверение с помощью нотариусов вам не подходит, Thawte предлагает и другие способы идентификации (например, с помощью доверенных третьих лиц), но стоить это будет дороже. Напомню, что речь идет только о сертификатах Thawte, выдаваемых бесплатно. Полностью коммерческий сертификат Thawte можно получить, обратившись к представителю Thawte (в России, например, в компанию РБК).

Матерые пользователи OpenPGP часто смотрят свысока на цифровые сертификаты X.509. Тем не менее, именно сертификаты этого формата властвуют за пределами Linux, а потому мы должны использовать их в общении с не-линуксоидами. В конце концов, уважение к чужим традициям – важнейший принцип доброжелательного общения.

Персональные инструменты
купить
подписаться
Яндекс.Метрика