Comments 100
По поводу клика в центре экрана, вероятность взлома не выяснял. на досуге проверю
Лень расчеты делать, какова вероятность подбора в зависимости от кол-ва этапов, при постоянном «щелчке» по центру, не смотрели?
Самый банальный способ кликанья и один из самых эффективных по взлому, вероятность взлома увеличилась в 2 раза. Выход здесь только один, привязать логику к появлению парольных иконок, т.к. в данный момент их расположение подчиняется равномерному закону.
И я бы ещё рассмотрел вариант полностью замостить поле иконками и просто знакомыми иконками окружать с трёх сторон искомую.
По сети передается только координаты щелчка мышкой в окне ввода пароляпримерно так работают некоторые клиент-банки, предлагающие ввести пароль с виртуальной клавиатуры (порой c нестандартной раскладкой). Только это скорее защита от кейлоггеров, чем от перехвата по сети (транспортные вопросы гораздо эффективнее решать другими методами)
Кроме того, пароль невозможно подсмотреть, так как, даже стоя у пользователя за плечом, нельзя узнать, внутри какого треугольника он кликнул. Следовательно, единственным возможным способом взлома иконографической защиты является случайный щелчок в окне ввода пароля.Несколько наивно. Наблюдателю с видеокамерой и компьютером задача проблемы не составит.
По сценарию пользователь несколько раз тыкает в треугольник, образованный одними и теми же пиктограммами.
Число всех возможных треугольников не столь уж и велико. Для 100 элементов возможно всего 161700 сочетаний по 3.
По нескольким выборам пользователя вполне реально определить пиктограммы, образующие искомый треугольник.
А если учесть психологические факторы (кликанье в центр), то задача еще упростится.
Пользователем? (на экран всегда выводится полный набор иконок, а пользователь в уме выбирает, какие из них он будет использовать на этот раз). Отличный план: анализ вы конечно затрудните, но не принципиально. Зато вероятность ложноположительного срабатывания возрастет весьма сильно: сервер-то не знает, какие иконки выбрал пользователь, поэтому за правильный ответ будет засчитываться попадание в ЛЮБОЙ из возможных треугольников.
Сервером? (сервер заранее выводит на экран случайный набор иконок). Вообще шикарный план, дающий возможность узнать «пароль» без всякого подглядывания за пользователем, пользуясь лишь подсказками со стороны сервера. Какими подсказками? Набор иконок выводится случайный, но в нем ВСЕГДА присутствуют РОВНО три составляющих «пароль». Обновляйте страницу, собирайте статистику, анализируйте.
Мешают примечания к первому варианту: чем больше «парольных» иконок выводится, тем выше вероятность ложноположительного срабатывания: выводя 5 пиктограмм вместо трех за правильный ответ сервер обязан засчитать любой из 10 возможных «верных» треугольников. Какой процент площади они покроют — прикидывайте сами.
В любом случае, сервер обязан вывести не меньше трех «парольных» пиктограмм. Это позволяет одним статистическим анализом успешно определить парольные «пиктограммы». Пятничным вечером не готов делать расчеты, но по интуитивным прикидкам для практически применимых количеств пиктограмм для определения парольных (или по крайней мере очень вероятно парольных) будет достаточно всего-навсего десятка-другого наборов пиктограмм от сервера.
для затравки хватит банального частотного анализа
малоперспективно
> Встречаемость пар, троек?
Естественно. Частота появления троек из «парольных» символов драматически выше, чем непарольных.
> Троек у нас слишком много
Вы же не в уме задачу решать собрались? Если иконок всего 200, то возможных троек всего 1313400, несколько мегабайт оперативки.
> Пары мне кажется не дадут ценную информацию
Дадут, дадут. Разница в вероятностях не такая драматичная, как у троек, но все же значительна.
> при том что их тоже многовато
19900. влезет даже в некоторые микроконтроллеры.
В общем может быть я опять что-то путаю в цифрах, но я уверен, что частотный анализ можно обмануть, если выдавать неправильные иконки не совсем случайно.
Не понимаю, в чем тут затруднения для взлома… даже если предположить, что сценариев выбора иконок будет больше (например, целевые иконки лежат не в вершинах треугольника, а на сторонах, использование более сложных паттернов и тд и тп), все равно имея данные об единократном вводе пароля (расположение иконок, траектория движения и т.п.) позволяет злоумышленнику свести перебор до довольно небольшого числа комбинаций...
По сценарию пользователь несколько раз тыкает в треугольник, образованный одними и теми же пиктограммами.
Верно, поэтому количество иконок можно расширить, кроме того, их можно немного изменять, оставляя узнаваемыми. Но боюсь, простому посетителю это уже будет непонятно.
Можно запоминать не иконки, а логическую задачу в духе «укажите трёх людей разного возраста», или «транспорт+цветок+цифра». Но анализу и расшифровке это точно будет поддаваться легко.
UPD: VEG меня опередил.
По сценарию пользователь несколько раз тыкает в треугольник, образованный одними и теми же пиктограммами.
Число всех возможных треугольников не столь уж и велико. Для 100 элементов возможно всего 161700 сочетаний по 3.
По нескольким выборам пользователя вполне реально определить пиктограммы, образующие искомый треугольник.
Если было б все так просто, при каждом клике, иконки перемешиваются и на экране уже появляется совсем другой набор иконок, а если еще учитывать, что у пользователя пароль из 5 иконок, то на экране будут всегда видны три иконки из общего пароля. И даже если следить за монитором пользователя, вычислить истиные парольные иконки практически невозможно.
Моя задача была не спорить, хорош ли этот способ аутентификации или нет, моя задача была провести аналитический и статистический анализ и показать вероятность взлома.
при каждом клике, иконки перемешиваются и на экране уже появляется совсем другой набор иконокименно это делает возможной описанную атаку.
а если еще учитывать, что у пользователя пароль из 5 иконок, то на экране будут всегда видны три иконки из общего пароляВ зависимости от того, что именно под этим подразумевается, вы получите либо большую вероятность ложноположительных срабатываний, либо создадите канал утечки «пароля» с сервера. Почитайте дискуссию выше.
моя задача была провести аналитический и статистический анализ и показать вероятность взлома.и поставить рядом табличку: «методами, отличными от рассмотренных ломать категорически запрещается» :)
Я не издеваюсь, меня интересует вопрос применения на практике — насколько жизнеспособен такой способ, где баланс между удобством и криптостойкостью?
Серьёзно.
(Правда, мне мыло нужно было для технических целей, чё-то там проверить хотел.)
При иконографическом способе парольной защиты, пароль, как таковой, по сети не передается, даже в зашифрованном виде. По сети передается только координаты щелчка мышкой в окне ввода пароля, и только сервер решает, попадает ли эта точка внутрь треугольника, заданного парольными иконками. Следовательно, даже полный перехват всей информации обмена терминала с сервером, не дает дополнительных данных для взлома пароля. Кроме того, пароль невозможно подсмотреть, так как, даже стоя у пользователя за плечом, нельзя узнать, внутри какого треугольника он кликнул. Следовательно, единственным возможным способом взлома иконографической защиты является случайный щелчок в окне ввода пароля.
Если перехватывать всю информацию — мы получим и расположение иконок и координаты щелка. Очень хорошо что у нас будет пять-шесть таких пар на каждую аутентификацию. Если зломышленник стоит за плечом — он сможет снять процес аутенфикации на видео.
В любом случае у нас будут данные для анализа. Дальше, например, чисто статистически можно отсеять иконки стоящие по углам.
Вообще, получится очень неплохой диплом по взлому этого метода.
Если перехватывать всю информацию — мы получим и расположение иконок и координаты щелка.
Да, от перехвата это не защищает, но ТС вроде как озабочен именно защитой от стороннего наблюдателя.
Если зломышленник стоит за плечом — он сможет снять процес аутенфикации на видео.
Да, надо исходить из того, что именно записывает.
Проблемой будет только камера, спрятанная на одежде жертвы.
Хотя как можно со стороны подглядеть и записать? Углы обзора не такие уж и фантастические у устройств, да и расстояние играет свою роль. Если только сверху снимать.
Я бы с удовольствием заменил стандартный графический пароль на тот который описан в статье.
В последнее время это правда менее актуально т.к. почти на всех устройствах доступ по отпечатку.
Обычно пароль хранится в голове у пользователя и нигде более.
На сервере храниться только его хэш.
Пользователь ввел пароль — сервер хэшировал и проверил совпадение хэша.
Я не вижу как это возможно в случае с множественным перебором иконок.
Получается в случае такой аутентификации сервер должен хранить пароль?
Учитывая, что почти все распространённые криптографические хэш-функции уязвимы к коллизионным атакам, данной степенью защиты можно в принципе пренебречь. Она эффективна только от обычного SELECT'а из таблицы паролей.
Единственный плюс, на мой взгляд, это то, что пароль открыто не передаётсяэто гораздо проще, эффективней и надежней решается традиционными методами.
Нет никаких проблем на яваскрипте реализовать вариацию на тему CHAP'а с
Не пробовали составить алгоритм, который на основе N наборов (картинка; координаты щелчка) будет строить возможные треугольники и затем выдавать вероятные ключевые иконки? (думаю, это невозможно только в случае, если иконки не повторяются в N наборах)
Наверно распределение не-ключевых иконок тоже должно быть неслучайным, чтобы затруднить такую атаку. У вас некоторые иконки повторяются местами, значит они — не-ключевые?
Хотя есть ситуации, где невозможность узнать пароль наблюдателю решает.
А во вторых, я на первом абзаце надеялся, что речь пойдёт про динамическую биометрическую аутентификацию на основе физиологических особенностей конкретного индивидума, например по отслеживанию траектории движения мышки в окне ввода. Возможно, для такого случая даже попадание в треугольник, трудность которого так обеспокоила некоторых комментаторов, не обязательно. Например, в новостях проскакивали варианты аутентификации по особенностям походки (на смартфоне с использованием датчика ускорений), по клавиатурному подчерку и тому подобное.
Но я вероятно слишком много хочу от дипломной работы. :)
А как насчет такого алгоритма:
Программа показывает 10 иконок.
Пользователь смотрит на иконки и жмет на кнопку с количеством иконок, которые он выбрал ("0", "1", "2 и больше"). Это повторяется, скажем, 5 раз. Если все 5 раз пользователь ответил верно, значит аутентификация прошла.
При создании профиля человек дополнительно выбирает, хочет он кликнуть ВНЕ или ВНУТРИ треугольника.
Соответственно, получается схема типа ВНЕ, В, В, ВНЕ, ВНЕ. Можете посчитать вероятность вычисления паттерна, но мне кажется, она минимальна.
По грубым прикидкам система получается очень слабой. Я сделал оценку для случая трех парольных иконок. Для поля 10x10 при заполнении 50% достаточно около пяти подглядок, чтобы с большой вероятностью вычислить все три элемента. То есть достаточно пронаблюдать всего за одним (!) актом аутентификации.
Идея очень проста — рассмотрим множество всех троек на экране (пусть их будет N штук) и будем выбрасывать те, которые не составляют треугольник, содержащий указанную пользователем точку. На каждом шаге это множество сокращается, нужно лишь оценить, насколько. В статье утверждается, что вероятность, случайно ткнув, попасть в нужный треугольник составляет 10% (я не проверял, но верится). Значит, наше множество подозрительных троек сократится в среднем в 10 раз, когда пользователь сделает первый шаг. Дальше есть существенная корреляция между шагами, которую трудно учитывать, но если ей пренебречь, то за k шагов область поиска сузится примерно в 10k раз. Получаем такое уравнение: 10-kN ~ 1, откуда выражаем k. При этом требуемое количество подглядок (k) логарифмически зависит от размера поля, так что тупое увеличение размера бесполезно.
Можно было бы попробовать увеличить N настолько, чтобы тройки не лезли ни в какую память, но и это тоже не годится, поскольку N зависит от размера поля всего лишь как O(x6).
А если сделать не по трем иконкам, а по двум. Область куда нужно кликнуть будет меньше и выглядеть будет примерно так:
И каждый раз эта секущая будет то вертикальной, то горизонтальной, то по диагонали.
Обратную функцию в простом понимании не возможно вычислить кроме как перебором, k — секретное число, x — это массив чисел, функция как сумма абсолютно нормально подходит. Вопрос только в том, сколько человек будет подсматривать. Хорошо бы после 2-3 таких попыток менять секретное число k.
Это и будет хэширование с солью k, если взять нормальную хэш-функцию.
Менять секретное число после нескольких попыток — это уже ближе к одноразовым блокнотам, чем к вашей схеме. Но одноразовые блокноты гораздо надёжнее.
У вас (с суммой) после 2х подсмотренных попыток уже можно делать предположения, чему равно k.
Но одноразовые блокноты гораздо надёжнее.
Мягко сказано)
Главная вещь, чтобы конечно держать число и функцию в голове, а не открывать блокнот, так как см. пункт 1 за тобой подсматривают.
В смысле? Что-то не могу понять, какая разница между буквами и иконками.
Загадываешь 4 числа (или больше/меньше), например 9,8,7,6. Прописываешь их в настройки. Затем при авторизации система выдает рандомное число (менее загаданного). А пользователь должен ввести ответное число, такое чтобы сумма получилась 9. Затем также второе, третье, n-ое.
У нас в армии так было. Только с одним числом.
Мы же пытаемся не выдать пароль даже случайно.
При этом задача сильно переусложнена. Достаточно разделить экран на 2 части и просить выбрать ту, в которой парольных иконок больше. Но для надежности придется проводить больше раундов.
Графический пароль не дает смотрящему украсть себя