Рейтинг:0

Как данные приложения TLS 1.3, зашифрованные с помощью AES-GCM, отправляются «по сети»?

флаг mx

Я пытался вручную расшифровать некоторый трафик TLS 1.3 по образовательным причинам и наткнулся на контрольно-пропускной пункт. На данный момент мне удалось выполнить большую часть расписания ключей, включая получение правильных секретов трафика рукопожатия из ключей ECDHE. Однако мне не удалось найти много информации о том, как зашифрованный текст и тег аутентификации форматируются в сообщениях данных приложения.

Вот полная запись.

1703030017bf687d10e2f209661418d92aaf3626dfe5670f3127d6ed

А вот и секрет трафика рукопожатия сервера:

475a0f3b5a86d4797e24545c2eb6388de9507e5e0bc367c74c3e78e0d8033f34b721a2e3a1d89ec5990287954402fc43

Wireshark сообщает мне, что расшифровка этого сообщения дает открытый текст 08 00 00 02 00 00, соответствующий сообщению Encrypted Extensions.

Из того, что я могу сказать, «связанные данные» должны быть байтами 17 03 03 00 17, а остальная часть записи представляет собой зашифрованный текст + тег аутентификации.В RFC 8446 говорится, что набор шифров TLS_AES_256_GCM_SHA384 определен в RFC 5116, но в RFC 5116 говорится:

В этом документе не указывается какая-либо конкретная кодировка для AEAD. входы и выходы, так как кодировка не влияет на безопасность услуги, предоставляемые алгоритмом AEAD.

Тем не менее, все мои попытки расшифровать данные не прошли аутентификацию, что приводит меня к двум возможностям:

  • Я неправильно получаю ключи трафика. Я знаю, что моя процедура HKDF-Expand-Label работает, поскольку все остальные секреты выводятся правильно и соответствуют значениям, зарегистрированным OpenSSL. Однако, по общему признанию, я не уверен на 100%, каковы правильный ключ и длина IV. В настоящее время я использую 32-байтовый ключ и 12-байтовый IV. Я не знаю, использует ли это TLS 1.3.
  • Я неправильно читаю тег аутентификации/зашифрованный текст. Мне не удалось найти никаких ссылок на правильный формат, поэтому все мои попытки в этой области были просто догадками. В частности, я не уверен, какова длина тега аутентификации для этого набора шифров, хотя поиск в Google предполагает, что он составляет 12 байт.

Что я делаю не так?

adrian avatar
флаг mx
Я только что понял, что полностью упустил из виду часть спецификации, в которой упоминается, что IV подвергается операции XOR по порядковому номеру записи ... проблема не решена, но теперь мучительно близка.
dave_thompson_085 avatar
флаг cn
5116 определяет только примитивы AEAD, которые можно использовать во всех видах криптографических приложений, включая наборы шифров TLS, но не только. Формат и построение зашифрованной записи есть в 8446 5.2, а генерация nonce (которую вы вроде бы нашли) в 5.3.
Рейтинг:0
флаг mx

Оказывается, я делал не одну, а две ошибки!

  • Я не читал раздел RFC, объясняющий, что одноразовый номер для каждой записи был рассчитан путем XOR порядкового номера против IV.
  • Я использовал неправильную длину тега 12 вместо 16.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.