Яка різниця між дайджестом та базовою автентифікацією?
Яка різниця між дайджестом та базовою автентифікацією?
Відповіді:
Дайджест аутентифікації передає облікові дані у зашифрованому вигляді, застосовуючи хеш-функцію до: імені користувача, пароля, сервера, що не має значення, методу HTTP та запитуваного URI.
У той час як базова аутентифікація використовує незашифровані кодування base64.
Тому базову автентифікацію зазвичай слід застосовувати лише там, де забезпечується захист транспортного рівня, наприклад https.
Дивіться RFC-2617 про всі деталі горі.
Аутентифікація базового доступу HTTP
Основна автентифікація використовує кодування base64 (не шифрування) для генерування нашої криптографічної рядки, яка містить інформацію про ім’я користувача та пароль. HTTP Basic не потрібно впроваджувати через SSL, але якщо ви цього не зробите, він взагалі не захищений. Тому я навіть не збираюся розважатись над ідеєю її використання.
Плюси:
Мінуси:
Підсумово - якщо ви маєте контроль над клієнтами або можете переконатися, що вони використовують SSL, HTTP Basic є хорошим вибором. Повільність SSL може бути скасована швидкістю лише одного запиту
Синтаксис базової автентифікації
Value = username:password
Encoded Value = base64(Value)
Authorization Value = Basic <Encoded Value>
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>
HTTP Digest Access Authentication
Digest Access Authentication використовує методи хешування (тобто засоби дайджесту, розрізані на невеликі шматочки) для створення криптографічного результату. Аутентифікація доступу до HTTP Digest - це більш складна форма аутентифікації, яка працює наступним чином:
Плюси:
Мінуси:
Підсумовуючи це , HTTP Digest є вразливим для щонайменше двох атак, тоді як сервер, що використовує сильне шифрування паролів із HTTP Basic через SSL, рідше поділяє ці вразливості.
Якщо ви не маєте контролю над своїми клієнтами, проте вони можуть спробувати виконати базову автентифікацію без SSL, що набагато менш безпечно, ніж Digest.
Синтаксис автентифікації дайджесту доступу RFC 2069
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
Синтаксис автентифікації дайджесту доступу RFC 2617
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
У листоноші виглядає так:
Примітка:
Давайте побачимо різницю між двома HTTP- аутентифікаціями за допомогою Wireshark
(Інструмент для аналізу відправлених чи отриманих пакетів).
1. Основна автентифікація Http
Як тільки клієнт вводить правильне ім’я користувача: пароль , як цього вимагає Web-сервер, Web-сервер перевіряє в Базі даних, чи є облікові дані правильними, і дає доступ до ресурсу.
Ось як надсилаються та отримуються пакети:
У першому пакеті Клієнт заповнює облікові дані за допомогою методу POST на ресурсі -. lab/webapp/basicauth
У відповідь сервер відповідає назад з кодом відповіді http 200 Ок , тобто ім'я користувача: пароль були правильними.
Тепер у Authorization
заголовку видно, що це Основна авторизація, за якою слідує деяка випадкова рядок. Цей рядок - це закодована (Base64) версія облікових даних admin:aadd
(включаючи двокрапку).
2. Перевірка автентичності Http (rfc 2069)
Поки ми бачили, що Basic Authentication надсилає ім'я користувача: пароль в прямому тексті по мережі. Але Digest Auth надсилає HASH пароля за допомогою алгоритму Hash.
Ось пакети, що показують запити, зроблені клієнтом, та відповіді від сервера.
Як тільки клієнт набирає запити облікових даних, які вимагає сервер, пароль перетворюється на response
алгоритм, який використовується за допомогою алгоритму, а потім надсилається серверу. Якщо база даних сервера має таку ж відповідь, що і клієнт, сервер надає доступ до ресурсу , інакше помилка 401 .
У наведеному вище описі Authorization
, то response
рядок обчислюється з використанням значень Username
, Realm
, Password
, http-method
, URI
і , Nonce
як показано на зображенні:
Отже, ми можемо побачити, що автентифікація дайджесту є більш безпечною, оскільки вона передбачає хешинг (шифрування MD5), тому інструменти для снайперів пакетів не можуть нюхати пароль, хоча в Basic Auth точний пароль був показаний на Wireshark.
Основна аутентифікація використовується база 64 Кодування для генерації криптографічного рядка, який містить інформацію про ім'я користувача та пароль.
Аутентифікація доступу дайджесту використовує методи хешування для створення криптографічного результату