Ввод паролей через последовательность зажатия клавиш

Пример ввода последовательности по времениСуть проблемы ввода паролей

Большинство пользователей вводят короткие легко взлаемые роботами пароли. Данная реализация позволяет избежать этих недостатков, прибегнув к помощи скриптов

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

Поясню на примере: Известно, что пароль состоит из символов "f" и "g". Звучит он примерно "fgg"
Но, чтобы набрать его верно - символ "f" отжимается после зажатия 2-го символа "g". Со стороны при быстром наборе - не каждый сможет обратить на это внимание. А система при нескольких попытках сможет насторожиться и принять адекватные меры. В 3-х символах заложено более 5 комбинаций, не поддаваемых перебору, тем более что простые пара символов скрыто длинным хешем. Если брать разные символы - то число комбинаций много больше. Таким образом все короткие пароли превращаются в длинную цепочку, затрудняемую для перебора
На рисунке - по вертикали расположена ось времени, а линии означают нажатый статус клавиши.

Ниже будет представлена реализация метода и пример

 

Компьютеры способны отслеживать одновременное нажатие 4-5 клавиш на клавиатуре, больше не позволяет особенность клавиатуры. Комбинаций нажатия и отпускания клавиш много больше и это позволяет хорошо зашифровать пароль. Таким образом, даже пароль из 3-х нажатий подобрать становится много сложнее, чем 3 символа. А также это усложняет возможности подобрать пароль перебором.

Соответственно - при ошибке в наборе - пароль набирается заново

Еще парочка поясняющих примеров

Важен лишь порядок нажатия и отпускания каждой из клавишь на клавиатуре

Пример одинакового ввода

Последовательности равны

Пример не одинакового ввода
Последовательности не равны

Подытожим

Преимущества метода

  1. Меньше набираемых символов, сложнее защита
  2. Пароль сложнее передать письменно, т.к. стандартных представлений еще не существует
  3. Высокая защита от подбора паролей роботами
  4. В наборе участвуют все кнопки клавиатуры (стрелки, numpad)

Недостатки метода

  1. В случае браузеров: При отключенном javascript работать не будут
  2. В случае мобильных телефонов и КПК - набор будет недоступен
  3. При быстром наборе могут возникнуть ошибки
  4. В случае реализации на браузерах через keyCode - языки и регистр символов не фиксируются

Ниже привожу код для javascript, с участием jQuery, который показывает реализацию данной идеи. Работает во всех современных браузерах

// массивы для памяти уже зажатых клавиш
var pas={};
$('#password').keydown(function(event){
    if (event.keyCode<32)return true; // служебные символы нас не интересуют
    if (typeof(pas[event.keyCode])=='number')return false;
    // если клавиша не была зажата - устанавливаем признак и дописываем строку вывода
    $('#password').attr('maxlength',$('#password').attr('maxlength')+1); // багфикс для оперы
    pas[event.keyCode]=1;
    $('#hidepassword').val($('#hidepassword').val()+'d'+event.keyCode);
   }).keyup(function(event){
    // если поле пусто - сбрасываем пароль
    if ($('#password').val()==''){
      $('#hidepassword').val('');
      pas={};
      $('#password').attr('maxlength',0); // багфикс для оперы
    }
    if (event.keyCode<32)return true; // служебные символы нас не интересуют
    // отжимаем клавишу и дописываем строку вывода
    pas[event.keyCode]=null;
    $('#hidepassword').val($('#hidepassword').val()+'u'+event.keyCode);
   }).mousedown(function(){
    // при клике - сбрасываем пароль
    $('#password,#hidepassword').val('');
    pas={};
    $('#password').attr('maxlength',0); // багфикс для оперы
})

То есть, на странице существует поле для ввода с id=password и скрытое поле id=hidepass, которое и отправляется на сервер. Чтобы сбросить пароль и ввести его еще раз - нужно полностью очистить поле. Сделать это можно при помощи клика или backspace

Демонстрацию можно посмотреть здесь

Введите сочетание в поле пароль и повторение пароля. Результат сходства будет отображен справа

 

  Вводимые данные Скрытые поля, которые отправляются на сервер  
Пароль
Повтор Пароля
  • Автор: kosmom
  • Рейтинг: 0
  • Просмотров: 631
  • Комментариев: 0
  • Создан: 19.10.2010 15:35

Комментарии (0)