1. ААА
ААА – это не пальчиковая батарея, а система проверки и представления доступа к услугам Интернет для разрешённых пользователей (Authentication, Autorization, Accounting).
Интернет — место небезопасное. Многие из Интернет-протоколов вообще не обеспечивают никакой безопасности. Например, злоумышленники широко используют в Интернете специальные инструменты (шпионские программы) для «вынюхивания» паролей пользователей (английский термин – sniffing), для доступа к тем или иным услугам. Поэтому, приложения, которые отправляют незашифрованный пароль по сети, чрезвычайно уязвимы. Хуже того, некоторые приложения «клиент-сервер» изначально созданы из предположения, что на программа-клиент кристально «честна», и никогда не передаст никому идентификатор пользователя. Многие приложения ограничивают действия клиента, только тем, что ему разрешено делать.
Поэтому необходимо аутентифицировать (Authentication) пользователя того или иного сервиса, чтобы убедиться, что он на самом деле тот, за кого себя выдает.
После того, как запрашивающая сторона аутентифицировала пользователя тем или иным способом, необходимо определить, доступ к каким службам ему можно разрешить запрашивающей стороне, т.е. авторизовать (Autorization) пользователя для работы с ними (сразу заметим, что термином «пользователь» здесь может обозначаться не только живой человек, но и программа, или устройство, которые могут запрашивать доступ к тем или иным услугам). Для этого используется решение авторизации на основе политик (policy-based), когда запрашиваемая сторона может авторизовать доступ пользователя для к различным службам, оценивая политики в отношении этих служб.
Чтобы отслеживать работы авторизованных пользователей, собирается учетная информация (Accounting) для разных целей, таких как обработка злоупотреблений со стороны злоумышленников и выставление счетов. Все эти услуги требуют координации между различными административными системами, поддерживаемыми интернет-провайдерами в партнерстве друг с другом.
Решение аутентификации, авторизации и учета AAA (Authentication, Autorization, Accounting) заключается в решении этих задач максиммально простым и масштабируемым образом. На практике сервер AAA с базой данных профилей пользователей и данными конфигурации взаимодействует с клиентами AAA, находящимися на сетевых элементах, таких как сервер доступа к сети NAS (Network Access Server) и маршрутизаторы, для предоставления распределенных услуг AAA.
1.1. Как работает ААА?
Сервер AAA (для надёжности могут работать несколько серверов параллельно), подключен к сети и служит центральным местом хранения и предоставления информации AAA. Чаще всего, функция AAA расположена в сервере доступа NAS, хотя это может быть и маршрутизатор, терминальный сервер или, возможно, другой сетевой элемент, который содержит функцию AAA.
Работа функции AAA заключается в следующем:
- Пользователь подключается к устройству доступа и запрашивает доступ к сети (или услуге сети);
- Функция AAA в NAS собирает и пересылает учетные данные конечного пользователя на сервер AAA;
- Сервер AAA обрабатывает данные и возвращает ответ принятия или отклонения на доступ к сети или услугам, и другие соответствующие данные клиенту AAA;
- Клиент AAA на NAS уведомляет конечного пользователя о предоставлении или отказе в доступе к указанным ресурсам.
NAS также может отправлять учетное сообщение на сервер AAA во время установки и завершения соединения для сбора и хранения записей.
1.2. Какие бывают ААА
До последнего времени наиболее распространённым протоколом AAA являлся протокол RADIUS (Remote Access Dial-In User Service).
RADIUS был разработан в середине 1990-х годов компанией Livingston Enterprises (позже приобретенной американской компанией Lucent Technologies, которая в свою очередь затем вошла в финскую компанию Nokia) для предоставления услуг ААА. На базе этой разработки стандартизирующая организация IETF (Internet Engineering Task Force) стандартизировала RADIUS в документе RFC 2138. RFC означает Request For Comments, т.е. это некое предложение по стандартизации, которое может быть впоследствии дополнено или изменено. Многие RFC остаются «де факто» стандартами, которым все не то чтобы следовать обязаны, но не следовать им – чревато тем, что в результате разработки того или иного оборудования получится продукт, который останется «вещью в себе» или найдет очень ограниченное применение.
До появления RADIUS на ранних этапах развития Интернета существовали ещё протоколы под названиями TACACS, TACACS+ и Kerberos. Они в принципе выполняли те же функции что и RADIUS (за исключением того, что в Kerberos не было функции учёта Accounting, т.е., по сути, это был протокол АА, а не ААА). Преимуществом RADIUS является то, что это был протокол, не зависящий от конкретного поставщика оборудования и был закреплен IETF в качестве стандарта. В то время как, например, TACACS+ был разработан известной американской компанией Cisco (которая, к слову, имеет долю рынка оборудования передачи данных более 50%), то есть, чтобы иметь ААА, нужно было покупать Cisco.
Чем протокол Diameter отличается от RADIUS, и почему на сегодняшний день он является наиболее применимым протоколом в сетях связи 4G (LTE) расскажем позднее.
1.3. Структура пакета данных RADIUS
Пакет данных, как видно из рисунка ниже, состоит из заголовка, а также объектов, которые носят название пары «атрибут-значение» AVP (Attribute-Value Pair).

Заголовок в пакете RADIUS состоит из четырех различных полей данных:
- Поле кода длиной 8 бит (Code), которое определяет тип пакета.
- Поле идентификатора длиной 8 бит (Identifier), которое помогает сопоставлять запросы с ответами.
- Поле длины длиной 16 бит (Length), содержащее длину пакета, включая все AVP.
- Поле аутентификатора длиной 32 бита (Authenticator), которое используется для аутентификации ответа от сервера RADIUS, а также используется как часть алгоритма для сокрытия пароля клиента при запросах.
Пары атрибут-значение RADIUS AVP содержат информацию ААА (Authentication, Authorization Accounting), а также различные детали, касающиеся запросов и ответов сервера ААА. Поле AVP имеет следующий вид:

2. Протокол Diameter
Diameter — протокол ААА, созданный, отчасти, для преодоления некоторых ограничений протокола RADIUS. Diameter обеспечивает взаимодействие между клиентами в целях аутентификации, авторизации и учёта различных сервисов (AAA) и является основным протоколом архитектуры IMS (IP Multimedia Subsystem), которая используется в сетях 4G.
Diameter – это не аббревиатура, а обозначение, обыгрывающее различие между радиусом и диаметром в геометрии (диаметр в два раза больше радиуса), с целью показать, что функциональные возможности Diameter значительно больше, чем RADIUS. Поэтому в литературе обычно слово RADIUS пишут прописными буквами, а Diameter – как имя собственное с заглавной буквы.
В основе протокола Diameter лежит концепция в создании базового протокола (Base Protocol) с возможностью его расширения для предоставления сервисов AAA при появлении новых технологий доступа.
Diameter был описан в следующих RFC:
- RFC 6733 (Diameter Base Protocol),
- RFC 3589 (Diameter Command Codes for 3GPP),
- RFC 4006 (Diameter Credit-Control Application).
(Продолжение следует)
