Комплексное исследование SSL / TLS и их ихязвимостей
Автор перевода: Исаков А.Ю.
Авторы: Ashutosh Satapathy, Jenila Livingston L. M.
Источник: Research Associate School of Computing Science and Engineering VIT University-Chennai Campus Chennai, India
Аннотация
Бурное развитие интернета, привело к тому, что веб-технологии объединяют весь мир под одной крышей. Важным вопросом становится безопасность передачи электронной информации. Протокол SSL / TLS работают на транспортном уровне для защиты трафика приложений и обеспечения безопасного общения. Дыра в безопасности этих протоколов делают канал связи уязвимым для перехвата и изменения информации. В данной статье рассматриваются архитектуры SSL и TLS, и представлен обзор атак на SSL / TLS. А также во внимание принимаются факторы, способствующие этим атакам.
Ключевые слова
Уровень защищённых сокетов, протокол защиты транспортного уровня, алгоритмы сжатия, код аутентификации сообщений, режим сцепления блоков шифротекста, атаки SSL / TLS.
1. ВВЕДЕНИЕ
В современном мире сложно переоценить роль всемирной паутины (WWW), проникшую во все сферы жизни. Рост количества пользователей требует преобразования защиты веб-приложений. Уровень защищённых сокетов (SSL) / протокол защиты транспортного уровня (TLS) - это протоколы, использующиеся для предоставления услуг, надежной передачи данных на транспортном уровне [1]. Существует несколько версий SSL таких, как SSLv1.0, SSLv2.0, SSLv3.0 и т. д. SSLv3.1 в основном называется TLSv1.0, который обеспечивает обратную совместимость с предыдущими версиями SSL. Протокол SSL работает за счёт двух элементов, где первый - SSL соединение и второй SSL сеанс. Соединение SSL работает на транспортном уровне, для установки связи между клиентом и сервером. Каждый сеанс SSL связан с одним SSL-соединением. Протокол первоначального соединения SSL / TLS используется для создания сеанса путем обмена парой параметров (например, случайное число, идентификатор сеанса, набор шифров, методы сжатия и т. д.). Сеанс SSL работает в одном из двух различных состояний. Сеансовое состояние имеет дело с рядом параметров, таких как идентификатор сеанса, сертификат X509, методы сжатия, спецификация шифра, мастер-секрет и т. д. Состояние соединения включает в себя: отправку сервером и клиентом секретных ключей записей MAC, векторы инициализации, порядковые номера и т. д.
2. АРХИТЕКТУРА
2.1 Архитектура SSL
SSL представляет собой смесь четырех протоколов, которые обеспечивают безопасность протоколов верхнего уровня, таких как HTTP, FTP и других протоколов прикладного уровня. Они разделены по двум подуровням (см. Рисунок 1).

Рисунок 1 – Структура протокола SSL
2.1.1 Протокол записи SSL
Он служит основой для обеспечения конфиденциальности и целостности сообщений верхнего уровня. На стороне отправителя данные разбиваются на управляемые блоки, сжимаются, затем генерируется MAC и фрагменты шифруется вместе с соответствующим MAC. На стороне получателя эти процессы выполняются в противоположном порядке до того, как исходные сообщения доставляются получателю. По умолчанию в SSLv3.0 и во всех версиях TLS функция сжатие опциональна. Структура потока создания пакетов SSL разделена на пять частей (см. Рисунок 2).

