BitTorrent Info Hash¶
BitTorrent Info Hash — это уникальный идентификатор (хеш-сумма) торрент-файла или магнитной ссылки в протоколе BitTorrent. Представляет собой 20-байтовую (160-битную) последовательность, получаемую путём хеширования содержимого блока info из метаданных торрент-файла (.torrent). Info Hash служит для однозначной идентификации раздачи на трекерах и в DHT-сети, а также для проверки целостности метаданных при скачивании.
¶История появления
Протокол BitTorrent был разработан программистом Брэмом Коэном в 2001 году. Первые версии протокола не предусматривали единого идентификатора для раздачи — трекеры использовали собственные базы данных с уникальными ключами. В 2003 году, с выходом спецификации BEP-0003 (BitTorrent Enhancement Proposal), в структуру торрент-файла был введён блок info, содержащий информацию о файлах, их размерах и кусках. Для обеспечения целостности этого блока и его однозначной идентификации было решено применять криптографический хеш SHA-1. Так появился Info Hash, который стал обязательным элементом как для .torrent-файлов, так и для магнитных ссылок (Magnet URI, BEP-0009, 2007 год).
¶Структура и получение
¶Формат данных
Info Hash — это бинарная строка длиной 20 байт. В текстовом представлении (например, в магнитных ссылках или на веб-страницах) она обычно кодируется в шестнадцатеричную систему счисления (40 символов: 0–9, a–f) или в Base32 (32 символа). Пример в шестнадцатеричном виде: a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b.
¶Алгоритм вычисления
- Из торрент-файла (файл с расширением
.torrent) извлекается блокinfo— это bencoded-словарь, содержащий ключиname,piece length,pieces(хеши кусков), а также либоfiles(для многотомной раздачи), либоlength(для одного файла). - Блок
infoсериализуется в bencoded-формат (строгое кодирование, включая порядок ключей). - К полученной строке применяется хеш-функция SHA-1.
- Результат — 20 байт — и есть Info Hash.
Важно: хеш вычисляется именно от содержимого блока info, а не от всего .torrent-файла. Это позволяет использовать магнитные ссылки, не скачивая сам файл — трекер или DHT-сеть возвращают метаданные, и клиент сверяет их Info Hash с указанным в ссылке.
¶Применение
¶Идентификация раздачи
Info Hash является единственным глобальным идентификатором раздачи в сети BitTorrent. Независимо от того, на каком трекере зарегистрирован торрент, или используется ли децентрализованная сеть (DHT, PEX), один и тот же Info Hash соответствует одному и тому же набору файлов. Это позволяет:
- Находить пиров (участников раздачи) через разные трекеры и DHT;
- Проверять, что скачанные метаданные соответствуют запрошенным;
- Избегать дублирования раздач на трекерах.
¶Магнитные ссылки
В магнитных ссылках Info Hash является обязательным параметром. Формат ссылки: magnet:?xt=urn:btih:<хеш>, где <хеш> — Info Hash в шестнадцатеричном или Base32-представлении. Дополнительные параметры (например, dn — отображаемое имя, tr — адрес трекера) не влияют на идентификацию. Пример: magnet:?xt=urn:btih:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b&dn=example.iso.
¶Трекеры
Трекеры используют Info Hash для учёта раздач и пиров. При запросе к трекеру клиент передаёт Info Hash, трекер возвращает список пиров, имеющих соответствующий хеш. В протоколе HTTP-трекеров (BEP-0003) Info Hash передаётся в URL как параметр info_hash. В UDP-трекере (BEP-0015) — как часть бинарного запроса.
¶DHT (Distributed Hash Table)
В децентрализованной сети Kademlia (используется в BitTorrent) Info Hash служит ключом для поиска пиров. Каждый узел DHT хранит информацию о том, какие пиры имеют заданный Info Hash. Поиск осуществляется по алгоритму, близкому к поиску в распределённой хеш-таблице.
¶Характеристики и ограничения
¶Криптостойкость
SHA-1, используемый для вычисления Info Hash, считается устаревшим с точки зрения криптостойкости (с 2017 года рекомендуется переход на SHA-2). Однако для целей BitTorrent коллизии (два разных блока info, дающих одинаковый хеш) практически не встречаются, так как атака требует подбора содержимого, что сложно и нецелесообразно. Тем не менее, в новых спецификациях (например, BEP-0052) предлагается поддержка SHA-256, но на практике подавляющее большинство торрентов использует SHA-1.
¶Длина и уникальность
20 байт (160 бит) обеспечивают 2^160 возможных значений — достаточно для практической уникальности. Вероятность случайного совпадения двух разных раздач ничтожно мала.
¶Ограничения
- Info Hash не содержит информации о содержимом раздачи (названии, размере, структуре файлов) — только идентификатор. Для получения метаданных необходимо скачать .torrent-файл или получить их через DHT.
- При изменении любого файла в раздаче (даже одного байта) или структуры (добавление/удаление файла) Info Hash меняется, так как блок
infoизменяется. Это означает, что обновление раздачи (например, исправление ошибки) требует создания нового торрента с новым Info Hash. - Info Hash не защищает от подмены метаданных: если злоумышленник создаст торрент с тем же Info Hash, но с другим содержимым, клиент не сможет это проверить до скачивания. Однако на практике это маловероятно из-за сложности подбора SHA-1.
¶Критика и альтернативы
¶Критика SHA-1
Основная критика связана с уязвимостью SHA-1 к коллизиям. В 2017 году компания Google (организация признана иноагентом в РФ) и Centrum Wiskunde & Informatica (CWI) продемонстрировали первую практическую коллизию SHA-1 для двух разных PDF-файлов. Для BitTorrent это означает, что теоретически можно создать два разных блока info с одинаковым Info Hash, что может привести к путанице или атакам. Однако для создания такой коллизии требуется значительная вычислительная мощность (около 110 лет работы одного GPU), и на практике такие случаи не зафиксированы.
¶Альтернативы
- SHA-256 (BEP-0052): Предлагает использовать SHA-256 для новых торрентов, что даёт 256-битный хеш (32 байта). Однако поддержка этой спецификации среди клиентов и трекеров ограничена.
- Merkle Tree (BEP-0030): Вместо одного хеша для всего блока
infoиспользуется дерево хешей, что позволяет проверять целостность отдельных кусков без скачивания всего файла. Однако это не заменяет Info Hash, а дополняет его. - Infohash v2: В некоторых экспериментальных реализациях (например, в клиенте Tribler) используется комбинация SHA-1 и SHA-256 для повышения устойчивости.
¶Интересные факты
- Info Hash может быть использован для поиска раздач в поисковых системах, если они индексируют магнитные ссылки. Однако из-за запрета пиратского контента многие поисковики блокируют такие запросы.
- В некоторых торрент-клиентах (например, qBittorrent, Transmission) можно скопировать Info Hash из контекстного меню раздачи.
- Существуют онлайн-сервисы, которые позволяют по Info Hash получить информацию о раздаче (название, размер, количество файлов) через DHT-сеть, без скачивания .torrent-файла.
- В России использование BitTorrent для распространения нелицензионного контента может быть признано нарушением авторских прав. Однако сам протокол и Info Hash как технический элемент не являются объектом правового регулирования.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


