
3. Протокол аутентификации снар.
В протоколе CHAP используется секретный статический пароль. В отличие от протокола РАР, в протоколе CHAP пароль каждого пользователя для передачи по линии связи шифруется на основе случайного числа, полученного от сервера. Такая технология обеспечивает не только защиту пароля от хищения, но и защиту от повторного использования злоумышленником перехваченных пакетов с зашифрованным паролем. Протокол CHAP применяется в современных сетях гораздо чаще, чем РАР, так как он использует передачу пароля по сети в защищенной форме и, следовательно, гораздо безопаснее.
Шифрование пароля в соответствии с протоколом CHAP выполняется с помощью криптографического алгоритма хэширования и поэтому является необратимым. В стандарте RFC 1334 для протокола CHAP в качестве хэш-функции определен алгоритм MD5, вырабатывающий из входной последовательности любой длины 16-байтовое значение. Хотя минимальной длиной секрета является один байт, для повышения криптостойкости рекомендуется использовать секрет длиной не менее 16 байт. Спецификация CHAP не исключает возможность использования других алгоритмов вычисления хэш-функций.
Для инициализации процесса аутентификации по протоколу CHAP сервер удаленного доступа после установления сеанса связи должен выслать удаленному компьютеру пакет LCP, указывающий на необходимость применения протокола CHAP, а также требуемого алгоритма хэширования. Если удаленный компьютер поддерживает предложенный алгоритм хэширования, то он должен ответить пакетом LCP о согласии с предложенными параметрами. В противном случае выполняется обмен пакетами LCP для согласования алгоритма хэширования.
После этого начинается аутентификация на основе обмена пакетами протокола CHAP. Каждый пакет протокола CHAP включает четыре поля (рис.1):
код (code) - указывает тип пакета;
идентификатор (identifier) - содержит уникальное число, которое позволяет определить, какому запросу соответствует полученный ответ;
длина (length) - указывает длину пакета в байтах;
данные (data) - длина и формат этого поля определяются типом пакета CHAP.
Поле Код имеет длину в один октет и идентифицирует тип пакета CHAP.
В протоколе CHAP определены пакеты четырех типов (поле код):
Вызов (Challenge);
Отклик (Response);
Подтверждение (Success);
Отказ (Failure).
Поле Идентификатор имеет в длину один октет. С помощью этого поля происходит идентификация пакета CHAP. Затем клиент и хост по этому идентификатору могут согласовывать свои запросы и ответы на них.
Поле Длина составляет два октета. Это поле используется для задания длины пакета CHAP. Длина пакета считается с учетом полей Код, Идентификатор, Длина и Данные.
Поле Данные может быть нулевой длины или несколько октетов в длину. В него включаются данные, состав которых зависит от типа пакета CHAP.
Рис.1 Формат пакета протокола CHAP
Протокол CHAP использует для аутентификации удаленного пользователя результат шифрования произвольного слова-вызова с помощью уникального секрета. Этот секрет имеется как у проверяющей, так и у проверяемой стороны.
Шаги процесса аутентификации по протоколу CHAP представлены на рис.2.
Процедура аутентификации начинается с отправки сервером удаленного доступа пакета Вызов.
Поле данных в пакете Вызов содержит:
произвольную числовую последовательность, которая должна быть уникальной для каждого посланного пакета Вызов, а также длину этой последовательности в байтах;
идентификатор проверяющей стороны.
Удаленный компьютер, получив пакет Вызов, зашифровывает его с помощью односторонней функции и известного ему секрета, получая в результате дайджест. Дайджест возвращается проверяющей стороне в виде пакета Отклик.
Поле данных в этом пакете содержит следующие элементы:
результат применения согласованного алгоритма хэширования к информационной структуре, состоящей из идентификатора проверяющей стороны и числовой последовательности из пакета Вызов, а также секретного пароля удаленного пользователя;
идентификатор проверяемой стороны, который может быть использован для того, чтобы проверяющая сторона могла отыскать в своей базе данных соответствующую пару идентификатор—секретный пароль.
Длина результата хэширования зависит от применяемой хэш-функции. Для алгоритма MD5 длина хэш-кода, а сответственно, и результата хэширования равна 128 бит. Так как используется односторонняя хэш-функция, то по перехваченным пакетам Вызов и Отклик вычислить пароль удаленного пользователя практически невозможно.
Получив пакет Отклик, сервер удаленного доступа по идентификатору проверяемой стороны извлекает из базы данных системы защиты секретный эталонный пароль пользователя и выполняет согласованный алгоритм хэширования над информационной структурой, состоящей из его идентификатора и числовой последовательности, которые были посланы в пакете Вызов, а также секретного эталонного пароля. Далее сервер сравнивает содержимое результата из полученного пакета Отклик с результатом, вычисленным самостоятельно. Если эти результаты совпадают, то аутентификация считается успешной и сервер высылает удаленному компьютеру пакет Подтверждение.
В противном случае сервер удаленного доступа высылает пакет Отказ и разрывает сеанс связи. Поле данных в пакете Подтверждение и пакете Отказ включает соответствующее сообщение, содержание которого протоколом CHAP не устанавливается.
Рис.2 Шаги процесса аутентификации по протоколу CHAP.
Пакет Вызов должен быть отправлен сервером повторно, если в ответ на него не был получен пакет Отклик. Кроме того, пакет Вызов может отправляться периодически в течение сеанса удаленной связи для проведения динамической аутентификации, чтобы убедиться, что противоположная сторона не была подменена. Соответственно, пакет Отклик должен отправляться проверяемой стороной в ответ на каждый принятый пакет Вызов.
Для защиты от перехвата ответа сервер удаленного доступа должен использовать различные значения слова-вызова при каждой следующей аутентификации. Из схемы аутентификации по протоколу CHAP становится понятно, что числовая последовательность в пакете Вызов должна быть уникальной и непредсказуемой. Если данная последовательность не будет уникальной, то злоумышленник сможет повторно использовать перехваченный ранее пакет Отклик, маскируясь под санкционированного удаленного пользователя.
Для того чтобы числовая последовательность в пакете Вызов была уникальной и непредсказуемой, в большинстве реализаций протокола CHAP она формируется как конкатенация двух элементов - текущего времени, включая время в секундах, дату и год, а также сгенерированного случайного числа.
При аутентификации по протоколу CHAP иногда возникают проблемы несовместимости узлов сети, которые порождаются использованием нестандартных функций вычисления дайджеста. Например, компания Microsoft реализовала собственный вариант протокола, названный ею MS-CHAP, в котором используется дайджест-функция, отличная от MD5. И если сервер удаленного доступа Microsoft RAS сконфигурирован на собственный зашифрованный вариант аутентификации при удаленном доступе (выбрана опция Microsoft encrypted authentication), то удаленные пользователи, работающие со стандартным клиентским программным обеспечением РРР, не смогут пройти аутентификацию на этом сервере.