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

Перцептивное хеширование

Перцептивное хеширование (англ. perceptual hashing, также известное как хеширование по восприятию) — это класс функций, которые преобразуют мультимедийные данные (изображения, аудио, видео) в короткую цифровую подпись (хеш), при этом сохраняя свойство близости: перцептивно похожие объекты дают похожие хеши, а разные объекты — существенно различные. В отличие от криптографических хеш-функций (например, SHA-256), где малейшее изменение входных данных полностью меняет хеш, перцептивное хеширование устойчиво к небольшим модификациям, таким как сжатие, изменение размера, цветокоррекция или добавление шума. Основное применение — поиск дубликатов, обнаружение модификаций, идентификация контента и обеспечение целостности мультимедиа.

Принцип работы

Перцептивное хеширование основано на моделировании человеческого восприятия. Входные данные (например, изображение) сначала приводятся к единому стандартному виду: уменьшаются до фиксированного размера, преобразуются в оттенки серого и, при необходимости, применяются фильтры для уменьшения влияния несущественных деталей. Затем вычисляются признаки, отражающие структуру и контраст, на основе которых формируется бинарная строка (хеш). Сходство между двумя хешами обычно измеряется расстоянием Хэмминга — количеством позиций, в которых биты различаются. Малое расстояние указывает на перцептивную близость, большое — на различие.

Основные этапы для изображений

  1. Предобработка: изображение уменьшается до небольшого размера (например, 8×8 или 32×32 пикселя) и преобразуется в оттенки серого. Это устраняет влияние масштаба и цветовой гаммы.
  2. Вычисление признаков: применяется дискретное косинусное преобразование (ДКП) или другие методы для выделения низкочастотных компонент, которые наиболее важны для восприятия.
  3. Бинаризация: среднее значение яркости или частотных коэффициентов используется как порог — каждый пиксель или коэффициент сравнивается с ним, и результат кодируется битом (0 или 1).
  4. Формирование хеша: полученные биты объединяются в строку фиксированной длины (обычно 64 или 128 бит).

Виды перцептивного хеширования

pHash (Perceptual Hash)

Один из наиболее распространённых алгоритмов для изображений. Включает несколько вариантов:

  • Average Hash (aHash): самый простой — уменьшение до 8×8, вычисление среднего значения яркости, сравнение каждого пикселя со средним. Чувствителен к изменениям яркости и контраста.
  • Difference Hash (dHash): сравнивает не абсолютные значения, а разности между соседними пикселями. Более устойчив к изменениям яркости.
  • Wavelet Hash (wHash): использует вейвлет-преобразование для выделения деталей на разных масштабах. Обеспечивает лучшую устойчивость к сжатию и поворотам.

Block Mean Value Based Hashing

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

Robust Perceptual Hashing

Специализированные алгоритмы, предназначенные для устойчивости к геометрическим искажениям (поворот, обрезка, изменение перспективы). Используют инвариантные моменты, Фурье-дескрипторы или контурный анализ. Пример — алгоритм pHash с использованием вейвлетов и контурного анализа.

Аудио-хеширование

Для звуковых файлов применяются аналогичные принципы: спектрограмма делится на временные и частотные полосы, вычисляются энергетические характеристики, затем формируется хеш. Известные алгоритмы — Chromaprint (используется в сервисе AcoustID) и Dejavu. Устойчивы к сжатию (MP3), изменению битрейта и небольшим сдвигам по времени.

Видео-хеширование

Для видео перцептивное хеширование может применяться как к отдельным кадрам, так и к последовательности кадров. Используются методы, учитывающие временную структуру (например, разности между кадрами). Применяется для обнаружения повторяющихся фрагментов в видеопотоках.

Применение

Поиск дубликатов и модификаций

Перцептивное хеширование широко используется для выявления копий изображений, аудио и видео в базах данных. Например, сервисы поиска изображений по образцу (Google Images, TinEye) применяют перцептивные хеши для быстрого сравнения. В системах управления цифровыми правами (DRM) оно помогает обнаружить нелегальные копии контента.

Идентификация контента

В аудио- и видеосервисах (Shazam, YouTube Content ID) перцептивное хеширование позволяет идентифицировать трек или видео по короткому фрагменту. Алгоритм создаёт хеш для каждого фрагмента и сравнивает его с базой известных произведений.

Обеспечение целостности

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

Фильтрация контента

Социальные сети и платформы для обмена контентом (например, Facebook, Instagram, TikTok) применяют перцептивное хеширование для автоматического обнаружения и блокировки запрещённого или нежелательного контента (например, изображений насилия, порнографии, материалов, связанных с экстремистскими организациями). Алгоритмы сравнивают хеши загружаемых файлов с базой хешей известного запрещённого контента.

Сравнение с криптографическим хешированием

ХарактеристикаПерцептивное хешированиеКриптографическое хеширование
Чувствительность к изменениямНизкая — похожие объекты дают похожие хешиВысокая — малейшее изменение полностью меняет хеш
Устойчивость к атакамНизкая — возможно подбор хеша для модифицированного объектаВысокая — устойчиво к коллизиям и прообразам
Длина хешаОбычно 64–256 бит128–512 бит (например, MD5, SHA-256)
Основное применениеПоиск дубликатов, идентификация контентаПроверка целостности, хранение паролей, цифровые подписи
ОбратимостьНевозможна (хеш не восстанавливает исходные данные)Невозможна

Критика и ограничения

Перцептивное хеширование не является строго математически обоснованным методом — его эффективность зависит от выбора признаков и пороговых значений. Основные недостатки:

  • Чувствительность к сильным искажениям: поворот на большой угол, сильное сжатие с потерями, обрезка значительной части изображения могут привести к ложным отрицательным результатам.
  • Возможность коллизий: разные объекты могут давать одинаковые или близкие хеши, особенно при малой длине хеша.
  • Уязвимость к атакам: злоумышленник может модифицировать контент так, чтобы его хеш совпал с хешем легального объекта (например, добавив невидимый шум), что используется для обхода систем фильтрации.
  • Зависимость от контекста: алгоритмы, хорошо работающие для фотографий, могут плохо справляться с графикой, текстом или изображениями с низким контрастом.

Интересные факты

  • Перцептивное хеширование лежит в основе технологии PhotoDNA, разработанной Microsoft и используемой для обнаружения изображений сексуального насилия над детьми. Алгоритм создаёт хеш, который не позволяет восстановить исходное изображение, но позволяет сравнивать его с другими.
  • В 2019 году исследователи продемонстрировали возможность создания «состязательных» изображений, которые при перцептивном хешировании выглядят как одно изображение, но воспринимаются человеком как другое.
  • Алгоритмы перцептивного хеширования используются в блокчейн-системах для хранения хешей цифровых активов (NFT), позволяя проверять подлинность без раскрытия самого файла.

Источники

  • Perceptual Hashing — Wikipedia (англ.)
  • «Digital Image Processing» — Rafael C. Gonzalez, Richard E. Woods
  • «Perceptual Hashing: A Survey» — IEEE Transactions on Information Forensics and Security, 2018
  • Документация библиотеки pHash (phash.org)
  • «PhotoDNA and the Fight Against Child Exploitation» — Microsoft Research

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →