Санкт-Петербургский Государственный политехнический университет Факультет технической кибернетики Кафедра Измерительных информационных технологий Дипломный проект Тема: Динамическая библиотека графической идентификации (GINA) для Windows, реализующая контроль клавиатурного почерка Выполнил: Соколов А. С. Группа: 6085/20 Руководитель: Сальников В. Ю. Цели проекта Реализовать проверку клавиатурного почерка во время ввода пароля для усложнения процесса аутентификации при входе в Windows для повышения безопасности рабочей станции Поиск готовых решений В процессе поиска, программ, использующих клавиатурный почерк в процессе аутентификации, не найдено GINA 1) Расширение стандартной MSGINA Функции имеют вид: return_type Wlx_function(Param_list) { // свои действия return Wlxtbl.Wlx_function(Param_list); } 2) Custom Gina HKLM\\SOFTWARE\\Microsoft\\WindowsNT \\CurrentVersion\\Winlogon\\GinaDLL Winlogon Существует 3 состояния: 1) Никто не вошел 2) Пользователь вошел 3) Станция заблокирована Рис.1 Схема состояний процесса входа Winlogon Блок-схема работы GINA Начало программы Negotiate Initialize DisplaySASNotice (состояние LOGGED_OFF) LogOff Аутентификация не успешна LoggedOutSAS (сбор учетных данных) ShutDown Остановка программы Аутентификация успешна ActivateUserShell DisplayLockedNoti ce (состояние LOCKED) Состояние LOGGED_ON WkstaLockedSAS (сбор учетных данных) Администратор входит в систему Блок-схема работы GINA с модулем клавиатурного почерка Начало программы Negotiate Initialize DisplaySASNotice (состояние LOGGED_OFF) LoggedOutSAS (сбор учетных данных) LogOff Аутентификация по паролю не успешна Аутентификация по почерку не успешна ShutDown Аутентификация по паролю успешна Проверка клавиатурного почерка Аутентификация по почерку успешна ActivateUserShell Состояние LOGGED_ON DisplayLockedNoti ce (состояние LOCKED) WkstaLockedSAS (сбор учетных данных) Проверка клавиатурного почерка Проверка неуспешна Проверка успешна Остановка программы Администратор входит в систему Математическая модель клавиатурного почерка Проверка делится на 2 этапа: • сбор параметров клавиатурного почерка авторизованных пользователей – эталонные характеристики • сбор и подсчет параметров тестируемого пользователя, сравнение с эталонными при входе в систему Математическая модель клавиатурного почерка Для проверки клавиатурного почерка используется метод на основе измерений и статистической обработки индивидуальных характеристик клавиатурного почерка. За характеристику почерка берется время между нажатиями клавиш. Алгоритм проверки клавиатурного почерка Начало 1 Cбор временных интервалов во время ввода пароля Цикл 2 Цикл 1 Рассчитать почерк входящего, С Рассчитать граничное значение, T С>=0 Да T>Z Нет R2++ Да R1++ Цикл 2 Цикл 1 Рассчитать вероятность, P 1 Конец Нет Выводы по теоретической части • Рассмотрена математическая модель проверки клавиатурного почерка • Рассмотрена работа библиотеки Gina и процесса входа (Winlogon) • Данные для проверки почерка собрать во время ввода пароля в функции обработки диалогового окна LogonDialog • Проверку клав почерка произвести в функциях Gina LoggedOutSAS и LockedWkstaSAS Таблица функций GINA Функция Описание WlxActivateUserShell Запускает основную оболочку пользователя WlxDisplayLockedNotice Отображение GINA информации о блокировке WlxDisplaySASNotice Вызывается, когда никто не вошел в систему WlxIsLogoffOk Проверка на завершение сеанса работы WlxDisplayStatusMessage Показывает статус — сообщение WlxGetConsoleSwitchCredentials Применяет пользовательскую информацию на указанную сессию WlxGetStatusMessage Получение текущего статус-сообщения WlxInitialize Инициализация GINA на текущую станцию WlxLoggedOutSAS Реакция на SAS-событие, при условии, что пользователь в системе и станция не заблокирована WlxLogoff Проверка на завершение сеанса работы WlxNegotiate Проверка версий winlogon и GINA WlxNetworkProviderLoad Уведомление, что запустилась служба взаимодействия с другими типами сетей WlxRemoveStatusMessage Удаление статус-сообщения WlxIsLockOk Проверка на блокировку станции WlxShutDown Уведомление о завершении работы станции WlxWkstaLockedSAS Реакция на SAS-событие при условии, что станция заблокирована WlxLoggedOnSAS Реакция на SAS-событие, при условии, что пользователь в системе и станция не заблокирована Класс Gina WlxInitialize(LPWSTR lpWinsta,HANDLE hWlx,PVOID pvReserved,PVOID pWinlogonFunctions,PVOID*pWlxContext); { … pWlxContext – указатель, используемый в последующих вызовах. Gina* pGina = new Gina(); *pWlxContext = (PVOID*)pGina; … } Пример вызова функции класса Gina: (Gina*)pWlxContext->LoggedOutSAS(); Список вспомогательных классов 1) SecurityHelper 2) RegisterHelper 3) StatusWindow 4) GinaModalDialog 5) NoticeDialog 6) LogonDialog 7) SecurityOptionsDialog Реализация модуля клавиатурного почерка INT_PTR LogonDialog::DialogProc(UINT msg, WPARAM wp, LPARAM lp) { ………… case WM_COMMAND: { if (LOWORD(wp) == IDC_PASSWORD) switch (HIWORD(wp)) { case EN_UPDATE: if (quantity != 0){ finish = timeGetTime ();duration = finish-start;bufTime[quantity] = duration;} start = timeGetTime ();PrevChar=CurChar; CurChar = SendDlgItemMessage(_hwnd, IDC_PASSWORD, WM_GETTEXTLENGTH, NULL, NULL); quantity++; if (CurChar > PrevChar){ SendDlgItemMessage(_hwnd, IDC_PASSWORD, WM_GETTEXT, 254, (LPARAM)buf);} break;} ………… Примеры диалоговых окон Рис. 3 Внешний вид диалогауведомления Рис. 4 Внешний вид диалога ввода идентификационных данных Рис. 5 Внешний вид диалога опций пользователя Выводы по практической части • Реализован класс Gina и все вспомогательные классы • Реализована проверка клавиатурного почерка в процессе аутентификации по паролю • Произведено тестирование библиотеки на Windows XP Заключение • Исследованы способы взаимодействия Winlogon и Gina • Реализована библиотека biokeyboardgina.dll • Тестирование прошло успешно • Возможные расширения библиотеки