Просмотров-1161
0

Программа аутентификации по клавиатурному почерку

Определение параметров клавиатурного почерка

Программа вычисления параметров клавиатурного почерка

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

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

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

Один из возможных вариантов построения такого программного обеспечения аутентификации, созданное событийно-визуальным методом программирования на языке Паскаль рассмотрим далее.

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

Программа измерения параметров нажатия клавиш клавиатуры представляет собой совокупность обработчиков событий KeyDown и KeyUp, которые возникают каждый раз, когда нажимается и отпускается клавиша соответственно. Вопрос заключается в том каким способом измерять время наступления этих событий? После некоторых экспериментов было принято решение использовать функцию Now(). Она измеряет количество секунд, прошедшее с начала суток. Точность измерения достаточно высока.

Вот тексты кода двух обработчиков событий KeyDown и KeyUp с использованием функцию Now() и фиксации моментов нажатия и отпускания клавиш при вводе символов логина.

procedure TFrmObuch.EditLoginKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
mTdn[m]:= Now();
end;

procedure TFrmObuch.EditLoginKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
mTup[m]:= Now();
m:=m+1
end;

Как видно из текста фрагментов программы измеренные моменты времени сохраняются в массивах. Причем индекс массивов изменять следует только в обработчике события  KeyUp, иначе будет не синхронное запоминание измерений.

Аналогичные обработчики событий нажатия клавиши KeyDown и отпускания клавиши KeyUp необходимо создать и для ввода символов пароля. Тексты кода этих обработчиков событий приведены ниже.

procedure TFrmObuch.EditPaswKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
mTdn[m]:= Now();
end;

procedure TFrmObuch.EditPaswKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
mTup[m]:= Now();
m:=m+1
end;

Результаты вполне приемлемы. Все хорошо, но более подробный анализ показал, что могут возникать ситуации, при которых появляются искажения измерений. Известно, что для переключения регистра используется клавиша Shift, для которой также появляются события KeyDown и KeyUp. Обработка события переключения регистра лежит в основе следующей процедуры.

Как учесть переключение регистра при обработке событий от клавиатуры?

Если ничего не менять в описанной ранее программе, то будет нарушена синхронная фиксация нажатия и отпускания других информационных клавиш, что приведет к большим выбросам в измерениях и грубым ошибкам в вычислениях параметров клавиатурного почерка. Что снижает достоверность аутентификации.

Проведем эксперимент для существующей программы, когда будет нажата клавиша Shift затем клавиша с первой буквой будет нажата и отпущена и далее отпущена клавиша Shift.

Просмотрев фиксируемые в обработчиках событий измерения в отладчике, имеем следующую картину, как показано на  рисунке.

Программное обеспечение аутентификации - неверный результат

Из рисунка видно, второе значение времени удержания клавиши и первое значение времени паузы между нажатиями сильно искажены. Это обусловлено тем, что второй элемент массива mTdn – соответствующий нажатию первой буквы — равен нулю. Тогда время удержания, вычисляемое по известной формуле будет равно(с учетом перевода в микросекунды) очень большим:


Tpr= mTup[1] — mTdn[1] =(43715,399844-0)Е6 = 4,372Е11

Аналогично для времени паузы между нажатиями клавиш.

Tps= mTdn[2] — mTup[1] =( 0-43715,399844)Е6 = -4,372Е11

Этот феномен объясняется тем, что фиксируется время не каждой нажатой и отпущенной клавиши, а время двух последовательно следуемых одинаковых события(нажата клавиша Shift и нажата клавиша следующей буквы) и других двух последовательно следуемых одинаковых события(отпущена клавиша буквы и отпущена клавиша Shift), что нарушает синхронность фиксации времени отдельной клавиши.

На следующем рисунке видно, что при нажатии клавиши Shift одноименные обработчики событий вызываются дважды(зеленый фон), вместо одного раза. То есть обработка событий нажатия и отпускания клавиш осуществляется не корректно.

Требуется обработка события переключения регистра

