Применение компьютерной системы для изучения протоколов идентификации и аутентификации

 

При исследовании схемы идентификации и аутентификации с помощью процедуры рукопожатия будем использовать следующие алгоритмы:

· для шифрования и дешифрования случайного значения S — алгоритм симметричного шифрования DES;

· для получения хэш значения от S — алгоритм вычисления дайджеста (профиля) сообщения MD5.

Рассмотрим криптографические блоки, реализующие функции получения дайджеста. Построение классов, реализующих хэш-функции, базируется на наборе стандартных функций определенных в классе BaseHash.

Класс BaseHash предоставляет пользователю следующие функции:

· void reset() — выполняет сброс внутренних данных для последующего получения хэш-значений;

· boolean compare(byte dig1[],byte dig2[]) — выполняет сравнение двух хэш-значений и возвращает истинное значение, если значения равны, иначе — ложное значение.

В данном классе также определены абстрактные функции, которые реализуются в классах-потомках.

Алгоритм хэширования MD5 реализован в виде класса MD5.

Основные функции класса MD5:

· MD5() — конструктор;

· void update(byte[] b, int offset, int len) — выполняет установку исходных данных для получения хэш-значения, offset — смещение в буфере данных b, len — длина данных;

· byte[] digest() — возвращает дайджест данных, установленных с помощью функции update, данные возвращаются в виде 16-байтового массива;

· byte[] convertBytes(byte d[]) — преобразует данные из 16-байтового массива в бинарный массив из 128 байт, где каждый байт определяет значение одного бита.

Для удобства получения хэш-значений разработаны статические методы:

· byte[] digest(String s) — возвращает дайджест строки s в виде бинарного массива из 128 байт;

· byte[] digest(byte b[]) — возвращает дайджест бинарных данных b в виде бинарного массива из 128 байт.

Пример получения дайджеста сообщения:

byte data[]= Binary.setFromHex("BBBB CCCC 4444 6666")

byte digest[]=MD5.digest(data);

Рассмотрим задачу идентификации и аутентификации субъекта B при обращении к ресурсу А.

Статическая модель представлена на рисунке 6.2.1.

 

Рисунок 6.2.1 — Статическая модель схемы для изучения схемы идентификации и аутентификации

 

 

Процессы, представляющие собой субъекты и ресурсы, выполняют взаимодействие по каналам передачи данных:

· канал передачи идентификатора от процесса А процессу В;

· канал передачи криптограммы случайной последовательности S от процесса А процессу В;

· канал передачи криптограммы дайджеста последовательности S от процесса В процессу А, полученной путем применения шифрования к значению односторонней функции от S.

 

Диаграмма взаимодействия процессов представлена на рисунке 6.2.2.

 

 

Рисунок 6.2.2 — Диаграмма взаимодействия процессов для изучения схемы идентификации и аутентификации

 

В области данных процесса А определим следующие переменные:

 

int id=1;

byte key[]=Binary.setFromHex("BBBB CCCC 4444 6666");

byte s[];

где s — переменная для хранения случайной последовательности S;

key — ключ процесса А;

id —идентификатор процесса А.

 

В области данных процесса В определены переменные:

 

BinaryVector ids=new BinaryVector();

byte key[];

byte s[];

где ids — список ключей для идентификаторов;

key — переменная для хранения ключа, соответствующего идентификатору процесса А;

s — переменная для хранения случайной последовательности.

 

 

Для управления процессами передачи сообщений у процесса А определены методы:

· sendId — выполняет отправку идентификатора процесса А;

· sendES — выполняет генерацию последовательности S, шифрование и отправку криптограммы процессу В.

 

У процесса В определен метод sendAS, выполняющий формирование дайджеста последовательности S, шифрование и отправку результата процессу А.

 

Определения методов процесса А приведено в таблице 6.2.1.

 

 

Таблица 6.2.1 — Методы процесса А

 

Метод Определение метода
sendId send("id_out",new Integer(id));
sendES s=Binary.random(64); byte es[]=DES.encode(key,s); send("es_out",es);
onRecieve if (hasMoreData("as_in")) {        byte ds[]=MD5.digest(s);   byte as_r[]=(byte[])recv("as_in");   DES des = new DES(); des.setKey(key); byte ds_r[] = des.decodeData(as_r,BlockCipher.MODE_ECB);   if (BaseHash.compare(ds,ds_r)) logMessage("B подлинный"); else logMessage("B ложный"); }

 

 

Определения методов процесса В представлены в таблице 6.2.2.


 

Таблица 6.2.2 — Методы процесса В

 

Метод Определение метода
onCreate ids.put(Binary.setFromHex("AAAA 1111 2222 3333"),0); ids.put(Binary.setFromHex("BBBB CCCC 4444 6666"),1);
onRecieve if (hasMoreData("id_in")) {  int id=((Integer)recv("id_in")).intValue(); key=ids.get(id); } else if (hasMoreData("es_in")) { byte es[]=(byte[])recv("es_in"); s=DES.decode(key,es);  }
SendAS byte ds[]=MD5.digest(s); DES des = new DES(); des.setKey(key); byte as[] = des.encodeData(ds,BlockCipher.MODE_ECB); send("as_out",as);

 

Для моделирования описанного протокола требуется выполнить действия:

 

а) запустить сервер моделирования;

 

б) запустить клиент моделирования для процесса А;

 

в) запустить клиент моделирования для процесса В;

 

г) запустить метод процесса А sendId;

 

д) запустить метод процесса А sendES;

 

е) запустить метод процесса В sendAS.

 

    В результате будет получено сообщение о проверке подлинности процесса В. Для проверки подлинности процесса А требуется дополнить модель аналогичной схемой.

 


Выполнение работы

 

1. Определить модель схемы идентификации и аутентификации, указанную в разделе 6.2.

2. Выполнить моделирование схемы идентификации и аутентификации. Зафиксировать результат аутентификации и промежуточные данные.

3. Изменить идентификатор процесса А на 0 в области данные процесса А. Провести повторное моделирование и зафиксировать результат и промежуточные данные.

4. Расширить модель аутентификацией процесса А и зафиксировать результат.

 

Содержание отчета

 

Отчет выполняется один на бригаду и должен включать:

 

1. Наименование и цель работы.

2. Краткие теоретические сведения.

3. Статическую модель согласно варианта.

4. Окна редактирования ресурсов, субъектов, угроз, уязвимостей, средств защиты.

5. Анализ защищенности

6. Выводы.


 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: