Kerberos (протокол)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Протокол Kerberos (з англ. Цербер) — орієнтований в основному на клієнт-серверну архітектуру, пропонує механізм взаємної аутентифікації двох співрозмовників (хостів) перед встановленням зв'язку між ними в умовах незахищеного каналу. Kerberos — це також пакет вільного програмного забезпечення розробленого в Массачусетському технологічному інституті, що реалізовує цей протокол. Повідомлення протоколу Kerberos захищені проти прослуховування мережі та атак повторного відтворення.

Kerberos базується на симетричних алгоритмах шифрування та для своєї роботи потребує довірену третю сторону. Деякі модифікації протоколу можуть використовувати елементи асиметричного шифрування.

Історія і розвиток

[ред. | ред. код]

Протокол Kerberos розроблявся інститутом МІТ для забезпечення безпеки сервісів проекту Афіна[en], метою якого було забезпечення доступності навчальних матеріалів із будь-якої станції. Назва протоколу походить від грецької міфічної триголової потвори Цербера, захисника підземного царства. Існує декілька версій протоколу Включно із третьою були доступні лише для внутрішнього користування у МІТ.

Стів Міллер (англ. Steve Miller) та Кліффорд Ньюман (англ. Clifford Neuman), основні архітектори четвертої версії Kerberos, опублікували її у кінці 1980-х, хоча вона також розроблялась в основному для проекту Афіна. П'ята версія протоколу, розроблена Джоном Колем (англ. John Kohl) та Кліффордом Ньюманом, з'явилась у 1993 році як рекомендація на стандарт RFC 1510, оновлена 2005 року у RFC 4120.

У своїй основі протокол Kerberos ставить перед собою реалізацію таких принципів:

  • Пароль користувача ніколи не повинен передаватись по мережі;
  • Пароль користувача в жодній формі не має зберігатись на клієнтській машині: він має бути ліквідований одразу після використання;
  • Пароль користувача не має зберігатись у незашифрованому вигляді навіть у базі даних аутентифікації (authentication server database);
  • Користувач вводить пароль лише раз за сесію. Таким чином, користувачі мають доступ до всіх сервісів, на які вони авторизовані, без потреби заново вводити пароль під час сесії. Ця властивість також відома як Single Sign-On;
  • Управління аутентифікацією здійснюється централізовано сервером аутентифікації. Прикладні сервери, що надають послуги, не повинні містити аутентифікаційних відомостей користувачів. Це важливо для централізованого адміністрування облікових записів користувачів; не зберігається надлишкова інформація аутентифікації на різних серверах; при зміні користувачем паролю, він одночасно міняється для всіх наданих послуг.
  • Не лише користувачі зобов'язані підтвердити, що вони є тими, ким заявляють, але й прикладні сервери повинні підтвердити свою ідентичність користувачам. Цей процес називається Взаємна аутентифікація;
  • Після завершення етапів аутентифікації та авторизації, клієнт і сервер мають мати можливість встановити зашифрований зв'язок. Із цією метою Kerberos підтримує генерацію ключів шифрування й обмін ними.

Опис протоколу

[ред. | ред. код]

В основу Kerberos покладений протокол Нідгема — Шредера. У ролі довіреної третьої сторони виступає Центр Розподілу Ключів (ЦРК, англ. Key Distribution Center), що складається із двох логічно розділених частин: Сервера Аутентифікації (ЦА, англ. Authentication Server) і Сервера Видачі Квитків (СВК, англ. Ticket Granting Server). Kerberos працює на основі «квитків», які використовуються для підтвердження ідентичності користувачів.

Нехай комунікатор реципієнт - Учасники сенсу мають ідентифікатори . Комуніканти, кожний окремо, розділяють таємний ключ із сервером Ser. Нехай сторона ініціює фазу розподілу ключів, посилаючи по мережі серверу ідентифікатори

Сервер генерує повідомлення із часовою позначкою терміном дії випадковим сенсовим ключем та ідентифікатором Він шифрує це повідомлення таємним ключем, який розділяє із стороною Потім сервер бере часову позначку термін дії сеансовий ключ ідентифікатор й шифрує це усе таємним ключем, який розділяє із стороною Обидва ці зашифровані повідомлення він відправляє стороні

Сторона розшифровує перше повідомлення своїм теємним ключем, перевіряє позначку часу щоб запевнитися, що це повідомлення не є повторенням попередньої процедури розподілу ключів. Потім сторона генерує повідомлення із своїм ідентифікатором й позначкою часу шифрує його сенсовим ключем й відправляє стороні Крім того, відправляє повідомлення від зашифроване ключем сторони

Лише сторона може розшифрувати повідомлення. Сторона отримує позначку часу термін дії сеансовий ключ та ідентифікатор Потім сторона розшифровує сенсовим ключем другу частину повідомлення. Співпадіння значень та у двох частинах повідомлення підтверджують аутентичність Для взаємного підтвердження справжності сторона створює повідомлення, яке складається із позначки часу плюс 1, шифрує його ключем й надсилає стороні

Якщо після розшифрування цього повідомлення сторона отримує очікуваний результат, вона знає, що на іншому кінці лінії зв'язку знаходиться дійсно

Цей протокол працює лише за умови, що годинники кожного учасника синхронізовані із годинником сервера Також у цьому протоколі потрібний обмін із сервером для отримання сенсового ключа кожний раз, коли комунікант хоче встановити зв'язок із реципієнтом.

ЦРК зберігає базу даних закритих ключів; закритий ключ учасника мережі відомий лише йому та ЦРК. Знання цього ключа є підтвердженням ідентичності учасника. Для з'єднання двох учасників, ЦРК генерує ключ сесії, який забезпечує безпеку повідомлень. Безпека протоколу сильно залежить від синхронізації часу учасників мережі та від обмеження часу придатності квитків.

Спрощений опис протоколу виглядає таким чином

  • СА — Сервер Аутентифікації
  • СВМ — Сервер Видачі Мандатів
  • ПС — прикладний сервер, надає послуги
  • С — Клієнт

Клієнт проходить аутентифікацію у СА з допомогою довготривалого спільного секрету і отримує квиток від СА. Пізніше клієнт використовує квиток для отримання додаткових квитків для ПС без потреби використання спільного секрету. Ці квитки підтверджують аутентифікацію для ПС.

Основні кроки:

1. C→СА - запит клієнта С до сервера СА дозволити звернутися до служби СВМ.

2. СА→С - дозвіл (мандат) від сервера СА до клієнта С звернутися до служби СВМ.

3. С→СВМ - запит клієнта С до служби СВМ на отримання допуску (мандату) до серверу ресурсів ПС.

4. СВМ→С - дозвіл (мандат) від служби СВМ клієнту С для звернення до серверу ресурсів ПС.

5. С→ПС - запит інформаційного ресурсу (послуги) у сервера ПС.

6. ПС→С - підтвердження справжності сервера ПС й надання інформаційного ресурсу (послуги) клієнту С.

Ця модель взаємодії клієнта із серверами може функціонувати лише за умови забезпечення конфіденційності й цілісності керуючої інформації, яка передається.

Посилання

[ред. | ред. код]