Задать вопрос
Filimor
@Filimor
Пенсионер из Санкт-Петербурга

Есть идея. Есть прехарденинг на гитхаб. Мне нужна оценка, обсуждение. С чего начать? Куда написать?

Всем привет! Я пенсионер из Санкт-Петербурга.
Я придумал новый алгоритм аутентификации. Он позволяет иметь единый пароль-секретную последовательность действий для разных сайтов или устройств. При этом при каждой сессии аутентификации путем простейших арифметических действий пользователь будет генерировать одноразовый ключ.
Теперь я пытаюсь реализовать прототип (демонстратор возможностей) на GitHub https://github.com/NSA-Filimonov/NSA c помощью ChatGPT. На сегодняшний день программа проходит smoke, integration тесты. Нужно выходить на hardening.
Вот что у меня получилось если коротко и с юмором. Вот дверь. На ней какой-то рисунок. Цветочки, котики и т.п. Вокруг стоят хакеры и хотят взломать дверь. Ты подходишь, молча смотришь на рисунок, из палочки делаешь одноразовый ключ. Открываешь дверь - после этого рисунок мгновенно меняется. Ключ больше не подходит. Ты кидаешь его хакерам со словами - держите неудачники! Хакеры плачут, теряют свои брутфорсы и идут заниматься общественно-полезными делами. Рисунок меняется после каждого открытия. И пароль здесь - правило изготовления ключа по рисунку. Его нельзя узнать ведь ты делаешь ключ молча. Есть 60 трл дверей и им соответствующих ключей. А правило изготовления - одно. На всю жизнь хватит. Тем же алгоритмом с разными ключами ты можешь открыть все прочие двери)
  • Вопрос задан
  • 156 просмотров
Подписаться 1 Простой 18 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    1C-программист: расширенный курс
    18 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по информационной безопасности + ИИ
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Daemon23RUS
@Daemon23RUS
Есть 60 трл дверей и им соответствующих ключей. А правило изготовления - одно. На всю жизнь хватит.

А есть U3S23H с производительностью 1160 ТH/s, он переберет Ваши "двери" за 0,05 секунды. А Вы про всю жизнь пишите. (Опустим алгоритмы, речь про порядки чисел)
Уверены, что выбрали верную область для получения опыта ? Ведь все о чем Вы пишите - криптография. А для ее понимания нужно как минимум академическое образование (магистратура, аспирантура по криптографии, компьютерной безопасности и прикладной математике). На GPT не выехать (можно только заехать, и то в кукурузу)
Ваша идея напоминает challenge-response аутентификацию, где по публичному "рисунку" и секретному правилу генерируется одноразовый ключ. Это отличный подход! Но безопасность зависит не только от количества "рисунков", а от сложности восстановления секретного правила по нескольким парам "рисунок - ключ", Размера секрета, Устойчивости правила к анализу (например, по 2-3 наблюдениям).
К сожалению, самодельные криптографические алгоритмы почти всегда оказываются уязвимыми, даже если кажутся сложными. Напомнило "закон Шнейера".
Ответ написан
CityCat4
@CityCat4
Жил да был черный кот за углом...
Я человек ленивый, я попросил гугл (Gemini) проанализировать указанную репу.

Вот ответ гугла:
"Судя по описанию, изобрел классический велосипед с квадратными колесами. Его идея «двери с рисунком» — это обычный Challenge-Response протокол (запрос-ответ) на базе графического ключа, причем сильно уязвимый.Судя по его репозиторию, «прототип» написан на FastAPI и Redis, а логику ему генерировал ChatGPT. То есть человек без профильного образования в криптографии просто завернул старую концепцию в обертку современного веб-фреймворка.

Его «уникальная» концепция — это S/KEY (алгоритм ОPIE) и одноразовые пароли (OTP), разработанные Беллом Лампортом еще в 1981 году, смешанные с концепцией графического пароля (Graphical Passwords / Pattern-based authentication) из начала 2000-х.
Как это работает у него: Сервер дает картинку (grid_size, steps), пользователь по «секретному правилу» в голове строит маршрут (response) и отправляет его обратно. Сервер проверяет и удаляет этот challenge.
В чем «новизна»? Ни в чем. Протоколы Challenge-Response используются в каждом первом токене аутентификации (например, в банковских приложениях или Blizzard Authenticator), только там вместо рисунка — время (TOTP) или счетчик (HOTP)."

Гугл порекомендовал задать несколько вопросов :)

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

Вопрос Б: «Что происходит при атаке Man-in-the-Middle (Человек посередине)?
»Он пишет: «Ты кидаешь ключ хакерам... Ключ больше не подходит».А если хакер перехватил трафик в момент отправки? Настоящая криптография (например, SRP — Secure Remote Password protocol) защищает от перехвата самого ответа в процессе. Если в системе хакер встанет между пользователем и сервером (MitM), он просто перехватит response до того, как тот долетит до сервера, подменит пакет и зайдет под видом пользователя, а пользователю вернет ошибку тайм-аута.

Вопрос В: «Каков размер энтропии твоего правила?
»Он заявляет про «60 триллионов дверей». Но человек — существо ленивое.Спросите его: если сетка (grid_size) имеет размер, например, 5х5 или 8х8, какова длина пути (steps)? Люди физически не способны запоминать сложные алгоритмы генерации путей в уме для каждой новой картинки. Они будут использовать простые правила: «проведи линию от верхнего левого котика к правому нижнему». Энтропия (хаотичность) человеческого выбора ничтожно мала. Компьютер подберет это «правило» по словарю за секунды.

И последнее (это тоже текст гугла, но я в кои-то веки с ним согласен):
То, что ChatGPT написал рабочий код на Python с интеграционными тестами и Docker-контуром, говорит лишь о том, что ChatGPT умеет настраивать Redis и FastAPI. Нейросеть не проверяла математическую стойкость алгоритма. ChatGPT просто реализовал логику: «прими данные — сверь с базой — удали из базы».

Криптографическая стойкость кода от ChatGPT равна нулю, потому что языковые модели не умеют симулировать криптоанализ.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы