О сертификатах    

Общие сведения

Исторически сложилось так, что многие сервисы используют небезопасные протоколы, уязвимые к перехвату сетевых пакетов (POP3, FTP, SMTP, TELNET и др.) Это означает, что, например, сетевой пакет, в котором содержится ваш логин и пароль для доступа к FTP-серверу, может быть получен не только самим FTP-сервером, но и (при некоторых условиях) другим узлом сети. Таким способом злоумышленник может перехватить ваши аутентификационные данные.

Небезопасное соединение, протокол TELNET
Результат перехвата пакетов для FTP-сервера
Результат перехвата пакетов для FTP-сервера

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

Класс симметричных алгоритмов характеризуется тем, что для шифрования и расшифровки используется один и тот же ключ. Он секретен для стороннего наблюдателя, но его должны знать и отправитель, и получатель сообщения. Симметричные алгоритмы используются для быстрого шифрования. В асимметричном шифровании используется два ключа - один для шифрования, другой для расшифровки. В этом случае один из ключей является секретным, а другой общедоступным (открытым), поэтому такой класс алгоритмов еще называют шифрованием с открытым ключом. При этом не должно существовать эффективной процедуры для получения секретного ключа по известному открытому ключу. В симметричной криптографии есть принципиально не раскрываемые шифры. Асимметричные шифры раскрываемы в принципе, а знание секретного ключа лишь ускоряет дешифрование. Суть технологии асимметричного шифрования заключается в использовании такого алгоритма, вычисление которого со знанием некоторого секрета имело бы полиномиальную сложность (~na), а без этого знания - экспоненциальную (~en). Увеличивая число разрядов (n), можно добиться того, что решение задачи на современных вычислительных устройствах без знания секрета потребует несколько сотен или даже тысяч лет, а знание секрета позволяет решить эту же задачу достаточно быстро. Асимметричные криптоалгоритмы обычно применяют к небольшим объемам данных.

В настоящее время для большинства протоколов существует вариант их инкапсуляции (или туннелирования) в шифрованные "каналы", например SSL (Secure Socket Layer) или TLS (Transport Layer Security). В таком случае обеспечивается примерно следующая последовательность действий:

  1. По незашифрованному соединению сервер передаёт клиенту свой открытый ключ.
  2. Клиент генерирует ключ сессии для симметричного криптоалгоритма, шифрует ключ сессии открытым ключом сервера по асимметричному криптоалгоритму (RSA/DSA) и пересылает это зашифрованное сообщение серверу.
  3. Сервер получает и расшифровывает ключ сессии при помощи своего секретного ключа. Аутентификация пользователя (передача имени, пароля) и дальнейший обмен данными в соответствии с прикладным протоколом происходят в виде сообщений, зашифрованных при помощи ключа сессии по симметричному криптоалгоритму (AES/IDEA/3DES/RC4 и др.)
Безопасное соединение, протокол SSH

Почему такая схема достаточно безопасна? Если даже злоумышленник перехватит открытый ключ сервера или пакет с ключом сессии, он не сможет расшифровать ключ сессии, т.к. для этого нужен секретный ключ сервера, который по сети не передаётся. Хотя потенциально возможность взлома такого пакета существует, время актуальности ключа сессии намного меньше возможного времени взлома. Для каждого нового соединения клиент генерирует новый ключ сессии. Однако здесь не учитывается тот факт, что злоумышленник может выдать свою машину за сервер, и клиент, обратившись к серверу, получит отклик от этого лже-сервера. Чтобы исключить подмену сервера, клиент должен убедиться в том, что он установил соединение с подлинным сервером. Поэтому вместо просто передачи открытого ключа сервер передаёт клиенту свой сертификат. Сертификат содержит имя сервера, и различные сведения о нём, необходимые для его однозначной идентификации, а также открытый ключ сервера (или несколько - для разных алгоритмов) и период действительности сертификата. Вычисляется хэш сообщения с этой информацией. Хэш, зашифрованный при помощи секретного ключа стороннего сервера - центра сертификации, - формирует цифровую подпись сертификата. Чтобы проверить цифровую подпись, клиенту необходимо иметь открытый ключ центра сертификации, с помощью которого он может расшифровать хэш, содержащийся в цифровой подписи сертификата, и сравнить со значением, которое клиент вычисляет сам, проверяя подлинность сертификата. Если же проблема подмены сервера не считается актуальной, то сертификат сервера подписывается самим сервером (self-signed certificate). Сертификат центра сертификации, как правило, является самоподписанным.

Таким образом, проблему возможной подмены сервера решает использование дополнительного сервиса - центра сертификации. Подлинность центра сертификации считается априорной, т.е. сертификаты центров сертификации, которым доверяет клиент должны быть изначально доступны клиенту. Дистрибьютивы многих операционных систем уже содержат установленные сертификаты глобальных центров сертификации, таких как GlobalSign, Thawte, VeriSign и др.

Сертификаты для сервисов КОМПОТ выданы центром сертификации Thermo Certification Authority. Корневой сертификат этого центра сертификации можно загрузить с http://dims.karelia.ru/cert/ThermoCA.cer

Информация о сертификате:
Общее имя (CN) thermo.karelia.ru
Организация (O) Petrozavodsk State University
Отдел (OU) Lab127 Team
Действителен 26.06.2003 - 21.06.2023
Хэш ("отпечаток") SHA1  DF:FD:72:07:E0:F8:75:E9:E9:A4:EF:CB:1B:12:BA:C5:4A:18:F9:F5

