Назад в библиотеку

Комплексное исследование 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

Рисунок 1 – Структура протокола SSL

2.1.1 Протокол записи SSL

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

Рисунок 2 – Принцип работы протокола записи SSL

Рисунок 2 – Принцип работы протокола записи SSL

  1. Алгоритмы сжатия: методы сжатия без потерь вызываются протоколом записи SSL для сжатия данных без каких-либо потерь. (например, кодирование Хаффмана, LZ77, GZIP и т. д.)
  2. Хеш-функции: безопасные хеш-функции играют главную роль при обеспечении конфиденциальности каждого сегмента данных. Самые популярные алгоритмы MD5 и SHA используются для вычисления MAC. (например, MD5, SHA-1, SHA-224, SHA-256 и так далее.)
  3. Алгоритмы шифрования: в SSL используются поточные или блочные методы симметричного шифрования. В случае поточного шифрование, сжатый фрагмент и MAC зашифрованы вместе. При блочном шифровании MAC дополняется битами заполнения и добавляются к фрагменту. Симметричные алгоритмы с их размерами ключа приведены в таблице 1 и таблице 2.

Таблица 1 – Алгоритмы потокового шифрования и размеры ключей
Алгоритм Размер ключа (бит)
RC4 40 или 128

Таблица 2 – Алгоритмы блочного шифрования и размеры ключей
Алгоритм Размер ключа (бит)
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].

Таблица 3 – Предупреждающие сообщения SSL
Код Сообщение
Описание Тип
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

Рисунок 3 – Работа протокола SSL / TLS


Таблица 4 – Сообщения первоначального соединения SSL
Код Сообщение Параметры
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

Таблица 5 – Набор шифров SSL
Параметр Значение
Алгоритмы обмена ключами 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.

Таблица 6 – Алгоритмы и их параметры с сервера
Алгоритм Публичные параметры
Ephemeral Diffie-Hellman Простое число и его первообразный корень
RC4 Открытый ключ (экспонента и модуль)

Вычисление хэша приведено ниже.

HASH (CHR+SHR+public_parameters) (2)

После обмена сертификатом и ключом с сервером он запрашивает сертификат клиента через сообщение certificate request. В ответ клиент отправляет собственный сертификат, параметры обмена ключами и завершается сообщением certificate_verify. Параметры обмена ключами с клиентом приведены в таблице 7.

Таблица 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 соответственно.

Таблица 8 – Основные и младшие версии разных версий TLS
Основная Младшая
Класс
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

  1. Cipher Suite: TLS поддерживает алгоритмы обмена ключами и шифрования, такие же, как SSL, указанный в таблице V, за исключением Fortezza. Также добавлена поддержка вариации протокола Диффи-Хеллмана с использованием эллиптической криптографии.
  2. Certificate Types: Отвечает на запрос сертификата подписанный сертификатом TLS, RSA или DSS выдается тогда, когда параметры обмена ключами являются открытыми параметрами RSA или Диффи-Хеллмана, перечисленные в таблицах VI и VII.
  3. 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)

  4. Finished Message: в отличие от SSL, хэш (MD5 и SHA) вычисляется по сообщениям рукопожатия, и их объединение предоставляется в качестве входных данных для PRF.

    PRF (secret_master, tag, MD5 (handshake_messages)
    +SHA (handshake_messages))
    (15)

  5. 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)

  6. Padding: в отличие от SSL, перед шифрованием биты дополнения длиной от 0 до 28 -1 объединяется с MAC, чтобы размер фрагмента был кратным размеру блока шифра. В SSL минимальное количество битов расширения добавляется, чтобы сделать несколько блоков шифрования.

2.2.3 Протокол оповещения TLS

В TLS, добавлены дополнительные предупреждающие сообщения для обеспечения надежности связи, приведенны в таблице 9 [2]. В TLS поддерживаются все предупреждающие сообщения SSL, кроме кода оповещения 41.

Таблица 3 – Предупреждающие сообщения SSL
Код Сообщение
Описание Тип
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 для шифрования

Рисунок 4 – CBC для шифрования

При расшифровке в CBC операция XOR выполняется после дешифрования текста ключом, где IV для первого блока открытого текста берется из KB. Предыдущий зашифрованный текст действует как IV для следующего блока открытого текста (см. Рисунок 5).

Plain (k) = D [k, Cipher (k)] XOR Cipher (k-1) (19)

Рисунок 5 – CBC для расшифровки

Рисунок 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, передается сообщение с запросом, недоступным для сервера из-за некоректного завершения соединения. Поскольку подтверждение выхода происходит до того, как сервер получил запрос на выход, злоумышленник запускает эту атаку, чтобы сохранить сеанс без ведома жертвы. Наконец, другое подключение браузера используется для доступа к учетной записи жертвы и ее дальнейшего изменения.

Таблица 10 – Атаки и их исправления
Атака Способы исправление
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.