Гомоморфное шифрование: приватный поиск Apple по фото
Попробуйте поискать в галерее iPhone по названию достопримечательности, например «Эйфелева башня». Найдутся ваши собственные снимки Парижа, хотя разметку по ним никто вручную не делал. Метки расставил сервер Apple, и вот в чём фокус: этот сервер не видел ни ваши фотографии, ни то, что вы искали.
Приватность здесь не побочный эффект, а результат связки машинного обучения и гомоморфного шифрования. Apple разобрала эту систему в отдельном исследовании, и самое интересное в нём не модель, а инфраструктура вокруг неё. Разбираем, как устроен приватный поиск по фото и что из этой схемы пригодится за пределами экосистемы Apple.
Что такое гомоморфное шифрование
Гомоморфное шифрование (homomorphic encryption, HE) это способ считать прямо по зашифрованным данным. Устройство шифрует запрос и отправляет его на сервер, сервер выполняет вычисления над шифротекстом и возвращает зашифрованный ответ. Расшифровать ответ может только клиент, ключа у сервера нет.
Для ML-инфраструктуры это принципиальное изменение. Обычный серверный поиск требует, чтобы сервер видел запрос: иначе он не поймёт, что искать. HE переворачивает схему: сервер выполняет тяжёлую работу, не понимая, с чем именно работает.
Схема BFV: что именно умеет считать сервер
Apple реализовала схему BFV, названную по фамилиям авторов, Brakerski, Fan и Vercauteren. Она поддерживает операции, на которых держатся ML-пайплайны: скалярные произведения и косинусную близость векторов. Параметры подобраны под пост-квантовую стойкость в 128 бит, то есть защита рассчитана и против будущих квантовых компьютеров.
Выбор не случаен. И поиск по индексу, и сравнение эмбеддингов сводятся к одним и тем же операциям над векторами. Если схема умеет складывать и перемножать зашифрованные векторы, сервер может искать по базе, ничего не расшифровывая.
У схемы есть и ограничение. Каждое умножение увеличивает шум внутри шифротекста, и после определённой глубины вычислений результат перестаёт расшифровываться. Поэтому в HE ценят короткие вычислительные цепочки, и задачу поиска приходится выражать минимальным числом операций.
Точные совпадения: приватный поиск PIR
Самый простой сценарий для HE это поиск точного совпадения по ключу. Его закрывает PIR, private information retrieval. Клиент шифрует ключ и отправляет его на сервер, сервер считает ответ прямо над шифротекстом, а расшифровывает результат уже устройство.
В экосистеме Apple так работает сразу несколько функций: подгрузка логотипа компании в письмо в Mail, определение звонящего по номеру телефона, проверка ссылки по базе взрослого контента при родительском контроле. Скачать такие базы целиком на устройство нельзя, они слишком большие и постоянно обновляются. Но и отдавать серверу номер звонящего или адрес сайта недопустимо, поэтому каждое обращение зашифровано.
Важный нюанс: сервер выполняет работу, но не может ни прочитать ключ, ни понять, что нашлось. Даже логи запросов тут мало что дают: в них попадут только шифротексты.
Приблизительные совпадения: PNNS и поиск по векторам
Второй сценарий сложнее: нужно не точное совпадение, а ближайший сосед в векторной базе. Для него Apple построила PNNS, private nearest neighbor search, на основе исследования Scalable Private Search with Wally.
Проблема, которую решает Wally, звучит так. В прежних системах приватного поиска сервер на каждый запрос выполнял минимум одну дорогую криптографическую операцию на каждую запись в базе, и с ростом базы всё замедлялось. Wally переиспользует вычисления между клиентами, поэтому его производительность растёт, когда запросов много.
В PNNS устройство шифрует эмбеддинг и отправляет его как запрос. Сервер выполняет поиск ближайшего соседа в зашифрованном пространстве и возвращает зашифрованные значения. Клиент их расшифровывает и получает ответ. Как и в случае с PIR, сервер не узнаёт ни эмбеддинг, ни найденный результат.
Такая схема особенно нужна там, где база большая, постоянно пополняется, а запросов много. Именно масштаб и был главной проблемой прежних систем приватного поиска.
Как это работает в проде: Enhanced Visual Search
Самая показательная продакшн-система на этой связке это Enhanced Visual Search в приложении Photos. Функция ищет в библиотеке снимки с достопримечательностями, от Колизея до Бранденбургских ворот, и включается в настройках приложения.
Логика Apple здесь простая: всё, что можно посчитать на устройстве, считается на устройстве. На сервер уходит только то, без чего не обойтись, а именно сравнение с глобальной базой достопримечательностей.
Всё начинается с модели на устройстве. Она анализирует фото и ищет область интереса, регион, который может содержать достопримечательность. Для найденной области считается векторный эмбеддинг, который квантуется до 8 бит. Точность квантования это инженерный компромисс: чем больше бит, тем точнее поиск, но тем крупнее шифротекст, дороже вычисления и дольше ответ.
Дальше в игру вступает шардирование. Серверная база эмбеддингов разбита на кластеры, а на устройстве хранится кодбук с их центроидами. Клиент локально сравнивает свой эмбеддинг с центроидами, выбирает ближайший кластер и добавляет его номер в зашифрованный запрос. Так сервер считает только по одной части базы, и вычисления остаются в разумных рамках.
Сам выбор кластера мог бы выдать информацию о запросе, поэтому поверх схемы работают дифференциальная приватность и OHTTP-релей. К настоящим запросам клиент добавляет поддельные, и сервер не может отличить, какой из них реальный. Релей под управлением третьей стороны скрывает IP-адрес устройства, поэтому связать несколько запросов с одним пользователем тоже не получится. Для библиотеки фотографий система обеспечивает дифференциальную приватность с параметрами ε = 0.8 и δ около одной миллионной.
На стороне сервера работает векторная база с эмбеддингами достопримечательностей в виде инвертированного индекса. Сервер находит нужный шард по номеру из запроса и считает близость в зашифрованном пространстве. Оценки и метаданные кандидатов объединяются в один шифротекст фиксированного размера и уходят обратно.
Устройство расшифровывает ответ и передаёт кандидатов в лёгкую reranking-модель. Она учитывает визуальное сходство, локальные геосигналы, популярность места и покрытие индекса, чтобы не переоценивать одни и те же кандидаты. Победитель становится меткой, метаданные фото обновляются, и дальше поиск по названию места работает как обычный локальный поиск, даже офлайн.
Для пользователя финал истории выглядит буднично: он открывает поиск в Photos, набирает название места и получает подборку своих снимков. Никакого отдельного интерфейса приватности, вся криптография остаётся за кадром.
Дифференциальная приватность: вторая половина схемы
HE скрывает содержимое запроса, но не всё остальное. Факт обращения к серверу, время, IP-адрес, выбор шарда это тоже данные, и Apple закрывает их отдельным слоем. Дифференциальная приватность добавляет к запросам шум и поддельные обращения, а релей скрывает сетевой адрес.
Это не новая для компании техника. Ещё в 2017 году Apple описала локальную дифференциальную приватность в работе Learning with Privacy at Scale: так собирали статистику по популярным эмодзи, типам медицинских данных и настройкам воспроизведения в Safari, не вытаскивая с устройств ничего конкретного. Тогда система охватила сотни миллионов пользователей. Enhanced Visual Search продолжает ту же линию, только теперь шум соседствует с гомоморфным шифрованием.
Почему это инженерная задача, а не магия
Гомоморфные вычисления стоят на порядки дороже обычных, и вся описанная конструкция это способ удержать расходы в рамках продакшена. Отсюда и 8-битное квантование, и шардирование, и объединение оценок в один шифротекст, и лёгкая reranking-модель вместо серверной.
Каждый элемент здесь это компромисс между приватностью, задержкой и ценой. Больше поддельных запросов и шума, дороже инфраструктура. Выше точность эмбеддинга, крупнее запросы и нагрузка на сервер. Apple выбрала точку, в которой функция работает для миллионов пользователей и при этом остаётся приватной, и на это ушло несколько лет исследований.
К этому добавляется требование по скорости. Функция обязана отвечать быстро, иначе ей не будут пользоваться, а HE по своей природе медленный. Шардирование и квантование существуют ровно для того, чтобы уложить вычисления в этот бюджет.
Что это значит для разработчиков
Apple открыла библиотеку swift-homomorphic-encryption, так что схему можно повторить в своих проектах. Подход стоит рассматривать там, где есть чувствительные запросы к серверной базе: персональные рекомендации, медицинские данные, корпоративный поиск, проверка чего-либо без раскрытия самого запроса.
При этом важно трезво оценивать цену. HE не заменяет обычные вычисления, а дополняет их в узких местах, где приватность критична, а запросы невелики. Если задача не сводится к поиску по базе или сравнению векторов, выигрыш будет сомнительным, а сложность вырастет заметно.
Практический совет для команд: начинать стоит не с выбора схемы, а с аудита данных. Определите, какие именно запросы раскрывают чувствительную информацию, оцените их объём и только потом решайте, нужна ли здесь криптография или хватит локальной обработки и дифференциальной приватности.
Такие примеры снижают барьер для остальных: когда компания масштаба Apple открывает библиотеку и публикует детали продакшн-системы, приватные вычисления перестают быть экзотикой и становятся ещё одним инженерным инструментом.
Часто задаваемые вопросы
Видит ли Apple мои фото, когда я ищу достопримечательность?
Нет. Фото и область интереса анализируются на устройстве, на сервер уходит только зашифрованный эмбеддинг. Сервер считает по шифротексту и не может расшифровать ни запрос, ни ответ. Расшифровка и запись метки происходят на вашем устройстве.
Замедляет ли гомоморфное шифрование поиск?
Само по себе да, вычисления над шифротекстом стоят на порядки дороже обычных. Apple компенсирует это квантованием эмбеддингов до 8 бит, шардированием базы и объединением ответов в один шифротекст. В результате функция работает с задержкой, приемлемой для миллионов пользователей.
Что такое дифференциальная приватность простыми словами?
Это подход, при котором в данные добавляют шум так, что по результату нельзя уверенно судить о конкретном человеке. В системе Apple она дополняет шифрование: HE скрывает содержимое запроса, а шум и поддельные обращения мешают анализу по косвенным признакам.
Можно ли применить такой подход в своём проекте?
Да, библиотека swift-homomorphic-encryption открыта для всех. Подход подходит для приватных запросов к серверным базам и сравнения векторов, когда раскрытие запроса недопустимо. Но потребуется инженерная работа: подбор параметров схемы, организация шардов и баланс между приватностью и скоростью.
Итог
История Apple показывает, что приватность и серверный ML не исключают друг друга. Гомоморфное шифрование нашло место в продакшене, где запрос должен уйти в облако, но остаться невидимым для сервера. Enhanced Visual Search работает на сотнях миллионов устройств и не раскрывает ни одного фото, и это лучший ответ тем, кто считает, что хорошие ML-функции невозможны без сбора данных.
Если хочется копнуть глубже, у Apple есть полный разбор системы и статья про Wally, а код библиотеки лежит на GitHub в открытом доступе. А самый быстрый способ увидеть схему в деле это включить Enhanced Visual Search в настройках Фото и поискать по местам, где вы бывали.