Дайджест автентифікація

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

Дайджест автентифікація (Digest access authentication) – один із загальноприйнятих методів автентифікації на веб-сервері. Він застосовує хеш-функцію, щоб захешувати пароль перед відправленням через мережу і це більш безпечний метод ніж базовий, який відправляє пароль у відкритому вигляді. Переважно дайджест автентифікація в якості хеш-функції використовує MD5 з використанням одноразових значень (нонс).

Огляд[ред.ред. код]

Дайджест автентифікація вперше з’явилася в RFC 2069 стандарті (розширення для HTTP: дайджест автентифікація). RFC 2069 описує класичну модель дайджест автентифікації, де захист забезпечується згенерованим сервером нонсом. Відповідь на запит формується(де HA1, HA2, A1, A2):

\mathrm{HA1} = \mathrm{MD5}\Big(\mathrm{A1}\Big) = \mathrm{MD5}\Big( \mathrm{username} : \mathrm{realm} : \mathrm{password} \Big)
\mathrm{HA2} = \mathrm{MD5}\Big(\mathrm{A2}\Big) = \mathrm{MD5}\Big( \mathrm{method} : \mathrm{digestURI} \Big)
\mathrm{response} = \mathrm{MD5}\Big( \mathrm{HA1} : \mathrm{nonce} : \mathrm{HA2} \Big)

Згодом замість RFC 2069 з’явився RFC 2617 (HTTP автентифікація: базова та дайджест автентифікація). RFC 2617 описано ряд нових заходів для захисту дайджест автентифікації; «якість захисту»(QOP), значення нонс збільшується клієнтом, і на стороні клієнта генерується випадкове нонс. Ці заходи захистять ваш процес автентифікації від ряду вразливостей, наприклад, від атаки на основі адаптивно-підібраного відкритого тексту.

\mathrm{HA1} = \mathrm{MD5}\Big(\mathrm{A1}\Big) = \mathrm{MD5}\Big( \mathrm{username} : \mathrm{realm} : \mathrm{password} \Big)

Якщо значення директиви QOP рівне «auth» або невизначене, тоді HA2:

\mathrm{HA2} = \mathrm{MD5}\Big(\mathrm{A2}\Big) = \mathrm{MD5}\Big( \mathrm{method} : \mathrm{digestURI} \Big)

Якщо значення директиви QOP рівне «auth-int», тоді HA2:

\mathrm{HA2} = \mathrm{MD5}\Big(\mathrm{A2}\Big) = \mathrm{MD5}\Big( \mathrm{method} : \mathrm{digestURI} : \mathrm {MD5}(entityBody)\Big)

Якщо значення директиви QOP рівне «auth-int» чи «auth», тоді response:

\mathrm{response} = \mathrm{MD5}\Big( \mathrm{HA1} : \mathrm{nonce} : \mathrm{nonceCount} : \mathrm{clientNonce} : \mathrm{qop} : \mathrm{HA2} \Big)

Якщо значення директиви QOP невизначене, тоді response:

\mathrm{response} = \mathrm{MD5}\Big( \mathrm{HA1} : \mathrm{nonce} : \mathrm{HA2} \Big)

Як ви вже, мабуть, помітили, що якщо значення QOP не визначене то автентифікації нагадує ту яка описана в RFC 2069.

Див. також[ред.ред. код]