Далее описаны процедуры установки этого сертификата в различных программах. Установив этот сертификат, вы сможете использовать безопасные сервисы КОМПОТ без дополнительных подтверждений проверки сертификатов сервисов.

 

Библиотека OpenSSL

Большинство программных средств в Linux использует библиотеку OpenSSL. Вам необходимы права администратора (root) для того, чтобы установить в системе сертификат доверенного центра сертификации.

В первую очередь, необходимо выяснить, где располагается хранилище сертификатов в вашей версии OpenSSL. Наиболее вероятные места:

Если ни один из перечисленных каталогов не подошёл, попробуйте найти файл openssl.cnf. В том же каталоге, где находится этот файл, как правило, располагается подкаталог для хранения сертификатов:
find  /  -name  openssl.cnf

В каталоге-хранилище сертификатов каждый сертификат доверенного центра сертификации занимает отдельный файл вида hash.0, где hash - хэш имени центра сертификации. Определить хэш имени можно при помощи команды:

openssl  x509  -in  файл_сертификата -hash -noout

Для Thermo CA хэш имени имеет значение c5878d01. Соответственно, вам необходимо сохранить локальную копию файла ThermoCA.cer под именем /usr/lib/ssl/certs/c5878d01.0 (с учётом подходящего для вашей системы пути).

Другой вариант - сохранить этот файл с суффиксом .pem в каталоге сертификатов и запустить команду c_rehash, которая автоматически генерирует подходящие символические ссылки вида hash.0 для всех pem-файлов в каталоге сертификатов.

Проверить корректность установки сертификата можно при помощи следующей команды (файл ThermoCA.cer - в текущем каталоге):

openssl  verify  ThermoCA.cer
Система выдаст:
ThermoCA.cer: OK

Mozilla Firefox/Thunderbird

Firefox и Thunderbird имеют раздельные хранилища сертификатов. Если вы используете обе программы, сертификат ThermoCA.cer нужно установить в обеих программах. Доступ к менеджеру сертификатов осуществляется через диалог настроек (меню "Правка" в Linux или меню "Инструменты" в Windows). На вкладке "Дополнительно" в группе "Сертификаты" надо нажать кнопку "Упорядочить сертификаты..."

Диалог настроек в Mozilla Firefox:

Диалог настроек Firefox

Диалог настроек в Mozilla Thunderbird:

Диалог настроек Thunderbird

Процедура установки сертификата одинакова для обеих программ. В менеджере сертификатов на вкладке "Центры сертификации" следует нажать кнопку "Восстановить" (в некоторых переводах - "Импорт").

Менеджер сертификатов

При выдаче запроса на подтверждение загрузки сертификата следует выбрать случаи, в которых вы будете доверять центру Thermo CA. По крайней мере, надо выбрать "доверять при идентификации сайтов".

Подтверждение загрузки сертификата

Прежде чем нажимать "ОК", проверьте свойства и "отпечаток" сертификата.

Просмотр сертификата

После успешной установки сертификата Thermo CA, в списке центров сертификации появится "Petrozavodsk State University".

Менеджер сертификатов

При необходимости повторите процедуру для другого программного средства Mozilla.

The Bat!

Почтовый клиент The Bat! хранит сертификаты доверенных центров сертификации как контакты адресной книги. Чтобы добавить сертификат ThermoCA.cer к сертификатам доверенных центров сертификации следует открыть адресную книгу (меню "Инструменты", "Адресная книга") и создать новый контакт в книге "Trusted Root CA". Если эта группа скрыта, её можно отобразить, поставив галочку рядом с пунктом "Книги сертификатов" в меню "Вид".

Адресная книга

Создавая новый контакт, надо убедиться, что он будет размещён именно в книге "Trusted Root CA" (выпадающий список внизу диалога редактирования свойств контакта). Имя контакта роли не играет, можно установить, например, "ThermoCA".

Добавление записи в адресную книгу

На вкладке "Сертификаты" следует нажать кнопку "Импортировать" и указать файл ThermoCA.cer.

Импортирование сертификата

Проверьте свойства сертификата и сохраните новый контакт.

Импортирование сертификата

 

Internet Explorer/Outlook Express

Интернет-средства компании Microsoft используют единое хранилище сертификатов.

Двойным щелчком открыв файл ThermoCA.cer, сохранённый на вашем локальном компьютере, вы можете просмотреть информацию о сертификате:

Информация о сертификате

На вкладке "Состав" проверьте значения полей и "отпечаток" сертификата. Затем переходите к процедуре установки сертификата в хранилище доверенных корневых сертификатов центров сертификации, нажав на кнопку "Установить сертификат..." на первой вкладке, при этом запускается мастер импорта сертификатов:

Мастер импорта сертификатов, шаг 1

На следующем шаге выбирается тип хранилища сертификатов. Следует отказаться от автоматического выбора типа хранилища и выбрать тип хранилища вручную, нажав на кнопку "Обзор..."

Мастер импорта сертификатов, шаг 2

Среди предлагаемых хранилищ следует выбрать "Доверенные корневые центры сертификации".

Выбор хранилища

После подтверждения выбранных действий, Windows выдаст следующее предупреждение системы безопасности:

Предупреждение

Проверив "отпечаток", следует ответить "Да". После чего импорт будет успешно завершён.

Убедиться в том, что сертификат корректно установлен, можно, открыв "Свойства обозревателя" в "Панели управления". На вкладке "Содержание" следует нажать кнопку "Сертификаты..."

Свойства обозревателя

На вкладке доверенных корневых центров сертификации должен появиться сертификат thermo.karelia.ru. Из этого же диалога возможен альтернативный запуск мастера импорта сертификатов (кнопка "Импорт").

Сертификаты