![]() |
![]() |
|||
Взлом системы распознавания радужной оболочки глаза с помощью генетического алгоритма
18.10.2012
Система идентификации по радужной оболочке глаза взломана с помощью генетического алгоритма! — в конце июля 2012 года в сети появились десятки материалов, пересказывающие в залоге сенсационности один из докладов конференции Black Hat USA. Но для вдумчивого читателя все новости по теме содержали больше вопросов, чем ответов. Редакция не гонится за дешевыми сенсациями, так что варианта было два: или написать сдержанную новость, указав читателю на «белые пятна», или досконально разобраться в теме. «Делаем по-максимуму!» — поставил задание издатель. И после первого же поискового запроса перед редактором разверзлась бездна ада. Занимательная офтальмологияНачнем с того, что сканирование радужки и сканирование сетчатки — совершенно разные биометрические технологии, потому что сетчатая оболочка и радужная оболочка находятся в разных местах глаза. К сожалению, в популярных публикациях эти две технологии постоянно путают. Даже всезнающий Google ошибочно считает радужку и сетчатку синонимами. Поэтому начать придётся с анатомии. Радужная оболочка (ирис) — тонкая подвижная диафрагма вокруг зрачка, физиологическая задача которой состоит в регулировании количества света, попадающего внутрь глаза. Когда мы говорим о цвете глаз человека, мы имеем в виду цвет его радужки. Рисунок, который создают в ней кровеносные сосуды, уникален. Считается, что он практически не меняется с полугодового возраста до самой смерти. Сетчатка (ретина) — это внутренняя оболочка глаза, глазное дно. Именно на фоторецепторных клетках сетчатки (палочках и колбочках) световые волны превращаются в нервные импульсы. Рисунок капилляров сетчатки тоже уникален и может являться биометрическим идентификатором. При сканировании сетчатку освещают невидимым для глаза ближним инфракрасным излучением. Подавляющее большинство современных биометрических систем, связанных с глазами, сканируют радужку. Сканирование сетчатки популярно в научной фантастике: эта технология (тогда еще гипотетическая) есть в фильме 1966 года о Бэтмене. Сканеры сетчатки мы видим в «Звездном пути», в боевике «Миссия невыполнима» и в одной из серий бондианы — «Золотом глазе». В реальном мире съёмка сетчатки ограниченно используется с 70-х годов на военных объектах, в ЦРУ и ФБР, в некоторых банках. Сейчас мы оставим в стороне сетчатку и займемся системами распознавания радужки. Точнее, вопросом о том, насколько они действительно защищены, и можно ли провести «самую надёжную из современных технологий биометрии». Проще, чем кажетсяПервое исследование защищённости систем сканирования радужки авторы июльской сенсации провели ещё четыре года назад. Группа биометрических исследований Мадридского автономного университета представила доклад на семинаре по биометрии и установлению личности BIOID, прошедшем в мае 2008 года в университете датского города Роскилле. Среди коллектива авторов есть и Хавьер Галбалли, так успешно выступивший на Black Hat. Исследование было настолько простым, что больше подошло бы для передачи «Разрушители легенд», чем для академической конференции. Впрочем, флёр серьезности всегда можно навеять с помощью наукообразного языка, таблиц и диаграмм. Тем не менее, вопрос о том, сработает ли система распознавания радужки, если ей предъявить изображение глаза, напечатанного на принтере, волнует многих. Именно это испанцы и решили выяснить. Аппаратной частью тестового стенда выступила камера LG IrisAccess EOU3000, программной — система, написанная в качестве бакалаврской дипломной работы австралийцем (судя по всему, чешского происхождения) Либором Машеком в 2003 году. По сообщению испанской группы, это единственная имеющаяся система распознавания радужки с открытым исходным кодом. Точнее, это выполненная на Matlab реализация разработки гуру машинного зрения Джона Доугмана — системы, лежащей в основе всех (по крайней мере, по данным 2008 года) коммерческих решений по распознаванию радужки. Работают все эти системы (в том числе реализация Машека) так. Сначала программа выделяет на изображении границы радужки и зрачка. Для этого используется преобразование Хафа. Потом изображение пересчитывается из декартовых координат в полярные (центр — в зрачке) и получившийся массив данных представляется снова в декартовых координатах. Таким образом, радужка предстаёт перед нами в виде прямоугольника. Но при разной освещённости радужная оболочка глаза может принимать различную ширину — поэтому картинку необходимо растянуть или сжать до стандартных размеров. Кстати, зрачок может находиться не строго по центру радужки. Следовательно, растягивать или сжимать надо каждый столбец получившейся растровой матрицы отдельно.
Затем изображение обрабатывается специальным фильтром (о нём — немного позже). То, что у нас получилось, во всех публикациях называют «кодом радужки» (iriscode). Именно эти данные и хранятся в биометрических системах. Эти коды сравниваются как строки путём вычисления расстояния Хэмминга. Функция Хэмминга позволяет описывать различия между строками, и чем меньше расстояние Хэмминга, тем меньше различие между строками. Если результат не превышает заданного порога, система подтверждает вашу личность. Заметьте, насколько серьёзна бакалаврская работа Машека. Попробуйте взять и написать работающую систему распознавания радужки, даже обладая всей полнотой теоретических знаний об аналогах! А в чём заключалась первая работа Хавьера Галбалли и его товарищей по исследовательской группе? Они распечатали изображения радужных оболочек глаза и предъявили их системе Машека. Использовались два принтера — струйный HP Deskjet 970cxi и лазерный HP LaserJet 4200L. Иногда систему получалось обмануть, иногда — нет, но исследователи продолжили эксперименты, применяя к изображениям различные фильтры. Наилучшие результаты получились со струйным принтером, после применения к изображениям фильтра «цилиндр» (top hat). Этот фильтр резко отбрасывает низкочастотную и высокочастотную составляющую сигнала — так, что передаточная характеристика фильтра по форме напоминает шляпу-цилиндр. Так каковы же результаты? Были проведены две атаки. При первой — в системе регистрировались пользователи не по изображению настоящего глаза, а по распечатке, и, соответственно, распечатка демонстрировалась при попытке идентификации пользователя. Во втором случае регистрировались настоящие глаза, но для идентификации предъявлялись распечатки. Успешными оказались обе атаки. Указывается, что тестируемая система могла быть настроена по максимально допустимому проценту позитивных ошибок — то есть ошибочных успешных распознаваний (FAR, false acceptance rate). Было проведено пять серий экспериментов с порогом позитивной ошибки от 0,1% до 5%. При минимальном FAR атака первого типа достигла успеха в 57% попыток, второго типа — в 49% попыток. Для максимального FAR результаты составили 82 и 73% соответственно. Проверка на «живучесть»Итак, дженерик-система распознавания радужки прекрасно «съедает» распечатку. А как можно защитить более продвинутое решение? Отслеживать реакцию на внезапный свет? Некомфортно для пользователя. Ждать микродвижений глазного яблока относительно век? Это может значительно увеличить время сканирования. Сам Доугман предлагал искать печатный растр. Каждый принтер формирует изображение из множества мелких точек, и обнаружить их на снимке теоретически несложно. Достаточно сделать дискретное преобразование Фурье и посмотреть, нет ли в высокочастотной области гармоник с подозрительно большой амплитудой. Но если говорить о соревновании снаряда и брони, то эта броня, конечно, противопульная. Ведь потратиться на принтер очень высокого разрешения и высококачественную фотобумагу — совсем не проблема. И чтобы алгоритм детектирования растра сработал, вам понадобится мегапиксельная камера с очень точным автофокусом. Не расточительство ли это? Однако, есть и более интересные идеи. Еще в 2005 году три корейских автора из сеульского университета Санмюн (их имена в романской транскрипции пишутся как Eui Chul Lee, Kang Ryoung Park и Jaihie Kim; в русской транскрипции должно получиться что-то вроде Ый Чхул Ли, Кан Рэн Пак и Чин Ся Ким) предложили оригинальный метод, опирающийся на особенности человеческой анатомии. Вы, возможно, замечали, что на человеческом глазе одновременно может быть несколько бликов. Отражения фигурного источника света от элементов внутренней структуры глаза называются фигурками Пуркинье-Сансона. Всего есть как минимум четыре фигурки: первая и вторая получаются из-за отражений на наружной и внутренней поверхностях роговицы, третья и четвёртая — от наружной и внутренней поверхностей хрусталика. Разумеется, фигурки Пуркинье так же получатся и от инфракрасного источника света, который глазу не виден, и поэтому не создаёт никаких неудобств пользователю. Представьте: у камеры находятся несколько ИК-светодиодов, расположенных в ряд. Они включаются поочерёдно. Для каждого из светодиодов у вас будет своя картина фигурок Пуркинье-Сансона, и вы даже можете вычислить соотношение расстояний, соответствующее нормальной анатомии человеческого глаза. Примерно такой метод и предложили корейские исследователи. И это не только теория: корейцы собрали лабораторный стенд, реализовали программную часть и изучили, насколько эффективно это работает. Доля позитивных и негативных ошибок получилась примерно одинаковой — около 0,33%. Описание научной работы исследователей из университета Санмюн опубликовано и находится в свободном доступе. Увы, пока что ни один производитель биометрического оборудования не заявил об анализе фигурок Пуркинье-Сансона как о своем конкурентном преимуществе. Судя по всему, большинство коммерческих систем распознавания радужки не слишком отличаются от дипломной работы Либора Машека. Чуть дальше этому будет ещё одно подтверждение. Контактные линзыМожно ли надеть контактные линзы с рисунком радужки и пройти через биометрический считыватель? Про эту возможность очень много говорят, но никто, кажется, не видел контактной линзы с чужой радужной оболочкой. В публичном пространстве не нашлось ни одного описания эксперимента по подделке радужки с помощью контактных линз. Изготовить контактную линзу с высококачественной печатью высокого разрешения довольно сложно даже в условиях университетской лаборатории.
Тем не менее, некоторые производители продают контактные линзы с полностью непрозрачной радужкой, и не только для косметического изменения цвета глаз. Например, некоторые контактные линзы весьма убедительно имитируют глаза персонажей аниме. На таких линзах есть текстуры — в том числе с весьма мелкими элементами.
Для небольшой преступной группы изготовление контактных линз с поддельной радужкой является практически непосильной задачей. Но могущественная спецслужба, неограниченная в ресурсах, с этим справится. Можно помыслить сценарий, при котором игра будет стоить свеч. Ведь распознавание радужной оболочки глаза используется в системах пограничного контроля. «Взлом» с помощью генетического алгоритмаКрасиво звучит, не правда ли? По новостным заметкам IT-изданий складывалось впечатление, что упоминавшаяся уже группа исследователей из Мадридского автономного университета нашла критическую уязвимость в системе VeriEye от литовской хайтек-компании Neurotechnology. Указывалось, что ученые расшифровали хранящийся в системе «код радужки» и смогли сгенерировать соответствующее ему изображение глаза. Но что именно представляет собой этот код? Так вот, на самом деле основным объектом исследования, которое произвело фурор на Black Hat USA 2012, была всё та же система, написанная Либором Машеком на Matlab для своего бакалаврского диплома. Генетический алгоритм предполагает постоянную обратную связь для нахождения локального оптимального решения. Когда есть исходный интерпретируемый код, получить эту информацию проще простого.
Сложнее было разобраться в том, какие именно данные исследователи восстанавливали. Код радужки в биометрических системах, разработанных на основе алгоритма Доугмана, — это не хэш, не шифр и не аналитическое описание. Это всё тот же прямоугольный растр (откуда он берётся, разобрано в начале статьи), к которому применили цифровой фильтр обработки изображения.
Чтобы понять, что это за фильтр и как он обрабатывает данные, потребуется небольшой экскурс в теорию цифровой обработки сигналов. Доугман в своей оригинальной системе использовал цифровой фильтр Габора. Импульсная переходная характеристика фильтра Габора — это вейвлет Габора, который равен произведению косинусоиды на гауссиану. То есть если на вход фильтра Габора подать сигнал минимальной длительности (в один шаг дискретизации) и максимальной амплитуды, то — при определённо подобранных параметрах — на выходе функция сначала уйдёт вниз, потом резко вверх, а потом снова вниз. Поэтому фильтры Габора, реализованные в двухмерном пространстве, активно используются в графических редакторах для повышения контрастности изображения и подчеркивания границ объектов. Самый банальный и наглядный пример — фильтр «Sharpen More» из Adobe Photoshop.
После повышения резкости фильтром Габора рисунок радужной оболочки квантуется по четырём уровням. Проще говоря, количество градаций серого уменьшается с 256 до 4. Передаточная функция (полоса пропускания) фильтра Габора имеет форму гауссианы. Это фильтр средних частот, обрезающий высоко- и низкочастотную составляющие. Но Машек в своей реализации использовал не двухмерный фильтр Габора, а одномерный логарифмический фильтр Габора. От обычного габоровского фильтра он отличается десятичным логарифмом перед аргументом передаточной функции. Соответственно, его полоса пропускания имеет форму гауссианы на графике с логарифмической абсциссой.
Да, Хавьер Галбалли, Арун Росс, Марта Гомес-Барреро, Хулиан Фьеррес и Хавьер Ортего-Гарсиа, получая обратную связь непосредственно из «внутренностей» программы с открытым кодом, нашли способ создать рисунок радужки, который давал бы после ряда манипуляций нужный результат обработки. Молодые люди поупражнялись в программировании и, возможно, чем-то обогатили знания человечества в области компьютерной графики. Так, а причем вообще здесь система VeriEye от Neurotechnology? Выяснилось, что реконструированные по коду из системы Машека и распечатанные на бумаге изображения глаз успешно распознаются решением от литовской компании. Разумеется, в системе были зарегистрированы те же пользователи, что и в исследуемой разработке. Точность распознавания поражает: при максимально допустимом ложном положительном решении в 0,1% атака оказывалась успешной в среднем в 86,7% случаев, а при некоторых условиях эксперимента — даже в 96,7%. Когда допуск снижали до 0,0001%, доля результативных атак по-прежнему оставалась очень высокой — целых 75,3%. Нам ничего не известно об архитектуре системы VeriEye, но мы можем сделать кое-какие предположения. Впрочем, извлечь «код радужки» из неё навскидку не получается. Что мы сегодня узнали?Что распознавание радужной оболочки совершенно беспочвенно называют одной из самых надёжных биометрических технологий. Наоборот, это одна из самых ненадёжных технологий. Современные системы распознавания радужки легко обманываются распечаткой, сделанной на бытовом принтере. Но теоретическая возможность защититься от такой атаки есть. Что Хавьер Галбалли и его коллеги ничего не взламывали. А что в научном мире, как и в бизнесе, успешная самопрезентация часто перевешивает реальные достижения, мы знали и раньше. Что биометрические системы имеют огромный потенциал для маркетингового соревнования — есть масса возможностей для создания конкурентных преимуществ. Что написать биометрическую систему несложно. В принципе, для разработки типовой системы распознавания радужки вам будет достаточно лишь этой статьи. |
||||