Pull to refresh

Comments 12

Вот ссылка на диссертацию Иванова Александра Ивановича — начальника «Лаборатории биометрико-нейросетевых технологий» АО ПНИЭИ, д.т.н. А вот статьи и монография на эту тему с места его работы.
Надеюсь, это будет Вам интересно. Желаю удачи.
нужно выложить дисер Иванова и желательно с исходными кодами ;)
Кстати, да, всегда вымораживало то, что диссертации каким-то образом платные. Это же просто возмутительно…
тогда надо просить Александра лично ;)
Теперь дело за малым — считать отпечаток, или радужную оболочку глаза, или состав испражнений и преобразовать в вектор. Производить аутентификацию с погрешностью вычитать вектора друг из друга вы уже умеете.
Вычитание векторов это самое популярное, да, но у него слишком неприемлемый FRR.

Сравнение векторов обычными методами матстата вроде RMSE имеет ряд недостатков, такие как если хранить отпечатки как вектора, а не матрицами параметров нейросети — незащищенность биометрических данных, стырить легко. Хэшировать биометрию еще не умеют, т.к md5/sha256 etc не подходят из-за высокого уровня коллизий на длинных последовательностях с высоким deviation. А с матрицей весов восстановить исходный отпечаток не зная обучающую выборку очень сложно, считай что матрица параметров это уже хэш-функция. Второе — это возможность регулировать уровень overfitting'а, что позволяет легко настраивать модель на идентификацию биометрии в условиях, когда она может считаться с какими-либо искажениями.
а на человеческом языке можнос?
Перевожу:
Вычитание векторов дает частый отказ тому кому бы следовало в систему зайти, да и хранение векторов неудачное решение в плане безопасности, стырив эти данные можно сделать сколько-угодно слепков кого угодно. Если хранить все в виде матрицы весов нейронной сети, то исходный вектор с биометрией очень сложно восстановить.

А поскольку шифрование в данном случае векторов не имеет смысла — при взломе можно будет ключ достать, а хэш функций с низким уровнем коллизий ( когда два вектора дают одинаковый хэш, например ввел пароль совершенно другой и тебя пустило на хабр ) для длинных векторов не существует ( md5/sha256 после очевидного числа байт дают коллизии, например у тебя пароль из овер 100500 символов, а он пустил по qwerty ), тем более там где байты не только в пределе печатаемых символов, а какие угодно.

Поэтому хранение в виде матрицы весов самое оптимальное, при помощи нее через прямую передачу вектора по нейронной сети и реализуется сравнение. Два зайца одним выстрелом. А есть еще и третий заяц, который мимоходом от страха помирает — можно через изменение количества эпох легко регулировать «чувствительность» к слегка измененным биометрическим данным. Например, палец влажный, или голос хриплый.
давайте по порядку, товарищ, как на экзамене — я спрашиваю а вы отвечаете ;)
1) «Вычитание векторов дает частый отказ тому кому бы следовало в систему зайти» — какой такой культур-мультур-вычитание? какие вектора вычитаются? почему отказ?
2) «да и хранение векторов неудачное решение в плане безопасности, стырив эти данные можно сделать сколько-угодно слепков кого угодно» — какой такой вектор и зачем его хранить что м стырить?
если позволите вас вовлечь в дискуссию по этому поводу то в моей разработке нет ни первого ни второго и мне интересно м что я не понимаю?
1)

а) вычитание — например, RMSE — Root mean square error ( среднее значение квадратного корня разницы квадратов каждого элемента. ). По типу обычного вычитания: a(x1, x2); b(y1, y2); a — b = c(x1 — y1; x2 — y2) — как в школе. Для сравнения двух векторов. Два одинаковых вектора при любых видах матстат сравнения дадут 0.

b) Какие вектора? У меня в статье биометрия представляется как вектор. Оно и логично, любые данные в памяти компьютера — это вектор, даже матрицы. Вопрос в соглашении. Очевидно, под первым вектором тут подразумевается известная биометрия пользователя, и биометрия того кто пытается под ним залогиниться. RMSE используется чтобы численно описать различие двух векторов. То есть, есть вектор a и b, а есть число z которое их различие описывает.

Пысы. Если еще в школе учитесь, или не помните, напомню, что вектора это не только стрелки ( это их геометрическое представление ), а еще и набор координат. Ближайший родственник — одномерный массив.

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

2) Человек выше предложил хранить не модель нейронной сети, а сами вектора. Мы на одном из этапов вычисляли такой вектор для гипотетического сферического коня. Вот можно было и остановиться — тупо сохранить его. А потом когда кому-то надо авторизироваться, как пароль сравнивать через вычитание векторов. Но такое чистое хранение дает риск, что кто-то залезет в базу данных и стырит биометрию всех пользователей, что чревато. Зная, например, вектор с биометрией и то, как он составляется — можно восстановить исходную биометрию, например папиллярный узор или радужную оболочку. В примере с нейронной сетью вектор с биометрией пользователя можно не сохранять, а хранить саму модель. Из нее восстановить биометрию будет очень трудно, или даже невозможно ( тут не берусь судить, но точно не легко )
1. Отпечаток пальца в после сканера представляется в виде цифровой последовательности. Это и есть вектор. При каждом считывании вектор немного отличается. Чтобы определить кому он принадлежит, его нас надо сравнить с базой векторов хранящейся у нас.
Самый простой способ сравнить два вектора, это вычесть один из другого и посмотреть насколько результат близок к нолю.
2. Про что такое вектор написал. Зачем хранить — ну у нас же база пользователей какая то есть. Каждому сопоставлен вектор. Их и храним ))

В случае паролей пользователей, сами пароли не хранятся. Хранится некая хэш-функция от них. md5 или sha например. Это делает невозможным, при краже базы, узнать пароли пользователей. Но хэш-функции дают равномерно распределенный результат. Т.е. для последовательностей 0000 и 0001 результаты могут отличаться не на один символ, а быть вообще разными. Например md5 для приведенных строк будет
0000 — 4a7d1ed414474e4033ac29ccb8653d9b
0001 — 25bbdcd06c32d477f7fa1c3e4a91b032
Для паролей этот метод подходит т.к. юзер вводит одни и те же символы. Для биометрии нет т.к. при считывании всегда возможны расхождения в векторах. А по хэшу определить близость начальных векторов невозможно.
Из всего этого следует что нам нужно хранить вектора в оригинальном виде. Что в случае утечки базы, позволит злоумышленнику наделать отпечатков близким к нашим векторам. В случае биометрии есть еще одна засада. Если при утечке базы не хэшированных паролей, мы можем поменять все пароли и считать новую базу чистой, то в случае с биометрией пользователи имеют те отпечатки, какие у них есть и сменить их не могут.
Это все делает защиту биометрических данных сложной. В случае же предложенном автором, информация о биометрии сохраняется в весах нейросети. Не имея обучающей выборки, восстановить их них отпечаток довольно затруднительно.
Sign up to leave a comment.

Articles