Верстакфорум практиков
рекламаiprazon: приватные серверные адреса IPv4 и SOCKS5, безлимитный трафик, бесплатный тест до 2 часов
ФорумСети и протоколы

Отпечаток рукопожатия: коротко о том, что это

nullbyte
nullbyte
Ветеран
сообщений 2680
с апр
15 июля, 14:42первое сообщение

Вопрос всплывает в трёх темах подряд, вынесу отдельно.

Когда клиент стучится по HTTPS, первым делом он отправляет приветствие. В приветствии перечислено, какие шифры он умеет, какие версии протокола готов поднять, какие расширения поддерживает, какие кривые знает, что предлагает по ALPN. Идёт всё это открытым текстом: шифрования ещё нет, поднимать его как раз собираются.

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

если не воспроизводится, значит не понял
Женя Ковалёв
Женя Ковалёв
Новичок
сообщений 62
с авг, второй сезон
22 декабря, 17:59#2

то есть площадка понимает, чем я хожу, ещё до того как я хоть что-то попросил?

nullbyte
nullbyte
Ветеран
сообщений 2680
с апр
1 мая, 08:16#3

Ровно так. Заголовки запроса, включая User-Agent, уедут потом и уже внутри шифрования. Отпечаток снимается раньше, на первом пакете.

если не воспроизводится, значит не понял
Артур Вагнер
Артур Вагнер
Знаток
сообщений 1290
с мая
8 октября, 11:33#4

Дополню, потому что практическая часть тут интереснее теории.

Отпечаток сам по себе никого не выдаёт, площадке важна сходимость. Она берёт отпечаток рукопожатия, берёт User-Agent из запроса и смотрит, бьются ли они между собой. Заявленный свежий браузер с подписью типовой консольной утилиты это несходимость, и дальше начинаются проверки.

Что видит принимающая сторона
Что видит принимающая сторона

Причём подделать одну половину бесполезно. Поменяли строку User-Agent, а рукопожатие осталось прежним, несходимость только выросла. Работать надо тем стеком, за который себя выдаёте: браузер ходит браузером, а если нужен код, берите библиотеку, которая умеет повторять браузерное приветствие целиком, вместе с порядком расширений.

конфиг без комментария это загадка
Родион Гаев
Родион Гаев
Ветеран
сообщений 2420
с фев
15 марта, 14:50#5

Посмотреть у себя проще всего так:

openssl s_client -connect example.org:443 -tlsextdebug -msg < /dev/null

В выводе ищите блок ClientHello, там будут и шифры, и расширения в том порядке, в каком уходят. Кому привычнее глазами, в Wireshark фильтр tls.handshake.type == 1 показывает то же самое по каждому соединению отдельно.

Юля Ким
Юля Ким
Знаток
сообщений 1240
с мая
22 августа, 17:07#6
Артур Вагнер: подделать одну половину бесполезно

Проверяла на своём прогоне, всё сходится. Перебор User-Agent на голом коде не давал ничего, отказы шли ровно с той же частотой.

nullbyte
nullbyte
Ветеран
сообщений 2680
с апр
1 января, 08:24#7

Подытожу, чтобы тему можно было кидать ссылкой.

Отпечаток снимается с первого пакета, до всякого шифрования, и держится за библиотекой. Сам факт отпечатка ни о чём не говорит, смотрят на его сходимость с тем, что клиент про себя написал в заголовках. Отсюда и порядок действий: либо ходить настоящим браузером, либо брать сборку, повторяющую его приветствие. Правка одних заголовков картину только портит.

если не воспроизводится, значит не понял