УДК 004.048
Ломаченко А. С., Никольский Т.В., Голубев И.И.,
Московский государственный технический университет имени Н. Э. Баумана
DOI: 10.24411/2520-6990-2020-11850 ИССЛЕДОВАНИЕ ПРОГРАММНЫХ РЕШЕНИЙ ИДЕНТИФИКАЦИИ ПОЛЬЗОВАТЕЛЯ ПО
ПАРАМЕТРАМ НАБОРА ТЕКСТА
Lomachenko A.S., Nikolsky T. V., Golubev I.I.
Bauman Moscow State Technical University
RESEARCH OF SOFTWARE SOLUTIONS FOR USER IDENTIFICATION BASED ON TYPING
PARAMETERS
Аннотация.
Статья посвящена программным решениям, которые могут использоваться для идентификации пользователя по особенному клавиатурному почерку. В процессе идентификации могут участвовать сила нажатия на клавиши, скорость письма и другие механизмы. Кроме алгоритма регистрации времени нажатия и отпускания, в тексте изложены основные возможные способы регистрации состояния кнопок клавиатуры.
Abstract.
The article is devoted to software solutions that can be used to identify a user by a special keyboard handwriting. The identification process may involve the force of keystrokes, the speed of writing, and other mechanisms. In addition to the algorithm for registering the time of pressing and releasing, the text describes the main possible ways to register the state of the keyboard buttons.
Ключевые слова: идентификация пользователя, клавиатура, параметры набора текста, клавиатурный почерк.
Keywords: user identification, keyboard, typing parameters, keyboard handwriting.
Современный человек использует интернет-мессенджеры для личной и деловой переписки, и они стали неотъемлемой частью нашей жизни. Информационный обмен в виртуальном пространстве обладает множеством плюсов. Однако, идентификация пользователя, находящегося с другой стороны монитора, является одной из основных проблем. Сегодня разработано немало технологий по определению места нахождения, конечного адреса гаджета, с которого поступает информация. Те же способы позволяют обойти ее получение.
Идентификацию пользователя по анализу его клавиатурного почерка интересно и целесообразно проводить, используя этот метод как основное направление в данной области. В нецифровой среде точность способа подтверждена наукой «графология», успешным применением на практике метода графологической экспертизы и всевозможных исследований по определению пола, профессии, образа жизни, возраста человека по его почерку.
Большинство проведенных исследований, анализирующих клавиатурный почерк, связаны с оценкой особенностей и скорости работы профессиональных наборщиков текста. Сейчас, когда социальные сети превратились в значимый инструмент информационного противостояния, необходима разработка механизма идентификации пользователя, отправляющего сообщения длиной менее 300 символов.
Устройства для регистрации биометрических параметров пользователей имеют немалую стоимость, которая серьезно ограничивает их применение в системах безопасности. Использование специальных интерфейсов и контроллеров, передающих данные в компьютер, сопряжено с проблемами установки и настройки, с ограничением мобильности идентифицирующих устройств. Лишена перечисленных недостатков клавиатура, используемая в качестве инструмента биометрической идентификации. Для ввода информации не требуется дополнительных аппаратных преобразователей. Поэтому доступность стандартной клавиатуры, подключаемой с помощью интерфейсов USB или PS\2 к ПК -одно из достоинств идентификации пользователя по клавиатурному почерку.
Для улучшения достоверности и информативности биометрических данных пользователя для отслеживания параметров силы нажатия клавиши предлагается использовать дополнительный контроллер. При нажатии между контактами электрической группы изменяются расстояния. Контактную пару можно рассматривать в качестве параметрической емкости, которая меняется при нажатии на кнопку. Скорость изменения емкости клавиш при нажатии имеет индивидуальную составляющую.
Предложенное устройство использовать целесообразно, поскольку клавиатурный контроллер работает как компаратор, обрезая временную
форму продолжительности импульса нажатия. Чтобы не допустить дребезжание контактов и снизить ошибки интерпретации, контроллер вводит кратковременную задержку. Дополнительное контролирующее устройство повлечет увеличение стоимости и негативно отразится на популярности метода.
Исследования клавиатурного почерка пользователя посвящены, в основном, изучению его индивидуальных особенностей, основанных на временных промежутках между надавливаниями и длительностями удержания клавиш. Производные характеристики найдены по измеренным значениям интервалов. В меньшей степени внимание уделено исследованиям времени удерживания кнопки и моделированию процесса.
Каждое событие в подключенной к компьютеру клавиатуре регистрируется программными алгоритмами. Массив экспериментальных данных формируется в связи с определением точности последующих измерений. Для этого необходимо провести анализ исследуемого набора текста, который осуществляется пользователями двух основных категорий. Одни обладают навыком слепого набора и десятипальцевым способом, другие медленно печатают двумя пальцами.
Динамика и мелкая моторика каждого человека являются уникальными физиологическими, анатомическими и психическими особенностями. Для их регистрации и составления описания необходимо с максимально возможной точностью измерять временные промежутки между нажатием и отпусканием кнопок на клавиатуре.
Считается, что большая вероятность обнаружения есть у пользователя, обладающего десяти-пальцевым методом набора. Справедливость таких суждений верна для распространенных моделей идентификации пользователей по средним значениям интервалов времени между нажатиями клавиш.
Профессиональная машинистка печатает со скоростью 500-600 знаков в минуту. При последо-
15_
вательном наборе интервал между двумя нажатиями должен равняться 8,3 мс, с самым кратким временем удержания клавиши, равным 50 мс. Регистрация событий на клавиатуре должна происходить через 4 мс. Известно, что интервал между нажатиями опытных и обычных пользователей происходит в диапазоне 30-400 мс.
Далее рассмотрим возможные программные решения на высокоуровневых языках программирования, которые могут быть использованы для регистрации и записи событий клавиатуры.
Первоначальное назначение клавиатуры - интерфейс для медленного ввода информации в компьютер. Каждый язык программирования отразил данное условие: в стандартных программных продуктах от клавиатуры не требуется передача данных с высокой скоростью. Опрос клавиатуры на низкой скорости компенсировался присутствием кольцевого буфера.
С усложнением компьютерных игр ситуация изменилась: пользователь пришлось проявлять реакцию на динамичные изменения в виртуальной реальности. Таким образом, прогрессу программных средств DirectInput способствовала игровая индустрия.
Способы регистрации временных параметров ввода с клавиатуры допускают реализацию на разных языках программирования осуществляющих сохранение измерений в файле, внутренних алгоритмов и функций временного отсчета. Три программы на разных высокоуровневых языках разработаны для анализа возможности фиксации и оценки погрешности отсчетов с реализацией основных методов сбора событий клавиатуры.
На рисунке 1 можно ознакомиться со схемой алгоритма процесса регистрации длительности давления и отпускания клавиатурной кнопки. К основным операциям алгоритма относится отслеживание изменения положения клавиши, определение значения длительности нажатия и запись данных в файл. Алгоритм заключается в ожидании нажатия или отпускания клавиши, при наступлении которых фиксируется системное время.
Рисунок 1. Алгоритм сбора экспериментальных значений длительности нажатия и отпускания клавиш.
Для регистрации состояния клавиш разработано три метода, каждый с использованием обработки событий на одном из основных этапов получения данных приложением Windows от клавиатуры. При каждом нажатии на клавиатуру происходит формирование системного события для передачи приоритетному приложению. В системе Windows клавиатура обслуживается при помощи специального драйвера, который представляет собой динамическую библиотеку с расширением dll. Он сканирует коды при нажатии и отпускании, кодируя его в ANSI. Таким образом, смысл алгоритма - ожидание нажатия или отпускания кнопки, создание событий wm_keydown [1] и wm_keyup [2] и передача данных событий приложению посредством очереди событий.
Большинство приложений используют обработку готовых сообщений алгоритмами ОС Windows, в качестве основного способа регистрации. Чтобы реализовать этот прием, на высокоуровневом языке программирования С++ разработана программа, которая выполняет обработку событий операционной системы Windows и запись измерений параметров набора текста в текстовый файл формата txt.
В качестве другого подхода используется применение программ перехвата событий Windows (SetWinEventHook) [3] и запись в выходной файл в обход очереди событий Windows. Для того чтобы
реализовать данный метод была разработана программа на высокоуровневом языке Delphi.
Для реализации методов, описанных выше, используется стандартный драйвер для клавиатуры. Для самых первых клавиатур ПК драйвер регистрировал удержание клавиши на клавиатуре, отсчитывал время и запускал автоповтор скан-кода нажатой клавиш. Для большей части приложений в современных ОС важен лишь момент нажатия клавиши, а длительность удержания клавиши не является важной информацией для приложения, так как во время удержания клавиши производится автоповтор скан-кода нажатой кнопки.
Однако длительность удержания клавиши на клавиатуре тоже является важным информационным показателем. Для того чтобы исследовать временные параметры событий клавиатуры была разработана программа, которая выполняет функционал драйвера. Для реализации данного метода были использованы функции DirectInput входящие в пакет Direct X 9.0.
Разработанная на высокоуровневом языке С++ программа получала прямой доступ к устройству ввода и опрос его состояния с промежутком в единицы микросекунд. При работе программа полностью использовала ресурс вычислительной мощности ЭВМ и становилась причиной «зависания», которое наблюдалось даже у систем, обладающих современными процессорами.
Благодаря передаче функции обработки событий клавиатуры центральному процессору была замечена высокая точность регистрации показателей. Уменьшение доли участия процессора в обработке состояния клавиатуры приводит к росту погрешности фиксирования периодов фиксации нажатия и удержания. Интервал дискретизации составляет 15.62 мкс.
При анализе полученных результатов выяснилось, что самую высокую погрешность регистрируемого времени удержания клавиши дает первый метод, который составляет около 48 мс. Второй метод, при использовании SetWinEventHook [3], благодаря обходу очереди событий Windows сокращает погрешность до 16 мс.
Все три метода регистрации событий показали различия в интервалах между нажатием и отпусканием клавиш для одной и той же контрольной группы. Кроме того, обнаружено сходство частотной структуры распределения интервалов, удерживания клавиш. В каждом результате увеличивается количество интервалов удержания клавиши при произвольном наборе текста на кратных показателях.
Анализируемые программные решения реализовали основные способы регистрации событий. Каждая разработанная программа имела некоторый период дискретизации, или минимально регистрируемый временной промежуток. Эта величина является погрешностью отображения. Программные особенности выполнения процедуры регистрации событий клавиатуры в полной мере не объясняют выявленные интервалы дискретизации. Задержки, сопутствующие этапам обработки событий и представления операционной системе, имеют непостоянные значения порядка единиц мкс. Выявленная дискретизация отображения времени удержания клавиши определяется отчасти особенностью интерфейса соединения с компьютером.
Возможные задержки во времени отображения, обусловленные интерфейсом передачи данных, относятся ко всем передаваемым событиям и имеют системный характер. Одинаковая ошибка добавляется как ко времени нажатия клавиши, так и ко времени ее отпускания.
Регистрация текущего времени - еще одна причина дискретного отображения временных показателей. Для определения длительности давления на клавишу необходимо знать точное системное время или запустить дополнительный таймер с привязкой к системному времени.
Для синхронизации с высокой точностью раньше в Windows использовался счетчик отметок времени центрального процессора (TSC - Time Stamp Counter). Для считывания тактовых импульсов центрального процессора в Pentium х86 начали устанавливать 64-разрядный счетчик. Информация со счетчика TSC запрашивается по инструкции RDTSC пользователя. Эта операция легко и быстро выполняется и гарантирует высокую точность времени в микросекундах на современных компьютерах [4].
17_
Частота процессора мобильных устройств в рабочий период не остается постоянной величиной с появлением многоядерных систем. Для вычислительных устройств эта величина уменьшается ради экономии электроэнергии. В многоядерной системе значение счетчика TSC изменяется и даже может показывать обратное время при передаче задачи между процессорами. Синхронизация TSC не всегда происходит на SMP и двухъядерных системах.
Для синхронизации с высокой точностью (порядка микросекунд), Microsoft рекомендует применять Query Performance Counter для двухъядерных систем, особенно при их загрузке. TSC предоставит использующей QPC программе уровень частоты процессора, не соответствующий текущему показателю.
Применение TimeGetTim и QueryPerfor-manceCounter более надежно так как изменяет точность с миллисекунд до микросекунд [5]. Еще большей надежностью и быстродействием обладает функция GetTickCount, которая показывает в Windows минимальный интервал - 55 мс, но ее недостатком является низкая точность [6].
Для получения приращения времени, которое возвращает GetTickCount используется функция GetSystemTimeAdjustment. Практические наблюдения помогли понять, что на компьютерах с ОС Windows функция возвращает 15620 мкс. То есть, при помощи GetTickCount время возвращается в миллисекундах, но дискретность составляет 15,62 мс - это значение является периодом, с которым работает таймер, это подтверждает документация к этой функции, в которой прописан период дискретизации от 10 до 16 мс. [6].
Проведенные исследования регистрации времени событий клавиатуры позволяют отнести ошибки к самостоятельному классу погрешностей. Уменьшение размера ошибки приводит к нестабильности функционирования или замедлению работы системы. Погрешность регистрации вызвана особенностями вычислительной системы. При проведении измерений необходимо выбрать среднее значение между стабильностью работы, быстродействия системы и точностью вычислительной системы. На практике выяснилось, что оптимальным значением периода дискретизации, при котором система остается работоспособна и ее быстродействие не ухудшается является 15 мс.
Список литературы
1. WM_KEYDOWN message (winuser.h) -Win32 apps // Microsoft. [Электронный ресурс]. Режим доступа: https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-keydown (Дата обращения: 07.05.2020)
2. WM_KEYUP message (winuser.h) - Win32 apps // Microsoft. [Электронный ресурс]. Режим доступа: https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-keyup (Дата обращения: 07.05.2020)
3. SetWinEventHook function (winuser.h) -Win32 apps // Microsoft. [Электронный ресурс]. Режим доступа: https://docs.microsoft.com/en-
us/windows/win32/api/winuser/nf-winuser-setwineventhook (Дата обращения: 07.05.2020)
4. Time Stamp Counter // Wikipedia. [Электронный ресурс]. Режим доступа: https://en.wikipedia.org/wiki/Time_Stamp_Counter (Дата обращения: 08.05.2020)
5. QueryPerformanceCounter function (winuser.h) - Win32 apps // Microsoft. [Электронный ресурс]. Режим доступа:
https://docs.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter (Дата обращения: 09.05.2020)
6. GetTickCount function (sysinfoapi.h) -Win32 apps // Microsoft. [Электронный ресурс]. Режим доступа: https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-gettickcount (Дата обращения: 09.05.2020)