Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #107, НОЯБРЬ 2007 г.

Вырви глаз!

Александр Гайша

Хакер, номер #107, стр. 107-072-1

(physics2005@mail.ru)

Все о биометрических системах контроля доступа

Здравствуй, дорогой друг! Сегодня мы немного поговорим о биометрии. Для этого предположим, что ты, попивая пивко на любимой проселочной дорожке, решил посетить святая святых, в народе - биотуалет. Подходя поближе, ты замечаешь, что старая знакомая бабка-контролер, расположившись неподалеку с подносом семечек, ностальгически посматривает на входную дверь туалета, в которую люди теперь могут входить совершенно беспрепятственно. В голове проносится шальная мысль о возможном изменении статуса уборной и ее переименовании в бесплатный туалет типа Макдоналдс, но нет! На заветной двери – табличка: «Пятку прислонять сюда», а рядом - замысловатое отверстие, куда каждый возжелавший должен прислонить часть себя. Итак, век биометрических технологий наступил...

Немного о технологиях контроля доступа

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

Итак, в современном мире вовсю, так сказать, стоит задача ограничения доступа. В литературе штуки, которые призваны справляться с подобной задачей, называются системами контроля доступа, или сокращенно СКД (реже употребляется СКУД, где добавлено слово «управление»).

Итак, как же можно контролировать доступ к какому-либо важному объекту, или, другими словами, какие бывают СКД? Вообще говоря, человека пропускают на желаемый объект тогда, когда у него есть то, что требуют от него решающие, пропускать его или нет (ну предположим, абонемент на посещение вышеобозначенной уборной). Поэтому, в зависимости от того, что именно у него должно быть, принято различать несколько типов СКД: парольные, атрибутные, биометрические, ну и, естественно, комбинированные.

Парольная система требует от пользователя, чтоб у него был пароль. Ну, например, как теперь модно делать во все тех же туалетах крупных сетей быстрого питания: на чеке - код, читай: пароль, и, чтобы попасть куда надо или очень надо, опять-таки надо ввести этот код-пароль. Нормальному человеку ломать тут особо нечего – пароль можно друг другу передать, что делается во все тех же забегаловках с установленным кодом на доступ в «Мэ» и «Жо». Если же ты хакер, то спросить код доступа у соседа или, что еще хуже, получить его легально – просто несолидно. Все настоящие хакеры пароли ломают!

Атрибутная система для допуска к вожделенному объекту требует наличия какой-нибудь финтифлюшки: раньше это была банальная корочка-пропуск, ну а в наши дни это обычно карточка типа кредитки, хотя это и необязательно – атрибут, в общем-то, может быть любым. Атрибуты бывают контактными (такие обычно показывают в крутых фильмах, когда главный герой, проходя в подземный бункер ЦРУ, эффектно проводит своей персональной карточкой в известной щели) и бесконтактными. Контактные атрибуты наиболее распространены в виде магнитных пластиковых карт (к банковским разновидностям которых многие из нас так стремятся). Возьмем хотя бы телефонные карты со встроенным чипом – чем не контактный атрибут? Из контактных можно еще упомянуть:

  • карточки со штрихкодами (в общем-то, легко клонируются путем нанесения идентичного штрихкода и затем похожего прозрачного защитного покрытия на более-менее подходящую по цвету и плотности поверхность);
  • карты, сделанные из пластика, прозрачного для инфракрасных лучей, с нанесенной на внутренних слоях, невидимой при дневном свете информацией; при просвечивании ИК-лучами считыватель получает код карточки и решает, можно ли пропускать ее владельца (эти карты подделываются сложнее, так как для этого надо иметь подходящий пластик, то есть как минимум разворотить такую же карточку, да еще нанести на внутренние слои подходящей краской нужную инфу).
  • карточки «Виганд» с хаотически впечатанными нарезанными проволочками, каждая из которых дает уникальный отклик считывателю (подделать такую карту практически невозможно: для этого проволочки надо разложить в точности так, как в оригинальной карте, а погрешность размещения хотя бы одной проволочки даже на миллиметр уже даст другой «портрет», и подделка не прокатит).

Что же касается бесконтактных карточек, то они, конечно, удобнее (не надо ничего доставать из карманов – обмен идет по радиоканалу) и надежнее, но при этом значительно дороже, поэтому не очень распространены. В качестве примера таких карт можно назвать карты Proximity. Тут подделка также маловероятна, так как чип, встроенный в карту, и считыватель общаются по защищенному криптографическому протоколу.

