Возник вопрос к знающим людям по поводу схемы работы считывателей отпечатков.
Положим, есть компьютер, есть подключенный считыватель.
Пользователь выполняет операцию enroll (первичная регистрация отпечатков): прикладывает палец, софт анализирует рисунок, какие-то особенности, сохраняет эти данные… где? как? Предположим, в некотором файле.
После этого пользователь настраивает Windows для авторизации по отпечатку. Как это происходит? пользователь вводит свой пароль, этот пароль ассоциируется с его учетной записью.
Далее, пользователь через какое-то время пытается авторизоваться — прикладывает палец, сравнивает полученные данные с первоначальной сохраненной на компьютере версией отпечатка (или результата его анализа), в случае успеха — выполняется вход в учетную запись.
Возникает вопрос — где здесь безопасность в этом механизме? Например, злоумышленник может украсть данные о первоначальных отпечатках вместе с этим файлом. Что помешает ему в дальнейшем считать эти данные и подсунуть их той службе Windows, которая осуществляет проверку (Verify) отпечатков? Ведь нигде не говорится о шифровании этих данных, при этом, на мой взгляд, оно не имеет смысла — как сравнивать зашифрованные данные? их надо расшифровать, значит, хранить опять же какой-то ключ.
Ведь с паролем очень просто — пароль хранится в уме пользователя, и в зашифрованном/захешированном виде на компьютере (можно в таком виде, который не поддается обратной расшифровке). Пользователь ввел пароль, система его захешировала (ну берем тот же механизм NTLM-авторизации в Windows), сравнила с сохраненной ранее копией.
С отпечатками сложнее — отпечаток хранится на пальце пользователя, в чистом виде на компьютере, и после ввода отпечатка осуществляется сверка введенного с копией на компьютере. При этом проверяется не 100%-е совпадение, а лишь частичное.
Собственно вопрос — а в чем смысл авторизации по пальцу, если её можно обойти даже не путем подмены отпечатков, а просто считав данные первоначальных отпечатков и подсунув их же системе. И как избавиться от этой проблемы? Только не путем хранения первоначальных отпечатков на сервере, речь только о локальной машине.
сканер так же обрабатывает полученное изображение и сравнивает получившуюся последовательность с контрольной
В этом и вопрос: я же могу добыть контрольный шаблон, записанный сканером, и подсунуть шаблон сканеру, минуя процесс сканирования пальца. Сканер распознает эту подсунутую последовательность как 100% совпадение с контрольным шаблоном. Вот и вся авторизация.
Нет такой системы, которую нельзя обмануть. Весь жир подобных систем защиты в том, что обманывать их сложно, а значит вероятность кражи данных меньше.
Вся информация о контрольных шаблонах шестиэтажно шифруется и протоколы самих сканеров никогда не стремились к открытости, так что в случае с домашним компьютером, вероятность того, что кому-то с достаточным пониманием предмета так приспичит покопаться в данной конкретной машине, практически нулевая.
Вся информация о контрольных шаблонах шестиэтажно шифруется
Выходит, если у нас есть контрольный образец (обозначим К1), то он хранится в БД в виде шифрованного образца (обозначим Ш1).
Ш1 это шестиэтажно зашифрованный К1.
Пользователь прикладывает палец и система получает отпечаток (О1). Далее производится сравнение обработанного О1 и К1, так? Чтобы системе получить К1 из Ш1, ей надо провести шестиэтажное дешифрование Ш1. Или вы хотите сказать, что система шестиэтажно шифрует О1 и срвнивает шифрованный О1 с Ш1? Этож бред, а не сравнение.
Единственное, мысль мелькнула — что основные признаки (типа линий на папиллярном рисунке) шифруются каждый по отдельности, и их совокупность и есть Ш1. В таком случае, при верификации, выделяются опять же все эти признаки из папиллярного рисунка, каждый шифруется и их совокупность проверяется на соответствие совокупности Ш1. Если есть три признака, каждый зашифрован отдельно, то при сравнении может совпасть 2 из 3х и мы получим 67% совпадения. Условно говоря. Но в таком случае каждый из признаков должен быть зашифрован (захеширован) достаточно надежно, иначе подобрать хеш под каждый признак (положим, там 3-5 символа) будет просто. 1000 признаков на современных компьютерах подобрать вполне реально, в отличие от 20символьного пароля с максимально возможным диапазоном.символом
Биометрическая система работает не с изображением, а с полуенным из него шаблоном. Когда создаётся новый образец (контрольный шаблон), сканер получает изображение, обрабатывает его, т.е. согласно некоторому алгоритму выявляет на снимке характерные признаки, и результат обработки записывает в виде числовой последовательности. Из данных контрольного шаблона восстановить исходное изображение нельзя. Когда происходит авторизация, сканер так же обрабатывает полученное изображение и сравнивает получившуюся последовательность с контрольной и если образцы совпадают не менее чем на сколько-то процентов, то авторизация считается пройденной.