Открыть сервис

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.

Алгоритм вычисления

  1. Из торрент-файла (файл с расширением .torrent) извлекается блок info — это bencoded-словарь, содержащий ключи name, piece length, pieces (хеши кусков), а также либо files (для многотомной раздачи), либо length (для одного файла).
  2. Блок info сериализуется в bencoded-формат (строгое кодирование, включая порядок ключей).
  3. К полученной строке применяется хеш-функция SHA-1.
  4. Результат — 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 →