Автор работы: Пользователь скрыл имя, 13 Марта 2013 в 20:04, курсовая работа
Каждого пользователя разрабатываемая система должна опознавать по его имени (идентификатору). Если имя не введено, используем имя текущего пользователя компьютера. Проверка и хранение пароля для доступа пользователя к своим ключам для вариантов 1 и 2 не требуется (считаем, что система установлена на личном компьютере пользователя, и он контролирует доступ к компьютеру).
РЕФЕРАТ 3
ВВЕДЕНИЕ 5
1 ПОСТАНОВКА ЗАДАЧИ 6
2 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 7
3 ОПИСАНИЕ ЛОГИКИ РАБОТЫ ОСНОВНЫХ БЛОКОВ ПРОГРАММЫ 13
4 РЕАЛИЗАЦИЯ ЗАДАЧИ 16
5 ИСХОДНЫЕ ТЕКСТЫ МОДУЛЕЙ 22
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 30
Предметная аутентификация также имеет ряд недостатков:
• предмет может быть похищен или отобран у его владельца;
• для всех предметов, кроме USB-токенов,
требуется специальное
• для всех предметов, кроме микропроцессорных смарт-карт и их функциональных аналогов, возможно изготовление копии или эмулятора предмета.
Биометрическая аутентификация
Биометрическая аутентификация – это аутентификация пользователя по его уникальным биометрическим характеристикам. Уникальными являются, например, следующие характеристики:
• отпечатки пальцев;
• узор радужной оболочки и структура сетчатки глаза;
• черты лица;
• схема кровеносных сосудов лица;
• геометрия кисти руки;
• рукописная подпись;
• клавиатурный почерк (интервалы времени между нажатиями клавиш, составляющих кодовое слово, и длительность нажатий);
• голос.
В отличие от описанных выше методов аутентификации, биометрическая аутентификация не определяет пользователя с абсолютной точностью. С паролем все просто: он либо эквивалентен эталону, либо нет. Системы биометрической аутентификации опознают пользователя с определенной вероятностью – как человек может не узнать своего знакомого в лицо после отращивания им усов или по голосу после простуды, так и биометрическая система может не узнать легального пользователя или, что еще хуже, принять чужого за своего. Поэтому все системы биомеа в доступе – с какой вероятностью система не узнает зарегистрированного пользователя;
• ложного доступа – вероятность ошибочного допуска нелегального пользователя.
Аналогично аутентификации по уникальному предмету, биометрическая аутентификация нередко применяется в паре с паролем пользователя или каким-либо другим методом. Наиболее часто в качестве биометрических характеристик используются отпечатки пальцев, узор радужной оболочки глаза и черты лица. Каждому из этих методов свойственны свои недостатки, например, некоторые виды сканеров отпечатков пальцев могут быть обмануты специально подготовленным «искусственным пальцем». Есть и общий для всех методов минус: необходимость в считывающем оборудовании, которое может быть достаточно дорогостоящим.
Несмотря на эти недостатки, биометрическая аутентификация сейчас развивается наиболее бурно. Впечатляющий рост рынок систем биометрической аутентификации пережил после печальных событий 11 сентября 2001 г. Тогда казалось, что системы опознания по чертам лица способны серьезно помочь в борьбе с терроризмом и преступностью, на ранней стадии позволяя обнаруживать всех, кто был когда-либо замечен в противоправных действиях, прежде всего потому, что логика работы именно таких систем наиболее похожа на узнавание человека человеком. Увы, в настоящее время именно системы аутентификации по чертам лица демонстрируют весьма посредственную точность опознания; однако их совершенствование идет полным ходом.
Удаленная аутентификация
Требования к аутентификации пользователя
компьютером повышаются, если необходимо
аутентифицироваться на удаленном
компьютере. Здесь применимы различные
протоколы удаленной
Простейший из них – протокол PAP (Password Access Protocol – протокол доступа по паролю). Информация, требуемая для аутентификации пользователя (т.е. его имя и пароль), просто передается по сети в открытом виде. Удаленный компьютер при необходимости выполняет описанные выше преобразования пароля и проверяет равенство полученного результата тому эталону, который соответствует данному пользователю.
Недостаток протокола очевиден
– злоумышленник, имеющий техническую
возможность перехвата
Протоколы строгой аутентификации
Существует целое семейство протоколов, в которых аутентификационная информация пользователя совсем не передается по сети, а лишь участвует в вычислениях, как на клиентской, так и на серверной стороне. По такому принципу lenge-Handshake Authentication Protocol – протокол аутентификации «запрос-ответ») и его версия от Microsoft – MS-CHAP. Протоколы «запрос – ответ» выполняются в несколько этапов.
Для шифрования случайного числа используется секретный ключ аутентифицируемого пользователя. Именно этот секретный ключ представляет собой аутентификационную информацию данного пользователя, его копия хранится на сервере в качестве эталона пользователя. Нетрудно заметить, что ни одна часть аутентификационной информации вообще не передается по сети, тем более в открытом виде. Аутентификация, в процессе которой используются криптографические методы, а аутентификационная информация не передается по сети, называется строгой.
В ряде случаев необходима взаимная аутентификация – взаимная проверка подлинности участников информационного обмена (когда не только сервер проверяет подлинность пользователя, но и наоборот). Протоколы «запрос – ответ» идеально подходят для взаимной аутентификации с некоторым дополнением (такой протокол часто называют «рукопожатием»).
Этап 1. Пользователь посылает серверу запрос на аутентификацию, содержащий его имя.
Этап 2. Сервер генерирует случайное число N1 и посылает его пользователю.
Этап 3. Пользователь зашифровывает случайное число N1: C1 = = E(N1), а также генерирует собственное случайное число N2. C1 и N2 пользователь посылает серверу.
Этап 4. Сервер расшифровывает C1 и сравнивает результат расшифрования с N1. Если числа равны, сервер считает пользователя подлинным. В этом случае сервер зашифровывает число N2: C2 = E(N2) и отправляет результат пользователю.
Этап 5. Пользователь расшифровывает C2 и сравнивает с N2. Если отправленное и полученное числа совпадают, то пользователь считает, что сервер успешно прошел проверку подлинности.
В подобных протоколах вместо симметричного шифрования может использоваться асимметричное шифрование или электронная цифровая подпись. В последнем случае в качестве эталонов пользователей на сервере хранятся их открытые ключи, которыми сервер проверяет не зашифрованное, а подписанное пользователем случайное число. Недостаток протоколов типа CHAP состоит в том, что, в отличие от PAP, на стороне пользователя необходимо наличие клиентского модуля, выполняющего предусмотренные протоколом действия.
Существуют и более «продвинуты
В программе происходит ведение списка пользователей, их идентификаторов (логинов) и паролей. Пароли хранятся в базе данных в виде хэш-кодов. Размер пароля ограничен снизу (не менее 8 символов). При вводе пароля он не отображается на экране.
Процесс аутентификации происходит в два этапа: сначала запрос логина, затем запрос пароля. Если проверка не прошла, пользователь не знает, что именно было неверно, логин или пароль. Данные последней попытки аутентификации не отображаются на экране при новой попытке.
Деление пользователей в программе происходит на администратора и обычных пользователей. Администратор имеет возможность редактирования списка пользователей и просмотра файла протокола, для пользователей эти функции недоступны. Администратор может быть зарегистрирован только один.
Для защиты от перехвата пароля с клавиатуры программами-шпионами (keylogger) выполнена реализация ввода логина и пароля через экранную клавиатуру.
Рисунок 4. Авторизация с помощью экранной клавиатуры
Рисунок 5. Символы пароля отображаются в виде звездочек
При вводе неверного логина или пароля появляется сообщение об ошибке (рис. 6).
Рисунок 6. Ошибка при вводе неверных данных
Если пользователь допустил 3 ошибки при вводе логина\пароля, происходит выход из программы.
Рисунок 7. Окно, возникающее при введении более 3х раз неверных данных при авторизации
Окно программы представляет собой окно сообщения, показывающее с какими правами пользователь вошел в систему, меню, в котором содержится кнопки «Файл», «Администрирование» (не отображается если пользователь вошел с правами пользователя) и «Справка». В меню «Файл» содержатся подпункты «Войти в программу заново» и «Выход». В меню «Администрирование», содержатся пункты «Пользователи» (при выборе которого можно удалить, создать или изменить имя и пароль пользователей (рис. 9)), и «Протокол регистраций», в котором содержаться данные о входивших в систему пользователей. Меню «Справка» содержит пункт «О программе», где можно прочитать информацию о составителе программного комплекса.
Рисунок 8. Главное окно программы при входе с правами администратора
Рисунок 9. Главное окно программы при входе с правами пользователя
Проверка пароля при его вводе пользователем осуществляется как вычисление хэш-кода от пароля, введенного пользователем, и его сравнения с хранящимся в базе данных хэш-кодом. Проверка логина заключается просто в его поиске в зарегистрированном списке.
Рисунок 10. Редактирование пользователей
Рисунок 11. Создание нового пользователя
Рисунок 12. Изменение пользователя
Рисунок 13. Окно, появляющееся при попытке удалить пользователя
Рисунок 14. Протокол попыток регистраций пользователей
Модуль обеспечивает доступ процедур программы к функциям хэширования.
unit HashUnit;
interface
uses Wcrypt2, Classes, Windows, SysUtils;
const HASH_LEN = 16; // длина хэша в алгоритме MD5 равна 16 байт
function GetHash(s: string; Provider: HCRYPTPROV): string;
implementation
function GetHash(s: string; Provider: HCRYPTPROV): string; // ф-ия получает строку s и возвращает её хэш-функцию
var
hHash: HCRYPTHASH; // дескриптор хэш-объекта
dwLen: DWORD; // длину пароля сюда пишем
Stream: TMemoryStream; // для получения значения хэша от хэш объекта
i: byte; // для цикла
bH: array[1..HASH_LEN] of byte; // для получения букв пароля в 16-ичном виде
begin
result:= '';
// создание хэш-объекта
CryptCreateHash(Provider, // созданный криптопровайдер
CALG_MD5, // алгоритм получения значения хеша - MD5я
0, // должен быть = 0
0, // должен быть = 0
@hHash); // ч/з этот параметр
ф-ия возвращает дескриптор
//передаем строку для вычсиления хэш кода
CryptHashData(hHash, // дескриптор ранее созданного хеш-объекта
PByte(s), // пароль
length(s), // длина пароля
0); // должен быть = 0
Stream:= TMemoryStream.Create;
dwLen:= HASH_LEN; // длина хэша в МД5 - 16 байт
Stream.SetSize(dwLen);
// формируем хэш-код
if CryptGetHashParam(hHash,
HP_HASHVAL, // тип запрашиваемого значения - хэш-значение
PByte(Stream.memory), // буфер с данными, в который запишется значение хэша
@dwLen, // размер буфера данных в байтах
0) // должен быть = 0
then begin
Stream.Read(bH, HASH_LEN);
for i:= 1 to HASH_LEN do
result:= result + Format('%.2x', [bH[i]]);
end;
Stream.Free;
CryptDestroyHash(hHash); // уничтожение хэш-объекта, созданного с помощью ф-ии CryptCreateHash
end;
end.
unit NewUserUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, ADODB;
const MIN_PASSWORD_LENGTH = 8; // минимальная длина пароля
type
TCreateUserForm = class(TForm)
LoginEdt: TLabeledEdit;
PwdPromtEdt: TLabeledEdit;
PwdEdt: TLabeledEdit;
OkBtn: TButton;
CancelBtn: TButton;
QAddUser: TADOQuery;
procedure OkBtnClick(Sender: TObject);
procedure LoginEdtChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
CreateUserForm: TCreateUserForm;
implementation
uses mainUnit, HashUnit, UsersUnit, wcrypt2;
{$R *.dfm}
procedure TCreateUserForm.OkBtnClick(
Информация о работе Использование криптографического интерфейса приложений Cryptoapi