Как правильно считать finished handshake в tls? Несколько месяцев работаю над реализацией dtls на pure js на ноде. Шифрование и отправка / приём сообщений работает. Пока я реализовал клиента, и сервер взял из openssl. Сервер принимает мой finished handshake и пишет, что соединение установлено. Но в ответ он присылает свой finished handshake, я пытаюсь его посчитать с label = `server finished`, но он не совпадает!
В спецификации написано, что от финального handshake не нужно считать hash, а только от всех handshake до Change Cipher Spec. И не включить обмен куками до HelloVerifyRequest. Я так и делаю, сервер принимает мой хэш, все мастер, премастер ключи, рандомы совпадают, но подтвердить его хэш не могу. Может я что то не улавливаю в спеке?dtls:parser got finished data f16e6b43c260ec8106ec76e5 +0ms // присланный сервером хэш
dtls:parser client finished 717a10da47d4880bc2665499 +1ms // мой хэш, принятый
dtls:parser server finished d73da8a604f5bc6a51c3eb20 +0ms // вычисленный мной серверный хэш
Сорцы тут https://github.com/nodertc/dtls

21 Авг 2019 в 07:11
213 +1
1
Ответы
1

Похоже, что у вас проблема с правильным вычислением хэша для серверного finished handshake. Возможно, вы упускаете какой-то шаг или включаете лишние данные в расчёт хэша.

Пожалуйста, убедитесь, что вы правильно выполняете все шаги, описанные в спецификации. Убедитесь также, что все данные, которые вам нужно включить в расчёт хэша, правильно представлены и преобразованы.

Если после внимательной проверки вы по-прежнему не можете совпадать хэш, попробуйте обратиться за помощью на специализированные форумы или ресурсы, посвящённые TLS/DTLS. Там вам могут помочь опытные специалисты разобраться в вашей проблеме более детально.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир