7. Прием пятого пакета ответчиком. Вычисление общего ключа для алгоритма Diffie-Hellman. Вычисление ключей шифрования. Расшифровка пакета и его разбор. Проверка идентифицирующей информации инициатора. Вычисление аутентифицирующей инициатора информации и сравнение со значением находящимся в пакете. Вычисление информации идентифицирующей и аутентифицирующей ответчика. Составление, шифрование и отсылка шестого пакета;
8. Прием шестого пакета инициатором. Расшифровка пакета и проверка информации идентифицирующей и аутентифицирующей ответчика.
Результатом первой фазы становиться ISAKMPSA, которая включает в себя алгоритмы, о которых стороны договорились во время обмена политиками, и ключевая информация, которая считается при следующих обменах. ISAKMP SA используется для защиты всех последующих обменов.
Ошибки, всплывающие в процессе работы и при тестировании, можно разделить на ошибки влияющие на работоспособность программы (критические ошибки периода исполнения, ошибки доступа к ресурсам – т.е. когда программа прекращает свою работу) и ошибки связанные с реализацией протокола (неправильно составленный пакет, неправильный разбор пришедшего пакета и т.д.). Ошибки первого типа в основном обнаруживаются с помощью отладчика. Ошибки второго типа обнаружить сложнее, т. к. зачастую они скрываются в логике программы. Первым шагом при их поиске является тщательное изучение логов с обеих сторон, так как неправильная реакция на пришедший пакет на одной из сторон может быть вызвана не соблюдением правил составления пакета с другой стороны. Возможно, в процессе анализа потребуется сделать лог более подробным для всего процесса установления соединения или для отдельных моментов. В результате анализа лога должно быть найдено место, где программа повела себя неправильно. Если ошибка, вызвавшая это неправильное действие очевидна, то она исправляется. Иначе ее поиск продолжается, но уже с помощью отладчика.
После написания всех трех обменов происходит тестирования Mainmode в целом. Сначала тестируется работа двух реализаций программы в роли и инициатора и ответчика. Затем тестируется совместимость с другими реализациями протокола (в процессе разработки для тестирования совместимости использовался сервер www.ssh.fi). Тестирование включает в себе проведение одиночного соединения и сразу нескольких (причем каждая из сторон в разных соединениях играет разную роль), проведение удачных и неудачных соединений. Также в процессе тестирования проверяется одинаковая работа программы на разных процессорах (SunSparc и Intelx86).
Реализация Quickmode
Quick Mode, представляющий собой вторую фазу установления соединения, состоит из 3-х посылок пакетов – две со стороны инициатора и одна со стороны ответчика. Порядок разработки и тестирования такой же, как на предыдущем этапе. Данный режим проходит под защитой ISAKMPSA, полеченной во время первой фазы.
На этом этапе сначала реализуется рабочий минимум (т.е. без повторного обмена ключевой информацией и посылки идентификационной информации), а затем, когда этот минимум будет полностью оттестирован, доделываются остальные части. Таким образом, порядок реализации данного этапа будет следующим:
1. Получение инициатором из конфигурационного файла политики для второй фазы. Составление первого пакета, содержащего предлагаемую политику и Nonce. Вычисление значения хэш-функции от пакета, добавление этого значение в пакет и шифрование пакета. Отсылка пакета ответчику.
2. Прием пакета, расшифрование и проверка целостности путем вычисления значение хеш-функции от пакета и сравнение с присланным значением. Выбор из присланной политики приемлемого варианта политики. Составление второго пакета, содержащего выбранную политику и свой Nonce. Вычисление значения хеш-функции от пакета, шифрования пакета и отсылка его инициатору.
3. Прием инициатором второго пакета. Расшифрование пакета и проверка целостности. Проверка корректности выбранного варианта политики. Вычисление значения хеш-функции от Nonce-ов. Составление третьего пакета, его шифрование и отсылка ответчику. Вычисление выходных результатов.
4. Прием ответчиком третьего пакета. Расшифровка пакета, вычисление значения хеш-функции от Nonce-ов и сравнение с присланным значением. Вычисление выходных результатов.
5. Если в конфигурации указана необходимость в обмене ключами осуществить расчет пар ключей с каждой из сторон, обмен открытыми ключами и получение общего ключа аналогично тому, как это делалось на предыдущем этапе. Также учесть наличие общего ключа при расчете выходных результатов.
6. Если в конфигурации указана необходимость посылки идентификационной информации, то со стороны инициатора обеспечить включение этой информации в первый пакет, а со стороны ответчика ее проверку.
Все мероприятия связанные с тестированием проводятся также как и на первом этапе. Должны проводиться тесты после реализации каждого взаимного обмена и финальные тесты, включающие в себя одновременное проведение нескольких соединений, использование различных конфигураций (провести вторую фазу в разных объемах), тестирование с другими реализациями протокола и тестирование работы программы на разных процессорах.
Реализация остальных методов аутентификации для Mainmode
На данном этапе добавляются возможные методы аутентификации для первой фазы. Все эти методы используют алгоритмы шифрования с открытым ключом и сертификаты как способ передачи открытых ключей. Следует заметить, что необходимость в функциях работы с сертификатами и реализациях алгоритмов DSA и RSA встречается впервые именно на этом этапе, что позволяет распараллелить работы над этими задачами.
Как и на предыдущих этапах, сначала реализуется рабочий минимум, который включает в себя собственно вычисление и проверку аутентификационной информации, затем добавить возможности обмена сертификатами.
Порядок реализации данного этапа следующий:
1. Реализация ветвления по разным методам аутентификации в зависимости от договоренной политики;
2. Реализация методов аутентификации с помощью подписи алгоритмами DSA и RSA. Включает в себя вычисление подписи каждой из сторон для специально вычисляемого значения хеш-функции и проверка подписи на другой стороне. Сертификаты для проверки подписи другой стороны задаются явно.
3. Реализация метода аутентификации шифрованием открытым ключом алгоритмом RSA. Сертификаты для расшифрования также задаются явно.
4. Реализация обмена сертификатами. Включает в себя реализацию запроса сертификата другой стороны и отсылку своего сертификата на запрос и без запроса. Информация о том надо ли отсылать свой сертификат, запрашивать ли чужой и т.п. берется из конфигурационного файла.
После реализации данного этапа проходит тот же набор тестов, что проводился по окончанию второго этапа. Но в данном случае делается упор на правильность работы именно вновь добавленных методов аутентификации. Особое внимание уделяется правильной диагностике ошибок возникающих при не нахождении сертификатов и получении сертификат, чей тип отличается от ожидаемого значения.
Реализация Aggressivemode со всеми методами аутентификации
На этом этапе реализуется другой режим для проведения первой фазы. От Mainmode его отличает меньшее количество посылаемых пакетов, но вместе с этим большее количество информации передаваемых в пакетах и большая трудоемкость при их обработке. Реально данный режим реализуется на основе кода написанного для Mainmode путем перестановки основных функций, но при этом надо помнить, что простая перестановка не поможет и требуется некий дополнительный анализ. Например, в политике, передаваемой инициатором, не может быть предложен выбор между различными Oakley группами, т. к. в этом же пакете посылается публичный ключ однозначно определяющий группу. Все подобные проверки должны проводиться для AggressiveMode.
Порядок реализации этапа следующий:
1. Реализация ветвления между Main и Aggressive режимами. Для инициатора вид режима определяется конфигурацией. Ответчик проверяет приемлемость предложенного режима, также основываясь на конфигурации и, в случае не приемлемого значения, может отказаться продолжать обмены. Инициатор должен в этом случае уметь предложить другой режим, конечно, если это позволяет реализация.
2. Реализация метода аутентификации заранее известного секретного ключа. После реализации проводят тесты, проводимые на втором этапе, но с использованием Aggressivemode.
3. Реализация остальных методов аутентификации. Этапы реализации и тесты аналогичны такие же, как на четвертом этапе.
Как уже упоминалось выше, тесты во время разработки и по ее окончанию аналогичны тестам проводимых на втором и четвертом этапах, но с упором на использование различных режимов в первой фазе. Особо стоит обратить внимание на повторную попытку инициатора провести соединение в другом режиме после отказа со стороны ответчика.
Реализация NewGroupMode
Данный режим предназначен для согласования нестандартных Oakley групп и заключается лишь в обмене политиками. Но основная сложность заключается во встраивании использования этого режима и правильном использовании результатов работы режима во второй фазе. Сам режим, также как и Quickmode, проходит под защитой ISAKMPSA.
Порядок реализации этапа следующий:
1. Реализация со стороны инициатора ответвления на NewGroupmode в зависимости от конфигурации. Должна быть предусмотрена проверка существования уже созданной нестандартной Oakley группы.
2. Создания инициатором пакета содержащего информацию о предлагаемой группе, подсчет значения хеш-функции от этого пакета, шифрования пакета (с помощью алгоритмов и ключей из ISAKMPSA) и отсылка пакета;
3. Получение пакета, его расшифровка и проверка целостности. Проверка приемлемости предлагаемой группы. Составление ответного пакета, подсчет значения хеш-функции, шифрование и отсылка этого пакета. Сохранение информации о группе для второй фазы;