48238 (Программа установки защищенных сетевых соединений с использованием протокола ISAKMP), страница 6

2016-07-29СтудИзба

Описание файла

Документ из архива "Программа установки защищенных сетевых соединений с использованием протокола ISAKMP", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48238"

Текст 6 страницы из документа "48238"

MEMADD (&DATA, &z0, 1));

PRF (state, &(state->SKEYID), &DATA, &(state->SKEYID_d));

MEMZERO(&DATA);

return 0;

}

Выше приведен пример расчета одной из рабочих констант.

Рассмотрим пример одной из реализации функций состояния. Состояние возьмем для инициатора, режим – Aggressive Mode, пакет – приход ответа от ответчика.

………………………….

case STATE (INITIATOR, AGGRESSIVE, ABSENT, 1):

if (state. LastPacket & PAYLOAD_SA)

{

Log (PAYLOAD_MALFORMED, &state, NULL);

goto THREAD_END;

}

answer = ProvePolicy (&MyISAKMPPolicy, &(state. AlienPolicy), &state);

if (answer==ERR_NOPROPOSAL)

{

Log (PAYLOAD_MALFORMED, &state, NULL);

goto THREAD_END;

}

switch (state. AuthMeth)

{

case 1: SET_MODE (state. State, PRESHARED); break;

case 2: SET_MODE (state. State, DSA_SIGN); break;

case 3: SET_MODE (state. State, RSA_SIGN); break;

case 4: case 5:

default:

Log (NOT_SUPPORTED, &state, NULL);

goto THREAD_END;

}

ONE_MORE = 1;

break;

……………………….

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

case STATE (INITIATOR, AGGRESSIVE, PRESHARED, 1):

ERR (CheckHash(&state));

ERR (CalculateEncKeysPhase1 (&state));

ERR (MakeISAKMP(&state));

ERR (MakeHash(&state));

ERR (SendPacket(&state, 0));

NOT_END = 0;

break;

Приведенный набор действий будет выполнен, если в предыдущем примере партнеры договорились о методе аутентификации с помощью заранее известного секретного ключа. На данном примере видны все три составляющих состояния. Сначала проходит аутентификация ответчика путем проверки значения Hash payload. Затем производится расчет ключевой информации для первой фазы. Завершают все функции создания компонент пакета и отсылка самого пакета. Так как это последний пакет со стороны инициатора, то значение состояния не изменяется и выставляется флаг, говорящий об окончании фазы.

Описанный принцип состояний использовался для написания логики повеления во всех обменах. Любая рабочая нить имела следующую структуру:

/* Инициализация нити */

while (NOT_END) {/* Проверка признака окончания работы */

if (GET_STEP (state. State)) /* Если это не первый пакет */

{

ERR (RecivePacket(&state)); /* Ожидание пакета */

ERR (DecryptPacket(&state)); /* Расшифрование пакета */

}

ONE_MORE = 1;

while (ONE_MORE) {/* Новый выбор без посылки пакета */

ONE_MORE = 0;

switch (state. State) {

case STATE (RESPONDER, AGGRESSIVE, ABSENT, 0):

case STATE (RESPONDER, MAIN, ABSENT, 0):

FreePolicy (state. AlienPolicy);

ERR (CheckPacket(&state));

ONE_MORE = 1;

break;

case STATE (RESPONDER, MAIN, RSA_SIGN, 0):

…….

state. State++; /* Следующий номер пакета */

break;

……………….

} /* switch */

} /* while (ONE_MORE) */

} /* while (NOT_END)

/* Действия выполняемые в конце нити */

Основу нити составляет цикл ожидания конца работы. Внутри нити сначала происходит ожидание пакета (если это не самое начало обмена), затем идет цикл, позволяющий проводит насколько выборов состояний. Затем идет непосредственно выбор состояния и выполнение соответствующих состоянию набора функций.

Тестирование функций реализации протокола должно проходить после реализации каждого состояния. В самом начале в тестах поможет утилита клиента, оставшаяся от тестов функций работы с сетью. Ею можно будет просматривать пакеты, если еще не созданы состояния для ответчика. Тестирование заключается в запускании процесса установления соединения (пусть даже оно заведомо не завершиться) и анализе информации выдаваемой программой в процессе работы на экран или в файл. В процессе тестирования могут быть обнаружены следующие типы ошибок. Программа просто не работает, т.е. присутствует некая ошибка исполнения программы. Если она не очевидна сразу, то ее поиск производится с помощью отладчика. Второй вариант – программа работает, но вырабатываются неправильные данные или есть неверная реакция на правильные данные. В большинстве случаев подобная ситуация решается анализом информации выдаваемой программой в процессе работы (лог). Если из существующего лога ошибка не находится, то можно сначала попробовать использовать более детальный лог. Если это не помогает, то используется отладчик, хотя использование этого метода для подобных ошибок может стать весьма времязанимающим занятием. После того, как какой-то этап, был протестирован на работу самим с собой можно, переходить на тестирование с другими реализациями протокола. Причем это делалось также после написания каждого состояния.

