В эпоху всеобщей виртуальности и общения через аватары, а также бурно развивающейся биометрической идентификации и дипфейков становится исключительно важно отличать живого человека от неживой подделки, например, от фотографии. В этом и заключается центральная задача биометрической идентификации пользователя. Частично я затрагивал эти темы в статьях о зловещей долине и о маскировке, препятствующей распознаванию лиц, а сегодня попробую рассказать о целом спектре методов, выработанных для опознания живого человека в картиночной реальности социальных сетей.
Идентификация и аутентификация – смежные задачи, но аутентификация невозможна без идентификации и авторизации. Именно на уровне идентификации строится большинство спуфинговых атак, цель которых – подменить личность пользователя, а затем выполнить от его имени потенциально опасные действия.
Биометрия как средство идентификации и аутентификации пользователя – одна из тех задач компьютерного зрения и распознавания образов, чья актуальность резко возросла во время пандемии и после неё. Классификация и идентификация лиц – технически не очень сложная задача. Датасет из самых разных реальных и синтетических лиц можно быстро собрать, а в наше время – и быстро синтезировать. Этому во многом способствует массовое распространение соцсетей и их эволюция в сторону визуального, а не текстового контента.
Биометрическая идентификация (в отличие, например, от дактилоскопии) рассчитана на человеко-машинное взаимодействие и кажется частным случаем распознавания. Распознать человека по лицу не всегда удаётся с такой точностью, как по отпечаткам пальцев, поэтому в биометрии применяется также распознавание по радужной оболочке глаза и по голосу (мультимодальный подход). Но практика показывает, что при идентификации человека важно не только распознать его лицо или уникальную «сигнатуру» — например, узор радужки — но и убедиться, что в процедуре распознавания участвует сам индивид, а не его имитация. В качестве такой имитации может использоваться маска, скульптурная копия головы или просто фотография, бумажная или цифровая. В настоящее время большинство людей оставляет жирный цифровой след (фото, видео, запись голоса) – как добровольно, рассказывая о себе в соцсетях, так и не вполне добровольно, поскольку загрузка фото и/или голоса является элементом регистрации на разных цифровых сервисах.
Таким образом, идентификация всегда являлась предпосылкой авторизации, но в настоящее время при идентификации всё более актуален ещё один предварительный проверочный этап – оценка живого присутствия (liveness detection). Идентификация может быть провалена из-за программной или аппаратной ошибки, но проверка живого присутствия устроена так, что, будучи провалена, она практически наверняка свидетельствует о сознательной попытке обмана. Проверка живого присутствия основана на поиске дефектов, посторонних включений (уважаемые читатели, жутко не люблю, когда в этом значении употребляют слово «артефакт»!), характерных для фотопленки узоров, а также текстур и бликов.
Проблема живого присутствия
Биометрические системы сразу по нескольким показателям выигрывают у других систем обеспечения безопасности, в частности, пин-кодов, паролей, ключей, идентификаторов, т.д. Одно из важнейших достоинств лицевой биометрии заключается в её ненавязчивости. При биометрии распознается лицо пользователя, а также учитывается освещенность и детализация. С технической точки зрения биометрия делает явные успехи, но одновременно и спуфинговые атаки на неё становятся всё изощреннее. Как правило, если биометрическую систему требуется обмануть, ей предъявляется фото, муляж или краденые личные данные пользователя. Этого бывает достаточно, чтобы система приняла злоумышленника за пользователя, разрешив ему определённые онлайновые действия или, например, пропустив на объект. Пока не сформулировано корпуса признаков, которые однозначно отличали бы лицо от изображения; при этом, решаемая задача является двухчастной. Во-первых, нужно разграничить два пространства признаков: «живое» и «неживое». Во-вторых, нужно убедиться, что однозначно «живое» лицо принадлежит конкретному пользователю.
Подбор признаков для активной и пассивной идентификации
При определении живого присутствия алгоритм может учитывать либо признаки, характерные именно для человека, либо признаки, характерные именно для фотографии или муляжа. Как было указано выше, наиболее доступным материалом для подмены является фотография, взятая из Интернета. Характеристики, свойственные лицу, но отсутствующие на фотографии:
Степень детализации. На снимке кожа лица будет неестественно ровной (или даже специально отретушированной) – как в структурном отношении, так и в цветовом.
Блики. Для фотобумаги или для экрана смартфона характерны блики или глянец, которых нет у кожи.
Микродвижения. Это самый важный класс признаков, поскольку фотография статична в принципе, а человек таких движений не контролирует. Речь идёт о моргании, движении глаз и лицевых мышц, пульсации кровеносных сосудов.
Контрастность и глубина. Если биометрическая система имеет дело с реальным лицом, то, как правило, не будет явного перехода между лицом и фоном, а задний план за головой живого человека будет глубоким и размытым. Бумага или экран, напротив, резко отличаются от окружающего пространства. Отражение света от бумаги или экрана происходит значительно быстрее, чем от лица, и машина способна это зафиксировать.
Тепловые датчики. Дополнительная проверка. Лицо пользователя должно иметь температуру человеческого тела и выделяться в инфракрасном спектре на фоне более холодных окружающих объектов.
Кроме того, в такую процедуру биометрической идентификации легко добавляется динамика: пользователь должен моргнуть, улыбнуться или кивнуть. Порядок этих действий можно сделать случайным: пользователь выполняет действия «моргните», «улыбнитесь», «кивните» в том порядке, в каком программа запросит их совершить.
Все перечисленные методы не исключают обмана, а лишь (при сочетании таких методов) снижают его вероятность. На сайте Мичиганского университета приведён набор реализаций и моделей (Python, Pytorch), позволяющих обмануть биометрию по многим показателям: освещению, глубине, сегментации, пр. Применяется всего три основных подхода к обману биометрической системы:
Показ фотографии вместо лица,
Атака через воспроизведение — показ видео с участием пользователя. На видео субъект может, среди прочего, совершать заданные действия: поворачивать голову и пр.; в данном случае расчёт делается на то, что система поддастся на сам жест, не учитывая качества и реалистичности картинки,
Скульптурное воспроизведение (3D-печать). В зависимости от сложности системы может использоваться либо полноценный муляж головы субъекта, либо реалистичная маска. В маске остаются прорези для рта и глаз, поэтому злоумышленник может сам моргать или улыбаться.
Получаем очень сложное соотношение «сигнала» и «шума» при биометрическом распознавании. Система, сопоставляющая предъявляемую маску с эталонной фотографией пользователя, не только должна оценивать соответствие маски лицу, но и соотносить качество маски с качеством незамаскированных областей: глаз и губ злоумышленника. В таком случае «вес» динамических признаков идентифицируемого человека должен быть выше, чем «вес» статических, но именно «динамическая» часть информации может поступать от злоумышленника.
По указанным причинам биометрическая идентификация уязвима перед состязательными атаками. Биометрия должна быть чувствительна к шуму не менее, чем к сигналу, и из-за этого её легко дезориентировать правильно подобранным шумом. Cама процедура идентификации не должна быть чрезмерно сложна для пользователя – так как при возрастании сложности растёт и вероятность ошибок и ложноотрицательных результатов. Тем сложнее, если последовательная биометрическая проверка построена как транзакция и может быть отменена целиком, когда хотя бы один этап не пройден.
Лицевая биометрическая идентификация в сочетании с другими методами
Таким образом, эффективность биометрической идентификации проще всего повысить, сочетая распознавание лица с другими методами. Особенно примечательны в данном случае методы идентификации, применяемые на смартфонах. Мощность процессора на мобильном устройстве не позволяет прогонять сложные алгоритмы, а смартфон не приспособлен для обучения на заданном датасете. Поэтому во многих моделях идентификация по лицу применяется вместе с идентификацией по отпечатку пальца и по рисунку радужки. Впервые данная технология, называемая FaceID, появилась в IPhone X и сочеталась именно с аппаратным идентификатором отпечатков пальцев. Тем не менее, технология FaceID пока очень несовершенна и может путать близких родственников, например, отца и сына. Сканер отпечатков пальцев, в свою очередь, может некорректно реагировать на мокрые или грязные пальцы. Если для разблокировки гаджета пользователь обязан пройти как дактилоскопическую, так и лицевую идентификацию, процесс становится ненадёжным и явно проигрывает в юзабилити простому вводу пароля.
Эти методы можно скомпрометировать и целенаправленно. Отпечатки пальцев давно каталогизируются в специальных базах данных, не застрахованных от взлома; более того, разрабатываются уже полноценные SDK для подделки дактилоскопических узоров. На основе такого SDK можно сделать пластиковые накладки на подушечки пальцев, имитирующие фингерпринт нужного человека. Сфотографировать радужку человека также можно без его ведома — например, установив специальное ПО в камеру для распознавания лиц. Затем узор с радужки в точности переносится на контактные линзы, которыми будет пользоваться злоумышленник.
В 2019 году в рамках конференции «BlackHat USA» был сделан доклад, демонстрирующий простые и даже кустарные способы имитации живого присутствия. В нём рассмотрены, в том числе, варианты внедрения вредоносного видео и аудио, но я остановлюсь на лицевом спуфинге.
Авторы экспериментально доказали, что технология FaceID легко обходится простым ношением очков. По-видимому, в алгоритме FaceID заложена как трёхмерная, так и двухмерная проекция глаз. Двухмерная проекция глаз упрощена и трактуется как сочетание двух областей: круглый зрачок в центре и овальная радужка вокруг него. Для имитации такой структуры нужны очки
следующей конструкции:
![](https://habrastorage.org/getpro/habr/upload_files/da2/f42/b0e/da2f42b0e9923d7bb32e068ca88cc093.png)
На каждое из стёкол наклеиваются два специально вырезанных фрагмента скотча: прямоугольный тёмный скотч имитирует радужку, а белый скотч имитирует зрачок. Структура атаки может быть представлена такой блок-схемой:
![](https://habrastorage.org/getpro/habr/upload_files/7bb/f66/87f/7bbf6687f598626dc36112a1ce7bf9c6.png)
Поэтому ни отпечатки пальцев, ни рисунок радужки недостаточны для биометрической идентификации и должны применяться вместе с другими методами, позволяющими проанализировать цвет и структуру кожи.
Анализ текстур кожи
В терминах компьютерного зрения анализ поверхности, освещённости и цвета кожи – это анализ текстур. Естественно, текстуры живой кожи отличаются от текстур синтетической кожи или лепной маски, а тем более – от полного отсутствия текстур на бумажном или электронном фото. Наиболее изученными алгоритмами, применяемыми в данном случае, являются LBP (анализ локальных бинарных шаблонов) и LUCID (локально однородный сравнительный дескриптор изображений).
Алгоритм LBP учитывает пространственно-временные закономерности, прослеживаемые в динамике движений лица. Алгоритм переводит цвет кожи в оттенки серого и анализирует сокращения лицевых мышц в трёх измерениях (человек таких движений не контролирует). На основе LBP в настоящее время уже собраны специализированные множества признаков, характерные для моргания, движения губ, ресниц, глаз, наморщивания лба и пр. Подчеркну, что паттерны в этих рефлекторных движениях прослеживаются не только в пространстве, но и во времени. Алгоритм нацелен на поиск узнаваемых последовательностей рефлекторных движений.
Алгоритм LUCID был разработан именно в расчёте на работу с мобильными устройствами, поскольку экономно расходует вычислительные ресурсы. Алгоритм анализирует лицо как совокупность светотеней и учитывает отражательную способность кожи (как было указано выше, по этому показателю кожа значительно уступает глянцевой бумаге или экрану смартфона/планшета). На живом лице обязательно есть углубления, освещённые хуже, чем лоб, нос и скулы. Также на лице чётко выделяются родинки, пигментные пятна и/или макияж, которые практически не выделяются на фотографиях, в особенности низкокачественных. Алгоритм LUCID делит лицо человека на зоны, в каждой из которых ожидает зафиксировать определённое соотношение RGB-оттенков.
Заключение
С учётом вышеизложенного, лицевая биометрия пока представляется малоизученной и недостаточно защищённой технологией, уязвимой перед фальшивыми данными. Риск успешного обхода биометрической идентификации повышается в случаях:
При наличии большого количества фотографий атакуемого лица в открытом доступе;
При создании высококачественной маски или скульптурного изображения атакуемого лица;
При возможности скомпрометировать биометрическую систему, подав ей на ввод в реальном времени картинку с лицом человека, пока человек спит или находится без сознания;
При разработке состязательных атак на биометрическую систему;
Условно надёжной защитой от всех этих атак является сочетание биометрических проверок, в частности, динамический анализ микродвижений лица, инфракрасная проверка живого присутствия, распознавание лица в сочетании с дактилоскопией и анализом голоса.