Для исключения искажений в измерениях можно перехватывать нажатие клавиши Shift и выходить из обработчика события. Это можно сделать дополнив код обработчика события следующим оператором if (Key=VK_SHIFT) then exit;

Проверим на практике. Снова выполним тот же эксперимент и зафиксируем результаты обработки событий нажатия и отпускания клавиш.

Программное обеспечение аутентификации - правильные вычисления

Как видно результаты получены вполне корректные. Пропал второй столбец, который относится к клавише Shift. Программа работает правильно. Обработка событий нажатия и отпускания клавиш происходит корректно. Таким образом, обработка события переключения регистра, устраняет проблему первоначальной программы  и тем самым повышает достоверность аутентификации по клавиатурному почерку.

Программа аутентификации

Чтобы проверить программное обеспечение для аутентификации на правильность работы нами была создана специальная отладочная версия программы.

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

Интерфейс отладочной программы имеет вид.

Программное обеспечение  вычисления параметров   клавиатурного почерка

Программа может работать в двух режимах “Обучение” и “Исполнение”. Режим обучения  включается после  выбора переключателя “Обучение” нажатия на кнопку “Выполнить”. В этом режиме формируется массив данных и вычисляются статистические характеристики параметров клавиатурного почерка.

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

Тексты фрагментов программы показан ниже. В них предусмотрено формирование динамических массивов, размерностью числа накопленных данных SetLength(mTpr,m). Вычисления времени удержания и паузы между нажатиями клавиш.

mTpr[i]:=mTup[i]-mTdn[i]; mTpz[i]:=mTdn[i+1]-mTup[i];

Результаты выводятся в компонент StringGrid для визуализации и анализа.

StringGridKlvPoc.Cells[i,1]:=FloatToStr((mTdn[i]-Tbg)*1000);
StringGridKlvPoc.Cells[i,2]:=FloatToStr((mTup[i]-Tbg)*1000);

Полный текст отладочной процедуры имеет вид.
procedure TFrmObuch.ButtonEndClick(Sender: TObject);
var
i: integer;
begin
m:=m-1;
SetLength(mTpr,m);
SetLength(mTpz,m);
for i := 0 to m-1 do
begin
mTpr[i]:=mTup[i]-mTdn[i];
mTpz[i]:=mTdn[i+1]-mTup[i];
end;
StringGridKlvPoc.ColCount:=m;
StringGridKlvPoc.ColWidths[0]:=150;
for i := 1 to m do
begin
StringGridKlvPoc.Cells[i,1]:=FloatToStr((mTdn[i]-Tbg)*1000);
StringGridKlvPoc.Cells[i,2]:=FloatToStr((mTup[i]-Tbg)*1000);
end;
end;

Результат работы программы в режиме обучения показан ниже на рисунке.

Интерфейс программного обеспечения аутентификации по клавиатурному почерку

Результаты вполне приемлемы. Быстродействие вполне приличное. Все хорошо.

Результат работы программы в режиме исполнение(аутентификации) показан ниже на рисунке.

Результаты аутентификации по клавиатурному почерку

Таким образом, программное обеспечение аутентификации по клавиатурному почерку ввода, созданное визуально-событийным методом программирования работает успешно.

Заключение

Таким образом, разработанное программное обеспечение для аутентификации по клавиатурному почерку можно использовать на практике в различных сферах.

Основными параметрами клавиатурного почерка являются: время удержания клавиши и время паузы между отпусканием одной клавиши и нажатием другой.

Программное обеспечение аутентификации по клавиатурному почерку ввода созданное визуально-событийным методом программирования позволяет повысить уровень защиты клиентов.

Читайте также..

Кто согласен с подходом одобряйте, кто нет, отзывайтесь. Будем рады услышать отзывы!

Внимание! Кто хочет своевременно узнавать о выходе новой статьи на сайте должен подписаться.

ПОДПИСКА НА РАССЫЛКУ

Статьи об онлайн курсах обучения

Дистанционное обучение
Обучение программированию
Проектирование информационных систем
 
Реклама. Информация о рекламодателе по ссылкам в статье.

brasm

Пенсионер с 33 - летним педагогическим стажем

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *