![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Применение компьютерной системы для изучения протоколов идентификации и аутентификации
При исследовании схемы идентификации и аутентификации с помощью процедуры рукопожатия будем использовать следующие алгоритмы: · для шифрования и дешифрования случайного значения 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 — Методы процесса А
Определения методов процесса В представлены в таблице 6.2.2.
Таблица 6.2.2 — Методы процесса В
Для моделирования описанного протокола требуется выполнить действия:
а) запустить сервер моделирования;
б) запустить клиент моделирования для процесса А;
в) запустить клиент моделирования для процесса В;
г) запустить метод процесса А sendId;
д) запустить метод процесса А sendES;
е) запустить метод процесса В sendAS.
В результате будет получено сообщение о проверке подлинности процесса В. Для проверки подлинности процесса А требуется дополнить модель аналогичной схемой.
|