Есть ли какие-нибудь готовые децентрализованные решения proof-of-person?
В последнее время заинтересовался блокчейн технологиями с точки зрения инженера-программиста, некоторое время назад возникли мысли, почему бы не запрограммировать такой крипто-кошелёк, чтобы для одного и того же человека нельзя было создать два разных кошелька.
Есть ли уже что-то подобное?
У меня на этот счёт следующие мысли:
1. За основу взять некоторый набор предварительно обученных нейронных сетей распознающих лицо, голос, жесты и т.п., веса которых зафиксированы в некотором блокчейне и известны всем участникам сети.
2. Эти нейронные сети на входе должны получать предварительно обработанные (обфусцированные) данные таким образом, чтобы из данных нельзя было восстановить оригиналы. Ну это уже детали, тут можно нагородить кучу всего...
3. Далее, используем протокол Диффи — Хеллмана не с цифробуквенными комбинациями, а с жестикуляцией и голосом + распознавание лица и т.п. Т.е. Публичный ключ будет не что-то типа "aB4s...", а на камеру смартфона "Закрой левый глаз, проведи рукой справа на лево, покажи указательным пальцем вверх, произнеси число 546"...
- Петя находит в блокчейне Васин кошелёк, генерирует пару ключей, публикует ключ и просит Васю выполнить действия заданные этим ключом.
- Вася, чтобы доказать Пете что он именно Вася, а не подставная личность, выполняет на камеру и микрофон действия закодированные в публичном ключе, передаёт их Пете. Петя прогоняет запись этих действий через нейронные сети, и получает некоторый вектор, который сверяет по блокчейну с вектором из Васиного кошелька. И если вектор оказался ближайшим по Евклидову расстоянию, то ок. Мы имеем дело с Васей, а с не мошенником выдающим себя за Васю.
Т.е. несколько нейросеток из одного и того же потока данных произведённого в один момент времени должны распознать как лицо Васи, так и жесты, голос... И если всё это одновременно похоже на правду, то вероятней всего мы имеем дело с оригиналом, а не подделкой...
Звучит очень сложно и не понятно.
Отлично подходит под ICO. Надо только вайтпеппер написать побольше.
Можно собрать не один лям баксов, освоить и прийти к выводу, что концепция не работает.
Сейчас все так делают
Да почему же концепция не будет работать, когда будет?..
Взять к примеру https://findface.pro/ru/ , у них довольно неплохо получается идентифицировать и верифицировать по лицам.
Если прибавить к этому всему ещё идентификацию и верификацию по голосу, а так же добавить кодирование жестами и произношением вслух одноразового пароля, то это будет надёжней, чем верификация по фото паспорта и привязке номера телефона через подтверждение по смс.
Вот, например, Вася захотел выдать себя за Петю при авторизации на некотором защищённом сайте, и попытался обмануть систему. Система попросила Васю, думая что он Петя, показать некоторый жест на фронтальную или веб-камеру + произнести вслух одноразовый пароль. Вася пытаясь подделать внешность и голос Пети пытается обмануть систему. Система верно распознаёт жесты, одноразовый пароль, но вместо ожидаемого Петиного получает Васин вектор признаков лица и голоса. Тем самым система предотвратит попытку обмана + зафиксирует в блокчейне попытку Васей совершить нарушение по отношению к Пете, тем самым понизив Васину карму. Ну и заранее заготовить видео с валидной комбинацией лица + жеста + голоса + произнесённого кода будет довольно проблематично, т.к. эта комбинация одноразовая.
Проблема может возникнуть на уровне, когда Вася будет выполнять верификацию жестами и голосом, пытаясь представиться Петей, при этом будет существовать некоторая прослойка в виде генеративной нейронной сети, которая будет налету подменять лицо и голос, синтезируя из Васиных Петины признаки черт лица и голоса.
Жесты и лицо - пока не надежно распознаются. Поглядите хотя бы на презентацию последнего айФона.
Пока люди не имеют поголовно встроенных чипов, пока дактилоскопические мышки являются экзотикой....
Как альтернатива - некая контора, проверющая паспортные данные и выдающие ключи.
Например, ключи для входа в ГосУслуги. А уже к ним привязывать кошелек.
На презентации айфона, если я не ошибаюсь, функция распознавания лица не сработала, т.к. она была настроена на распознавание лиц инженеров настраивающих телефон перед презентацией, а не на самого презентующего.
А вот нейропроцессоры и ускорители машинного обучения скоро будут в железе большинства современных смартфонов, и эти железки будут неплохо обучаться распознавать паттерны поведения своих владельцев...
Как раз таки вы предлагаете централизованную альтернативу. И нет гарантии, что кто-нибудь не залезет и не подправит что-то в базе этой конторы.
А внешность, значит, подправить невозможно.
;)
Да даже и править не нужно - достаточно заснять на видео этого человека на улице.
После чего подкладываешь видео вместо живой съемки с видеокамеры - и получаешь доступ к его кошельку.
buzina_v_ogorode, просто видео этого челока не будет считаться валидным, должны совпасть сразу несколько ключевых моментов при верификации:
на видео должен быть изображён именно тот человек, который производит подтверждение своей личности + этот же человек на этом же видео должен будет в течении, например, трёх-пяти секунд изобразить некоторый жест загаданный в виде одноразового кода, так же должен будет своим голосом произнести некоторую кодовую фразу, которая тоже загадывается одноразовой именно для текущей операции.
Т.е. если и будет на видео застяный тот человек, за которого мы хотим себя выдать, то вряд ли на этом видео будет изображён этим человеком именно нужный для подтверждения операции жест + голос + код произнесённый этим голосом...
лицо снять на улице легко хоть 5 минут длительностью.
прилепить это лицо к другому телу - плевое дело даже для начинающего видеомонтажера.
так что жесты руками - не есть проблема.
жесты бровями, губами?
я так баловался еще 15 лет назад.
это уже было возможно.
голос совсем не обязательно чтобы была запись с видео сделана одномоментно.
;)
вы вот знаете, что недавно высоцкий в кино снимался.
хотя он умер уже очень давно.
был бы кошелек достаточно жирный
а подобраться будет не сложно.
пока средства идентификации по внешности - довольно ненадежны.
buzina_v_ogorode, пока вы всё это будете монтировать, таймаут для подтверждения операции иссякнет, и нужно будет монтировать новое видео с новой комбинацией действий. Да и нейронную сеть, которая будет детектировать присутствие видео-монтажа можно сделать.
Да и для доступа к более жирным средствам кошелька к этим идентификационным защитам ещё можно добавить проверку по отпечатку пальцев + получить цифровую подпись от некоторого доверительного центра, по типу как при выдаче SSL сертификатов для сайтов. В любом случае, это надёжнее, чем просто верификация через ввод на сайте кода пришедшего в смс + скан паспорта отправленный отправленный с емейл ящика владельца.
пока вы всё это будете монтировать, таймаут для подтверждения операции иссякнет, и нужно будет монтировать новое видео с новой комбинацией действий. Да и нейронную сеть, которая будет детектировать присутствие видео-монтажа можно сделать.
Уже скоро как лет 30 - это все делают без монтажа, а в прямом эфире.
Никогда не видили подмену фона, например. в новостях?
Подмена головы не так чтобы сложнее
;)
Да и для доступа к более жирным средствам кошелька к этим идентификационным защитам ещё можно добавить проверку по отпечатку пальцев + получить цифровую подпись от некоторого доверительного центра, по типу как при выдаче SSL сертификатов для сайтов. В любом случае, это надёжнее, чем просто верификация через ввод на сайте кода пришедшего в смс + скан паспорта отправленный отправленный с емейл ящика владельца.
Вы свои отпечатки пальцев где только не оставляете в течение дня.
Снять их с предмета и сделать слепок - не так уж и сложно.
Но в целом согласен - было бы неплохо не полагаться только на СМС.
Ну и есть такая схема, как zero knowledge proof (гуглится), которую тоже можно встроить в этот механизм верификации. Тогда подделав лицо и голос, злоумышленник не сможет доказать то, что он владеет некоторым секретным знанием, которым владеет лишь сам владелец... и его попытка выдать себя за кого-то другого с большой вероятностью не удастся.
Например, я захотел получить такой свой уникальный крипто-паспорт/крипто-кошелёк, помимо того, что мне нужно получить вектор признаков на основе своего лица, голоса, отпечатков пальцев, сетчатки и т.п., так же нужно будет занести в паспорт некоторую личную информацию, свой первоначальный пароль/кодовое слово, получить ЭЦП от сервиса, который производил первичное добавления меня в этот блокчейн, и которому доверяет сообщество данного блокчейна.
Теперь схема такая, кто-то всё же каким-то образом подделывается мной и выполняет какие-то пакости, т.е. заносит в блокчейн какие-то действия от моего лица. Например, делает перевод денег какому-то другому участнику этого блокчейна, который так же как и я имеет свой уникальный паспорт в этой системе. И, кстати, если я приду в другую контору, которая подписывает своей ЭЦП блок с моим крипто-паспортом, и начну проходить сканирование, то этот доверительный центр найдёт соответствие в блокчейне, т.е. то что мой крипто-паспорт уже существует в базе, и отправит присвоит мне уже имеющийся идентификатор, т.е. пошлют, и скажут что твой паспорт уже заведён, и нафиг ты вообще пришёл к нам. Ну и вот, кто-то от меня сделал некоторый перевод какому-то другому участнику этого блокчейна. Я в своих операциях смогу увидеть эту транзацию в логах, таким образом можно будет найти того кому был сделан перевод, поймать его за шкварник и сделать новый перевод обратно, если он не успел уже потратить эти деньги...
Ну и карму подпортить тому, кто принимал участие и подтверждал приём ворованных средств. Далее эту карму можно будет проверять при совершении операций, т.е. по типу как делается проверка достаточности средств для совершения операции перевода с криптокошелька, так же ещё можно добавить условие, что при операции иметь дело только с теми, у кого карма не ниже некоторого порога...
Так же такая система может иметь набор алгоритмов идентифицирующих различные аномалии в поведении юзеров, и если выявлена некоторая аномалия в поведении некоторого юзера, то система потребует дополнительной верификации личности, запросит подтверждение некоторого секретного знания, либо потребует пройти дополнительное разрешение кем-то из друзей, которые так же будут иметь свои крипто-паспорта в этой системе, либо в крайних случаях нужно будет пройти идентификации в нескольких центрах, которые выдают свои ЭЦП для участников этого блокчейна.
Ну и есть такая схема, как zero knowledge proof (гуглится), которую тоже можно встроить в этот механизм верификации. Тогда подделав лицо и голос, злоумышленник не сможет доказать то, что он владеет некоторым секретным знанием, которым владеет лишь сам владелец... и его попытка выдать себя за кого-то другого с большой вероятностью не удастся.
У меня вон дактилоксопический датчик в телефоне, хоть крайне редко - но не пускает меня. Может когда пальцы грязные.
А то что вы придумали в комплексе - не пустит настоящего владельца, скажем, после возвращения из отпуска с загаром на лице и т.п. мелких изменений внешности.
Что не есть гуд.
Петя находит в блокчейне Васин кошелёк, генерирует пару ключей, публикует ключ и просит Васю выполнить действия заданные этим ключом.
- Вася, чтобы доказать Пете что он именно Вася, а не подставная личность, выполняет на камеру и микрофон действия закодированные в публичном ключе, передаёт их Пете. Петя прогоняет запись этих действий через нейронные сети, и получает некоторый вектор, который сверяет по блокчейну с вектором из Васиного кошелька. И если вектор оказался ближайшим по Евклидову расстоянию, то ок. Мы имеем дело с Васей, а с не мошенником выдающим себя за Васю.
Не проще сравнить две видеозаписи на последовательность векторных движений контуров?
Нужно захешировать видео-запись через fuzzy-hashing. Т.е., только контурные движения от кадра к кадру. Это будет точно определять эту видео-запись, а что/кто на ней - уже будет невозможно восстановить.
По поводу инвалидов тоже думал. Нужно в кошельке хранить и уметь добавлять маски. Ну и уровень доверия определять исходя из сложности комбинации действий и вероятностей возвращаемых нейросетками.
Вячеслав Шиндин, идея однозначного определения принадлежности человека к своим данным и к аккаунту - только гос. API или регистрация посредством идентификации через платёжные системы (предоставляют они такое всем подряд или нет - не знаю...).
По поводу сравнения векторных движений контуров. Тут как раз вся фишка в том, что я не хочу публиковать видеозапись себя с публичным ключом. Эта инфа должна обфусцироваться необратимым методом в не восстанавливаемый вид, но при этом хорошо пониматься нейросетками. Т.е. любой участник децентрализованной сети легко сможет взять некий набор данных и подтвердить что они состыкуются с таким-то кошельком в блокчейне. Но сами данные будут скрыты, по типу zero knowledge proof...
По поводу гос.API, это не децентрализованное решение, и нет гарантии что кто-либо может подправить что-либо в этой базе данных в корыстных целях. Как раз хочется математически качественного децентрализованного, криптостойкого proof-of-person...
Вячеслав Шиндин, суть понятна: нужно захешировать видео-запись через fuzzy-hashing. Т.е. только контурные движения от кадра к кадру. Это будет точно определять эту видео-запись, а что/кто на ней - уже будет невозможно восстановить.
xmoonlight, тут как бы смысл не в том, чтобы однозначно определить видеозапись, а в том, чтобы извлечь из, например, 3 секундной записи видео+звук признаки конкретного человека, и что этот человек при этом выполнил некоторые действия в виде: показал указательным пальцем вверх + произнёс какое-нибудь число и что голос, и лицо при этом дают положительный сигнал алгоритмом распознавания сохранённом в блокчейне, в кошельке данного пользователя.
Т.е. чтобы злоумышленнику Антону представиться Васей, ему потребуется подготовиться обмануть распознаватель лиц, голоса и при этом выполнить некоторую комбинацию действий, что заранее заготовить не получится, т.к. кол-во этих комбинаций будет слишком велико. И эта операция, например, будет являться ключом для создания токена на некоторый период времени и с ограничением на некоторый лимит трат. И чем больше времени и средств хочет использовать Вася, тем сложнее будет процедура верификации.
Я так понимаю, такого рода сложность измерима, и можно автоматизировать генерацию таких видео-голосо-жесто ключей.
Ну и если нейронная сеть выдаёт малую вероятность принадлежности Васи к Васиному кошельку, то можно зашить в алгоритм дополнительную проверку верификации, например на соответствие некоторых знаний, которые закодированы и зашифрованы в кошельке, и которые знает только Вася: кодовое слово, данные места рождения, ответ на контрольный вопрос и т.п., всю эту инфу можно необратимо зашифровать, и просто валидировать ответы, например, на контрольный вопрос если ответить Васиным голосом, то надёжность такого ключа будет выше, чем если ответить текстовым сообщением, а если ещё при этом будет видео на котором изображён Вася, и если нейросеть которая умеет читать по губам, будет давать хорошую вероятность сходства с тем что именно произносит Вася, то на видео вероятней всего именно Вася, и именно Вася, а не кто-то другой пытается сгенерировать ключ для подтверждения операции, создания токена и т.п.
Т.е. процедура верификации будет выглядеть как-то так:
- по 3 секундному видео для каждого кадра строится значение в диапазоне от 0 до 1, вероятность того что это именно Вася на видео (алгоритм узнавания Васиного лица зашит в Васин кошелёк, и каждый имеет возможность воспользоваться этим алгоритмом и провалидировать Васию, при этом данные обфусцированы так, что не похожи на изображение Васи, но нейронка распознающая Васю должна быть обучена именно на такого рода данных)
- следующий трек распознаёт какой-то конкретный жест и так же строит график сигнала от 0 до 1, с вероятностью того что на кадре именно этот жест (аналогичные нейронки выполняют распознавание других жестов)
- ещё один трек распознаёт голос, так же выдаёт значение от 0 до 1
- так же тегами наложить вероятность от 0 до 1 там где произносится загаданная в ключе фраза, слово или число
- и т.д.
Затем берём максимум от перемножения всех значений в каждый момент времени, и получаем некоторую оценку того, что это именно Вася произвёл некоторые действия, тем самым подтвердив себя.
Ну и основная суть в том, что теперь я могу в свой кошелёк добавить инфу, например, о смене адреса проживания, при этом не раскрывая самих данных о месте проживания, но при этом каждый участник сети сможет провалидировать что эти данные в блокчейн в свой кошелёк внёс именно я, а не кто-либо другой воспользовался моим кошельком и что-то в нём подредактировал.
т.е. кошелёк в таком контексте, наверное, уже можно назвать децентрализованным паспортом...
Во! Или даже так:
Если в схеме допустить использование дополнительного контролирующего органа, что-то вроде паспортного гос.API, т.е. чтобы внести изменения в децентрализованный паспорт Васи, потребуется цифровая подпись как со стороны контролирующего органа, так и от самого Васи. Т.е. сами гос структуры без участия Васи не смогут удалить или отредактировать Васин паспорт в своей БД, т.к. эти правки не будут приняты в блокчейн участниками сообщества.
Получается некоторое такое доверие на основе двустороннего согласия при внесении изменений в паспорт Васи. Т.е. не получится сделать так, как во всяких шпионских фильмах про то, что спецслужбы удалили человека из всех БД, и человека как бы не стало...
Вячеслав Шиндин, теперь посмотрим на проблему с другой стороны: всё что имеет хэш - имеет исходные данные, с которых он был создан и алгоритм его формирования. Всё, что требуется для доступа - это вычислить этот хеш через перебор исходных данных. Думаете, что у гос.структур не хватит выч. мощностей, чтобы представиться Васей в децентрализованной сети и удалить его за него же?
xmoonlight, а вы представляете сложность такого перебора, когда кол-во комбинаций сравнимо с кол-вом атомов составляющих планету земля? Кроме того, после подмены блока нужно будет пересчитать все последующие, а так же взломать всех участников и в некоторый короткий промежуток времени подменить им всем данные... т.е. всё что заносится в блокчейн удалить теоретически можно, но практически нереализуемо, тем более что уже существуют алгориты хеширования криптоустойчивые к квантовым системам... а когда квантовые системы станут сильно продвинутыми, то появятся такие алгоритмы, которые и их загрузят по полной proof of work вычислениями