Как мы взломали биометрическую систему и получили за это 100 000 рублей
Команда KryptoNet компании «Криптонит» выступила в финале Всероссийского хакатона по биометрии и заняла третье место в решении задачи «атака на биометрическое представление». Команду представляли сотрудники лаборатории искусственного интеллекта. Это был крайне интересный опыт, которым спешим поделиться в статье.
Призовой фонд хакатона, организованного Центром Биометрических Технологий, составил полтора миллиона рублей. Часто эпитет «всероссийский» добавляют просто ради звучного названия, но в этот раз конкурс был действительно масштабный. В нём приняли участие 55 команд из разных регионов страны. В финал прошли только 24 команды, включая нашу. В ходе заключительного этапа конкурса на выбор предложили три кейса. Мы выбрали кейс от СБП и Мир Plat.Form: «Создание инструмента для восстановления изображения из вектора биометрических персональных данных».
Формулировка задачи
По условию кейса произошла утечка данных из некоторой биометрической системы (БС). В результате неё злоумышленникам стали доступны изображения лиц и их биометрические представления (эмбеддинги).
От участников хакатона требовалось научиться генерировать фейковые портреты, которые смогут обмануть систему (или, говоря более строго — построить атаку на биометрическое представление). Используя перехваченные эмбеддинги, нужно было научиться генерировать новые изображения лиц, биометрические представления которых будут максимально близки к перехваченным.
При решении такого рода задач биометрическая система обычно представляет собой «чёрный ящик», но организаторы сообщили участникам конкурса об использовании в БС модели InsightFace buffalo_l, однако, пользоваться этим знанием для построения атаки было запрещено.
Объём утечки организаторы предложили оставить неизвестным. Команды должны были сами решить, сколько примеров им потребуется для построения атаки (конечно, чем меньше — тем лучше). Также в задаче требовалось самостоятельно определить порог, преодоление которого будет считаться успешной атакой и предложить метод защиты от подобных атак.
Замысел решения
Мы предположили, что хорошо сгенерированные фотореалистичные изображения лиц, близких с точки зрения одной биометрической системы, будут считаться близкими и в других БС. Это позволяет нам выбрать инструмент генерации близких изображений в любой БС. Если мы найдём такой инструмент, то построив по данным из утечки функцию-адаптер, переводящую эмбединги из пространства биометрической системы организаторов хакатона в пространство злоумышленника нашей команды, сможем решить исходную задачу.
В качестве инструмента был выбран Arc2Face — открытое решение для генерации изображений лиц с помощью Stable Diffusion v1.5. Все необходимые веса имеются в репозитории. Arc2Face строит лица, близкие в пространстве модели InsightFace antelopev2. Проведя серию тестов, мы убедились, что лица, полученные с помощью Arc2Face, с огромным запасом проходят все разумные пороги сравнения эмбеддингов, а также экспертный тест в задачах верификации и идентификации. Экспертами выступали члены команды.
Решение команды
Обучение адаптера эмбеддингов
Чтобы определить необходимый объём утечки данных, мы выбрали несколько подмножеств датасета WebFace42M для обучения адаптера.
Наши эксперименты показали, что чем разнообразнее выборка, тем лучше обучается адаптер. Мы зафиксировали обучающую подвыборку из 50 000 изображений лиц 10 000 человек. В качестве отложенной тестовой выборки мы использовали изображения 1 000 лиц. Результаты обучения перед вами:
• Loss-функция: MSE
• Метрика: MSE
• Значение метрики на отложенной выборке: 0.005
• Архитектура: CrossCovarianceAttentionBlock
Тестирование
По условиям хакатона для вычисления вероятности успеха атаки требовалось определить порог близости сравнения эмбеддингов. Мы его вычислили для задачи идентификации с фиксированной ошибкой fpr (false positive rate) = 1E-5, на подвыборке датасета WebFace42M из 500 000 изображений и 92 000 идентификаторов, и получили порог (threshold) = 0,62.
Согласно требованиям хакатона, мы проверили данный порог для задач идентификации и верификации на других датасетах из 1 000 изображений, на которых будет тестироваться атака, и получили fpr < 1E-5. Для тестирования мы выбрали несколько датасетов различного качества к задаче верификации, а качество измеряли с помощью модели diffiqa с открытым исходным кодом. Датасеты:
• WebFace HQ — подвыборка WebFace42M с изображениями высокого качества
• WebFace LQ — подвыборка WebFace42M с изображениями низкого качества
• CelebA HQ — подвыборка CelebA с изображениями высокого качества
• CelebA LQ — подвыборка CelebA с изображениями низкого качества
• KryptoData — 1000 изображений людей, которые никогда не видел интернет.
Также для тестирования было предоставлено два датасета от организаторов хакатона. Мы их назвали UbsData_v1, UbsData_v2.
Результаты тестирования
Примеры сгенерированных лиц для тестового датасета организаторов хакатона
Мы пошли дальше и решили опробовать ещё более смелую идею: создать гибридное изображение, которое бы проходило верификацию сразу для двух пользователей. Результат перед вами.
Смешивание биометрических параметров двух совершенно непохожих людей даёт химеру, которая обманывает БС и позволяет аутентифицироваться от имени обеих персон.
Защита
В качестве меры противодействия атаке мы предложили недетерменированным образом маскировать передаваемые данные. Мы рассмотрели несколько способов маскирования:
• использовать сумму случайного количества биометрических представлений от случайно выбранных биометрических систем;
• дополнять их случайными данными (выполняя конкатенацию со случайными векторами) в случайном порядке;
• применять одну из заранее определённых перестановок (перемешивать координаты передаваемого вектора).
Отметим, что количество суммируемых эмбеддингов от разных вендоров должно быть сравнительно низким из-за накапливаемой ошибки верификации. Общее количество вендоров также не может быть большим. Дополнять значимым количеством случайных данных тоже не выйдет, так как это повышает нагрузку на канал связи.
На этом фоне перемешивание координат вектора выглядит как наиболее жизнеспособный вариант. Общее количество возможных перестановок вычисляется как факториал от количества координат в векторе. Поэтому в качестве «финальной» защиты мы предложили использовать одну случайную перестановку из множества заранее выбранных перестановок, определенных биометрической системой.
Минусы
• Увеличение времени этапа сравнения биометрического представления с эталоном в W раз, где W — количество заранее заготовленных перестановок координат биометрического представления.
Плюсы
• не требуется наличие нескольких биометрических систем;
• увеличение необходимого количества перехваченных злоумышленником данных как минимум в W раз.
Выводы
Наша работа наглядно показала, что перехват или утечка биометрических данных вместе с биометрическим представлением компрометирует вендора биометрических систем.
Само построение атаки не требует больших вычислительных ресурсов. Для генерации изображений мы использовали RTX 3090, чистое время одной атаки составило около 1 секунды, но с менее производительным ускорителем атака тоже возможна, просто займёт больше времени.
Сгенерированное описанным выше способом изображение настолько консистентно, что проходит верификацию даже в других биометрических системах (поскольку все они работают на схожих алгоритмах).
Усложнение процедуры верификации кратно снижает угрозу успешной атаки на биометрическое представление.
На вероятность успешной атаки влияет качество перехваченного изображения. Потенциально для всех, кто выкладывает фотографии в социальные сети, могут быть созданы изображения лица подобным образом.
Атаковать способом, подобным нашему, пробовало ещё 3 команды соперников. Ознакомиться с решениями разных команд можно в видеозаписи презентаций решений финала хакатона.