У каждого нажатия клавиши есть своя история!

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

В Википедии упоминается:

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

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

Подробнее о технике

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

Обычно регистратор нажатий клавиш просто регистрирует временные метки, когда клавиша нажимается и отпускается. Эти временные метки сами по себе ничего не значат. Тем не менее, мы можем получить представление о шаблонах набора текста пользователем, создав такие функции, как продолжительность нажатия-нажатия (PPD), продолжительность удержания (HD), продолжительность отпускания-нажатия (RPD). На изображении показаны расчеты продолжительности нажатия 2 клавиш - A и B. Здесь меньшие клавиши представляют событие нажатия клавиши, а большие - событие отпускания клавиши.

Эти значения можно использовать для понимания шаблонов набора текста пользователем. Чтобы продемонстрировать эту концепцию, я использовал набор данных, с которым столкнулся на Kaggle: Задача динамики нажатия клавиш 1 | Kaggle

Демонстрация

Только что упомянутый набор данных Kaggle фиксирует попытки набора текста у 110 пользователей. Каждый пользователь 8 раз пытался ввести строку «соединенные штаты» (первые буквы обоих слов не были написаны заглавными буквами, чтобы игнорировать эффект нажатия клавиши Shift) и соответствующие временные метки нажатия и отпускания клавиши относительно первой клавиши. пресса была захвачена.

Сначала мы читаем данные из csv таким образом:

Как упоминалось ранее, эти данные нельзя использовать напрямую. Итак, нам нужно сгенерировать характеристики продолжительности нажатия-нажатия, удержания, отпускания-нажатия из этого набора данных. Мы делаем это с помощью следующего кода:

Затем мы пытаемся изучить эти сгенерированные данные и попытаться понять данные по их номинальной стоимости.

Прежде чем продолжить анализ кода, давайте рассмотрим только 5 из 110 пользователей, то есть 5x8 = 40 шаблонов набора.

Используя функцию seaborn swarmplot, мы можем сгенерировать роевые графики для этих 5 пользователей.

Как вы можете видеть из графиков роя, продолжительность пресс-пресса, длительность пресс-пресса примерно одинакова для всех пользователей. Таким образом, прямое использование средней продолжительности бесполезно. Однако продолжительность удержания примерно разная для каждого пользователя, что правильно, поскольку каждый пользователь имеет разную скорость набора текста в зависимости от его навыков набора текста. Давайте планируем использовать гистограммы, чтобы проверить, можно ли идентифицировать какие-либо вариации. Поскольку мы знаем, что каждый шаблон набора состоит из 13 нажатий клавиш, давайте попробуем визуализировать точечные диаграммы и линейные графики того, как эти длительности будут выглядеть с точки зрения временных меток событий нажатия клавиш. Обратите внимание: поскольку каждый шаблон ввода не зависит от другого, мы строим 8 линейных графиков (состоящих из 13 точек данных) для каждого из 5 пользователей, в результате чего получаем 8 x 5 = 40 линейных графиков.

Преобразование пространственных объектов-строк в объекты-столбцы для построения графиков

Теперь каждая строка в нашем наборе данных представляет собой шаблон ввода, соответствующий пользователю, но если мы хотим проанализировать шаблоны ввода для пользователей (временные метки, соединенные линиями), нам нужно будет объединить эти функции строки в один столбец. Для этой цели, наряду с несколькими другими функциями pandas, нам нужно использовать функцию pandas wide_to_long.

Теперь давайте попробуем изобразить продолжительность прессования в / с метки времени прессования, используя точки и линии.

Обратите внимание, что здесь 40 линейных графиков, то есть 8 линейных графиков на пользователя и 5 пользователей рассматриваются.

Этот сюжет раскрывает очень интересную деталь.

Обратите внимание на неровные линии для пользователя 4 (красные линии). PPD внезапно увеличивается, а затем становится очень низким для следующего ключа. Это означает, что этот пользователь ждет относительно долгое время, прежде чем набирать 2 клавиши подряд. Таким образом, можно сказать, что этот пользователь обычно набирает группы по 2 ключа.

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

Однако существует множество факторов, влияющих на шаблоны набора текста. Некоторые из этих факторов:

  • Время дня для набора текста
  • Состояние подсветки клавиатуры при наборе текста (особенно для тех, кто печатает без сенсорного ввода)
  • Раскладка клавиатуры (если кто-то решит заменить раскладку qwerty на другую раскладку)
  • Уровень знакомства с раскладкой клавиатуры
  • Место, где выполняется набор текста
  • Рука, сидячее положение машиниста
  • Стресс машиниста

Но есть компании, которые используют несколько эвристик и методов для уверенной аутентификации пользователя.

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

Ссылка на записную книжку Kaggle с подробным описанием всего кода: Анализ и прогнозирование динамики нажатия клавиш с XGB | Kaggle .

PS: EDA означает исследовательский анализ данных

До следующей статьи, ура! :)