Протокол аутентификации — это тип протокола компьютерной связи или криптографического протокола, специально разработанного для передачи данных аутентификации между двумя субъектами. Он позволяет принимающему субъекту аутентифицировать подключающийся субъект (например, Клиент, подключающийся к Серверу), а также аутентифицировать себя подключающемуся субъекту (Серверу к Клиенту), объявляя тип информации, необходимой для аутентификации, а также синтаксис. [1] Это самый важный уровень защиты, необходимый для безопасной связи в компьютерных сетях.
С ростом объема достоверной информации, доступной по сети, возникла необходимость в защите этих данных от несанкционированного доступа. В компьютерном мире легко украсть чью-либо личность — пришлось изобрести специальные методы проверки, чтобы выяснить, является ли человек/компьютер, запрашивающий данные, тем, за кого себя выдает. [2] Задача протокола аутентификации — указать точную последовательность шагов, необходимых для выполнения аутентификации. Он должен соответствовать основным принципам протокола:
Иллюстрация аутентификации на основе пароля с использованием простого протокола аутентификации:
Алиса (субъект, желающий быть проверенным) и Боб (субъект, проверяющий личность Алисы) оба знают протокол, который они согласились использовать. У Боба есть пароль Алисы, сохраненный в базе данных для сравнения.
Это пример очень простого протокола аутентификации, уязвимого для многих угроз, таких как подслушивание , атака с повторным воспроизведением , атаки типа «человек посередине» , атаки по словарю или атаки методом подбора . Большинство протоколов аутентификации более сложны, чтобы быть устойчивыми к этим атакам. [4]
Протоколы используются в основном серверами Point-to-Point Protocol (PPP) для проверки подлинности удаленных клиентов перед предоставлением им доступа к данным сервера. Большинство из них используют пароль как краеугольный камень аутентификации. В большинстве случаев пароль должен быть заранее предоставлен взаимодействующим субъектам. [5]
Протокол аутентификации по паролю является одним из старейших протоколов аутентификации. Аутентификация инициализируется отправкой клиентом пакета с учетными данными (имя пользователя и пароль) в начале соединения, при этом клиент повторяет запрос аутентификации до тех пор, пока не будет получено подтверждение. [6] Он крайне небезопасен, поскольку учетные данные отправляются « в открытом виде » и многократно, что делает его уязвимым даже для самых простых атак, таких как подслушивание и атаки типа «человек посередине» . Несмотря на широкую поддержку, указано, что если реализация предлагает более сильный метод аутентификации, этот метод должен быть предложен до PAP. Смешанная аутентификация (например, один и тот же клиент попеременно использует и PAP, и CHAP) также не ожидается, поскольку аутентификация CHAP будет скомпрометирована отправкой PAP пароля в виде открытого текста.
Процесс аутентификации в этом протоколе всегда инициируется сервером/хостом и может быть выполнен в любое время в течение сеанса, даже многократно. Сервер отправляет случайную строку (обычно длиной 128 байт). Клиент использует пароль и полученную строку в качестве входных данных для хэш-функции, а затем отправляет результат вместе с именем пользователя в виде обычного текста. Сервер использует имя пользователя для применения той же функции и сравнивает вычисленный и полученный хэш. Аутентификация считается успешной, если вычисленный и полученный хэши совпадают.
EAP изначально был разработан для PPP (Point-to-Point Protocol), но сегодня широко используется в IEEE 802.3 , IEEE 802.11 (WiFi) или IEEE 802.16 как часть фреймворка аутентификации IEEE 802.1x . Последняя версия стандартизирована в RFC 5247. Преимущество EAP в том, что это всего лишь общий фреймворк аутентификации для аутентификации клиент-сервер - конкретный способ аутентификации определен в его многочисленных версиях, называемых EAP-методами. Существует более 40 EAP-методов, наиболее распространенными из которых являются:
Сложные протоколы, используемые в крупных сетях для проверки пользователя (аутентификация), управления доступом к данным сервера (авторизация) и мониторинга сетевых ресурсов и информации, необходимой для выставления счетов за услуги (учет).
Самый старый протокол AAA, использующий аутентификацию на основе IP без какого-либо шифрования (имена пользователей и пароли передавались в виде обычного текста). Более поздняя версия XTACACS (Extended TACACS) добавила авторизацию и учет. Оба эти протокола позже были заменены на TACACS+. TACACS+ разделяет компоненты AAA, поэтому их можно разделять и обрабатывать на отдельных серверах (он даже может использовать другой протокол, например, для авторизации). Он использует TCP (Transmission Control Protocol) для транспортировки и шифрует весь пакет. TACACS+ является собственностью Cisco.
Remote Authentication Dial-In User Service (RADIUS) — это полноценный протокол AAA , обычно используемый интернет-провайдерами . Учетные данные в основном основаны на комбинации имени пользователя и пароля, а для транспортировки используются протоколы NAS и UDP . [7]
Diameter (протокол) произошел от RADIUS и включает в себя множество улучшений, таких как использование более надежного транспортного протокола TCP или SCTP и более высокую безопасность благодаря TLS . [8]
Kerberos — это централизованная система сетевой аутентификации, разработанная в MIT и доступная в виде бесплатной реализации от MIT, а также во многих коммерческих продуктах. Это метод аутентификации по умолчанию в Windows 2000 и более поздних версиях. Сам процесс аутентификации намного сложнее, чем в предыдущих протоколах — Kerberos использует симметричную криптографию ключа , требует доверенной третьей стороны и может использовать криптографию с открытым ключом на определенных этапах аутентификации, если это необходимо. [9] [10] [11]