Общие сведения
Исторически сложилось так, что многие сервисы используют небезопасные протоколы, уязвимые к перехвату сетевых пакетов (POP3, FTP, SMTP, TELNET и др.) Это означает, что, например, сетевой пакет, в котором содержится ваш логин и пароль для доступа к FTP-серверу, может быть получен не только самим FTP-сервером, но и (при некоторых условиях) другим узлом сети. Таким способом злоумышленник может перехватить ваши аутентификационные данные.
Результат перехвата пакетов для FTP-сервера
Для решения проблем такого рода используются различные средства шифрования на основе симметричных и асимметричных алгоритмов шифрования.
Класс симметричных алгоритмов характеризуется тем, что для шифрования и расшифровки используется один и тот же ключ. Он секретен для стороннего наблюдателя, но его должны знать и отправитель, и получатель сообщения. Симметричные алгоритмы используются для быстрого шифрования. В асимметричном шифровании используется два ключа - один для шифрования, другой для расшифровки. В этом случае один из ключей является секретным, а другой общедоступным (открытым), поэтому такой класс алгоритмов еще называют шифрованием с открытым ключом. При этом не должно существовать эффективной процедуры для получения секретного ключа по известному открытому ключу. В симметричной криптографии есть принципиально не раскрываемые шифры. Асимметричные шифры раскрываемы в принципе, а знание секретного ключа лишь ускоряет дешифрование. Суть технологии асимметричного шифрования заключается в использовании такого алгоритма, вычисление которого со знанием некоторого секрета имело бы полиномиальную сложность (~na), а без этого знания - экспоненциальную (~en). Увеличивая число разрядов (n), можно добиться того, что решение задачи на современных вычислительных устройствах без знания секрета потребует несколько сотен или даже тысяч лет, а знание секрета позволяет решить эту же задачу достаточно быстро. Асимметричные криптоалгоритмы обычно применяют к небольшим объемам данных.
В настоящее время для большинства протоколов существует вариант их инкапсуляции (или туннелирования) в шифрованные "каналы", например SSL (Secure Socket Layer) или TLS (Transport Layer Security). В таком случае обеспечивается примерно следующая последовательность действий:
- По незашифрованному соединению сервер передаёт клиенту свой открытый ключ.
- Клиент генерирует ключ сессии для симметричного криптоалгоритма, шифрует ключ сессии открытым ключом сервера по асимметричному криптоалгоритму (RSA/DSA) и пересылает это зашифрованное сообщение серверу.
- Сервер получает и расшифровывает ключ сессии при помощи своего секретного ключа. Аутентификация пользователя (передача имени, пароля) и дальнейший обмен данными в соответствии с прикладным протоколом происходят в виде сообщений, зашифрованных при помощи ключа сессии по симметричному криптоалгоритму (AES/IDEA/3DES/RC4 и др.)
Почему такая схема достаточно безопасна? Если даже злоумышленник перехватит открытый ключ сервера или пакет с ключом сессии, он не сможет расшифровать ключ сессии, т.к. для этого нужен секретный ключ сервера, который по сети не передаётся. Хотя потенциально возможность взлома такого пакета существует, время актуальности ключа сессии намного меньше возможного времени взлома. Для каждого нового соединения клиент генерирует новый ключ сессии. Однако здесь не учитывается тот факт, что злоумышленник может выдать свою машину за сервер, и клиент, обратившись к серверу, получит отклик от этого лже-сервера. Чтобы исключить подмену сервера, клиент должен убедиться в том, что он установил соединение с подлинным сервером. Поэтому вместо просто передачи открытого ключа сервер передаёт клиенту свой сертификат. Сертификат содержит имя сервера, и различные сведения о нём, необходимые для его однозначной идентификации, а также открытый ключ сервера (или несколько - для разных алгоритмов) и период действительности сертификата. Вычисляется хэш сообщения с этой информацией. Хэш, зашифрованный при помощи секретного ключа стороннего сервера - центра сертификации, - формирует цифровую подпись сертификата. Чтобы проверить цифровую подпись, клиенту необходимо иметь открытый ключ центра сертификации, с помощью которого он может расшифровать хэш, содержащийся в цифровой подписи сертификата, и сравнить со значением, которое клиент вычисляет сам, проверяя подлинность сертификата. Если же проблема подмены сервера не считается актуальной, то сертификат сервера подписывается самим сервером (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. Наиболее вероятные места:
- /usr/lib/ssl/certs
- /usr/share/ssl/certs
- /etc/ssl/certs
- /usr/ssl/certs
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:
Диалог настроек в Mozilla 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, сохранённый на вашем локальном компьютере, вы можете просмотреть информацию о сертификате:
На вкладке "Состав" проверьте значения полей и "отпечаток" сертификата. Затем переходите к процедуре установки сертификата в хранилище доверенных корневых сертификатов центров сертификации, нажав на кнопку "Установить сертификат..." на первой вкладке, при этом запускается мастер импорта сертификатов:
На следующем шаге выбирается тип хранилища сертификатов. Следует отказаться от автоматического выбора типа хранилища и выбрать тип хранилища вручную, нажав на кнопку "Обзор..."
Среди предлагаемых хранилищ следует выбрать "Доверенные корневые центры сертификации".
После подтверждения выбранных действий, Windows выдаст следующее предупреждение системы безопасности:
Проверив "отпечаток", следует ответить "Да". После чего импорт будет успешно завершён.
Убедиться в том, что сертификат корректно установлен, можно, открыв "Свойства обозревателя" в "Панели управления". На вкладке "Содержание" следует нажать кнопку "Сертификаты..."
На вкладке доверенных корневых центров сертификации должен появиться сертификат thermo.karelia.ru. Из этого же диалога возможен альтернативный запуск мастера импорта сертификатов (кнопка "Импорт").