В целом атрибуты, как ты понимаешь, намного надежнее паролей – ведь их нельзя так просто размножить. Однако и поменять атрибут легальному пользователю сложнее, нежели пароль. А если разобраться, то кто мешает передать атрибут стороннему субъекту? Как же ограничить доступ, подпуская к защищаемому объекту только избранных?

Биометрия – ключ к спасению

Вот мы и подошли к теме статьи. Итак, классно было бы проверять право доступа по самому человеку, при «входе» контролировать какие-то его личные характеристики (биометрические характеристики, то есть те, по которым можно измерить свойства живого субъекта). Некоторые характеристики у всех людей более-менее похожи (например, количество пальцев на левой ноге). Другие, наоборот, практически уникальны у каждого человека. Так, в криминалистике уже давно успешно применяется система опознавания личности по рисунку папиллярных линий на его пальцах (проще говоря, по отпечаткам пальцев). Вероятность совпадения рисунка у двух разных людей составляет не более одной миллионной (иногда называются еще меньшие цифры).

В наш век суперкомпьютерных технологий появилась возможность контролировать все, что ты хочешь (а не только «пальчики»), то есть выбирать. А выбирать надо такие системы, которые не очень напрягают пользователя (то есть человека, который авторизуется). К примеру, психологически не очень комфортно каждый раз при приходе на работу «сдавать» отпечатки пальцев. Еще хуже куда-то прислонять глаз (вот лично у меня почему-то все время возникает мысль, что оттуда что-то вылезет и как стукнет прям по глазу!). Короче удобство – это первое, а второе (в действительности самое главное) – надежность распознавания пользователя (о показателях надежности читай во врезке).

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

Статические системы еще называют физиологическими (это даже более распространенное название), а динамические системы – поведенческими. Первые проверяют какие-нибудь характеристики тела человека (отсюда название «физиологические»), которые не изменяются в течение достаточно длительных периодов его жизни (следовательно, «статические»). Это, например, те же самые отпечатки пальцев. Что же касается динамических (поведенческих) систем, то тут контролю подлежит не тело человека, а его привычки, поведение. Способ, особенности выполнения и конечный результат каких-либо заданных действий. Это, например, также распространенный в быту способ верификации документов подписью.

Итак, пришло время рассмотреть некоторые конкретные биометрические системы.

Физиологические биометрические системы

Этот класс систем наиболее надежен и обычно реализуется аппаратно (и поэтому это дорого). Рассмотрим некоторые примеры.

Система распознавания отпечатков пальцев, на первый взгляд, достаточно сложна в реализации, но на самом деле это совершенно не так! Если в твоем железном друге есть сканер, то организовать такую СКД ты можешь и сам. Для этого тебе придется изучить технику работы с TWAIN-драйвером сканера и основы внедрения в механизм авторизации при входе в ОС Windows (ищем инфу по процессу Winlogon и библиотеке GINA), то есть вопросы чисто технические. Несколько сложнее организовать распознавание отпечатка и сравнение его с эталоном: тут придется поднапрячь мозги (использовать нейронные сети, что есть круто, либо какие-нибудь меры, характеризующие разницу двух изображений, что не так надежно и не круто) или взять какое-нибудь стороннее ПО.

Что касается обмана систем распознавания отпечатков пальца, то практически все системы, которые могут встретиться нам в быту, легко обходятся простым подсовыванием фотографии нужного (отнюдь не 21-го) пальца.

Другое дело – аппараты для доступа в серьезные учреждения. Эти системы помимо распознавания рисунка на пальце контролируют и другие его характеристики. Во-первых, датчики могут быть расположены пространственно, а не в одной плоскости, что сразу отсекает все попытки использования плоских изображений (зато можно подсунуть гипсовый макет пальца). Далее, система может контролировать температуру в некоторых характерных точках пальца. Ты, конечно, можешь сказать, что такой способ будет не очень надежным - сейчас я пришел с мороза, а вчера был в теплых перчатках. Что я могу на это ответить? Только то, что такие системы действительно существуют, и, значит, как-то они все-таки все это реализуют. Кроме того, можно измерять сопротивление некоторых участков кожи пальца и связанное с этой величиной значение электростатического потенциала. Как выясняется, сопротивление кожи зависит от ее толщины в этот месте, расположения кровеносных сосудов, распределения жира под ней и еще туевой хучи уникальных для каждого человека (и даже пальца!) параметров. А тут уже недалеко и до эффекта Кирлиана, на основании которого некоторые шарлатаны выстраивают картины человеческой ауры. Согласно их утверждениям, получается, что биометрическая система, контролирующая потенциалы на пальце, будет распознавать человека по его ауре! Не правда ли, надежный способ? :)

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

  • Геометрия руки (обычно кисти). Если контролю подлежат только очертания кисти, то есть система является двухмерной (сканирование происходит только снизу), то ее легко можно обмануть, подсунув фото. Если датчики расположены в пространстве, но температура не контролируется – в аптеку за гипсом и ваяй! Короче, все так же, как и с одним (средним) пальцем.
  • Радужная оболочка глаза. Ну-ка вглядись отражение своего глаза в зеркальце – темный зрачок окружен цветными радиальными узорами, которые у каждого человека абсолютно уникальны! Кроме того, в этом случае глаз прислонять никуда не надо: его можно (автоматически) найти на фоне лица, сфотографировать с большим увеличением даже с расстояния порядка метра, а затем распознать. Подделать трудно. Как это сделать – не знаю.
  • Рисунок кровеносных сосудов на сетчатке глаза (то есть внутри глаза). Вот как раз в этом случае глаз и надо засовывать в разные дырки, зато вероятность ложного приема практически равна нулю. По заверениям отдельных авторитетов, это самые надежные (дорогие и неудобные) биометрические системы.
  • Геометрия лица, то есть тот же способ, которые при узнавании друг друга используют обычные люди. Особенности те же, что и при контроле пальца и руки.
  • ДНК, но это очень долго и поэтому может применяться (пока!) для каких-либо несрочных экспертиз.

