Чим автентифікація дайджесту відрізняється від базової автентифікації, окрім надсилання облікових даних у вигляді простого тексту?
Чим автентифікація дайджесту відрізняється від базової автентифікації, окрім надсилання облікових даних у вигляді простого тексту?
Відповіді:
Основна відмінність полягає в тому, що він не вимагає надсилання імені користувача та пароля через провід у простому тексті. Він також захищений від повторних атак, оскільки використовує одноразовий номер із сервера.
Сервер надає клієнтові номер одноразового використання (без позначення), який він поєднує з іменем користувача, цариною, паролем та запитом URI. Клієнт запускає всі ці поля методом хешування MD5 для створення хеш-ключа.
Він надсилає цей хеш-ключ на сервер разом із ім'ям користувача та цариною для спроби автентифікації.
На сервері той самий метод використовується для створення хешкею, лише замість використання пароля, введеного у браузер, сервер шукає очікуваний пароль для користувача з його БД користувача. Він шукає збережений пароль для цього імені користувача, працює через той же алгоритм і порівнює його з тим, що надіслав клієнт. Якщо вони збігаються, то доступ надається, інакше він може надіслати назад 401 Несанкціонований (відсутність входу або помилка входу) або 403 Заборонено (доступ заборонено).
Перевірка автентичності стандартизована в RFC2617 . У Вікіпедії є хороший огляд його :
Ви можете подумати про це так:
Хеш облікових даних надсилається по дроту.
HA1 = MD5(username:realm:password)
Єдиний спосіб отримати хеш HA1 облікових даних - це знати пароль. Сервер знає HA1, але не пароль, який його створив. Якщо HA1 був відомий зловмиснику, він міг би потрапити до системи. Так воно не направляється вниз по дроту. Попередній хеш на основі nonce тощо робиться перед цим, і це має узгоджуватися з аналогічним розрахунком, зробленим на сервері. Таким чином, поки сервер зберігає HA1 приватним, система захищена.