2010_d_3 - Кафедра измерительных информационных

advertisement
Санкт-Петербургский Государственный политехнический университет
Факультет технической кибернетики
Кафедра Измерительных информационных технологий
Дипломный проект
Тема: Динамическая библиотека графической
идентификации (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
• Тестирование прошло успешно
• Возможные расширения библиотеки
Download