EAP
EAP[1] (англ. Extensible Authentication Protocol, Расширяемый Протокол Аутентификации) — фреймворк аутентификации, который часто используется в беспроводных сетях и соединениях точка-точка. Формат был впервые описан в RFC 3748 и обновлён в RFC 5247.
EAP используется для выбора метода аутентификации, передачи ключей и обработки этих ключей подключаемыми модулями называемыми методами EAP. Существует множество методов EAP, как определенных вместе с самим EAP, так и выпущенных отдельными производителями. EAP не определяет канальный уровень, он только определяет формат сообщений. Каждый протокол использующий EAP имеет собственный протокол инкапсуляции сообщений EAP.
EAP довольно популярный формат, он используется в IEEE 802.11 (WiFi), около ста методов EAP из IEEE 802.1X были приняты в качестве официальных механизмов аутентификации в стандартах WPA и WPA2.
Схема протокола
В процессе аутентификации можно выделить три основных участника процесса:
- Аутентификатор (англ. authenticator) — участник процесса требующий провести аутентификацию (WiFi точка доступа, сетевой коммутатор и т. д.).
- Узел или клиент (англ. peer) — участник процесса который будет аутентифицирован (компьютер, ноутбук, телефон и т. д.).
- Сервер аутентификации (англ. authentication server) — участник процесса способный по некоторым данным от узла аутентифицировать его.
В некоторых случаях сервер аутентификации и аутентификатор могут быть одним устройством, например домашние устройства использующие метод EAP-PSK. В целом процесс аутентификации происходит следующим образом:
- Клиент отправляет EAP-запрос для начала своей аутентификации. Запрос в поле Type содержит в себе информацию о том, какой метод будет использоваться (EAP-TLS, EAP-PSK и т. д.). Клиент не обязательно шлёт этот запрос, например, если аутентификация на порту, к которому подключен клиент, не обязательна, в таком случае для начала процедуры аутентификации клиент должен послать пакет с полем Code, соответствующим типу Initiate.
- Аутентификатор посылает клиенту EAP-ответ в случае правильного запроса от клиента. Ответ содержит в себе поле Type, соответствующее полю Type в запросе.
- Аутентификатор посылает запрос серверу аутентификации, передавая информацию о том, какой метод аутентификации используется.
- Сервер аутентификации запрашивает у клиента необходимую информацию через аутентификатор, в этот момент аутентификатор фактически работает как прокси.
- Клиент отвечает серверу, передавая запрашиваемую информацию. Пункт 4 и 5 повторяются до тех пор, пока сервер аутентификации не примет решение о разрешении доступа, запрете или ошибке.
- Сервер аутентификации посылает аутентификатору пакет, сообщающий о успехе или сбое аутентификации.
- Аутентификатор посылает клиенту EAP пакет с кодом, соответствующим ответу сервера аутентификации (EAP-Success или EAP-Failure).
Сводная таблица кодов пакетов EAP:
Код | Название | Описание |
---|---|---|
0 | Undefined | Не используется |
1 | Request | Используется для начала процесса аутентификации аутентификатором, содержит в себе информацию о поддерживаемых методах EAP. |
2 | Response | Используется для подтверждения начала аутентификации клиентом. |
3 | Success | Используется для сообщения клиенту о успешной аутентификации. |
4 | Failure | Используется для сообщения клиенту о провале аутентификации. |
5 | Initiate | Используется клиентом чтобы «попросить» аутентификатор начать процесс аутентификации. |
Методы
Поскольку EAP является фреймворком аутентификации, а не конкретным механизмом[2], он обеспечивает некоторые общие функции и согласование методов проверки подлинности (методы EAP). В настоящее время определено около 40 различных методов. Обычно методы определяются в IETF, например: EAP-MD5, EAP-POTP, EAP-GTC, EAP-TLS, EAP-IKEv2, EAP-SIM, EAP-AKA и EAP-AKA'. Также существуют методы и предложения конкретных поставщиков решений и производителей оборудования. Обычно используются современные методы, способные работать в беспроводных сетях, к примеру: EAP-TLS, EAP-SIM, EAP-AKA, LEAP и EAP-TTLS. Требования к методам, используемым в беспроводных сетях, описаны в RFC 4017. Этот стандарт также описывает, при каких условиях может быть использован метод управления ключами AAA, описанный в RFC 4962.
LEAP
Облегченный расширяемый протокол аутентификации (англ. Lightweight Extensible Authentication Protocol), метод, разработанный компанией Cisco до ратификации IEEE стандарта безопасности 802.11i[3]. Cisco распространил протокол через CCX (Cisco Certified Extensions) как часть протокола 802.1X и динамического WEP из-за отсутствия отдельного промышленного стандарта в индустрии. В операционных системах семейства Windows отсутствует встроенная поддержка протокола LEAP[4], однако поддержка протокола широко распространена в сторонних программах-клиентах (чаще всего идущих в комплекте с беспроводным оборудованием). Поддержка LEAP в Windows может быть добавлена путём установки клиентского ПО компании Cisco, которое обеспечивает поддержку протоколов LEAP и EAP-FAST. Многие другие производители WLAN оборудования также поддерживают протокол LEAP из-за его высокой распространённости.
LEAP использует модифицированную версию протокола MS-CHAP — слабо защищённого протокола аутентификации, информация о пользователе и пароле в котором легко компрометируется; в начале 2004 года Джошуа Райтом был написан эксплойт протокола LEAP, названный ASLEAP[5]. Взлом основан на том, что, во-первых, все элементы запроса и ответа, помимо хеша пароля, передаются в незашифрованном виде или легко рассчитываются на основе данных, которые отправляются по сети. Это означает, что злоумышленнику типа человек посередине получения хеша пароля будет достаточно, чтобы повторно авторизоваться. Во-вторых, создание ключей является потенциально слабым. Дополнение 5 байт нулями означает, что последний ключ имеет ключевое пространство 216. Наконец, один и тот же исходный текст шифруется с помощью двух ключей (при отправке хеша серверу и при ответе), что означает, что сложности 256 достаточно, чтобы взломать оба ключа. После того, как злоумышленник имеет все ключи, он получает хеш пароля, которого достаточно для повторной аутентификации (подробнее в MS-CHAP).
Cisco рекомендует заказчикам, которые не могут отказаться от использования LEAP, использовать сложные пароли, хотя сложные пароли трудно вводить, запоминать и контролировать соблюдение требований сложности. Последняя рекомендация Cisco заключается в том, чтобы использовать новые и более защищённые протоколы EAP, такие как EAP-FAST, PEAP или EAP-TLS.
EAP-TLS
Безопасность Транспортного Уровня (англ. Transport Layer Security), метод определен в RFC 5216, является открытым стандартом и использует протокол TLS. Метод аутентифицирует как клиента, так и сервер (то есть является методом взаимной аутентификации). Хорошо поддерживается производителями беспроводного оборудования. EAP-TLS был первым стандартом беспроводной версии протокола аутентификации LAN EAP.
EAP-TLS до сих пор считается одним из самых безопасных стандартов, при условии, что пользователь понимает риск использования ложных учётных данных, и поддерживается практически всеми производителями беспроводного оборудования и разработчиками сетевого ПО. До апреля 2005 года EAP-TLS был единственным методом, поддержка которого была необходима для прохождения сертификации соответствия стандартам WPA или WPA2[1].
Встроенная поддержка этого метода есть во всех операционных системах семейства Windows (начиная с Windows 2000 SP4), Linux и Mac OS X (с версии 10.3).
В отличие от многих других реализаций TLS, например в HTTPS, большинство реализаций EAP-TLS требует предустановленного сертификата X.509 у клиента, не давая возможности отключить требование, хотя стандарт не требует этого в обязательном порядке[6][7]. Это могло помешать распространению «открытых», но зашифрованных точек беспроводного доступа[6][7]. В августе 2012 года hostapd и wpa_supplicant была добавлена поддержка UNAUTH-TLS — собственного метода аутентификации EAP[8] и 25 февраля 2014 добавлена поддержка WFA-UNAUTH-TLS, метода аутентификации, аутентифицирующий только сервер[9][10]. Это позволит работать через EAP-TLS так же, как через HTTPS, где беспроводная точка доступа даёт возможность свободного подключения (то есть не требует проверки подлинности клиентов), но при этом шифрует трафик (IEEE 802.11i-2004, то есть WPA2) и позволяет пройти аутентификации при необходимости. В стандартах также содержатся предложения по использованию IEEE 802.11u в точках доступа, чтобы сигнализировать о доступности метода EAP-TLS, аутентифицирующего только сервер, используя стандартный протокол EAP-TLS IETF, а не стороннего метода EAP[11].
Требование предустановленного сертификата на стороне клиента — одна из причин высокой защищённости метода EAP-TLS и пример «жертвования» удобства в пользу безопасности. Для взлома EAP-TLS недостаточно скомпрометировать пароль пользователя, для успешной атаки злоумышленнику также потребуется завладеть соответствующим пользователю сертификатом клиента. Наилучшей безопасности можно добиться, храня сертификаты клиентов в смарт-картах.[12]
EAP-TTLS
Tunneled Transport Layer Security (Безопасность Транспортного Уровня через Туннель), метод EAP, расширяющий возможности метода TLS. Он разработан компаниями Funk Software и Certicom и довольно хорошо поддерживается большинством платформ (Windows с версии 8, а Windows Mobile с версии 8.1[13][14]).
Клиент может (но не обязан) быть аутентифицирован сервером при помощи подписанного Центром Сертификации PKI-сертификатом. Необязательность аутентификации клиента сильно упрощает процедуру настройки, так как нет необходимости генерировать и устанавливать на каждый из них индивидуальный сертификат.
После того, как сервер аутентифицирован клиентом при помощи сертификата, подписанного Центром Сертификации и, опционально, клиент-сервером, сервер может использовать получившееся защищённое соединение (туннель) для дальнейшей аутентификации клиента. Туннель позволяет использовать протоколы аутентификации, рассчитанные на каналы, не защищённые от атаки MITM и от «прослушки». При использовании метода EAP-TTLS никакая информация, используемая для аутентификации, не передается в открытом виде, что ещё больше затрудняет взлом.
EAP-PSK
Pre-Shared Key (Заранее известный ключ), метод определённый в RFC 4764, использующий для взаимной аутентификации и обмена сессионным ключом заранее оговорённый ключ. Метод разработан для работы в незащищённых сетях, таких как IEEE 802.11, и в случае успешной аутентификации обеспечивает защищённое двустороннее соединение между клиентом и точкой доступа.
EAP-PSK задокументирован в экспериментальной RFC и обеспечивает лёгкий и расширяемый EAP метод, не использующий асимметричное шифрование. Этот метод требует четырёх сообщений (минимально возможное количество) для взаимной аутентификации.
Примечания
- Understanding the updated WPA and WPA2 standards . techrepublic.com. Архивировано 31 декабря 2007 года.
- RFC 3748 .
- George Ou. Ultimate wireless security guide: An introduction to LEAP authentication // TechRepublic : Интернет-журнал. — 2007.
- FreeRADIUS Community EAP Overview .
- Dan Jones. Look Before You LEAP (1 октября 2003). Архивировано 9 февраля 2008 года.
- Byrd, Christopher. "Open Secure Wireless (недоступная ссылка) (5 мая 2010). Архивировано 12 декабря 2013 года.
- The certificate_request message is included when the server desires the peer to authenticate itself via public key. While the EAP server SHOULD require peer authentication, this is not mandatory, since there are circumstances in which peer authentication will not be needed (e.g., emergency services, as described in [UNAUTH), or where the peer will authenticate via some other means.] (Март 2008).
- Add UNAUTH-TLS vendor specific EAP type (недоступная ссылка). Архивировано 13 февраля 2013 года.
- HS 2.0R2: Add WFA server-only EAP-TLS peer method (недоступная ссылка). Архивировано 30 сентября 2014 года.
- HS 2.0R2: Add WFA server-only EAP-TLS peer method (недоступная ссылка). Архивировано 30 сентября 2014 года.
- Byrd, Christopher. Open Secure Wireless 2.0 (недоступная ссылка) (1 ноября 2011). Архивировано 26 ноября 2013 года.
- Rand Morimoto; Kenton Gardinier, Michael Noel and Joe Coca. Microsoft Exchange Server 2003 Unleashed. — 2003. — С. 244. — ISBN ISBN 978-0-672-32581-6.
- 802.1x / EAP TTLS support? - Windows Phone Central Forums .
- Enterprise Wi-Fi authentication (EAP) .