Перцептивное хеширование
Перцептивное хеширование (англ. perceptual hashing, также известное как хеширование по восприятию) — это класс функций, которые преобразуют мультимедийные данные (изображения, аудио, видео) в короткую цифровую подпись (хеш), при этом сохраняя свойство близости: перцептивно похожие объекты дают похожие хеши, а разные объекты — существенно различные. В отличие от криптографических хеш-функций (например, SHA-256), где малейшее изменение входных данных полностью меняет хеш, перцептивное хеширование устойчиво к небольшим модификациям, таким как сжатие, изменение размера, цветокоррекция или добавление шума. Основное применение — поиск дубликатов, обнаружение модификаций, идентификация контента и обеспечение целостности мультимедиа.
Принцип работы
Перцептивное хеширование основано на моделировании человеческого восприятия. Входные данные (например, изображение) сначала приводятся к единому стандартному виду: уменьшаются до фиксированного размера, преобразуются в оттенки серого и, при необходимости, применяются фильтры для уменьшения влияния несущественных деталей. Затем вычисляются признаки, отражающие структуру и контраст, на основе которых формируется бинарная строка (хеш). Сходство между двумя хешами обычно измеряется расстоянием Хэмминга — количеством позиций, в которых биты различаются. Малое расстояние указывает на перцептивную близость, большое — на различие.
Основные этапы для изображений
- Предобработка: изображение уменьшается до небольшого размера (например, 8×8 или 32×32 пикселя) и преобразуется в оттенки серого. Это устраняет влияние масштаба и цветовой гаммы.
- Вычисление признаков: применяется дискретное косинусное преобразование (ДКП) или другие методы для выделения низкочастотных компонент, которые наиболее важны для восприятия.
- Бинаризация: среднее значение яркости или частотных коэффициентов используется как порог — каждый пиксель или коэффициент сравнивается с ним, и результат кодируется битом (0 или 1).
- Формирование хеша: полученные биты объединяются в строку фиксированной длины (обычно 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 →