0

Пример визуально событийного программирования

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

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

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

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

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

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

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

Интерфейс программы, построенный визуальным методом, показан на следующем рисунке.

Визуально событийное программирование. Интерфейс программы  вычисления параметров   клавиатурного почерка

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

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

Процедура обработки события «Нажатия кнопки Выполнить» имеет следующий код.

procedure TFrmKlvPck.ButtonExeClick(Sender: TObject);
begin
if RadioButtonObuch.Checked then
FrmObuch.ShowModal();
if RadioButtonExec.Checked then
FrmAutent.ShowModal();
end;

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

В режиме Обучение интерфейс имеет вид, показанный на следующем рисунке

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

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

В режиме Исполнение интерфейс имеет вид, показанный на следующем рисунке

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

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

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

Программа измерения параметров нажатия клавиш клавиатуры представляет собой совокупность обработчиков событий 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. Программа работает правильно. Обработка событий нажатия и отпускания клавиш происходит корректно. Таким образом, обработка события переключения регистра, устраняет проблему первоначальной программы  и тем самым повышает достоверность аутентификации по клавиатурному почерку.

Отладка программы

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

Тексты фрагментов программы показан ниже. В них предусмотрено формирование динамических массивов, размерностью числа накопленных данных 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 не будет опубликован. Обязательные поля помечены *