Понравился контент? Нажми:

Электронные подписи и цифровые сертификаты (продолжение)

- In Web we trust
Девиз сетей доверия

Первая часть

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

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

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

По вполне понятным причинам государства контролируют (по крайней мере, отчасти) применение систем шифрования своими гражданами, и наше государство не является исключением. Если я правильно понимаю соответствующие законы нашей страны (а я не претендую на абсолютно правильное их понимание), пользоваться программами, прошедшими государственную сертификацию, необходимо только внутри государственных органов РФ и при взаимодействии с таковыми. В остальных случаях пользователь в праве защищать свои данные теми средствами, которыми он располагает. Удостоверяющие центры в нашей стране есть и их немало. В числе предлагаемых ими алгоритмов и протоколов электронной подписи можно найти как определенные ГОСТами, так и описанные в различных RFC и FIPS. В качестве материала для размышлений (а возможно, и для медитации) привожу Статью N5, пункт 2, Федерального закона от 10 января 2002 года «Об электронной цифровой подписи»: «При создании ключ электронных цифровых подписей для использования в информационной системе общего пользования должны применяться только сертифицированные средства электронной цифровой подписи. Возмещение убытков, причиненных в связи с созданием ключей электронных цифровых подписей несертифицированными средствами электронной цифровой подписи, может быть возложено на создателей и распространителей этих средств в соответствии с законодательством Российской Федерации». С текстами законов РФ, регламентирующих использование электронной цифровой подписи и некоторых других средств, можно ознакомиться, например, на сайте www.ekey.ru/lib/1.

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

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

Наибольшей известностью среди УЦ, предоставляющих часть услуг бесплатно, пользуются три – Thawte Consulting, CAcert и Comodo Group. У каждого из этих УЦ есть свои достоинства и недостатки. Компания Comodo Group (известная многим своим бесплатным брандмауэром для Windows) использует для распространения сертификатов возможности браузера Internet Explorer, поэтому ее услуги для нас не подходят (разумеется, установив сертификат в браузер Windows, его потом можно «перетащить» в любую другую программу, в том числе и на платформу Linux, но мы, конечно, этого делать не будем). УЦ CAcert поддерживает и Windows, и Linux, и вообще предоставляет самый широкий спектр бесплатных услуг, но КС CAcert не предустановлены в популярных браузерах и почтовых клиентах (по крайней мере, на данный момент), а это значит, что для удостоверения вашего сертификата CAcert вашему контрагенту придется самому устанавливать КС CAcert. Далеко не каждый пользователь согласится что-то там устанавливать из Интернета, тем более что сообщения браузеров, не обнаруживших КС, выглядят пугающе. Например, IE 7 вообще советует уносить ноги с сайта CAcert (рис. 1). УЦ Thawte (основанный, кстати, небезызвестным Марком Шаттлвортом и проданный затем компании VeriSign) - большое имя в мире цифровых сертификатов, - предоставляет бесплатные сертификаты для удостоверения электронной почты (но не для SSL). Этот УЦ позаботился о том, чтобы его сертификаты можно было установить в любой системе, кроме того, КС Thawte предустановлены практически во всех программах, которые работают с цифровыми сертификатами. Если сертификат нужен вам для подписи и шифрования частной почты, бесплатные сертификаты Thawte – лучший выбор. Недостатком Thawte можно назвать то, что при выдаче бесплатных сертификатов не поддерживаются самостоятельно сгенерированные запросы на получение сертификатов (см. ниже). При этом Thawte не поддерживает установку сертификатов в Konqueror. В совокупности это означает, что для установки бесплатных сертификатов Thawte нужно использовать Firefox или Opera.

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

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

Существует две схемы получения сертификатов online. В первом варианте и сертификат, и пара ключей генерируются вашим браузером и отправляются на сайт УЦ. После того, как ваш сертификат появится на сайте УЦ, вы можете установить сертификат (и прилагающийся секретный ключ) в вашем браузере. Для того чтобы импортировать сертификат и секретный ключ в 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). Сохраните этот файл на диске, и помните, что без файла, содержащего секретный ключ, файл сертификата бесполезен.

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

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

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

Цифровые сертификаты X.509 поддерживаются многими популярными программами Linux. Мы рассмотрим установку и использование сертификатов в программах 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).

Рисунок 2. Kleoptra

Программа спросит пароль, которым защищен пакет PKCS#12, затем предложит указать дважды новый пароль для сохранения данных в настройках KDE. Установить сертификат в KDE можно также с помощью центра управления рабочим столом KDE. В окне центра управления перейдите в группу Security & Privacy->Crypto, перейдите на вкладку Your Certificates и воспользуйтесь кнопкой Import для импортирования сертификата из файла. При этом программа спросит вас, должен ли данный сертификат быть доступен KMail. После того как сертификат импортирован в KDE, вы можете настроить клиент KMail для работы с ним. В окне Edit Identity перейдите на вкладку Cryptography (рис. 3) и выберите сертификат для подписи сообщений по протоколу S/MIME (S/MIME signing certificate) и шифрования сообщений (S/MIME encryption certificate). При установке сертификата для электронной подписи в KMail нужно следить затем, чтобы почтовый адрес, включенный в сертификат, совпадал с адресом, для которого выполняется настройка, иначе почтовый клиент адресата выдаст сообщение о подлоге. Если вы подписываете письмо электронной подписью, KMail спросит у вас пароль, которым защищен соответствующий секретный ключ.

Рисунок 3. Окно настройки шифрования в KMail

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

gpgsm --fingerprint

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

Рисунок 4. Окно KWatchGnuPG

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

Установка сертификата и секретного ключа из файлов PKCS#12 в Thunderbird выполняется с помощью менеджера сертификатов этой программы (Thunderbird мог бы и сам извлекать сертификаты из хранилища Forefox, но он этого не делает). Откройте окно 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, свидетельствует о том, что структура подписи была нарушена (или удостоверяющий кК сертификат не валиден).

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

Если вы хотите внести в бесплатный цифровой сертификат какие-либо сведения о себе помимо адреса электронной почты, необходимо убедить УЦ в достоверности этих сведений. Для этого вам придется лично встретиться с кем-то, кому УЦ доверяет. Даже если вы сами не можете посетить УЦ, выдающий бесплатные сертификаты, отчаиваться не стоит, – вполне возможно, что УЦ уже пришел к вам. Для удостоверения сертификатов «на местах» многие УЦ создают сети доверия (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 WoT вам не подходит, Thawte предлагает и другие способы идентификации (например, с помощью доверенных третьих сторон), но стоить это будет дороже. Напомню, что речь идет только о сертификатах Thawte, выданных бесплатно. Полностью коммерческий сертификат Thawte можно получить, обратившись к представителю Thawte (в России, например, в компанию РБК).

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

Понравился контент? Нажми:



Статья впервые опубликована в журнале Linux Format

© 2008  Андрей Боровский <anb @ symmetrica.net>

На главную