Тестирование с другими реализациями протокола ISAKMP

Во время написания и отладки моей программы, внешней реализацией для тестирования был выбран сайт www.ssh.fi, содержащий свою реализацию данного протокола. Данный сервер имеет хорошо разветвленную систему настроек политики чужой стороны, что позволяет определять посылаемый мне SA payload с точностью до атрибутов (что очень помогло при тестировании выбора приемлемых атрибутов). Также на сервере хорошо реализована система показа процесса работы программы. Расчет каждой величины предваряется перечислением входных данных и используемых алгоритмов. Это очень помогает при поиске ошибок, связанных с неправильным вычислением констант или неправильном использовании алгоритмов, когда видно, что входные данные те же, а результат другой.

Отладка с данной реализацией проводилась методом описанном в предыдущем разделе. Т.е. после каждого созданного состояния проводилось тестирование при разных входных данных.

Заключение

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

Технология реализации протокола ISAKMP

Исходя из технического задания, данная реализация протокола ISAKMP должна содержать 4 обмена (Main Mode, Aggressive Mode, New Group Mode и Quick Mode) и должна поддерживать 4 метода аутентификации (методом заранее известного секретного ключа, цифровой подписью с помощью алгоритмов DSS и RSA, шифрования открытым ключом с помощью алгоритма RSA). Весь процесс написания программы можно разбить на 6 частей:

  1. Подготовительная часть

  2. Реализация Main mode с методом аутентификации заранее известного секретного ключа

  3. Реализация Quick Mode

  4. Реализация остальных методов аутентификации для Main Mode

  5. Реализация Aggressive Mode со всеми методами аутентификации

  6. Реализация New Group Mode

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

Подготовительная часть

Подготовительная часть включает в себя написание вспомогательных модулей, которые можно выделить в отдельные задачи.

  • Реализация криптоалгоритмов. Включает в себя написание функции реализующих алгоритмы шифрования DES и Triple DES, алгоритмы хеширования MD5 и SHA и алгоритмы с открытым ключом RSA и DSA. Реализация включает в себя проверку правильности работы функций. Для алгоритмов шифрования сначала происходит проверка работы функций самих с собой (шифрование произвольный текст, расшифрование и проверка идентичность), затем проверка работоспособности с другими реализациями данного алгоритма и проверка тестовых последовательностей. Для алгоритмов хеширования возможна только проверка тестовых последовательностей.

  • Реализация алгоритма Diffie-Hellman. Включает в себя написание функций подсчета открытого ключа по известному секретному ключу и расчета общего ключа для любых заданных параметров алгоритма. Тестирование сначала производится между собой (расчет двух пар ключей, расчет общего ключа для обеих сторон и проверка идентичности), затем с другими реализациями данного алгоритма.

  • Работа с сетью. Включает в себя функции инициализации и закрытия портов, отсылки и приема пакетов. Тестирование заключается в проверке идентичности отправленных и полученных пакетов.

  • Конфигурация. Включает в себя считывание конфигурации из указанного файла, проверка ее правильности и заполнение, согласно ей, внутренних структур.

  • Лог. Включает в себя функции инициализации и записи в лог-файл. Функция записи пишется с расчетом на много нитевую программу.

  • Работа с буферами переменной длины. Сам буфер представляется в виде структуры. Функции реализуют следующие действия: создание, очистка, копирование в буфер и из него, добавление информации в буфер, распечатка, удаление. При тестировании следует написать тестовую программу, реализующую все требуемые действия.

  • Работа с сертификатами. Реализуются функции загрузки сертификата из файла, проверка правильности сертификата, получение информации из сертификатов. В список перечисленных действий не входит создание сертификатов, т.е. нам придется сертификаты, созданные третьей стороной. При тестировании происходит проверка работоспособности всех функций, причем все тесты должны проходить для сертификатов, полученных из разных мест.

  • Проверка структуры пакета. Протокол ISAKMP четко определяет структуру пакетов. Тестирование осуществляется путем ручного задания правильно и неправильно сформированных пакетов.

