Использование Интернет-сети для хранения / передачи платёжных и других конфиденциальных данных требует наличие надёжного канала связи между компьютером пользователя и веб-сервером. Образование такого канала возможно в случае применения протоколов шифрования и аутентификации данных, одним из которых является SSL/TLS. Рассмотрим его основные характеристики и возможности, а также принципы применения на практике.
Общие сведения
SSL/TLS относится к классу криптографических протоколов, призванных обеспечить безопасный обмен данными между участниками сети на основе применения криптографических алгоритмов и преобразований.
Изначально был разработан SSL (Secure Sockets Layer), последняя версия SSL 3.0 которого была опубликована в 1996 г., но уже через два десятка лет была признана устаревшей из-за наличия многих уязвимостей и несовершенства архитектуры.
На базе SSL 3.0 был создан протокол TLS (Transport Layer Security), актуальная версия которого на данный момент времени – TLS 1.3. Поскольку аббревиатура SSL в кругу специалистов получила широкое распространение, её всё ещё используют, хотя техническая реализация, как правило, основывается уже на TLS, как более надёжном варианте.
На основе использования SSL был создан HTTPS, который «упаковывает» передаваемые данные в «криптографический формат» SSL. Для сервера в качестве идентификатора применения шифрования в протоколе гипертекста выступает номер используемого им порта – 443. Это упрощает налаживание связи при создании нового соединения между сервером и клиентом.
SSL является связующим звеном между одним из прикладных протоколов (HTTP, TELNET, FTP и др.) и протоколом транспортного уровня, выполняя при этом роль своеобразного фильтра, защищающего данные.
SSL, как и любой другой криптографический протокол, призван выполнять следующие основные функции:
- Формирование, обмен и разделение ключей;
- Аутентификация взаимодействующих сторон;
- Обеспечение конфиденциальности и целостности данных;
- Обеспечение целостности соединения.
Для реализации каждой из перечисленных функций применяется ряд алгоритмов.
Для работы с ключами в основном используются алгоритмы Diffie-Hellman, SRP, ECDH и уже устаревший RSA.
Для аутентификации – ECDSA, RSA и некоторые другие.
Для шифрования – DES, RC4, AES и другие.
Для хеш-функций, которые обеспечивают проверку целостности данных – MD5, SHA.
Процесс образования защищённого канала с сервером
Образованию защищённого канала между клиентом и сервером предшествует процедура подтверждения связи, квитирования SSL или, как говорят, «рукопожатие», во время которой происходит согласование параметров установки защищённого соединения. В качестве клиента обычно выступает браузер пользователя, который заходит на веб-сайт, размещённый на сервере. Приведём здесь основные шаги этой процедуры.
- Со стороны клиента поступает запрос к серверу на установку защищённого соединения;
- Серверу передаётся информация о технологиях шифрования, которые доступны клиентской стороне;
- Сервер сообщает клиенту о том, какие из доступных клиенту алгоритмы кодирования данных были им выбраны;
- Сервер передаёт цифровой сертификат вместе с открытым ключом для возможности его аутентификации;
- На клиентской стороне происходит проверка переданного сертификата на предмет его аутентичности на основе имеющихся на стороне клиента корневых сертификатов проверенных центров сертификации;
- В случае успешной проверки генерируется общий секретный сеансовый ключ, который необходим для кодирования сессии. Ключ может быть сгенерирован с использованием одного из приведённых выше алгоритмов, например, RSA или Диффи-Хеллмана, как наиболее надёжного.
В случае успешного завершения указанного процесса между его участниками происходит установка безопасного соединения с образованием канала, готового для передачи закодированных данных с использованием методов симметричного шифрования. Канал будет существовать до тех пор, пока соединение не будет завершено.
В случае если стороны по каким-либо причинам «не договорятся» соединение не будет установлено и процесс будет завершён с выдачей соответствующей ошибки.
Использование цифровых сертификатов
Чтобы убедиться в подлинности владельца открытого ключа, протокол SSL/TLS задействует возможности цифрового сертификата, который может быть как самоподписанным, так и выданным одним из доверенных центров сертификации. Этот документ может «работать» на уровне домена (Domain Validation), организации (Organization Validation) или проводить полную или расширенную проверку (Extended Validation).
Выяснить какой тип сертификата используется для того или иного сайта можно, кликнув по изображению замка, изображённого слева от адресной строки браузера.
Уровень используемого на сайте сертификата позволяет оценить степень доверия к нему со стороны пользователей. Поэтому очень часто банковские учреждения используют сертификаты наивысшего уровня – Extended Validation. В этом случае сертификационные центры производят не только формальную проверку домена, но и идентификацию его владельца – юридического или физического лица, что значительно повышает уровень доверия к сайту.