В общем, все перечисленные системы делаются аппаратными, и стоимость их составляет 100 – 10 000 у.е., что не очень-то и мало при их серийной установке (например, на дверях в охраняемые помещения).

Поведенческие биометрические системы

Этот класс СКД менее надежен, так как оценивает поведение человека, которое в принципе может меняться. Отсюда низкая точность работы этих систем. Но зато большинство из них могут быть программными, то есть не требующими специального аппаратного обеспечения. Кроме того, их работа может быть прозрачной для пользователя и непрерывной во времени, а значит, психологически удобной и не отвлекающей от привычной жизнедеятельности. Итак, аутентификация может проводиться по следующим аспектам:

  • Голос. Способ – реально фигня! Записал чужой голосок на магнитофон – и готово. Плюс проблемы при простудах и перепое у законных пользователей (вот не знаю, как у других, а у меня после хорошего перепоя даже рисунок линий на пальцах меняется - не то что голос).
  • Подпись. В принципе, подпись может быть выполнена стилусом на тачпаде, а при этом уже можно оценивать не только конечный результат, но и динамику его создания.
  • Клавиатурный почерк. Понятно, что у каждого пользователя есть свой сложившийся стиль набора текста, то есть интервалы между нажатиями каждой пары (а то и тройки) клавиш вовсе не случайны! Также можно оценивать время удержания каждой клавиши.
  • Характеристики работы с мышью. Кто-то любит двигать мышью неспешно по слегка закругленным траекториям, а кто-то делает это быстро и исключительно по прямой. Чем не критерий для идентификации?
  • Некоторые психологические привычки пользователя. К примеру, кто-то любит нервно возить мышью, а кто-то скроллингом балуется. Особенности найдутся!

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

Если ты выберешь более легкий путь, то достаточно один раз при старте Винды (или, может, при старте твоей защищенной программы) попросить пользователя ввести указанный ему текст. Поскольку при этом работа будет происходить исключительно в твоей собственной программе, то париться особо не нужно - замерить промежутки между нажатиями можно хотя бы по времени прихода сообщений WM_KEYDOWN. Затем эти интервалы нужно сравнить с эталонными значениями, которые были получены при наборе этой же фразы ранее. Сравнивать можно опять же двумя способами: с помощью какой-нибудь меры (Хемминга, Евклида – освежи матпознания на досуге) или с помощью распознающей нейронной сети (если ты еще не знаешь, что это такое, прочти обязательно где-нибудь в инете – это очень здоровское средство для распознавания любых образов).

Однако так мы получим систему, работающую только один раз. А потом выйдешь ты на пару минуток, а какой-нибудь гад подойдет к твоему компьютеру и давай с него секретную инфу сливать – авторизацию-то ты уже прошел, она была однократной! Другое дело, если система будет непрерывной, то есть постоянно (и тихо) следящей за поведением пользователя. Тут уже надо продумать какой-то механизм получения глобальной информации о его действиях (ведь фокус ввода не все время будет в твоей программе). По мнению автора, наиболее оптимальным для указанных целей является использование крючьев (хуков или механизма фильтрации сообщений) ОС Windows. Надо сказать, что установленный глобальный хук позволяет нашей программе (а точнее, библиотеке) перехватывать сообщения, отправленные всем работающим программам, а значит, пока пользователь набирает очередную белиберду в Word’е, наша программа непрерывно контроллит его личность (кстати, сюда же можно и кейлоггер простой встроить).