Часть из вышеперечисленных задач можно делать параллельно с выполнением основной задачи (например, работа с сертификатами нужно лишь при реализации методов аутентификации цифровой подписью и шифрованием открытым ключом).

Реализация Main mode c методом аутентификации заранее известного секретного ключа

Main mode состоит из 6-и посылок пакетов – 3 от каждой из сторон (инициатора и ответчика). Также здесь реализуется прием задания для стороны инициатора.

Реализация на данном этапе только одного из 4 методов аутентификации продиктовано желанием получить сначала работающую версию, а уже затем добавлять в нее необходимую функциональность. Не смотря на это, в программе учитываются все методы аутентификации, но вместо всех не нужных подставляются «заглушки».

Каждый из обменов реализуется сразу как для инициатора, так и для ответчика. После выполнения каждого из обменов происходит тестирование. Сначала пробуется работа двух реализаций, а затем тестируется работа с другой реализацией протокола.

Порядок реализации данного этапа следующий:

  1. Получение задания на установление соединения со стороны инициатора, проверка необходимости проведения первой фазы (возможно для данного партнера ISAKMP SA уже создана и тогда сразу переходим ко второй фазе);

  2. Составление и отсылка инициатором первого. Наиболее сложным здесь является запись политики заданной в конфигурационном файле в структуру пакета ISAKMP;

  3. Прием и разбор первого пакета ответчиком. Выбор из предложенной политики приемлемого варианта. Составление и отсылка второго пакета, содержащего выбранную политику;

  4. Прием и разбор второго пакета инициатором. Проверка корректности выбранной политики. Получение секретного и отрытого ключей для алгоритма Diffie-Hellman с параметрами, оговоренными в политике. Составление и отсылка третьего пакета, содержащего свой открытый ключ и Nonce – случайную последовательность для данного соединения;

  5. Прием и разбор третьего пакета ответчиком. Сохранение Nonce и открытого ключа инициатора, вычисление своей пары Diffie-Hellman ключей. Составление и отсылка четвертого пакета, содержащего открытый ключ и Nonce ответчика;

  6. Прием и разбор четвертого пакета инициатором. Вычисление общего ключа для алгоритма Diffie-Hellman с помощью своего секретного ключа и открытого ключа ответчика. Получение аутентифицирующей информации Составление пятого пакета, содержащего информацию, идентифицирующую и аутентифицирующую инициатора. Вычисление ключей шифрования. Шифрование полученного пакета с помощью алгоритмов, оговоренных в политике, и только что вычисленных ключей. Отсылка зашифрованного пакета;

  7. Прием пятого пакета ответчиком. Вычисление общего ключа для алгоритма Diffie-Hellman. Вычисление ключей шифрования. Расшифровка пакета и его разбор. Проверка идентифицирующей информации инициатора. Вычисление аутентифицирующей инициатора информации и сравнение со значением находящимся в пакете. Вычисление информации идентифицирующей и аутентифицирующей ответчика. Составление, шифрование и отсылка шестого пакета;

  8. Прием шестого пакета инициатором. Расшифровка пакета и проверка информации идентифицирующей и аутентифицирующей ответчика.

Результатом первой фазы становиться ISAKMP SA, которая включает в себя алгоритмы, о которых стороны договорились во время обмена политиками, и ключевая информация, которая считается при следующих обменах. ISAKMP SA используется для защиты всех последующих обменов.

Ошибки, всплывающие в процессе работы и при тестировании, можно разделить на ошибки влияющие на работоспособность программы (критические ошибки периода исполнения, ошибки доступа к ресурсам – т.е. когда программа прекращает свою работу) и ошибки связанные с реализацией протокола (неправильно составленный пакет, неправильный разбор пришедшего пакета и т.д.). Ошибки первого типа в основном обнаруживаются с помощью отладчика. Ошибки второго типа обнаружить сложнее, т. к. зачастую они скрываются в логике программы. Первым шагом при их поиске является тщательное изучение логов с обеих сторон, так как неправильная реакция на пришедший пакет на одной из сторон может быть вызвана не соблюдением правил составления пакета с другой стороны. Возможно, в процессе анализа потребуется сделать лог более подробным для всего процесса установления соединения или для отдельных моментов. В результате анализа лога должно быть найдено место, где программа повела себя неправильно. Если ошибка, вызвавшая это неправильное действие очевидна, то она исправляется. Иначе ее поиск продолжается, но уже с помощью отладчика.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5193
Авторов
на СтудИзбе
434
Средний доход
с одного платного файла
Обучение Подробнее