Pull to refresh

Динамический пароль 2.0

Reading time 5 min
Views 6.1K
Данная заметка является логическим продолжением статьи Динамический пароль, опубликованной ранее.

Итак, далее будет:
  • итоги на написанную ранее статью
  • еще идеи на её счет
  • расскажу о принципиально другом «динамическом пароле 2.0», лишенном недостатков первого.
  • а так же, скандалы, интриги, расследования идею как задать пароль:
    который вы сами не сможете набрать в состоянии алкогольного опьянения,
    который можно набрать на глазах у друга, и состоящий из символов «QQQQQ»
    и он не сможет его повторить...


Прежде всего, предлагаю не относиться слишком критично к данной статье, оставьте в восприятии толику юмора, ведь это прежде всего идеи, брошенные в море облачного IT-интеллекта

Итоги из статьи Динамический пароль


Способ реализации — не жесткая последовательность, а конструктор динамического пароля, позволяющий вставить приведенные автором шаблоны в любых местах и в любых количествах в своем шаблоне пароля
Сфера применения — не общественные системы для обычного потребителя. В первую очередь идея может быть использована в закрытых системах и организациях, которые хотят усложнить механизм обычного ввода пароля, но не задействовать доп железо (телефоны, токены, смарт-карты и тд)
Недостатки — невозможность хранить на сервере в виде хеша, придется часть шаблона пароля оставлять в открытом виде. Сложность, надо потратить немного времени что бы подготовить пароль по известному вам шаблону и, как следствие, слабая применяемость «в народе».
Преимущества — бесполезность идеи взлома пароля методом перебора (пока идет перебор паролей, сабж может стать тем, который уже был использован генератором ранее). Защита от «подглядываний» пароля (точный пароль, набранный через [1-N] минут может оказаться уже неактуальным)

Идеи и пояснения


Меня, как и некоторых других Хабра-юзеров, посещала идея динамического пароля еще несколько лет назад.
Тогда, я сформулировал её для себя следующим образом:
Есть шаблоны: MM, YY, DD и т.д. перечисляем сюда все шаблоны из форматера дат и указанные автором в парент-топике и еще кучу на свой вкус.
Что бы задать пароль надо совместить статический текст пароля, с динамическим, что бы это сделать, выбираем обрамляющие символы которые будут указывать где начинается и оканчивается шаблон. Например можно использовать двойные квадратные скобки "[[....]]", по принципу наклонной черты в java "\\".
Несколько примеров шаблонов пароля сформированные таким образом:
  • "qqq[[MM]]qqq" (верный пароль «qqq+2х-значная минута+qqq»)
  • "[[YYYY]] тысяч обезьян в [[USER]] сунули банан" ( :-) )
  • "2+2=[[M]]" (верный пароль — «2+2=первая цифра текущей минуты»)
  • "[[SS]][[SS]][[M]][[SS]][[SS]]" (пароль, завязанный на секунды, потребует предварительной его подготовки к определенной секунде и минуте в будущем)

Можно даже предусмотреть вычисление внутри "[[...]]", например:
  • k1s$a[[MM]][[MM+1]][[MM+9]][[MM+7]][[MM+9]] (пароль, это «k1s$a»+ повторяющиеся 4 раза цифры текущей минуты, к которым прибавляем цифры вашего года рождения)
  • [[HH%2==0]] (пароль true или false, в зависимости четная минута или нет)
  • [[MM+-2]] (пароль, это текущая минута с погрешностью +- 2 минуты)
  • [[MM+-2]][[MM+-2]][[ MM+-2]][[MM+-2]][[MM+-2]] (развитие предыдущего пункта — пароль (например 1920222120) может состоять из разных цифр в пределах погрешности и никто не догадается что базовая цифра, это текущая минута — 20 в моем случае )

В-общем, фантазия безгранична, главное в этом деле, рассказать юзеру в режиме конструктора все необходимые шаблоны и правила, а так же обратить его внимание, что время или еще какие-либо динамические параметры нужно формировать исходня из таймзоны GMT например, а еще лучше, выводить время на которое надо ориентироваться в будущем где нибудь ненавязчиво в пределах логин страницы.

Динамический пароль 2.0


Вот и подошла очередь описать принципиально новый «Динамический пароль 2.0». Включаем юмор, и оставляем включенной логику
Представьте ситуацию:
Вы видите как ваш друг набирает в поле пароля банальный пароль «QQQQQ» или «11111» и входит, вы говорите ему, что он полный чайник, раз использует подобный пароль, а он в ответ, выходит из программы и предлагает ввести его вам. Вы пытаетесь ввести пароль 5 раз и вас не пускает, после этого вы вспоминаете что когда-то читали статью на хабре Динамический пароль и предполагаете что пароль просто перегенерился и, скорее всего, тогда на часах была или 11-я минута или что то еще… Но ваш приятель садится за комп и опять у вас на глазах начинает вводить «11111» и его пускает!
В чем секрет?
В фразе «Динамический пароль 2.0» основным словом является "динамический", но не в смысле «изменяемый», а в смысле «динамичный, танцевальный» ;)
Помните реакцию винды на неправильный ввод пароля 3 раза подряд? Она не дает ничего вводить пару минут, что бы исключить подбор пароля, а потом, через пару минут снова дает 3 попытки.
Что, если контролировать время между введенными символами и использовать его как еще один параметр при входе в систему?
Не буду разжевывать то, что вы и так поняли, и сразу приведу шаблон пароля нашего «продвинутого» приятеля:
Q[[T>500]]Q[[T>500]]Q[[T>500]]Q[[T>1000]]Q
Где [[T>500]], говорит о том что между символами должно быть время в миллисекундах большее чем пол секунды, а между предпоследним и последним символами — больше секунды.
Включаем фантазию и думаем какие еще правила можно придумать: минимальное/максимальное время ввода всего пароля, больше, меньше, погрешность в миллисекундах, динамическое время основанное на первом промежутке времени между вводом первого и второго символа пароля, и много чего еще…

Сразу о преимуществах:
  • легкий набор
  • возможность хранить хеш самого пароля на сервере
  • возможность, при отменной реакции и чувстве такта, задать простейшую мелодию при «настукивании» пароля
  • невозможность подбора, так как время это тоже параметр
  • wow! вы можете рассчитать минимальное время набора пароля (скажем вы легко набираете его за 1.5 секунды), а в случае вашего измененного сознания опьянения, не сможете набрать его с такой же скоростью, так как время реакции сильно пострадало и база защищена вами от вас! ))


Теперь о недостатках:
  • Сложное программирование, придется точно контролировать время между вводимыми символами, для реализации надо хорошенько подумать что сделать на клиенте, а что на сервере
  • возможно, сложное придумывание шаблона (если шаблон сложнее чем набрать 3 символа, подождать 3 секунды, набрать остальные символы пароля)
  • дополнительное нешифруемое поле в базе в нагрузку к Хешу пароля, для того что бы знать правила контроля времени между символами или общего времени набора


Не забываем, всё это концепты, идеи для размышления, не надо сразу прикладывать идею к сайту «Одноклассники» и его хомячков обитателей ;)

В общем, интересных проектов и удачи Всем!

Update1: Коментарии в статье Третье измерение защиты паролей окончательно меня убедили, что пользователи Хабра мыслят одинаково. До написания своей статьи, я не читал «Третье измерение защиты паролей» и его каментов.
Tags:
Hubs:
+6
Comments 19
Comments Comments 19

Articles