Рисунок 2 – Принцип работы протокола записи SSL
- Алгоритмы сжатия: методы сжатия без потерь вызываются протоколом записи SSL для сжатия данных без каких-либо потерь. (например, кодирование Хаффмана, LZ77, GZIP и т. д.)
- Хеш-функции: безопасные хеш-функции играют главную роль при обеспечении конфиденциальности каждого сегмента данных. Самые популярные алгоритмы MD5 и SHA используются для вычисления MAC. (например, MD5, SHA-1, SHA-224, SHA-256 и так далее.)
- Алгоритмы шифрования: в SSL используются поточные или блочные методы симметричного шифрования. В случае поточного шифрование, сжатый фрагмент и MAC зашифрованы вместе. При блочном шифровании MAC дополняется битами заполнения и добавляются к фрагменту. Симметричные алгоритмы с их размерами ключа приведены в таблице 1 и таблице 2.
Алгоритм | Размер ключа (бит) |
---|---|
RC4 | 40 или 128 |
Алгоритм | Размер ключа (бит) |
---|---|
RC2 | 40 |
DES | 40 или 56 |
Fortezza | 80 |
IDEA | 128 |
3DES | 168 |
AES | 128 or 256 |
Как описано выше, хеш-функция с общим секретным ключом используется для вычисления кода аутентификации сообщений на основе хеширования (HMAC), где +
обозначает операцию конкатенации. Формула приведена ниже.
HASH (MAC_secret_key + pad_2 +
HASH (MAC_secret_key + pad_1 + seq_no +
compression_type + compressed_chunk_length +
compressed_chunk) (1)
Длина битов заполнения (pad_1 и pad_2) для MD5 и SHA-1 равна 384 и 320 бит соответственно. Сегментация позволяет максимальный размер фрагмента 214 байтов. Если применяется сжатие, длина фрагмента после сжатия не должна превышать 1024 байт. Таким образом, максимальный размер MAC составляет 1024 байта. 214 + 2048 байт - это максимальная длина SSL, именно поэтому алгоритм шифрования ограничивает добавочную длину 1024 байтами. Заголовок SSL протокола состоит из четырех основных полей, таких как тип, основная версия, младшая версия и длина данных после сжатия. Тип записи определяется протоколом первоначального соединения, протоколом изменения шифрования, протоколом приложения и протоколом тревоги, которые предоставляют информацию верхнему уровню протокола для обработки фрагментов/сегментов на стороне получателя. Основная и младшая версия указывает на используемые основную и младшую версию SSL. Сжатая длина указывает на количество байтов, содержащих данные.
2.1.2 Протокол изменения шифрования SSL
Это один из самых простых протоколов, использующихся протоколом записи SSL. Сообщение состоит только из одного бита. Бит со значением 1 извещает принимающую сторону, что последующие записи будут защищены в соответствии с новым договоренным шифром и ключами. Обычно новое SSL соединение сопровождается изменением сообщения спецификации шифра.
2.1.3 Протокол оповещения SSL
Он сообщает об ошибках вовремя SSL сессии. Сообщение тревоги, имеет длину 2 байта. Как и другие сообщения, оно зашифровано и сжато. Первый байт указывает на уровень тревоги и принимает два значения, такие как 1
- предупреждения или 2
- критический уровень. Если предупреждающее сообщение критично, связь должна быть прервана, и никакая новые соединения не могут быть установлена в рамка текущего SSL сеанса. Второй байт указывает на степень серьезность, определенным кодом, связанным с различными предупреждающими сообщениями. Предупреждающие сообщения с соответствующими кодами и типами перечислены в таблице 3 [2].
Код | Сообщение |
Описание | Тип |
---|---|---|---|
0 | close_notif | Больше нет сообщений получателю | Предупреждение |
10 | unexpected_message |
Неверное сообщение для получателя | Критическая ошибка |
20 | bad_record_mac |
Неверная запись MAC для получателя | Критическая ошибка |
21 | decryption_failed |
Неправильная расшифровка из-за неправильного размера фрагмента | Критическая ошибка |
30 | decryption_failed |
Ошибка декомпрессии из-за неправильного ввода | Критическая ошибка |
40 | handshake_failure |
Ошибка согласования из-за неправильной установки параметров безопасности | Критическая ошибка |
41 | no_certificate |
Ответ на соответствующий сертификат недоступен | Предупреждение |
42 | bad_certificate |
Поврежденный сертификат или содержит недействительную подпись | Предупреждение |
43 | unsupported_certificate |
Сертификат отправителя не поддерживается | Предупреждение |
44 | certificate_revoked |
Сертификат был отозван подписантом | Предупреждение |
45 | certificate_expired |
Выданный сертификат больше не действителен | Предупреждение |
46 | certificate_unknown |
Неопределенная проблема приводит к тому, что сертификат не подходит при работе | Предупреждение |
47 | illegal_parameter |
Параметры безопасности несовместимы с первоначальным соединением | Критическая ошибка |
2.1.4 Протокол первоначального соединение SSL
Это первый протокол, вступивший в действие после установления соединения по протоколу транспортного уровня. Перед отправкой данных клиент и сервер проверяют друг друга и обмениваются необходимыми параметрами безопасности, такими как набор шифров, методы сжатия, случайное число и т. д. (см. Рисунок 3). Пакет протокола первоначального соединения состоит из трех полей. Тип
занимает 1 байт, представляет тип пакета, Длина
в 3 байта указывает длину пакета, а Контент
(? 0 байтов) содержит необходимые параметры безопасности, которые должны быть установлены во время соединения. Сообщения первоначального соединение с соответствующими кодами и параметрами безопасности перечислены в таблице 4 и таблице 5.

Рисунок 3 – Работа протокола SSL / TLS
Код | Сообщение | Параметры |
---|---|---|
0 | MT_hello_request | Void |
1 | MT_client_hello | version,random_no, session_id, cipher_suite, compression_tech |
2 | MT_sever_hello | version,random_no, session_id, cipher_suite, compression_tech |
11 | MT_certificate | X.509 certificates chain |
12 | MT_server_key_exchange | msg_signature, public_parameters |
13 | MT_certificate_request | cert_authorities, cert_type |
14 | MT_server_done | Void |
15 | MT_client_key_exchange | msg_signature, public_parameters |
16 | MT_certificate_verify | cert_signature |
20 | MT_finished | MD5_hash + SHA_hash |
Параметр | Значение |
---|---|
Алгоритмы обмена ключами | RSA, Diffie-Hellman, Fortezza |
Алгоритмы шифрования | RC4, RC2, DES, 3DES или IDEA, Fortezza |
Алгоритм MAC | MD5 или SHA |
Тип шифра | Поточный или блочный |
Размер MAC | MD5(0 или 16 байт) или SHA (20 байт) |
IV размер | Размер вектора инициализации, используемый в CBC |
CHR: MT_client_hello.random_no
SHR: MT_server_hello.random_no
SPM: secret_pre_master
SM: secret_master
HSM: Handshake_messages upto current message
CVSM: MT_certificate_verify.cert_signature.MD5_hash
CVSS: MT_certificate_verify.cert_signature.SHA_hash
KB: Key_block
Чтобы обеспечить безопасность обмена ключами, подпись берется путем шифрования хеша с помощью закрытого ключа отправителя. Открытые параметры содержат информацию о различных криптографических алгоритмах, перечисленных в таблице 6. SHA-1 используется для создания подписи стандарта цифровой подписи (DSS), а MD5 и SHA-1 (36 байтов) используются для подписи RSA.
Алгоритм | Публичные параметры |
---|---|
Ephemeral Diffie-Hellman | Простое число и его первообразный корень |
RC4 | Открытый ключ (экспонента и модуль) |
Вычисление хэша приведено ниже.
HASH (CHR+SHR+public_parameters) (2)
После обмена сертификатом и ключом с сервером он запрашивает сертификат клиента через сообщение certificate request. В ответ клиент отправляет собственный сертификат, параметры обмена ключами и завершается сообщением certificate_verify. Параметры обмена ключами с клиентом приведены в таблице 7.
Алгоритм | Публичные параметры |
---|---|
Ephemeral Diffie-Hellman | Простое число и его первообразный корень |
RC4 | 48 бит в зашифрованном виде secret_pre_master |
certificate_verify содержит подпись сертификата клиента и рассчитывается следующим образом.
CVSM = MD5 (SM+pad_2+MD5 (HSM+SM+pad_1)) (3)
CVSS = SHA(SM+pad_2+SHA (HSM+SM+pad_1)) (4)
Как упоминалось выше, SHA-1 используется для подписи DSS, а MD5 и SHA-1 используются для подписи RSA. Сообщения первоначальное соединение содержат все сообщения от MT_client_hello до MT_client_key_exchange. Последнее сообщение подтверждает, что обмен ключами прошел успешно или нет, за которым сразу же следует изменение спецификации шифра. Расчет, приведен ниже.
MD5 (SM+pad_2+MD5 (HSM+sender_id+SM+pad_1) +
SHA (SM+pad_2+SHA (HSM+sender_id+SM+pad_1)
(5)
sender_id определяет, является ли текущий отправитель клиентом или сервером. Параметры обмена между сервером и клиентом Диффи-Хеллмана используются для расчета соответствующих открытых ключей, которыми обмениваются для вычисления SPM с обеих сторон. Параметры обмена ключами клиента RSA содержат зашифрованный SPM, который расшифровывается ключом сервера для вычисления SM.
SM =MD5 (SPM+SHA (A
+SPM+CHR+SHR)) +
MD5 (SPM+SHA (BB
+SPM+CHR+SHR)) +
MD5 (SPM+SHA (CCC
+SPM+CHR+SHR))
(6)
В случае 3DES_ECE_CBC_SHA, сообщение спецификации шифра изменения SSL требует server_send_key (168-битный ключ + 24 управляющих бита), client_send_key (24 байта), server_send_MACsecret (20 байт), client_send_MACsecret (20 байт), server_send_IV (8 байт), client_send_IV (8 байт) для изменения состояния ожидания на текущее состояние. Таким образом, он требует, чтобы из SM был сгенерирован ключевой блок из 104 байтов, который содержит вышеуказанные параметры в последовательном порядке.
KB= MD5 (SM+SHA („A?+SPM+CHR+SHR)) +
MD5 (SM +SHA („BB?+SPM+CHR+SHR)) +
MD5 (SM+SHA („CCC?+SPM+CHR+SHR)) + […]
(7)
2.2 Архитектура TLS
Так как TLS является обновленной версией SSL, он имеет ту же архитектуру и протоколы, за исключением некоторых изменений параметров безопасности и вычисления MAC, цифровой подписи и блока ключей. В нем также представлены некоторые новые предупреждающие сообщения и псевдослучайная функция для усиления безопасности по сравнению с SSL.
2.2.1 Протокол записи TLS
1. Версия: указывает основную и младшую версию, поддерживаемую клиентом для текущего TLS соединения. Основные и младшие версии разных версий TLS перечислены в таблице 8, в отличие от основной и младшей версии для SSL, равных 3 и 0 соответственно.
Основная | Младшая |
Класс |
---|---|---|
3 | 1 | TLS 1.0 |
3 | 1 | TLS 2.0 |
3 | 1 | TLS 3.0 |
2. MAC: криптографическая хеш-функция с общим секретным ключом используемым для вычисления MAC. Здесь compression_version объединяется с другими полями, которые совпадают с полями блока SSL, показанными в уравнении (1).
(MAC_secret_key, seq_no +TLS_compression_type +
TLS_compression_version +
TLS_compressed_chunk_length + TLS_compressed_chunk)
(8)
3. Псевдослучайная функция (PRF): принимает общую секретную метку (tag) и данные в качестве входных. Он рассчитывается путем взятия XOR для двух хеш-значений (MD5 и SHA). shared_secret_left и shared_secret_right указывают на левую и правую половину общего секретного значения. Pseudo_MD5 и Pseudo_SHA трижды вызываются для получения (3x16 байт) и (3x20 байт) для конечного вывода в 48 байт. В случае Pseudo_SHA из 60 байтов последние 12 байт удаляются для получения 48 байтов.
PRF (shared_secret, tag, data) =
(Pseudo_MD5 (shared_secret_left, tag +data)) XOR
(Pseudo_SHA (shared_secret_right, tag+ data))
(9)
Здесь псевдослучайная функция вызывается два раза функциями pseudo_MD5 и pseudo_SHA, где data’ - это конкатенация tag и data в PRF.
Pseudo_hash (key, data?) =
HMAC_hash (key, pMAC (1) +data?) +
HMAC_hash (key, pMAC (2) + data?) +
HMAC_hash (key, pMAC (3) + data?) + ….
(10)
pMAC (0) = data’
pMAC (k) = MAC_hash (key, pMAC(k-1)) (11)
HMAC_hash - это HMAC_MD5 для Pseudo_MD5 и HMAC_SHA для Pseudo_SHA. И pad_2 (512 бит) и pad_1 (512 бит) несут двоичные значения X5C и X36 соответственно, которые повторяются 64 раза.
HMAC_hash (key, data?) = hash ((key? XOR pad_2) +
hash ((key XOR pad_1) + data?))
(12)
2.2.2 Протокол первоначального соединение TLS
- Cipher Suite: TLS поддерживает алгоритмы обмена ключами и шифрования, такие же, как SSL, указанный в таблице V, за исключением Fortezza. Также добавлена поддержка вариации протокола Диффи-Хеллмана с использованием эллиптической криптографии.
- Certificate Types: Отвечает на запрос сертификата подписанный сертификатом TLS, RSA или DSS выдается тогда, когда параметры обмена ключами являются открытыми параметрами RSA или Диффи-Хеллмана, перечисленные в таблицах VI и VII.
- Certificate Verify Message: содержит подпись сертификата клиента, рассчитанную по предыдущим сообщениям первоначального соединения путем их хеширования. Это исключает объединение главного секрета и дополняющих битов с сообщениями первоначального соединения перед вычислением хэша, поскольку они не усилят безопасность сертификата.
MT_certificate_verify.cert_signature.MD5_hash =
MD5 (handshake_messages) (13)MT_certificate_verify.cert_signature.SHA_hash =
MD5 (handshake_messages) (14) - Finished Message: в отличие от SSL, хэш (MD5 и SHA) вычисляется по сообщениям рукопожатия, и их объединение предоставляется в качестве входных данных для PRF.
PRF (secret_master, tag, MD5 (handshake_messages)
+SHA (handshake_messages)) (15) - Master Secret and Key Block Computation: мастер-секрет рассчитывается путем вызова функции PRF для трех входных данных, таких как предварительный секрет, тег и конкатенация случайного числа клиента и сервера, что намного проще, чем SSL.
secret_master = PRF (secret_pre_master,
master secret
,
MT_client_hello.random_no +
MT_server_hello.random_no) (16)Ключевой блок вычисляется по трем входным параметрам, таким как главный секрет, тег и конкатенация клиентского и серверного случайных значений, путем передачи их в PRF.
key_block = PRF (secret_master,
key expansion
,
MT_client_hello.random_no +
MT_server_hello.random_no) (17) - Padding: в отличие от SSL, перед шифрованием биты дополнения длиной от 0 до 28 -1 объединяется с MAC, чтобы размер фрагмента был кратным размеру блока шифра. В SSL минимальное количество битов расширения добавляется, чтобы сделать несколько блоков шифрования.
2.2.3 Протокол оповещения TLS
В TLS, добавлены дополнительные предупреждающие сообщения для обеспечения надежности связи, приведенны в таблице 9 [2]. В TLS поддерживаются все предупреждающие сообщения SSL, кроме кода оповещения 41.
Код | Сообщение |
Описание | Тип |
---|---|---|---|
22 | Record_overflow | Размер записи превысил 214 + 2048 байт | Критическая ошибка |
48 | unknown_ca |
Сертификат CA не может быть доверенным или обнаруженным | Критическая ошибка |
49 | accessed_denied |
Ошибка согласования из-за контроля доступа, предоставленного получателем | Критическая ошибка |
50 | decode_error |
Информация не может быть правильно декодирована из-за неправильной длины сообщения | Критическая ошибка |
51 | decrypt_error |
Невозможно расшифровать секретный ключ, проверить цифровую подпись или подлинность сообщения | Предупреждение |
60 | export_restriction |
Обнаружены и прекращены обмен из-за ограничения экспорта | Критическая ошибка |
70 | protocol_version |
Версия протокола не поддерживается сервером | Критическая ошибка |
71 | insufficient_security |
Ошибка установления связи из-за несоответствия набора шифров, требуемого сервером | Критическая ошибка |
80 | internal_error | Ошибка связана с локальной системой и не связана с SSL | Критическая ошибка |
90 | user_cancelled |
Некорректное завершение сеанса пользователем | Критическая ошибка |
100 | no_renegotiation |
Ответ клиента или сервера на запрос некорректен | Предупреждение |
2.3. Режим сцепления блоков шифротекста
Режим сцепления блоков шифротекста - это один из режимов блочного шифрования, который использует механизм обратной связи. Для создания зашифрованного блока используется вектор инициализации (IV) из KB, представленной в уравнении (7). Каждый блок открытого текста (кроме первого) побитово складывается по модулю 2 (операция XOR) с предыдущим результатом шифрования. (см. Рисунок 4).

Рисунок 4 – CBC для шифрования
При расшифровке в CBC операция XOR выполняется после дешифрования текста ключом, где IV для первого блока открытого текста берется из KB. Предыдущий зашифрованный текст действует как IV для следующего блока открытого текста (см. Рисунок 5).
Plain (k) = D [k, Cipher (k)] XOR Cipher (k-1) (19)

Рисунок 5 – CBC для расшифровки
3. ТИПЫ АТАК
Одна из самых больших угроз безопасности транспортного уровня из-за уязвимостей в SSL / TLS, который используется для защиты связи между отправителем и получателем. В SSL / TLS существует ряд уязвимостей как к активным, так и пассивным атакам, таким как BEAST, CRIME, TIME, BREACH, LUCKY 13, RC4 BIASES, SSL Renegotiation, POODLE, Truncation, Bar Mitzvah и т. д. [3] способы их устранения приведены в таблице 10.
3.1 Атака BEAST
Это уязвимость в SSL / TLS. Одна из самых первых атак на TLS 1.0 и была разработана Т. Дуонгом и Дж. Риазо. Для определения секретного ключа, который используется для шифрования открытого текста, используются преимущества симметричного шифрования и режим сцепления блоков шифротекста (CBC). В TLS 1.0 последний текстовый блок шифра является вектором инициализации для текущего открытого текста. Операция XOR между вектором инициализации и открытым текстом шифруется симметричным ключом для создания соответствующего зашифрованного текста. Если злоумышленник сможет узнать блок открытого текста, то он сможет узнать симметричный ключ и проверить, совпадает ли зашифрованный текст или нет [4, 5]. Это один из методов атаки грубой силы, которому подвержены TLS 1.1 и TLS 1.2.
3.2 CRIME-атака
Атака с происходит путем перехвата и дешифрования cookie-файлов сеанса в TLS 1.0 и была разработана Дж. Риазо и Т. Дуонгом [6]. Он использует преимущества сжатия заголовков TLS и SPDY. SPDY - это открытый сетевой протокол и контроль HTTP-трафика, разработанный Google. Оба метода сжатия TLS и SPDY используют алгоритм DEFLATE, который удаляет дублирующую строку путем сжатия, а затем шифрует ее. Ключ получается путем обмана браузера и отправки зашифрованного сжатого запроса на подлинный веб-сайт, ожидания размера ответа HTTP и атаки осуществляются по отношению к ответам HTTP [7]. Злоумышленник повторяет технику с разными значениями, пока ключ не будет получен. Это один из методов атаки грубой силы, устранить эту уязвимость можно с помощью отключения сжатия в TLS 1.1 и TLS 1.2.
3.3. Атака по времени
Атака Timing Info-Leak Made Easy (TIME), с помощью которой злоумышленник извлекает секретную информацию без перехвата данных в сети, была разработана Т. Бери и А. Шульманом из Imperva. Чтобы выполнить эту атаку, злоумышленнику необходимо узнать расположение файлов cookie, префикс / суффикс и место для вставки открытого текста. Информация о cookie-файлах сеанса получается при помощи анализа времени, необходимого для получения ответа от сервера / получателя [8]. Из-за шума в сети один процесс будет повторяться в течение определенного отрезка времени, а минимальное время ответа принимается за окончательное время ответа для этого конкретного запроса. Предположим, что входные данные клиента содержат секретный элемент = неизвестные данные
, который является полезной нагрузкой и секретным элементом, и его значение отражается на ответе. В первой итерации для произвольного пользовательского ввода размер ответа составляет 1028 байт. Если во второй итерации пользователь вводит секретный элемент = a
, а размер ответа составляет 1008 байтов. Таким образом, это занимает меньше времени по сравнению с первой итерацией. По несколькими запросами вычисляется самое короткое время ответа для каждого символа и каждой позиции в полезной нагрузке, что позволит определить и конкретные значения секретного элемента.
3.4 BREACH атака
Browser Reconnaissance and Exfiltration via Adaptive Compression of Hypertext – это криптографическая атака разработанная А. Прадо, Н. Харрисом и Ю. Глаком [9]. Атакующий использует технику сжатия HTTP (алгоритм LZ77), отправляя большое количество запросов и, таким образом, угадать все символы аутентификационного токена [8]. Достаточно менее 30 секунд для того, чтобы получить секретную информацию, такую как токен CSRF, состояние просмотра и т. д. К ней уязвимы все версии SSL или TLS. Чтобы начать атаку, злоумышленник и жертва должны быть в одной сети. Драйвер веб-сервера, называемый iframe streamer, позволяет внедрить специальный код в каждый незашифрованный HTTP запрос, открытый браузером жертвы. Отправляя одни и те же запросы несколько раз подряд и анализируя разницу в размерах полученных ответов можно получить необходимую информацию. Базовая логика оракула - это набор алгоритмов, используемых для угадывания секретных данных. Для борьбы с кодированием Хаффмана используется набор символов плюс произвольное заполнение, а для борьбы с блочным шифром - оконная техника. Это одна из самых опасных атак на SSL, которая все еще не исправлена.
3.5. Атака LUCKY 13
В настоящее время это одна из эффективных атак которой подвержен SSL. Она была разработана Н. А. Фарданом и К. Патерсоном в Роял Холлоуэй, Лондонский университет, в феврале 2013 года. В ней используется техника padding oracle
- атака по боковому каналу, в которой влияют дополнить открытый текст до целого числа блоков. Атакующий использует цепочку блоков шифрования TLS, заменяя последние несколько байтов выбранными байтами и отслеживая количество времени, затрачиваемое сервером на ответ [10]. Пакеты TLS, содержащие исходное сообщение, требуют меньше времени для обработки. Если TLS генерирует транзакцию для сбоя, он генерирует сообщение, в котором содержатся ошибки, которые помогают злоумышленнику отправлять вредоносные пакеты в новом сеансе, неоднократно поддерживая каждую вышеуказанную ошибку [6, 11]. Результат показывает, что для получения информации о cookie- файлах, требуется 223 сеанса, и 219 сеансов, если в TLS используется 64-битная схема кодирования. В целом для атаки LUCKY 13 требуется 213 сеансов, если известен хотя бы один бай MAC или дополнения.
3.6 Атака RC4 BIASES
Также известна как атака ARC4 или ARCFOUR, обнаруженная Альфарданом, Бернштейном, Патерсоном, Поеттерингом и Шульдтом путем использования всех версий SSL / TLS. Алгоритм шифрования RC4-128 используется для шифрования исходных данных. Он принимает 128 битный ключ и генерирует строку случайных ключей. Над ключами и блоком открытых текстов для создания блока зашифрованных текстов выполняется операция XOR. Проблема заключается в том, что случайные ключи, генерируемые RC4, не совсем случайны, что полезно для восстановления некоторой части открытого текста с большим количеством шифров TLS [12, 13]. Если один и тот же исходный текст зашифровать с помощью различных ключей RC4, то будут получены различные зашифрованные тексты. Но поскольку ключи не совсем случайны или существуют крошечные искажения, в зашифрованных текстах будут совпадения. Злоумышленники подсчитывают эти совпадения, выполняя статистический анализ отдельных частей зашифрованных текстов. Экспериментальные результаты показывают, что, проанализировав приблизительно 232 зашифрованных текста, можно получить исходный текст. Для получения исходного текста из зашифрованных текстов требуется около 230 сеансов.
3.7 Атака повторного согласования SSL
Это атака осуществляет с помощью уязвимости SSL 3.0 и всех версий TLS, она была обнаружена М. Рэем и С. Диспенсой в августе 2009 года. Злоумышленник перехватывает HTTP соединение, чтобы добавить открытый текст в преобразование [14]. Во время безопасной онлайн-транзакции клиент инициирует процесс установления связи по SSL. Злоумышленник блокирует запрос и перехватывает эти пакеты. Затем он начинает новый сеанс и завершает процесс первоначального соединения. Сервер запрашивает пересмотр. Блочные пакеты жертвы будут отправлены на сервер, который будут новым первоначальным соединением SSL в течение ранее установленного сеанса. Двух сессий достаточно, чтобы начать атаку против жертвы. Защититься от данной атаки можно отключив повторное согласование на стороне сервера, либо клиент-сервер должен проверить предыдущее подтверждение связи.
3.8 POODLE attack
Атака Padding Oracle On Downgraded Legacy Encryption - один из MITM атак, когда злоумышленник использует уязвимости SSL 3.0 для расшифровки cookie-файлов HTTP [11]. Он был обнаружен Б. Моллером, Т. Дунгом и К. Котовичем 14 октября 2014 года. Злоумышленник подключается между клиентом и сервером, которые понизил версию TLS v1.0 при попытке первоначального соединения между ними для безопасной передачи в SSL v3.0. В SSL v3.0 используется техника случайного заполнения, то есть не говоритcя, какими должны быть байты заполнения для получения целого числа фрагментов, для выполнения операции объединения блоков. Эти байты не проверяются при расшифровке. Последний байт заполнения указывает на количество байтов заполнения, что помогает злоумышленнику инициировать атаку [15]. Атакующий модифицирует последний байт, и после расшифровки количество байт заполнения не будет влияния на байты MAC. После этого сообщение будет принято сервером, чего и добивался злоумышленник для получения исходного байта, и таким образом будет узнавать по одному байту за раз, выполняя операцию XOR. 1 из 256 сообщение будет принято; в худшем случае сеанс будет прерван.
3.9 Атака FREAK
Factoring RSA Export keys (FREAK) является одной из уязвимостей TLS, обнаруженных в нескольких известных браузерах (например, Safari, браузер Android, Cisco, Opera). Также известная, как атака на поддельный сервер против браузера. Целью атакующего являются ослабленные версии шифров экспорта, используемые TLS. Эти алгоритмы реализованы в нескольких клиентских библиотеках TLS, таких как Open SSL, Boring SSL, LibReSSL, IBM JSSE, SChannel и т. д. В браузере вышеуказанные библиотеки неправильно использует набор экспортных шифров, даже если между сервером и клиент не согласован набор экспортных шифров для обмена информацией. Согласование набора экспортных шифров между сервером и клиентом позволяет злоумышленнику обманом заставить браузер клиента использовать нестойкий ключ экспорта, выполняя MITM атаку [16]. Атака FREAK ослабляет набор шифров, используя для обмена ключами, RSA c размером ключа меньше 512 бит. Таким образом, для факторизации потребуется менее 12 часов [17]. Как и FREAK, уязвимости Logjam в SSL / TLS позволяют злоумышленнику использовать ослабленный пакет шифров экспорта, который использует алгоритм обмена ключами Диффи-Хеллмана [18]. Это можно предотвратить, отключив экспортный набор шифров в браузере.
3.10 Атака Bar Mitzvah
Уязвимость потокового алгоритма шифрования RC4, поддерживаемого SSL / TLS, позволяет извлекать данные передаваемые по зашифрованному каналу связи [12, 19] Атакующий пытается заполучить слабые ключи, нацеливаясь на первые 100 байтов зашифрованной информации, из которых 36 байтов первого защищённого сообщения в рамках нового сеанса SSL / TLS. Поскольку сообщение содержит значительную часть предсказуемой информации, эти сообщения подвергаются операции XOR с зашифрованным первым защищённым сообщением для получения части Pseudo Random Number Generator Sequences (PRNGS). После отбрасывания PRNGS, которые не соответствуют шаблону PRNGS, генерируемому слабыми ключами, все ключи выбранных PRNGS используются для расшифровки зашифрованного текста, полученного злоумышленником, с использованием алгоритма RC4. Ключи с вероятностью 0,5 будут успешно определены, что сводит к минимуму количество попыток, предпринятых атакой грубой силы, как разность 211,2. Эта атака не может извлечь целиком исходный текст из зашифрованного.
3.11 Атака TLS Truncation
Аварийное завершение TLS соединения, выполненное злоумышленником для поддержания сеанса жертвы с использованием соединения с несколькими браузерами [20]. Была разработана Б. Смитом и А. Пиронти в июле 2013 года. Для повышения производительности веб-браузер контент загружается через несколько соединений. Поскольку TLS обеспечивает целостность и конфиденциальность по одному соединению, несколько подключений клиента к одному серверу выполняется по одному TLS соединению. Перед выполнением этой атаки злоумышленник имеет полный контроль над сетью, что позволяет производить манипуляции с пакетами. Во время запроса клиента на выход из системы путем введения сообщения TCP FIN или RESET, передается сообщение с запросом, недоступным для сервера из-за некоректного завершения соединения. Поскольку подтверждение выхода происходит до того, как сервер получил запрос на выход, злоумышленник запускает эту атаку, чтобы сохранить сеанс без ведома жертвы. Наконец, другое подключение браузера используется для доступа к учетной записи жертвы и ее дальнейшего изменения.
Атака | Способы исправление |
---|---|
BEAST | Использовать RC4, 3DES, AES 256 |
CRIME | Отключить сжатие TLS |
TIME | Шифровать MAC, используя AES-GCM шифры |
LUCKY 13 | Добавление случайных задержек, использовать аутентифицированное шифрование, использовать RC4 |
BREACH | Отключить HTTP-сжатие |
RC4 BIASES | Отключить RC4 в SSL / TLS |
SSL Renegotiation | Клиент и сервер проверяют предыдущую первоначальное соединение |
POODLE | Отключить SSL 3.0 в веб-браузере |
FREAK | Настроить SSL / TLS более криптостойкие версии шифра |
Bar Mitzvah | Отключить RC4 в SSL / TLS |
TLS Truncation | Централизованная аутентификация и цепные выходы |
4. ЗАКЛЮЧЕНИЕ
SSL / TLS, два криптографических протокола используемых для защиты каналов связи между двумя сторонами, обеспечивая два уровня безопасности, такие как аутентификация и шифрование пользовательских данных. Логическая или операционная ошибка в этих протоколах дает злоумышленнику возможность использовать его. В этой статье описывается архитектура и порядок работы этих протоколов, а также кратко описываются различные типы атак и способы их исправления. Наконец, необходимо провести дополнительные исследования в этой области, чтобы повысить степень безопасности SSL / TLS за счет уменьшения количества ошибок.
5. ССЫЛКИ
[1] Stalling, W. (2011). Transport-Level Security. In
Cryptography and Network Security (5th ed., pp. 485-
520). Upper Saddle River, NJ: Pearson.
[2] Panday, K. K. SSL/ TLS Alert Protocol and the Alert
Codes. Retrieved October 10, 2014, from
https://blogs.msdn.microsoft.com/kaushal/2012/10/05/ssltls-alert-protocol-the-alertcodes/
[3] Sarkar, P. G., and Fitzgerald, S. (2013). Attack on SSL:
A Comprehensive study of BEAST, CRIME, TIME,
BREACH, LUCKY 13 and RC4 BIASES [PDF]. San
Francisco, CA: ISECPartners.
[4] Newman, R. Taming the B.E.A.S.T. - owasp.org.
Retrieved October 21, 2014, from
https://www.owasp.org/images/1/10/Taming_the_B.E.A.S.T..pdf/
[5] Luedtke, D. (2012, April 18). BEAST attack on SSL/TLS
explained-SlideShare [PPT]. Munich: University of
German Federal Armed Forces.
[6] BEAST vs. CRIME Attack. (13, October 14). Retrieved
November 01, 2014, from
http://resources.infosecinstitute.com/beast-vs-crimeattack/
[7] Beery, T. and Shulman, A. (2013, March). A Perfect
Crime? Only Time Will Tell [PDF]. Amsterdam,
Netherlands: Blackhat.
[8] Beery, T., and Shulman, A. (2013, October 10). Black
Hat EU 2013 – A Perfect CRIME? Only TIME Will Tell.
Retrieved November 15, 2014, from
http://www.youtube.com/watch?v=rTlpFfTp3-w
[9] GLUCK, Y., HARRIS, N., and PRADO, A. (2013, July
12). BREACH: Reviving the CRIME Attack [PDF].
[10] Fardan, N. J., and Paterson, K. G. (May 2013). 2013
IEEE Symposium on Security and Privacy (pp. 526-540).
IEEE.
[11] Franke, D. F. (2014, October 14). How POODLE
Happened. Retrieved December 21, 2014, from
https://www.dfranke.us/posts/2014-10-14-how-poodlehappened.html.
[12] Bar Mitzvah Attack. Retrieved December 25, 2014, from
https://www.blackhat.com/docs/asia-15/materials/asia15-Mantin-Bar-Mitzvah-Attack-Breaking-SSL-With-13-Year-Old-RC4-Weakness-wp.pdf
[13] Paterson, K. (2013, August 28). On the security of RC4
in TLS and WPA. Retrieved December 25, 2014, from
http://www.isg.rhul.ac.uk/tls/
[14] Zoller, T. (2005). TLS/ SSLv3 renegotiation vulnerability
explained – G-SEC. Retrieved December 28, 2014, from
http://www.g-sec.lu/practicaltls.pdf.
[15] Bowes, R. (2013, January 2). Padding oracle attacks: In
depth. Retrieved July 10, 2015, from
https://blog.skullsecurity.org/2013/padding-oracleattacks-in-depth
[16] Vulnerability Notice: FREAK – Factoring attack on
RSA-Export keys. (2015, March 20). Retrieved April 12,
2015, from
http://learn.extremenetworks.com/rs/extreme/images/VN-2015-003_FREAK.pdf.
[17] Understanding Common Factor Attacks: An RSACracking Puzzle. Retrieved April 30, 2015, from
http://www.loyalty.org/~schoen/rsa/
[18] Kerner, S. M. (2015, May 20). Logjam SSL/TLS
Vulnerability Exposes Cryptographic Weakness
Retrieved August 10, 2015, from
http://www.eweek.com/security/logjam-ssltlsvulnerability-exposes-cryptographic-weakness.html/a>
[19] Roos, A. (1995, September 22). Weaks in RC4.
Retrieved July 13, 2014, from
https://netfuture.ch/1995/09/weak-keys-in-rc4/
[20] Smyth, B., and Pironti, A. (2013, July). Truncating TLS
Connections to Violate Beliefs in Web Applications.
Retrieved May 10, 2015, from m
https://media.blackhat.com/us-13/US-13-SmythTruncating-TLS-Connections-to-Violate-Beliefs-in-WebApplications-WP.pdf.