NeuralHash от Apple: принцип работы и слабые места

В августе Apple объявила о ряде мер по борьбе с распространением материалов с сексуальным насилием над детьми (CSAM).

«iOS и iPadOS будут использовать новые приложения криптографии, чтобы помочь ограничить распространение CSAM в интернете с одновременным обеспечением конфиденциальности пользователей. Обнаружение CSAM поможет Apple предоставить правоохранительным органам ценную информацию о коллекциях CSAM в iCloud Photos»,  —  следует из заявления Apple.

Нововведение вызвало большой ажиотаж, из-за чего в сентябре компания решила отложить ее запуск.

Среди прочего, Apple планировала сканировать iCloud Photos для выявления CSAM с использованием новой технологии, известной как NeuralHash.

Изображение автора, вдохновленное техническим отчетом Apple по обнаружению CSAM. Хеши, перечисленные здесь, не являются фактическими хешами CSAM. Схема не включает в себя такие детали, как этап блокирования нежелательных данных

Apple собиралась сканировать личные фото?

«Сканирование», пожалуй, не совсем точное слово. На самом деле Apple намеревалась обнаруживать наличие CSAM без необходимости просматривать фото пользователей.

Фото: Unsplash

Обратимся к идее отпечатка пальца  —  уникального для каждого из нас рисунка кожи. Он идентифицирует человека, но сам по себе ничего не может рассказать о нем. В информатике хеш-функция помогает вычислять хеш, который действует как отпечаток пальца файла. Хеш (в своем роде) уникальная характеристика для файла, но сам по себе он ничего не говорит о содержимом файла.

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

Apple собиралась создать базу данных хешей, предназначенную для распознавания CSAM. Затем путем хеширования всех фото в iCloud и сравнения хешей с базой CSAM Apple смогла бы идентифицировать совпадения, не просматривая сами фото.

Но легче сказать, чем сделать. Традиционные хеш-функции (MD5, SHA256 и др.) очень чувствительны к изменениям в файле. Например, эти два изображения имеют совершенно разные MD5-хеши, хотя выглядят одинаково (то, что справа, на 2 пикселя короче по ширине).

Слева: оригинальный мем Доге, MD5: 53facff91ec83f60a88235ab628590bb. Справа: изображение обрезано автором, MD5: da25273f33c4ec95f71984075079bd16

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

Но это достоинство становится огромным ограничением при использовании MD5 для обнаружения CSAM. Что если изображение слева вверху окажется запрещенным? Apple может хранить хеш MD5 53f…0bb. Но, немного обрезав изображение, мы все равно получим изображение, которое выглядит так же (справа), но имеет совершенно другой хеш MD5 da2…d16, который избежал бы обнаружения.

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

Чтобы обнаружение работало, хеш изображения не должен меняться, даже если изображение было немного изменено.

Как работает NeuralHash

NeuralHash  —  это алгоритм хеширования, нечувствительный к небольшим изменениям входного изображения.

Слева: оригинальный мем Доге, NeuralHash: 11d9b097ac960bd2c6c131fa. Справа: изображение обрезано автором, NeuralHash: 11d9b097ac960bd2c6c131fa

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

Слева: оригинальный мем Доге, NeuralHash: 11d9b097ac960bd2c6c131fa. Справа: изображение, повернутое автором, NeuralHash: 20d8f097ac960ad2c7c231fe

Даже в том случае, когда изображение повернуто, значительная часть нейрохешей остается прежней:

  • Левый нейрохеш: 11d9b097ac960bd2c6c131fa.
  • Правый нейрохеш: 20d8f097ac960ad2c7c231fe.
Слева: оригинальный мем Доге, NeuralHash: 11d9b097ac960bd2c6c131fa. Справа: изображение, отредактированное автором, NeuralHash: 11d9b0b7a8120bd286c1b1fe

Вот еще один пример, в котором на изображение наложен текст, но нейрохеши оригинала и измененного снимка все еще похожи:

  • Левый нейрохеш: 11d9b097ac960bd2c6c131fa.
  • Правый нейрохеш: 11d9b0b7a8120bd286c1b0fe.

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

  • Положительные. Состоят из изображений, которые являются несложными преобразованиями друг друга (повороты, обрезания, изменения размеров), такими как приведенные выше примеры.
  • Отрицательные. Состоят из совершенно разных изображений.

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

Можно ли обмануть NeuralHash?

Большинство исследователей и студентов в области ИИ и МО, вероятно, слышали о состязательных атаках, когда нейронные сети пытаются ввести в заблуждение, добавляя шум к изображениям.

Изображение автора, показывающее, как состязательные атаки могут обмануть модели ИИ, вдохновленное каноническим примером с изображением панды (рис. 1) в статье “Объяснение и использование состязательных примеров” Гудфеллоу и др., 2014

Допустим, нейронная сеть изначально пометила изображение Доге как «динго». Но стоит добавить изображению немного шума, и CNN может пометить то же фото как «сиамская кошка».

Уже не один год ИИ-сообществу известны состязательные атаки, а между их разработчиками и исследователями, ищущими средства защиты от них, идет попеременное «перетягивание каната».

Такую атаку можно легко применить к CNN в алгоритме NeuralHash. В середине августа пользователь Reddit AsuharietYgvar опубликовал инструкции о том, как экспортировать копию модели NeuralHash от Apple. Всего через несколько часов появилось несколько сценариев, демонстрирующих успешные атаки.

Состязательные атаки на модель NeuralHash могут быть двух видов. Первый  —  назовем его «другое изображение, тот же хеш»  —  добавляет шум к исходному изображению, так что нейрохеши целевого и результирующего изображений оказываются идентичными.

Пример пары хеш-коллизий, сгенерированной автором из мемов Доге (слева) и Сердитой кошки (справа). Оба изображения имеют одинаковый NeuralHash 11d9b097ac960bd2c6c131fa после добавления шума к изображению Сердитой кошки

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

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

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

Другой вид атаки  —  назовем его «то же изображение, другой хеш»  —  добавляет немного шума, но резко меняет нейрохеш.

Слева: оригинальный мем Доге, NeuralHash: 11d9b097ac960bd2c6c131fa. Справа: изображение создано автором, NeuralHash: f8d1b897a45e0bf2f7e1b0fe

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

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

Как это исправить

Одним из способов избежать этих атак было бы решение никогда не хранить CNN на пользовательских устройствах. Без доступа к весам CNN осуществлять состязательные атаки намного сложнее. Однако если Apple запустит хеширование на своих серверах, все личные фото в iCloud окажутся в общем доступе.

В качестве альтернативы Apple может запустить NeuralHash со множеством моделей CNN вместо одной. Использование множества моделей увеличивает сложность создания состязательной атаки: в этом случае нужно будет обмануть все модели одновременно. Однако запуск множества моделей увеличит объем вычислений, которые необходимо выполнять на устройстве, что может оказаться нежелательным для пользователя.

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

Алгоритм NeuralHash  —  это новая технология, и степень ее уязвимости, возможно, не до конца изучен. Попробуйте запустить алгоритм здесь!

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Swee Kiat Lim: Apple’s NeuralHash — How it works and how it might be compromised

Предыдущая статьяУзнать и забыть: 4 антипрактики обработки ошибок в Python
Следующая статьяИзвините, но мы не можем воскресить вас