Рейтинг:1

Сообщение о завершении клиента TLS 1.2

флаг pk

Я работаю над TLS1.2 в наборе шифров ECDHE_ECDSA_AES_128_CBC_SHA256. В настоящее время я нахожусь на этапе клиентского зашифрованного сообщения, где я всегда получал сообщение об ошибке на wirehark с сервера, говорящее, что Fatal, Описание: Ошибка рукопожатия. Итак, исходя из того, что я провел свое исследование, содержание этого сообщения о завершении клиента должно пройти следующие шаги:

  1. 1 байт типа рукопожатия: Finish = 0x14
  2. 3 байта data_verify_length = 12
  3. 12 байт Verify_data
  4. Эти 16 байтов из шагов 1), 2) и 3) передаются через hmac_sha256 и дают и производят 32 хеш-байта. Может ли кто-нибудь подтвердить мне входные данные? 5) 32 байтам предшествуют 16 байтов из шагов 1), 2) и 3), что дает в общей сложности 48 байтов перед заполнением.
  5. Мы добавили 1 байт заполнения и 15 байт заполнения 0x0F, что в сумме дает 64 байта.
  6. Затем 64 байта шифруются с помощью IV клиента и ключа шифрования клиента.
  7. Перед отправкой на сервер 64 байтам предшествуют 16 байтов IV.

Может ли кто-нибудь проверить все шаги и исправить меня, если я ошибаюсь, потому что на этом этапе у меня все время сбой рукопожатия.

Заранее спасибо!

Рейтинг:2
флаг cn

Как указано в этот вопрос 2015 года плюс мой ответ который вы, по-видимому, не читали, даже комментируя другой ответ, вычисляется TLS <= 1.2 HMAC:

  • в записывать seqnum, тип, версия и длина: hex 00 00 00 00 00 00 00 00 16 03 03 00 10

  • плюс Готово сообщение который у вас правильно: тип 1 байта = 14, длина 3 байта = 00 00 0C и 12 байтов «verify_data»

используя клиентский MAC-ключ (из процесса получения ключа).

У вас правильная следующая часть: вы CBC-шифруете тело записи (которое является в точности сообщением рукопожатия) плюс HMAC плюс заполнение (16 раз 0F) и добавляете 16-байтовый используемый IV (который должен быть непредсказуемым, обычно случайным). И добавить к что заголовок записи типа = 16, версия = 03 03, длина = 00 50.

Обратите внимание, что в дополнение к тому, что запись отформатирована, обработана HMAC и правильно зашифрована, файл verify_data в сообщение должно быть правильным, и у IME у большинства людей больше проблем с получением этого права, чем с обработкой записи.

Справка: RFC5246 6.2.3.1 (и 6.2.3.2 для шифрования CBC)

флаг pk
Согласно вашему сообщению, общее количество входных байтов для hmac составляет 29 байтов: hex 00 00 00 00 00 00 00 00 16 03 03 00 10 + 16 байт (тип 1 байта + длина 3 байта + 12 байтов проверки данных)?
флаг pk
Я исправил свой ввод hmac в соответствии с вашим сообщением. Но у меня все еще есть проблема с неудачным рукопожатием. Что ж, давайте начнем с того, как я создал verify_data : 1) хеш всех предыдущих сообщений рукопожатия: SHA256(all_handshake_messages) 2) Затем я сделал prf(maseter_secret, "client_finished", SHA256(all_handshake_messages)) Это производит 12 байта verify_data Затем я объединяю данные на шаге 3) с данными на шаге 1) и 2) в моем самом первом посте, где я выполнил остальные шаги. Что могло вызвать сбой рукопожатия?

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

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