В общем, дерзай! Ты должен сделать нечто похожее, но круче! А что? Давай бабахай низкоуровневый драйвер клавиатуры, чтобы его вообще никак нельзя было обмануть, и чтобы еще туда можно было что-нибудь полезное впихнуть, и чтобы никто не догадался!

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

Пару слов о надежности биометрических систем

Все подобные системы характеризуются тремя показателями:

  1. FAR (False Acceptance Rate) – частота ложных приемов. Например, если из 100 проб входа в систему злоумышленником (который, ясен перец, там не зарегистрирован) может произойти одна случайная идентификация его с законным пользователем, то FAR=0,01, что, в общем-то, многовато для статических (физиологических) систем и нормально для динамических (поведенческих).
  2. FRR (False Rejection Rate) – частота ложных отказов. Например, если на 100 аутентификаций, выполненных законным пользователем, произошло два неправомерных отказа, то FRR=0,02.
  3. EER, или ERR (Equal Error Rate, или ERror Rate) – частота ошибок. Это сложное понятие, которое формируется в связи с тем, что биометрическую систему обычно можно настраивать, варьировать ее параметры. Так вот FAR и FRR связаны между собой, и когда один показатель уменьшается, второй обязательно увеличивается. Если при каких-то настройках FAR=FRR, то это и есть значение ERR.

Немного о терминологии

Надеюсь, ты часто слышишь слова «идентификация», «аутентификация» и прочая «ция». Я сам лично постоянно путаю их друг с другом и употребляю невпопад. Поэтому разберемся:

  • Авторизация (разрешение) – процесс (процедура) получения доступа к какому-либо закрытому (охраняемому) объекту; может проводиться разными способами; в ней можно выделить три нижеследующих составляющих.
  • Идентификация (распознавание) – процесс выбора одного пользователя из всей совокупности пользователей, зарегистрированных в системе; она позволяет ответить на вопрос: «Кто это?» Можно сказать, что идентификация это процесс поиска соответствия «один из многих».
  • Аутентификация (отождествление) – это процедура доказательства, что пользователь действительно является зарегистрированным пользователем системы (именно тем, которым он назвался или был опознан в процессе идентификации). Другими словами, это установление подлинности утверждения «один к одному».
  • Верификация (проверка, подтверждение) – термин, который часто используется как синоним аутентификации. А вообще русские эквиваленты в скобочках приведены, так что сам разбирайся...

На диске ты найдешь исходник простейшей программулины, которую я написал специально для этой статьи. При желании с помощью нее ты сможешь изучать особенности биометрических систем. Единственным контролируемым параметром является время удержания каждой отдельно взятой клавиши. У программы есть два режима работы. В режиме «Обучение» она думает, что с ней работает законный пользователь, и считает среднее время удержания клавиш, которые записываются в файл ethalon.dat. Потом программу можно запустить в режиме «Контроль», и по набору того же самого (или другого) текста программа будет отслеживать время удержания клавиш текущего пользователя. Когда пользователь наберет достаточное количество букв (определяется константой NumSymb), произойдет сравнение имеющихся значений среднего времени с эталонным. Конечно, при этом даже у законного пользователя возникнет определенная погрешность (помним, что это все-таки поведенческая система, которой принципиально присущи погрешности). Так вот результат сравнения (кстати, он высчитывается с помощью меры Евклида) сравнивается с так называемой стандартной непохожестью, определяемой константой MaxNepoh (кстати, Nepoh возникло от слова «непохожесть», а не от того, о чем ты подумал). Таким образом, систему можно настраивать: сделаешь больше NumSymb - работа станет точнее, но авторизация будет происходить дольше; сделаешь меньше MaxNepoh - уменьшится FAR, но и возрастет FRR. Короче говоря, настройки, как обычно, в твоих руках. Ах да, забыл сказать: исходный текст моей программы можешь использовать, как тебе заблагорассудится, я тебе его дарю!

WWW

  • www.aditech.co.uk - продукты распознавания по лицу;
  • www.fingertec.com - распознавание по отпечаткам пальцев;
  • www.fingerprint-it.com - много всего полезного по биометрии: от готовых продуктов до описания технологий;
  • biometric.ru - достаточно интересный сайт просто «о биометрии»;
  • biolink.ru - сайт крупного российского производителя биометрических продуктов;
  • www.biopassword.com/authentication-partner-demo.php - демонстрационная версия программы, распознающая клавиатурный почерк.

DVD

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

Содержание
ttfb: 9.9940299987793 ms